diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index 4b0bd8b38..f242730dd 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -5656,7 +5656,7 @@ Namespace Modelos ''' ''' ''' - Public Function EjecutarCancelacionPendiente(CveEstatus As Integer, FechaCancelacion As DateTime, AcuseCancelacion As String, Optional ValidarSAT As Boolean = True, Optional CancelacionPagos As OpcionesCancelacionPagos = OpcionesCancelacionPagos.SinPagos) As MCancelacionVentaMensaje + Public Function EjecutarCancelacionPendiente(CveEstatus As Integer, FechaCancelacion As DateTime, AcuseCancelacion As String, Optional ValidarSAT As Boolean = True, Optional CancelacionPagos As OpcionesCancelacionPagos = OpcionesCancelacionPagos.SinPagos, Optional CvePACEspecifico As Integer = -1) As MCancelacionVentaMensaje Dim ListaRemisionesCancelar As New List(Of Integer) Dim ObjVentas As New ClsVentas() If ObjVentas.GetRemisionesXCancelar(Me.CveVenta) Then @@ -5666,7 +5666,7 @@ Namespace Modelos End If ObjVentas.Dispose() - Return CancelarVenta(Me, Me.UsuarioActual, RealizarDevolucionAlmacen:=Me.RealizarDevolucionAlmacen, ListaRemisionesCancelar:=ListaRemisionesCancelar, CveEstatusFacturaAsignado:=CveEstatus, FechaCancelacion:=FechaCancelacion.ToString("dd/MM/yyyy hh:mm:ss"), AcuseCancelacion:=AcuseCancelacion, CveMotivoCancelacion:=Me.CveMotivoCancelacion, MotivoCancelacion:=Me.MotivoCancelacion, ValidarSAT:=ValidarSAT, CancelacionPagos:=CancelacionPagos) + Return CancelarVenta(Me, Me.UsuarioActual, RealizarDevolucionAlmacen:=Me.RealizarDevolucionAlmacen, ListaRemisionesCancelar:=ListaRemisionesCancelar, CveEstatusFacturaAsignado:=CveEstatus, FechaCancelacion:=FechaCancelacion.ToString("dd/MM/yyyy hh:mm:ss"), AcuseCancelacion:=AcuseCancelacion, CveMotivoCancelacion:=Me.CveMotivoCancelacion, MotivoCancelacion:=Me.MotivoCancelacion, ValidarSAT:=ValidarSAT, CancelacionPagos:=CancelacionPagos, CvePACEspecifico:=CvePACEspecifico) End Function ''' ''' Cancela la factura para poder realizar la refacturacion @@ -5681,16 +5681,18 @@ Namespace Modelos ''' ''' ''' - Public Function CancelarFactura(RealizarDevolucionAlmacen As Integer, Optional ListaRemisionesCancelar As List(Of Integer) = Nothing, Optional CveMotivoCancelacion As Integer = -1, Optional Motivo As String = "", Optional ValidarSAT As Boolean = True, Optional CveEstadoCancelacion As Integer = 0, Optional CancelarBoletos As Boolean = False, Optional ForzarDevolucion As Boolean = False, Optional CancelacionPagos As OpcionesCancelacionPagos = OpcionesCancelacionPagos.SinPagos, Optional CveEstatusFacturaAsignado As Integer = -1) As MCancelacionVentaMensaje + Public Function CancelarFactura(RealizarDevolucionAlmacen As Integer, Optional ListaRemisionesCancelar As List(Of Integer) = Nothing, Optional CveMotivoCancelacion As Integer = -1, Optional Motivo As String = "", Optional ValidarSAT As Boolean = True, Optional CveEstadoCancelacion As Integer = 0, Optional CancelarBoletos As Boolean = False, Optional ForzarDevolucion As Boolean = False, Optional CancelacionPagos As OpcionesCancelacionPagos = OpcionesCancelacionPagos.SinPagos, Optional CveEstatusFacturaAsignado As Integer = -1, Optional CvePACEspecifico As Integer = -1) As MCancelacionVentaMensaje 'Comprobante emitido con errores sin relación - Return CancelarVenta(Me, Me.UsuarioActual, RealizarDevolucionAlmacen:=RealizarDevolucionAlmacen, ListaRemisionesCancelar:=ListaRemisionesCancelar, CveMotivoCancelacion:=CveMotivoCancelacion, MotivoCancelacion:=Motivo, CveEstadoCancelacion:=CveEstadoCancelacion, CancelarBoletos:=CancelarBoletos, ForzarDevolucion:=ForzarDevolucion, CancelacionPagos:=CancelacionPagos, CveEstatusFacturaAsignado:=CveEstatusFacturaAsignado, ValidarSAT:=ValidarSAT) + Return CancelarVenta(Me, Me.UsuarioActual, RealizarDevolucionAlmacen:=RealizarDevolucionAlmacen, ListaRemisionesCancelar:=ListaRemisionesCancelar, CveMotivoCancelacion:=CveMotivoCancelacion, MotivoCancelacion:=Motivo, CveEstadoCancelacion:=CveEstadoCancelacion, CancelarBoletos:=CancelarBoletos, ForzarDevolucion:=ForzarDevolucion, CancelacionPagos:=CancelacionPagos, CveEstatusFacturaAsignado:=CveEstatusFacturaAsignado, ValidarSAT:=ValidarSAT, CvePACEspecifico:=CvePACEspecifico) End Function Private Function CancelarVenta(ObjFactura As Modelos.Factura, UsuarioActual As Usuario, Optional EsRefacturacion As Boolean = False, Optional RealizarDevolucionAlmacen As Integer = 0, Optional ListaRemisionesCancelar As List(Of Integer) = Nothing, Optional CveEstatusFacturaAsignado As Integer = -1, Optional FechaCancelacion As String = "-1", Optional AcuseCancelacion As String = "", Optional CveMotivoCancelacion As Integer = -1, Optional MotivoCancelacion As String = "", Optional FolioSustitucion As String = "", Optional ValidarSAT As Boolean = True, Optional CveEstadoCancelacion As Integer = 0, - Optional CancelarBoletos As Boolean = False, Optional ForzarDevolucion As Boolean = False, Optional CancelacionPagos As OpcionesCancelacionPagos = OpcionesCancelacionPagos.SinPagos) As MCancelacionVentaMensaje + Optional CancelarBoletos As Boolean = False, Optional ForzarDevolucion As Boolean = False, Optional CancelacionPagos As OpcionesCancelacionPagos = OpcionesCancelacionPagos.SinPagos, + Optional CvePACEspecifico As Integer = -1) As MCancelacionVentaMensaje + Dim Retorno As New MCancelacionVentaMensaje() Dim ErrorList As New List(Of String) @@ -5887,6 +5889,10 @@ Namespace Modelos CvePACCancelacion = UsuarioActual.Empresa.CvePAC End If + If CvePACEspecifico > 0 Then + CvePACCancelacion = CvePACEspecifico + End If + Dim CveEstatus As Integer = 4 Dim IDPoliza As Integer = -1 Dim CvePrePoliza As Integer diff --git a/App_Code/Timbrado.vb b/App_Code/Timbrado.vb index 09794b026..cdfff5558 100644 --- a/App_Code/Timbrado.vb +++ b/App_Code/Timbrado.vb @@ -220,9 +220,6 @@ Public Class Timbrado 'dim Error If CvePACCancelacion = 3 Then ValidaFactura = False - 'TEMPORAL. PARCHE PARA CANCELAR DOCUMENTOS EMITIDOS CON EL PAC 5 - 'If CvePACCancelacion = 5 Then CvePACCancelacion = 4 - If Not (Empresa.Funcionalidad(529) = "1") Then If ValidaFactura Then Dim Vigencia As AcuseCancelacionSAT = VerificarVigenciaSAT(FolioFiscal, RFCEmisor, RFCReceptor, Total.ToString(), True) @@ -522,31 +519,33 @@ Public Class Timbrado End Select 'valida que si se halla cancelado - - If Retorno.Verificado Then - Dim VigenciaExtra As AcuseCancelacionSAT = 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 + If Not (Empresa.Funcionalidad(529) = "1") Then + If Retorno.Verificado Then + Dim VigenciaExtra As AcuseCancelacionSAT = 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 End If + If Not Retorno.Verificado Then GuardaLog($"****** Error al cancelar factura ****** Estatus: {CancelacionState} | Mensaje: {CancelacionMensaje} | Mensaje SAT: {MsgCancelacion.ToString} ") End If @@ -993,7 +992,7 @@ Public Class Timbrado ' Retorno = If(Ret = "", True, False) Case 3 - Retorno = TimbrarFacturaProFactV40(UsuarioActual, Ventas) + Retorno = TimbrarFacturaProFactv40(UsuarioActual, Ventas) Case 4 Dim Ret As String = TimbrarFacturaGoCFDIv40(Ventas, UsuarioActual, CvePACEspecial) If Ret <> "" Then MensajeErrorCFDI = Ret @@ -2572,12 +2571,12 @@ concep.DescripcionesEspecificas.NumeroSerie) If Carta.RegimenAduanero <> "" Then cfdi.CartaPorte31RegimenAduaneroCCP(Carta.RegimenAduanero) 'UBICACIONES If Carta.Ubicaciones IsNot Nothing AndAlso Carta.Ubicaciones.Count > 0 Then - For Each ubica As CFDICartaPorteUbicacion In Carta.Ubicaciones + For Each ubica As CFDICartaPorteUbicacion In Carta.Ubicaciones 'origen cfdi.CartaPorte31Ubicacion(ubica.TipoUbicacion, ubica.IDUbicacion, ubica.RFCRemitenteDestinatario, ubica.NombreRemitenteDestinatario, ubica.NumRegIdTrib, ubica.ResidenciaFiscal, ubica.NumEstacion, ubica.NombreEstacion, ubica.NavegacionTrafico, ubica.FechaHoraSalidaLlegada, ubica.TipoEstacion, ubica.DistanciaRecorrida) cfdi.CartaPorte31Domicilio(ubica.Domicilio.Calle, ubica.Domicilio.NumeroExterior, ubica.Domicilio.NumeroInterior, ubica.Domicilio.Colonia, ubica.Domicilio.Localidad, ubica.Domicilio.Referencia, ubica.Domicilio.Municipio, ubica.Domicilio.Estado, ubica.Domicilio.Pais, ubica.Domicilio.CP) - Next - End If + Next + End If 'MERCANCIAS If Carta.Mercancias IsNot Nothing Then diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index f407bcc48..6d425a0e2 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -39950,7 +39950,7 @@ Partial Class Ventas Dim Total As Decimal = RowVenta("Total").ToString().ToDecimal() Dim RFCReceptor As String = RowVenta("RFCReceptor").ToString() Dim ObjTimbrado As New Timbrado - Dim resp = ObjTimbrado.CFDICancelar(UsuarioActual.Empresa, FolioFiscal, Total, RFCReceptor, UsuarioActual.Empresa.RFC, CvePACCancelacion:=4, ValidaFactura:=False, CveSATMotivoCancelacion:=2) + Dim resp = ObjTimbrado.CFDICancelar(UsuarioActual.Empresa, FolioFiscal, Total, RFCReceptor, UsuarioActual.Empresa.RFC, CvePACCancelacion:=5, ValidaFactura:=False, CveSATMotivoCancelacion:=2) If resp IsNot Nothing Then Alert(resp.Estado) End If