Cancelacion de factura por Objeto
This commit is contained in:
@@ -89,7 +89,8 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas
|
||||
{
|
||||
var resp = Timbrado.VerificarVigenciaSAT(uuid, UsuarioActual.Empresa.RFC, receptor, total, UsuarioActual.Empresa.FacturaProduccion);
|
||||
if (resp != null)
|
||||
{
|
||||
{
|
||||
|
||||
if (resp.Estado == null)
|
||||
{
|
||||
sb.Append("No se pudo comprobar el estado de la factura. El servicio del sat no esta disponible");
|
||||
@@ -100,51 +101,60 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas
|
||||
sb.AppendFormat("Codigo Estado: {0} <br/>", resp.CodigoEstatus);
|
||||
sb.AppendFormat("Estado: {0} <br/>", resp.Estado);
|
||||
sb.AppendFormat("Es Cancelable: {0} <br/>", string.IsNullOrEmpty(resp.EsCancelable) ? "Desconocido" : resp.EsCancelable);
|
||||
sb.AppendFormat("Estatus de Cancelación: {0} <br/><br/>", string.IsNullOrEmpty(resp.EsCancelable) ? "Desconocido" : resp.EstatusCancelacion);
|
||||
|
||||
if ((resp.EsCancelable.ToUpper() == "NO CANCELABLE"))
|
||||
{
|
||||
sb.Append("Esta factura no es cancelable.");
|
||||
return sb.ToString();
|
||||
sb.AppendFormat("Estatus de Cancelación: {0} <br/><br/>", string.IsNullOrEmpty(resp.EsCancelable) ? "Desconocido" : resp.EstatusCancelacion);
|
||||
|
||||
var FueCancelado = CancelarDocumento(CveVenta, CveEstatus, CveCliente, Folio, uuid, CancelacionAcuse, CancelacionFecha, TipoDocto, total.ToDouble(), UsuarioActual.Empresa.CvePAC).Mensaje;
|
||||
|
||||
sb.AppendFormat("{0} <br/>", FueCancelado);
|
||||
if (CveEstatus.Contiene(4, 5) && EsRefacturacion)
|
||||
{
|
||||
Response.Redirect(string.Format("Ventas.aspx?CveDevolucion={0}&NuevaFactura=1", CveVenta));
|
||||
}
|
||||
|
||||
if (resp.Estado.ToUpper().Trim() == "CANCELADO" || resp.EstatusCancelacion.ToUpper() == "PLAZO VENCIDO")
|
||||
{
|
||||
CveEstatus = 5;
|
||||
var solicitud = new WSGF.Service1SoapClient();
|
||||
var acuse = solicitud.GetAcuse(emisor, "rene.molina@adsistemas.mx", "rene2018", uuid);
|
||||
//if ((resp.EsCancelable.ToUpper() == "NO CANCELABLE"))
|
||||
//{
|
||||
// sb.Append("Esta factura no es cancelable.");
|
||||
// return sb.ToString();
|
||||
//}
|
||||
|
||||
if (acuse.Estado == 0)
|
||||
{
|
||||
var xmlAcuse = new System.Xml.XmlDocument();
|
||||
xmlAcuse.LoadXml(DecodeBase64(acuse.CfdiB64));
|
||||
//if (resp.Estado.ToUpper().Trim() == "CANCELADO" || resp.EstatusCancelacion.ToUpper() == "PLAZO VENCIDO")
|
||||
//{
|
||||
// CveEstatus = 5;
|
||||
// var solicitud = new WSGF.Service1SoapClient();
|
||||
// var acuse = solicitud.GetAcuse(emisor, "rene.molina@adsistemas.mx", "rene2018", uuid);
|
||||
|
||||
CancelacionAcuse = xmlAcuse.GetElementsByTagName("SignatureValue")[0].InnerText;
|
||||
CancelacionFecha = xmlAcuse.SelectSingleNode("Acuse").Attributes["Fecha"].Value.ToDate();
|
||||
}
|
||||
// if (acuse.Estado == 0)
|
||||
// {
|
||||
// var xmlAcuse = new System.Xml.XmlDocument();
|
||||
// xmlAcuse.LoadXml(DecodeBase64(acuse.CfdiB64));
|
||||
|
||||
var FueCancelado = CancelarDocumento(CveVenta, CveEstatus, CveCliente, Folio, uuid, CancelacionAcuse, CancelacionFecha, TipoDocto, total.ToDouble(), UsuarioActual.Empresa.CvePAC);
|
||||
sb.AppendFormat("{0} <br/>", FueCancelado);
|
||||
if (CveEstatus.Contiene(4, 5) && EsRefacturacion)
|
||||
{
|
||||
Response.Redirect(string.Format("Ventas.aspx?CveDevolucion={0}&NuevaFactura=1", CveVenta));
|
||||
}
|
||||
}
|
||||
else if (resp.EstatusCancelacion.ToUpper() == "SOLICITUD RECHAZADA")
|
||||
{
|
||||
//ASIGNAMOS ESTATUS EMITIDA
|
||||
CveEstatus = 3;
|
||||
var ObjVentas = new ClsVentas();
|
||||
if (ObjVentas.UpdateEstatusVenta(CveVenta, CveEstatus, UsuarioActual.CveEmpresa))
|
||||
{
|
||||
sb.Append("El estatus de la factura fue cambiado a 'Emitida'.");
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Append("Ocurrió un error al cambiar el estatus de la factura.");
|
||||
}
|
||||
ObjVentas.Dispose();
|
||||
}
|
||||
// CancelacionAcuse = xmlAcuse.GetElementsByTagName("SignatureValue")[0].InnerText;
|
||||
// CancelacionFecha = xmlAcuse.SelectSingleNode("Acuse").Attributes["Fecha"].Value.ToDate();
|
||||
// }
|
||||
|
||||
// var FueCancelado = CancelarDocumento(CveVenta, CveEstatus, CveCliente, Folio, uuid, CancelacionAcuse, CancelacionFecha, TipoDocto, total.ToDouble(), UsuarioActual.Empresa.CvePAC).Mensaje;
|
||||
|
||||
// sb.AppendFormat("{0} <br/>", FueCancelado);
|
||||
// if (CveEstatus.Contiene(4, 5) && EsRefacturacion)
|
||||
// {
|
||||
// Response.Redirect(string.Format("Ventas.aspx?CveDevolucion={0}&NuevaFactura=1", CveVenta));
|
||||
// }
|
||||
//}
|
||||
//else if (resp.EstatusCancelacion.ToUpper() == "SOLICITUD RECHAZADA")
|
||||
//{
|
||||
// //ASIGNAMOS ESTATUS EMITIDA
|
||||
// CveEstatus = 3;
|
||||
// var ObjVentas = new ClsVentas();
|
||||
// if (ObjVentas.UpdateEstatusVenta(CveVenta, CveEstatus, UsuarioActual.CveEmpresa))
|
||||
// {
|
||||
// sb.Append("El estatus de la factura fue cambiado a 'Emitida'.");
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// sb.Append("Ocurrió un error al cambiar el estatus de la factura.");
|
||||
// }
|
||||
// ObjVentas.Dispose();
|
||||
//}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -160,137 +170,11 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas
|
||||
|
||||
return sb.ToString();
|
||||
}
|
||||
private string CancelarDocumento(int CveVenta, int CveEstatus, int CveCliente, string Folio, string FolioFiscal, string CancelacionAcuse, DateTime CancelacionFecha, string TipoComprobante, double Total, int CvePACCancelacion)
|
||||
private Modelos.Factura.MCancelacionVentaMensaje CancelarDocumento(int CveVenta, int CveEstatus, int CveCliente, string Folio, string FolioFiscal, string CancelacionAcuse, DateTime CancelacionFecha, string TipoComprobante, double Total, int CvePACCancelacion)
|
||||
{
|
||||
string Mensaje = "";
|
||||
ClsVentas ObjVentas = new ClsVentas();
|
||||
ClsOIEventos ObjEventos = new ClsOIEventos(ObjVentas.IniciaTransacSQL());
|
||||
ClsContabilidad ObjConta = new ClsContabilidad(ObjVentas.IniciaTransacSQL());
|
||||
ClsContPAQi ObjContPaq = null;
|
||||
|
||||
try
|
||||
{
|
||||
if (UsuarioActual.Empresa.UsaAC || UsuarioActual.Empresa.Funcionalidad(200) == "1")
|
||||
{
|
||||
ObjContPaq = new ClsContPAQi(UsuarioActual.Empresa);
|
||||
ObjContPaq.IniciaTransacSQL();
|
||||
}
|
||||
bool ErrorCancelar = false;
|
||||
var ErrorList = new List<string>();
|
||||
|
||||
int IDPoliza = -1;
|
||||
int CvePrePolizaCancelacion = -1;
|
||||
|
||||
// CANCELA PREPOLIZA
|
||||
ErrorCancelar = !ObjVentas.ProcesoPrepolizasCancelacion(CveVenta, UsuarioActual.CveUsuario);
|
||||
|
||||
if (ErrorCancelar)
|
||||
{
|
||||
Mensaje = "Ocurrió un error al generar la prepoliza de cancelación.";
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ObjVentas.DtResultados.Rows.Count > 0)
|
||||
{
|
||||
CvePrePolizaCancelacion = ObjVentas.DtResultados.FiltroPrimeroValor("CvePrepolizaCancelacion").ToEntero();
|
||||
if (CvePrePolizaCancelacion <= 0)
|
||||
{
|
||||
ErrorCancelar = true;
|
||||
Mensaje = "Ocurrió un error al generar la prepoliza de cancelación.";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ErrorCancelar = true;
|
||||
Mensaje = "Ocurrió un error al generar la prepoliza de cancelación.";
|
||||
}
|
||||
}
|
||||
|
||||
// POLIZA DE CANCELACION
|
||||
if (!ErrorCancelar)
|
||||
{
|
||||
if (UsuarioActual.Empresa.UsaAC)
|
||||
{
|
||||
IDPoliza = GenerarPolizaAC(ObjContPaq, CveVenta, Folio, CveCliente, TipoComprobante, DateTime.Now, true);
|
||||
if ((IDPoliza <= 0))
|
||||
{
|
||||
ErrorCancelar = true;
|
||||
Mensaje = "Ocurrió un error al generar la poliza de cancelación.";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//AUTO CONTABILIDAD
|
||||
if (!ErrorCancelar)
|
||||
{
|
||||
if (UsuarioActual.Empresa.Funcionalidad(200) == "1" & !ErrorCancelar && CvePrePolizaCancelacion > 0)
|
||||
{
|
||||
if (!ObjConta.ContabilizarPrePoliza(CvePrePolizaCancelacion, UsuarioActual.CveUsuario, UsuarioActual.Empresa, ObjConta: ObjContPaq))
|
||||
{
|
||||
ErrorCancelar = true;
|
||||
Mensaje = "Ocurrió un error al contabilizar. Favor de ponerse en contacto con Soporte Técnico";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ACTUALIZA ESTATUS
|
||||
if (!ErrorCancelar)
|
||||
{
|
||||
switch (TipoComprobante)
|
||||
{
|
||||
case "Rem":
|
||||
CveEstatus = 12;
|
||||
break;
|
||||
case "Com":
|
||||
CveEstatus = 9;
|
||||
break;
|
||||
}
|
||||
if (!ObjVentas.UpdateCancelaVenta(CveVenta, CancelacionFecha, CancelacionAcuse, UsuarioActual.CveEmpresa, CvePACCancelacion))
|
||||
{
|
||||
ErrorCancelar = true;
|
||||
Mensaje = "Ocurrió un error al guardar el estatus de cancelación.";
|
||||
}
|
||||
}
|
||||
|
||||
if (!ErrorCancelar)
|
||||
{
|
||||
if (ObjContPaq != null)
|
||||
{
|
||||
ObjContPaq.Commit();
|
||||
}
|
||||
ObjVentas.Commit();
|
||||
Mensaje = "El Documento se canceló correctamente";
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ObjContPaq != null)
|
||||
{
|
||||
ObjContPaq.RollBack();
|
||||
}
|
||||
ObjVentas.RollBack();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ObjVentas.RollBack();
|
||||
if (ObjContPaq != null)
|
||||
{
|
||||
ObjContPaq.RollBack();
|
||||
}
|
||||
Mensaje = "Ocurrió un error al cancelar la factura";
|
||||
this.OnError(Mensaje, ex);
|
||||
}
|
||||
finally
|
||||
{
|
||||
ObjVentas.Dispose();
|
||||
ObjEventos.Dispose();
|
||||
ObjConta.Dispose();
|
||||
if (ObjContPaq != null)
|
||||
{
|
||||
ObjContPaq.Dispose();
|
||||
}
|
||||
}
|
||||
return Mensaje;
|
||||
var factura = new Modelos.Factura(UsuarioActual, CveVenta, UsuarioActual.CveEmpresa);
|
||||
var retorno = factura.EjecutarCancelacionPendiente(CveEstatus, CancelacionFecha, CancelacionAcuse);
|
||||
return retorno;
|
||||
}
|
||||
|
||||
private int GenerarPolizaAC(ClsContPAQi ObjAC, int CveVenta, string Folio, int CveCliente, string TipoComprobante, DateTime Fecha, bool CancelacionIngreso = false)
|
||||
|
||||
Reference in New Issue
Block a user