From 65e108880c6ef04a5ed8ec495d1880a4c1edcce3 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Tue, 19 Apr 2022 22:26:41 -0700 Subject: [PATCH] Utilizar RFC del receptor guardado en la venta al cancelar. Validaciones al cancelar --- App_Code/Modelos.vb | 16 ++++--- App_Code/Timbrado.vb | 37 ++++++++++------- Ventas/RepCancelacionesPorRespuesta.aspx | 4 +- Ventas/RepCancelacionesPorRespuesta.aspx.cs | 46 +++++++++++++++++---- 4 files changed, 72 insertions(+), 31 deletions(-) diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index f91f6b6b1..b49be482e 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -4816,7 +4816,7 @@ Namespace Modelos Dim MensajeError As String = "" Dim ObjCancelacion As New Timbrado Dim TotalT As Decimal = ObjFactura.Total - Dim RFCReceptor As String = ObjFactura.Cliente.RFC + Dim RFCReceptor As String = If(String.IsNullOrEmpty(ObjFactura.RFCReceptor), ObjFactura.Cliente.RFC, ObjFactura.RFCReceptor) Dim CvePACCancelacion As Integer = ObjFactura.CvePAC If CvePACCancelacion <= 0 Then @@ -4917,7 +4917,7 @@ Namespace Modelos CancelacionFecha = ObjCancelacion.CancelacionFecha CveEstatus = 5 End If - CancelacionAcuse = ObjCancelacion.CancelacionAcuse + CancelacionAcuse = Resp.CancelacionAcuse SolicitudCancelacionAcuse = Resp.SolicitudCancelacionAcuse Else Retorno.Mensaje = "Los servicios de cancelación del SAT no se encuentran disponibles o presentan time out. Intente de nuevo en unos minutos.
Origen del error: WebService www.sat.gob.mx" @@ -5000,7 +5000,7 @@ Namespace Modelos 'End If CveEstatus = Resp.CveEstatus CancelacionFecha = Resp.CancelacionFecha - CancelacionAcuse = ObjCancelacion.CancelacionAcuse + CancelacionAcuse = Resp.CancelacionAcuse SolicitudCancelacionAcuse = Resp.SolicitudCancelacionAcuse Else Retorno.Mensaje = "Los servicios de cancelación del SAT no se encuentran disponibles o presentan time out. Intente de nuevo en unos minutos.
Origen del error: WebService www.sat.gob.mx" @@ -5042,7 +5042,13 @@ Namespace Modelos Dim msgBitacora As String = "Solicitud de cancelación de factura" If EsRefacturacion Then - msgBitacora = "Solicitud de cancelación por refacturación" + If Not String.IsNullOrEmpty(CancelacionAcuse) Then + msgBitacora = $"Solicitud de cancelación por refacturación. SelloSAT: {CancelacionAcuse}" + ElseIf Not String.IsNullOrEmpty(SolicitudCancelacionAcuse) Then + msgBitacora = $"Solicitud de cancelación por refacturación. SelloSAT: {SolicitudCancelacionAcuse}" + Else + msgBitacora = "Solicitud de cancelación por refacturación." + End If End If Dim ObjE As New ClsOIEventos() @@ -5154,7 +5160,7 @@ Namespace Modelos Dim EstatusDevolucion = 1 If Not ObjVentas.UpdateVentasDevolucionAlmacen(EstatusDevolucion, CveVenta) Then ErrorCancelar = True - MensajeError = "Ocurrió un error al solicitar la devolucion de almacen." + MensajeError = "Ocurrió un error al solicitar la devolución de almacen." End If End If diff --git a/App_Code/Timbrado.vb b/App_Code/Timbrado.vb index 466e394c5..7fc90d47b 100644 --- a/App_Code/Timbrado.vb +++ b/App_Code/Timbrado.vb @@ -775,22 +775,29 @@ Public Class Timbrado End Select 'valida que si se halla cancelado - Dim VigenciaExtra = VerificarVigenciaSAT(FolioFiscal, RFCEmisor, RFCReceptor, Total.ToString(), True) - If Retorno.Verificado AndAlso VigenciaExtra IsNot Nothing Then - If VigenciaExtra.Estado.ToUpper = "VIGENTE" AndAlso Not VigenciaExtra.EstatusCancelacion.ToUpper.Contiene("EN PROCESO") Then - Retorno.Estado = "VIGENTE" - Retorno.CveEstatus = 23 - End If - If VigenciaExtra.Estado.ToUpper = "VIGENTE" AndAlso VigenciaExtra.EstatusCancelacion.ToUpper.Contiene("EN PROCESO") Then - Retorno.Estado = "EN PROCESO" - Retorno.CveEstatus = 20 - Retorno.SolicitudCancelacionAcuse = Retorno.CancelacionAcuse - End If - If VigenciaExtra.Estado.ToUpper = "CANCELADO" Then - Retorno.Estado = "CANCELADO" - Retorno.CveEstatus = 5 - End If + If Retorno.Verificado Then + Dim VigenciaExtra = VerificarVigenciaSAT(FolioFiscal, RFCEmisor, RFCReceptor, Total.ToString(), True) + If VigenciaExtra IsNot Nothing Then + If VigenciaExtra.Estado.ToUpper = "VIGENTE" AndAlso VigenciaExtra.EstatusCancelacion.ToUpper.Contiene("EN PROCESO") Then + Retorno.Estado = "EN PROCESO" + Retorno.CveEstatus = 20 + 'CUANDO ESTA EN PROCESO EL ACUSE DEBE SER DE SOLICITUD DE CANCELACION + Retorno.SolicitudCancelacionAcuse = Retorno.CancelacionAcuse + Retorno.CancelacionAcuse = "" + ElseIf VigenciaExtra.Estado.ToUpper = "CANCELADO" Then + Retorno.Estado = "CANCELADO" + Retorno.CveEstatus = 5 + Else + Retorno.Estado = "VIGENTE" + Retorno.CveEstatus = 23 + 'SI HAY UN ACUSE, GUARDARLO COMO ACUSE DE SOLICITUD + If Not String.IsNullOrEmpty(Retorno.CancelacionAcuse) Then + Retorno.SolicitudCancelacionAcuse = Retorno.CancelacionAcuse + Retorno.CancelacionAcuse = "" + End If + End If + End If End If If Not Retorno.Verificado Then diff --git a/Ventas/RepCancelacionesPorRespuesta.aspx b/Ventas/RepCancelacionesPorRespuesta.aspx index a71609e98..3c079264a 100644 --- a/Ventas/RepCancelacionesPorRespuesta.aspx +++ b/Ventas/RepCancelacionesPorRespuesta.aspx @@ -56,7 +56,7 @@
@@ -103,7 +103,7 @@
diff --git a/Ventas/RepCancelacionesPorRespuesta.aspx.cs b/Ventas/RepCancelacionesPorRespuesta.aspx.cs index ac61af08b..f00369605 100644 --- a/Ventas/RepCancelacionesPorRespuesta.aspx.cs +++ b/Ventas/RepCancelacionesPorRespuesta.aspx.cs @@ -93,13 +93,13 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas string Total = GvRow.DataKey("Total"); string SubTotal = GvRow.DataKey("SubTotal"); string Uuid = GvRow.DataKey("FolioFiscal"); - string RFCCliente = GvRow.DataKey("RFCCliente"); + string RFCReceptor = GvRow.DataKey("RFCReceptor"); string Folio = GvRow.DataKey("Folio"); string TipoDocto = GvRow.DataKey("TipoDocto"); string Nombre = GvRow.DataKey("Nombre"); if (CveVenta > 0 && Uuid != "") { - var resp = VerificarVigenciaSAT(CveVenta, CveCliente, Folio, TipoDocto, Uuid, UsuarioActual.Empresa.RFC, RFCCliente, Total); + var resp = VerificarVigenciaSAT(CveVenta, CveCliente, Folio, TipoDocto, Uuid, UsuarioActual.Empresa.RFC, RFCReceptor, Total); if (resp.EnviarAcuse) { Alert(resp.Mensaje, TipoMensaje.MsgConfirmacion, "BtnEnviarMailCancelacion();", TextoConfirmacion: "Enviar", TextoSegundoBoton: "Cancelar"); @@ -124,7 +124,7 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas string Total = GvRow.DataKey("Total"); string SubTotal = GvRow.DataKey("SubTotal"); string Uuid = GvRow.DataKey("FolioFiscal"); - string RFCCliente = GvRow.DataKey("RFCCliente"); + string RFCReceptor = GvRow.DataKey("RFCReceptor"); string Folio = GvRow.DataKey("Folio"); string TipoDocto = GvRow.DataKey("TipoDocto"); string Nombre = GvRow.DataKey("Nombre"); @@ -133,7 +133,7 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas if (CveVenta > 0 && Uuid != "") { - var respuesta = VerificarVigenciaSAT(CveVenta, CveCliente, Folio, TipoDocto, Uuid, UsuarioActual.Empresa.RFC, RFCCliente, Total, EsRefacturacion: true, FolioSustitucion: FolioSustitucion, CveEstatusFactura: CveEstatusFactura); + var respuesta = VerificarVigenciaSAT(CveVenta, CveCliente, Folio, TipoDocto, Uuid, UsuarioActual.Empresa.RFC, RFCReceptor, Total, EsRefacturacion: true, FolioSustitucion: FolioSustitucion, CveEstatusFactura: CveEstatusFactura); CargaDatos(); if (respuesta.CveEstatus.Contiene(4, 5)) { @@ -171,7 +171,7 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas string Total = GvRow.DataKey("Total"); string SubTotal = GvRow.DataKey("SubTotal"); string Uuid = GvRow.DataKey("FolioFiscal"); - string RFCCliente = GvRow.DataKey("RFCCliente"); + string RFCReceptor = GvRow.DataKey("RFCReceptor"); string Folio = GvRow.DataKey("Folio"); string TipoDocto = GvRow.DataKey("TipoDocto"); string Nombre = GvRow.DataKey("Nombre"); @@ -219,10 +219,32 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas sb.Append("Ocurrió un error al cambiar el estatus de la factura."); } ObjVentas.Dispose(); - + + if (respCancelacion.CveEstatus == 23) + { + var resp = Timbrado.VerificarVigenciaSAT(Uuid, UsuarioActual.Empresa.RFC, RFCReceptor, Total, true); + if (resp != null) + { + sb.AppendFormat("
Folio Fiscal: {0}
", Uuid); + sb.AppendFormat("Código Estado: {0}
", resp.CodigoEstatus); + sb.AppendFormat("Estado: {0}
", resp.Estado); + sb.AppendFormat("Es Cancelable: {0}
", string.IsNullOrEmpty(resp.EsCancelable) ? "Desconocido" : resp.EsCancelable); + sb.AppendFormat("Estatus de Cancelación: {0}

", string.IsNullOrEmpty(resp.EsCancelable) ? "Desconocido" : resp.EstatusCancelacion); + } + } } else { + var resp = Timbrado.VerificarVigenciaSAT(Uuid, UsuarioActual.Empresa.RFC, RFCReceptor, Total, true); + if (resp != null) + { + sb.AppendFormat("Folio Fiscal: {0}
", Uuid); + sb.AppendFormat("Código Estado: {0}
", resp.CodigoEstatus); + sb.AppendFormat("Estado: {0}
", resp.Estado); + sb.AppendFormat("Es Cancelable: {0}
", string.IsNullOrEmpty(resp.EsCancelable) ? "Desconocido" : resp.EsCancelable); + sb.AppendFormat("Estatus de Cancelación: {0}

", string.IsNullOrEmpty(resp.EsCancelable) ? "Desconocido" : resp.EstatusCancelacion); + } + sb.Append(respCancelacion.Mensaje); } @@ -346,7 +368,13 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas } else if (respCancelacion.CveEstatus == 23) { - sb.Append("La solicitud de cancelación no la aplicó el SAT, intente cancelar de nuevo."); + sb.Append("La solicitud de cancelación no la aplicó el SAT, intente cancelar de nuevo.
"); + + sb.AppendFormat("Folio Fiscal: {0}
", uuid); + sb.AppendFormat("Código Estado: {0}
", resp.CodigoEstatus); + sb.AppendFormat("Estado: {0}
", resp.Estado); + sb.AppendFormat("Es Cancelable: {0}
", string.IsNullOrEmpty(resp.EsCancelable) ? "Desconocido" : resp.EsCancelable); + sb.AppendFormat("Estatus de Cancelación: {0}

", string.IsNullOrEmpty(resp.EsCancelable) ? "Desconocido" : resp.EstatusCancelacion); } else { @@ -496,14 +524,14 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas string Total = Row["Total"].ToString(); string SubTotal = Row["SubTotal"].ToString(); string Uuid = Row["FolioFiscal"].ToString(); - string RFCCliente = Row["RFCCliente"].ToString(); + string RFCReceptor = Row["RFCReceptor"].ToString(); string Folio = Row["Folio"].ToString(); string TipoDocto = Row["TipoDocto"].ToString(); string Nombre = Row["Nombre"].ToString(); int CveCliente = Row["CveCliente"].ToEntero(); if (CveVenta > 0) { - sb.AppendFormat("{0}
", VerificarVigenciaSAT(CveVenta, CveCliente, Folio, TipoDocto, Uuid, UsuarioActual.Empresa.RFC, RFCCliente, SubTotal)); + sb.AppendFormat("{0}
", VerificarVigenciaSAT(CveVenta, CveCliente, Folio, TipoDocto, Uuid, UsuarioActual.Empresa.RFC, RFCReceptor, SubTotal)); } } Alert(sb.ToString());