-- al cancelar. que tenga doble validación al confirmar, y retorna un nuevo tipo de dato.

This commit is contained in:
2022-02-24 10:32:24 -07:00
parent ef087d5d1c
commit c9b9b513fe
5 changed files with 104 additions and 48 deletions

View File

@@ -3345,7 +3345,9 @@ Public Class ClsVentas
'SOLO SI ESTA CANCELADA ANTE SAT EN SIG SE INTENTARA CANCELAR DE NUEVO CONTRA EL SAT 'SOLO SI ESTA CANCELADA ANTE SAT EN SIG SE INTENTARA CANCELAR DE NUEVO CONTRA EL SAT
If CveEstatus = 5 Then If CveEstatus = 5 Then
If ObjCancelacion.CFDICancelar(Usuario.Empresa, FolioFiscal, Total, RFCReceptor, Usuario.Empresa.RFC) Then Dim Resp As RespuestaCancelacionSAT = ObjCancelacion.CFDICancelar(Usuario.Empresa, FolioFiscal, Total, RFCReceptor, Usuario.Empresa.RFC)
If Resp.Verificado Then
If Not ObjVentas.UpdateEstatusFactura(5, FolioFiscal, ObjCancelacion.CancelacionAcuse, Now, PCveVenta.ToEntero, -1, CvePAC:=Usuario.Empresa.CvePAC) Then If Not ObjVentas.UpdateEstatusFactura(5, FolioFiscal, ObjCancelacion.CancelacionAcuse, Now, PCveVenta.ToEntero, -1, CvePAC:=Usuario.Empresa.CvePAC) Then
CveVentasError.Add(PCveVenta.ToEntero) CveVentasError.Add(PCveVenta.ToEntero)
End If End If

View File

@@ -4909,7 +4909,8 @@ Namespace Modelos
'SI NO SE PUDO OBTENER DEL SERVICIO, UTILIZA EL METODO DE CANCELACION PARA OBTENER EL ACUSE 'SI NO SE PUDO OBTENER DEL SERVICIO, UTILIZA EL METODO DE CANCELACION PARA OBTENER EL ACUSE
If CancelacionAcuse = "" Then If CancelacionAcuse = "" Then
If ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscal, TotalT, RFCReceptor, UsuarioActual.Empresa.RFC, CvePACCancelacion, CveSATMotivoCancelacion:=CveSATMotivoCancelacion, FolioSustitucion:=FolioSustitucion) Then Dim Resp As RespuestaCancelacionSAT = ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscal, TotalT, RFCReceptor, UsuarioActual.Empresa.RFC, CvePACCancelacion, CveSATMotivoCancelacion:=CveSATMotivoCancelacion, FolioSustitucion:=FolioSustitucion)
If Resp.Verificado Then
'GENERAMOS EL ACUSE Y MANDAMOS MAIL DE CON EL ACUSE DE CANCELACIÓN 'GENERAMOS EL ACUSE Y MANDAMOS MAIL DE CON EL ACUSE DE CANCELACIÓN
If RequiereAceptacion Then If RequiereAceptacion Then
CancelacionFecha = Now.Date CancelacionFecha = Now.Date
@@ -4988,15 +4989,18 @@ Namespace Modelos
If Not ObtenerAcuse Then If Not ObtenerAcuse Then
If ContinuarCancelacion Then If ContinuarCancelacion Then
If ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscal, TotalT, RFCReceptor, UsuarioActual.Empresa.RFC, CvePACCancelacion:=CvePACCancelacion, ValidaFactura:=ValidarSAT, CveSATMotivoCancelacion:=CveSATMotivoCancelacion, FolioSustitucion:=FolioSustitucion) Then Dim Resp As RespuestaCancelacionSAT = ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscal, TotalT, RFCReceptor, UsuarioActual.Empresa.RFC, CvePACCancelacion:=CvePACCancelacion, ValidaFactura:=ValidarSAT, CveSATMotivoCancelacion:=CveSATMotivoCancelacion, FolioSustitucion:=FolioSustitucion)
If Resp.Verificado Then
'GENERAMOS EL ACUSE Y MANDAMOS MAIL DE CON EL ACUSE DE CANCELACIÓN 'GENERAMOS EL ACUSE Y MANDAMOS MAIL DE CON EL ACUSE DE CANCELACIÓN
If RequiereAceptacion Then 'If Resp.cve Then
CancelacionFecha = Now.Date ' CancelacionFecha = Now.Date
CveEstatus = 20 ' CveEstatus = 20
Else 'Else
CancelacionFecha = ObjCancelacion.CancelacionFecha ' CancelacionFecha = ObjCancelacion.CancelacionFecha
CveEstatus = 5 ' CveEstatus = 5
End If 'End If
CveEstatus = Resp.CveEstatus
CancelacionFecha = Resp.CancelacionFecha
CancelacionAcuse = ObjCancelacion.CancelacionAcuse CancelacionAcuse = ObjCancelacion.CancelacionAcuse
Else Else
Retorno.Mensaje = "Los servicios de cancelación del SAT no se encuentran disponibles o presentan time out. Intente de nuevo en unos minutos.<br/>Origen del error: WebService www.sat.gob.mx" Retorno.Mensaje = "Los servicios de cancelación del SAT no se encuentran disponibles o presentan time out. Intente de nuevo en unos minutos.<br/>Origen del error: WebService www.sat.gob.mx"
@@ -5098,7 +5102,7 @@ Namespace Modelos
If Not AplicaRefacturacionConPagos AndAlso ((((ObjFactura.Saldo > 0 AndAlso (CveEstatus > 0 AndAlso Not CveEstatus.Contiene(20, 23))) OrElse (ObjFactura.Total = 0 AndAlso UsuarioActual.CveEmpresa.Contiene(72) AndAlso ObjFactura.TipoDocto.Contiene("Ing"))) AndAlso CveEstatus.Contiene(4, 5)) OrElse (CvePlantillaPoliza = 7 AndAlso (CveEstatus > 0 AndAlso Not CveEstatus.Contiene(20, 23)))) Then If Not AplicaRefacturacionConPagos AndAlso ((((ObjFactura.Saldo > 0 AndAlso (CveEstatus > 0 AndAlso Not CveEstatus.Contiene(20, 23))) OrElse (ObjFactura.Total = 0 AndAlso UsuarioActual.CveEmpresa.Contiene(72) AndAlso ObjFactura.TipoDocto.Contiene("Ing"))) AndAlso CveEstatus.Contiene(4, 5)) OrElse (CvePlantillaPoliza = 7 AndAlso (CveEstatus > 0 AndAlso Not CveEstatus.Contiene(20, 23)))) Then
'CUANDO SE CANCELA, LA PÓLIZA DEBE DE SER DE DIARIO 'CUANDO SE CANCELA, LA PÓLIZA DEBE DE SER DE DIARIO
CvePrePoliza = ObjConta.AddPrePolizas("Modelos/CancelarDocumento", CvePlantillaPoliza, ObjFactura.Total, ObjFactura.Total, ObjFactura.CveMoneda, Now, ObjFactura.Cliente.Nombre, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveTipoPoliza:=3) CvePrePoliza = ObjConta.AddPrePolizas("Modelos/CancelarDocumento", CvePlantillaPoliza, ObjFactura.Total, ObjFactura.Total, ObjFactura.CveMoneda, CancelacionFecha, ObjFactura.Cliente.Nombre, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveTipoPoliza:=3)
ObjFactura.CvePrePoliza = CvePrePoliza ObjFactura.CvePrePoliza = CvePrePoliza
If ObjFactura.CvePrePoliza <= 0 Then If ObjFactura.CvePrePoliza <= 0 Then
@@ -6128,7 +6132,9 @@ Namespace Modelos
ErrorCancelar = True ErrorCancelar = True
End If End If
If ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscal, Total, RFCReceptor, UsuarioActual.Empresa.RFC) Then Dim Resp As RespuestaCancelacionSAT = ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscal, Total, RFCReceptor, UsuarioActual.Empresa.RFC)
If Resp.Verificado Then
'falta verificar traer el acuse y reenviarlo 'falta verificar traer el acuse y reenviarlo
If UsuarioActual.Empresa.UsaAC Then If UsuarioActual.Empresa.UsaAC Then
Dim Pol As Modelos.RetornoPolizaConta = GenerarPolizaAC(Me, ObjAC, True) Dim Pol As Modelos.RetornoPolizaConta = GenerarPolizaAC(Me, ObjAC, True)

View File

@@ -111,7 +111,8 @@ Public Class Timbrado
End If End If
solicitud = Nothing solicitud = Nothing
Else Else
If CFDICancelar(UsuarioActual.Empresa, FolioFiscal, TotalT, RFCReceptor, UsuarioActual.Empresa.RFC, CvePACCancelacion, CveSATMotivoCancelacion:=CveSATMotivoCancelacion, FolioSustitucion:=FolioSustitucion) Then Dim Resp As RespuestaCancelacionSAT = CFDICancelar(UsuarioActual.Empresa, FolioFiscal, TotalT, RFCReceptor, UsuarioActual.Empresa.RFC, CvePACCancelacion, CveSATMotivoCancelacion:=CveSATMotivoCancelacion, FolioSustitucion:=FolioSustitucion)
If Resp.Verificado Then
'GENERAMOS EL ACUSE Y MANDAMOS MAIL DE CON EL ACUSE DE CANCELACIÓN 'GENERAMOS EL ACUSE Y MANDAMOS MAIL DE CON EL ACUSE DE CANCELACIÓN
CancelacionFecha = Me.CancelacionFecha CancelacionFecha = Me.CancelacionFecha
CancelacionAcuse = Me.CancelacionAcuse CancelacionAcuse = Me.CancelacionAcuse
@@ -206,8 +207,8 @@ Public Class Timbrado
Return Retorno Return Retorno
End Function End Function
Public Function CFDICancelar(Empresa As Empresa, FolioFiscal As String, Total As Decimal, RFCReceptor As String, RFCEmisor As String, Optional CvePACCancelacion As Integer = 2, Optional ValidaFactura As Boolean = True, Optional CveSATMotivoCancelacion As Integer = -1, Optional FolioSustitucion As String = "") As Boolean Public Function CFDICancelar(Empresa As Empresa, FolioFiscal As String, Total As Decimal, RFCReceptor As String, RFCEmisor As String, Optional CvePACCancelacion As Integer = 2, Optional ValidaFactura As Boolean = True, Optional CveSATMotivoCancelacion As Integer = -1, Optional FolioSustitucion As String = "") As RespuestaCancelacionSAT
Dim Retorno As Boolean = False Dim Retorno As New RespuestaCancelacionSAT
Dim MsgCancelacion As New StringBuilder Dim MsgCancelacion As New StringBuilder
If CvePACCancelacion = 3 Then If CvePACCancelacion = 3 Then
@@ -219,10 +220,14 @@ Public Class Timbrado
Dim Vigencia = VerificarVigenciaSAT(FolioFiscal, RFCEmisor, RFCReceptor, Total.ToString(), True) Dim Vigencia = VerificarVigenciaSAT(FolioFiscal, RFCEmisor, RFCReceptor, Total.ToString(), True)
If Vigencia IsNot Nothing Then If Vigencia IsNot Nothing Then
If Vigencia.EsCancelable.ToUpper() = "NO CANCELABLE" Then If Vigencia.EsCancelable.ToUpper() = "NO CANCELABLE" Then
Return False Retorno.Estado = "NO CANCELABLE"
Retorno.Verificado = False
Return Retorno
End If End If
Else Else
Return False Retorno.Estado = "NO VALIDADO"
Retorno.Verificado = False
Return Retorno
End If End If
End If End If
End If End If
@@ -277,7 +282,10 @@ Public Class Timbrado
Catch ex As Exception Catch ex As Exception
CancelacionFecha = xmlDoc.GetElementsByTagName("CancelaCFDResult")(0).Attributes("Fecha").Value.ToDate CancelacionFecha = xmlDoc.GetElementsByTagName("CancelaCFDResult")(0).Attributes("Fecha").Value.ToDate
End Try End Try
Retorno = True
Retorno.Verificado = True
Retorno.CancelacionFecha = CancelacionFecha
Retorno.CancelacionAcuse = CancelacionAcuse
End If End If
'End If 'End If
@@ -324,15 +332,15 @@ Public Class Timbrado
#Region "Valida" #Region "Valida"
If Not File.Exists(ArchivoCertificado) Then If Not File.Exists(ArchivoCertificado) Then
Alert("El archivo de certificado no existe", TipoMensaje.MsgError) Alert("El archivo de certificado no existe", TipoMensaje.MsgError)
Return False Retorno.Verificado = False
End If End If
If Not File.Exists(ArchivoLLave) Then If Not File.Exists(ArchivoLLave) Then
Alert("El archivo de llave privada no existe", TipoMensaje.MsgError) Alert("El archivo de llave privada no existe", TipoMensaje.MsgError)
Return False Retorno.Verificado = False
End If End If
If Empresa.ContraseñaKey = "" Then If Empresa.ContraseñaKey = "" Then
Alert("La clave no puede ser vacía", TipoMensaje.MsgError) Alert("La clave no puede ser vacía", TipoMensaje.MsgError)
Return False Retorno.Verificado = False
End If End If
#End Region #End Region
@@ -351,7 +359,7 @@ Public Class Timbrado
llaveBase64 = Convert.ToBase64String(llaveByte) llaveBase64 = Convert.ToBase64String(llaveByte)
Catch ex As Exception Catch ex As Exception
Alert($"Error al leer la llave privada: {ex.Message}", TipoMensaje.MsgError) Alert($"Error al leer la llave privada: {ex.Message}", TipoMensaje.MsgError)
Return False Retorno.Verificado = False
End Try End Try
@@ -360,8 +368,7 @@ Public Class Timbrado
certBase64 = Convert.ToBase64String(certByte) certBase64 = Convert.ToBase64String(certByte)
Catch ex As Exception Catch ex As Exception
Alert($"Error al leer el certificado: {ex.Message}", TipoMensaje.MsgError) Alert($"Error al leer el certificado: {ex.Message}", TipoMensaje.MsgError)
Return False Retorno.Verificado = False
End Try End Try
#End Region #End Region
@@ -430,10 +437,14 @@ Public Class Timbrado
CancelacionAcuse = xmlDoc.GetElementsByTagName("SignatureValue")(0).InnerText CancelacionAcuse = xmlDoc.GetElementsByTagName("SignatureValue")(0).InnerText
CancelacionFecha = xmlDoc.SelectSingleNode("Acuse").Attributes("Fecha").Value.ToDate CancelacionFecha = xmlDoc.SelectSingleNode("Acuse").Attributes("Fecha").Value.ToDate
Retorno = True Retorno.Verificado = True
Retorno.CancelacionFecha = CancelacionFecha
Retorno.CancelacionAcuse = CancelacionAcuse
Else Else
CancelacionAcuse = resp.MensajeDeError CancelacionAcuse = resp.MensajeDeError
Retorno = False Retorno.Verificado = True
Retorno.CancelacionFecha = CancelacionFecha
Retorno.CancelacionAcuse = CancelacionAcuse
End If End If
solicitud = Nothing solicitud = Nothing
Case 4 Case 4
@@ -456,10 +467,13 @@ Public Class Timbrado
CancelacionAcuse = xmlDoc.GetElementsByTagName("SignatureValue")(0).InnerText CancelacionAcuse = xmlDoc.GetElementsByTagName("SignatureValue")(0).InnerText
CancelacionFecha = xmlDoc.SelectSingleNode("Acuse").Attributes("Fecha").Value.ToDate CancelacionFecha = xmlDoc.SelectSingleNode("Acuse").Attributes("Fecha").Value.ToDate
Retorno = True Retorno.Verificado = True
Retorno.CancelacionFecha = CancelacionFecha
Retorno.CancelacionAcuse = CancelacionAcuse
Else Else
CancelacionAcuse = resp.Descripcion CancelacionAcuse = resp.Descripcion
Retorno = False Retorno.Verificado = True
Retorno.CancelacionAcuse = CancelacionAcuse
End If End If
solicitud = Nothing solicitud = Nothing
End Select End Select
@@ -468,7 +482,7 @@ Public Class Timbrado
End If End If
Catch ex As Exception Catch ex As Exception
CancelacionMensaje += $" | ex: {ex}" CancelacionMensaje += $" | ex: {ex}"
Retorno = False Retorno.Verificado = False
End Try End Try
'Libera memoria 'Libera memoria
@@ -503,15 +517,15 @@ Public Class Timbrado
#Region "Valida" #Region "Valida"
If Not File.Exists(ArchivoCertificado) Then If Not File.Exists(ArchivoCertificado) Then
Alert("El archivo de certificado no existe", TipoMensaje.MsgError) Alert("El archivo de certificado no existe", TipoMensaje.MsgError)
Return False Retorno.Verificado = False
End If End If
If Not File.Exists(ArchivoLLave) Then If Not File.Exists(ArchivoLLave) Then
Alert("El archivo de llave privada no existe", TipoMensaje.MsgError) Alert("El archivo de llave privada no existe", TipoMensaje.MsgError)
Return False Retorno.Verificado = False
End If End If
If Empresa.ContraseñaKey = "" Then If Empresa.ContraseñaKey = "" Then
Alert("La clave no puede ser vacía", TipoMensaje.MsgError) Alert("La clave no puede ser vacía", TipoMensaje.MsgError)
Return False Retorno.Verificado = False
End If End If
#End Region #End Region
@@ -561,16 +575,19 @@ Public Class Timbrado
MsgCancelacion.AppendFormat("-3.4.3") MsgCancelacion.AppendFormat("-3.4.3")
CancelacionAcuse = xmlDoc.GetElementsByTagName("SignatureValue")(0).InnerText CancelacionAcuse = xmlDoc.GetElementsByTagName("SignatureValue")(0).InnerText
CancelacionFecha = xmlDoc.SelectSingleNode("Acuse").Attributes("Fecha").Value.ToDate CancelacionFecha = xmlDoc.SelectSingleNode("Acuse").Attributes("Fecha").Value.ToDate
Retorno.CancelacionAcuse = CancelacionAcuse
Retorno.CancelacionFecha = CancelacionFecha
Else Else
CancelacionFecha = Now CancelacionFecha = Now
End If End If
Retorno.Verificado = True
Retorno = True
Else Else
MsgCancelacion.AppendFormat("-3.5") MsgCancelacion.AppendFormat("-3.5")
CancelacionAcuse = resp.NumeroError CancelacionAcuse = resp.NumeroError
CancelacionMensaje = resultadoCancelacion.Descripcion CancelacionMensaje = resultadoCancelacion.Descripcion
Retorno = False Retorno.Verificado = True
End If End If
Case 4 Case 4
@@ -599,15 +616,15 @@ Public Class Timbrado
#Region "Valida" #Region "Valida"
If Not File.Exists(ArchivoCertificado) Then If Not File.Exists(ArchivoCertificado) Then
Alert("El archivo de certificado no existe", TipoMensaje.MsgError) Alert("El archivo de certificado no existe", TipoMensaje.MsgError)
Return False Retorno.Verificado = False
End If End If
If Not File.Exists(ArchivoLLave) Then If Not File.Exists(ArchivoLLave) Then
Alert("El archivo de llave privada no existe", TipoMensaje.MsgError) Alert("El archivo de llave privada no existe", TipoMensaje.MsgError)
Return False Retorno.Verificado = False
End If End If
If Empresa.ContraseñaKey = "" Then If Empresa.ContraseñaKey = "" Then
Alert("La clave no puede ser vacía", TipoMensaje.MsgError) Alert("La clave no puede ser vacía", TipoMensaje.MsgError)
Return False Retorno.Verificado = False
End If End If
#End Region #End Region
@@ -627,7 +644,7 @@ Public Class Timbrado
llaveBase64 = Convert.ToBase64String(llaveByte) llaveBase64 = Convert.ToBase64String(llaveByte)
Catch ex As Exception Catch ex As Exception
Alert($"Error al leer la llave privada: {ex.Message}", TipoMensaje.MsgError) Alert($"Error al leer la llave privada: {ex.Message}", TipoMensaje.MsgError)
Return False Retorno.Verificado = False
End Try End Try
@@ -636,8 +653,7 @@ Public Class Timbrado
certBase64 = Convert.ToBase64String(certByte) certBase64 = Convert.ToBase64String(certByte)
Catch ex As Exception Catch ex As Exception
Alert($"Error al leer el certificado: {ex.Message}", TipoMensaje.MsgError) Alert($"Error al leer el certificado: {ex.Message}", TipoMensaje.MsgError)
Return False Retorno.Verificado = False
End Try End Try
#End Region #End Region
objCan.CancelacionCfdi = True objCan.CancelacionCfdi = True
@@ -662,7 +678,9 @@ Public Class Timbrado
CancelacionAcuse = xmlDoc.GetElementsByTagName("SignatureValue")(0).InnerText CancelacionAcuse = xmlDoc.GetElementsByTagName("SignatureValue")(0).InnerText
CancelacionFecha = xmlDoc.DocumentElement.Attributes("Fecha").Value.ToDate CancelacionFecha = xmlDoc.DocumentElement.Attributes("Fecha").Value.ToDate
Retorno = True Retorno.Verificado = True
Retorno.CancelacionAcuse = CancelacionAcuse
Retorno.CancelacionFecha = CancelacionFecha
MsgCancelacion.AppendFormat("4.5.2-") MsgCancelacion.AppendFormat("4.5.2-")
End If End If
@@ -671,7 +689,6 @@ Public Class Timbrado
Case 5 Case 5
CancelacionAcuse = "" CancelacionAcuse = ""
Retorno = False
MsgCancelacion.AppendFormat("5.1-") MsgCancelacion.AppendFormat("5.1-")
Dim TimbraProduccion As Boolean = True Dim TimbraProduccion As Boolean = True
@@ -700,7 +717,7 @@ Public Class Timbrado
llaveBase64 = Convert.ToBase64String(llaveByte) llaveBase64 = Convert.ToBase64String(llaveByte)
Catch ex As Exception Catch ex As Exception
Alert($"Error al leer la llave privada: {ex.Message}", TipoMensaje.MsgError) Alert($"Error al leer la llave privada: {ex.Message}", TipoMensaje.MsgError)
Return False Retorno.Verificado = False
End Try End Try
Try Try
@@ -708,7 +725,7 @@ Public Class Timbrado
certBase64 = Convert.ToBase64String(certByte) certBase64 = Convert.ToBase64String(certByte)
Catch ex As Exception Catch ex As Exception
Alert($"Error al leer el certificado: {ex.Message}", TipoMensaje.MsgError) Alert($"Error al leer el certificado: {ex.Message}", TipoMensaje.MsgError)
Return False Retorno.Verificado = False
End Try End Try
Dim Contrato As String = "72330711-cac6-4106-8051-cbcda1aef495" Dim Contrato As String = "72330711-cac6-4106-8051-cbcda1aef495"
@@ -734,8 +751,11 @@ Public Class Timbrado
'EN PROCESO, CANCELABLE SIN ACEPTACION,CANCEALDO PREVIAMENTE 'EN PROCESO, CANCELABLE SIN ACEPTACION,CANCEALDO PREVIAMENTE
If cancelacion.codigo.Contiene("96", "201", "202") Then If cancelacion.codigo.Contiene("96", "201", "202") Then
CancelacionFecha = Now CancelacionFecha = Now
Retorno = True
CancelacionAcuse = result.acuseCancelBase64 CancelacionAcuse = result.acuseCancelBase64
Retorno.Verificado = True
Retorno.CancelacionAcuse = CancelacionAcuse
Retorno.CancelacionFecha = CancelacionFecha
End If End If
CancelacionMensaje = cancelacion.mensaje CancelacionMensaje = cancelacion.mensaje
Else Else
@@ -749,8 +769,25 @@ Public Class Timbrado
End If End If
End Select 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
End If
If VigenciaExtra.Estado.ToUpper = "CANCELADO" Then
Retorno.Estado = "CANCELADO"
Retorno.CveEstatus = 5
End If
If Not Retorno Then End If
If Not Retorno.Verificado Then
GuardaLog($"****** Error al cancelar factura ****** Estatus: {CancelacionState} | Mensaje: {CancelacionMensaje} | Mensaje SAT: {MsgCancelacion.ToString} ") GuardaLog($"****** Error al cancelar factura ****** Estatus: {CancelacionState} | Mensaje: {CancelacionMensaje} | Mensaje SAT: {MsgCancelacion.ToString} ")
End If End If

View File

@@ -67,8 +67,9 @@ Public Class WsSIGWeb
'SOLO SI ESTA CANCELADA ANTE SAT EN SIG SE INTENTARA CANCELAR DE NUEVO CONTRA EL SAT 'SOLO SI ESTA CANCELADA ANTE SAT EN SIG SE INTENTARA CANCELAR DE NUEVO CONTRA EL SAT
If CveEstatus = 5 Then If CveEstatus = 5 Then
If ObjCancelacion.CFDICancelar(Usuario.Empresa, FolioFiscal, Total, RFCReceptor, Usuario.Empresa.RFC) Then Dim Resp As RespuestaCancelacionSAT = ObjCancelacion.CFDICancelar(Usuario.Empresa, FolioFiscal, Total, RFCReceptor, Usuario.Empresa.RFC)
If ObjVentas.UpdateEstatusFactura(5, FolioFiscal, ObjCancelacion.CancelacionAcuse, Now, PCveVenta.ToEntero, -1, CvePAC:=Usuario.Empresa.CvePAC) Then If Resp.Verificado Then
If ObjVentas.UpdateEstatusFactura(5, FolioFiscal, ObjCancelacion.CancelacionAcuse, Resp.CancelacionFecha, PCveVenta.ToEntero, -1, CvePAC:=Usuario.Empresa.CvePAC) Then
Retorno = True Retorno = True
Else Else
MensajeError = $"Ocurrió un error al actualizar la cancelación la CveVenta {PCveVenta}" MensajeError = $"Ocurrió un error al actualizar la cancelación la CveVenta {PCveVenta}"

View File

@@ -147,6 +147,16 @@ Namespace Extensiones
End If End If
End Function End Function
Public Class RespuestaCancelacionSAT
Public Property Verificado As Boolean = False
Public Property CveEstatus As Integer = 0
Public Property Estado As String = ""
Public Property EstatusCancelacion As String = ""
Public Property CancelacionFecha As Date
Public Property CancelacionAcuse As String = ""
End Class
#Region "Log" #Region "Log"
<Runtime.CompilerServices.Extension()> <Runtime.CompilerServices.Extension()>