-- al cancelar. que tenga doble validación al confirmar, y retorna un nuevo tipo de dato.
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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}"
|
||||||
|
|||||||
@@ -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()>
|
||||||
|
|||||||
Reference in New Issue
Block a user