Cancelacion de factura por Objeto

This commit is contained in:
2019-08-29 17:35:50 -07:00
parent 394f77a14e
commit 22b0e76c6b
6 changed files with 2235 additions and 2556 deletions

View File

@@ -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)