Funcionalidad de verificacion ante el sat

This commit is contained in:
2020-12-21 10:54:19 -07:00
parent 6ca8560064
commit 523b27d4b2
2 changed files with 75 additions and 57 deletions

View File

@@ -4407,63 +4407,79 @@ Namespace Modelos
If ObjFactura.FolioFiscal <> "" Then
If ObjFactura.TipoDocto.Contiene("Ing", "Ant", "Dev", "Egs") Then
Dim Vigencia = Timbrado.VerificarVigenciaSAT(FolioFiscal, UsuarioActual.Empresa.RFC, RFCReceptor, TotalT.ToString(), UsuarioActual.Empresa.FacturaProduccion)
'VERIFICA SI DEBE VALIDAR ANTE EL SAT
If Not (UsuarioActual.Empresa.Funcionalidad(529) = "1") Then
If Vigencia IsNot Nothing Then
If Vigencia.EsCancelable.ToUpper() = "NO CANCELABLE" Then
Retorno.Mensaje = "Esta factura no es cancelable."
Dim Vigencia = Timbrado.VerificarVigenciaSAT(FolioFiscal, UsuarioActual.Empresa.RFC, RFCReceptor, TotalT.ToString(), UsuarioActual.Empresa.FacturaProduccion)
If Vigencia IsNot Nothing Then
If Vigencia.EsCancelable.ToUpper() = "NO CANCELABLE" Then
Retorno.Mensaje = "Esta factura no es cancelable."
Retorno.TipoMensaje = TipoMensaje.MsgAdvertencia
Return Retorno
End If
If Vigencia.Estado.ToUpper().Contains("CANCELADO") Then
ContinuarCancelacion = False
ObtenerAcuse = True
Dim solicitud = New WSGF.Service1SoapClient()
Dim acuse = solicitud.GetAcuse(UsuarioActual.Empresa.RFC, "rene.molina@adsistemas.mx", "rene2018", FolioFiscal)
If acuse.Estado = 0 Then
Dim xmlAcuse = New System.Xml.XmlDocument()
xmlAcuse.LoadXml(DecodeBase64(acuse.CfdiB64))
CancelacionAcuse = xmlAcuse.GetElementsByTagName("SignatureValue")(0).InnerText
CancelacionFecha = xmlAcuse.SelectSingleNode("Acuse").Attributes("Fecha").Value.ToDate()
CveEstatus = 5
Else
CancelacionFecha = Now.Date
CancelacionAcuse = ""
CveEstatus = 5
End If
ElseIf Vigencia.Estado.ToUpper().Contains("VIGENTE") Then
If Vigencia.EstatusCancelacion.ToUpper() = "EN PROCESO" Then
CveEstatus = 20
ContinuarCancelacion = False
ElseIf Vigencia.EsCancelable.ToUpper() = "CANCELABLE CON ACEPTACIÓN" Then
CveEstatus = 20
ContinuarCancelacion = True
RequiereAceptacion = True
ElseIf Vigencia.EsCancelable.ToUpper() = "CANCELABLE SIN ACEPTACIÓN" Then
ContinuarCancelacion = True
CveEstatus = 5
End If
Else
If Vigencia.EsCancelable.ToUpper() = "CANCELABLE SIN ACEPTACIÓN" Then
ContinuarCancelacion = True
CveEstatus = 5
Else
CveEstatus = 20
ContinuarCancelacion = False
CancelacionFecha = Now.Date
CancelacionAcuse = ""
End If
End If
Else
Retorno.Mensaje = "SAT - No se pudo verificar el estatus de la factura."
Retorno.TipoMensaje = TipoMensaje.MsgAdvertencia
Return Retorno
End If
If Vigencia.Estado.ToUpper().Contains("CANCELADO") Then
ContinuarCancelacion = False
ObtenerAcuse = True
Dim solicitud = New WSGF.Service1SoapClient()
Dim acuse = solicitud.GetAcuse(UsuarioActual.Empresa.RFC, "rene.molina@adsistemas.mx", "rene2018", FolioFiscal)
If acuse.Estado = 0 Then
Dim xmlAcuse = New System.Xml.XmlDocument()
xmlAcuse.LoadXml(DecodeBase64(acuse.CfdiB64))
CancelacionAcuse = xmlAcuse.GetElementsByTagName("SignatureValue")(0).InnerText
CancelacionFecha = xmlAcuse.SelectSingleNode("Acuse").Attributes("Fecha").Value.ToDate()
CveEstatus = 5
Else
CancelacionFecha = Now.Date
CancelacionAcuse = ""
CveEstatus = 5
End If
ElseIf Vigencia.Estado.ToUpper().Contains("VIGENTE") Then
If Vigencia.EstatusCancelacion.ToUpper() = "EN PROCESO" Then
CveEstatus = 20
ContinuarCancelacion = False
ElseIf Vigencia.EsCancelable.ToUpper() = "CANCELABLE CON ACEPTACIÓN" Then
CveEstatus = 20
ContinuarCancelacion = True
RequiereAceptacion = True
ElseIf Vigencia.EsCancelable.ToUpper() = "CANCELABLE SIN ACEPTACIÓN" Then
ContinuarCancelacion = True
CveEstatus = 5
End If
Else
If Vigencia.EsCancelable.ToUpper() = "CANCELABLE SIN ACEPTACIÓN" Then
ContinuarCancelacion = True
CveEstatus = 5
Else
CveEstatus = 20
ContinuarCancelacion = False
CancelacionFecha = Now.Date
CancelacionAcuse = ""
End If
End If
Else
Retorno.Mensaje = "SAT - No se pudo verificar el estatus de la factura."
Retorno.TipoMensaje = TipoMensaje.MsgAdvertencia
ObtenerAcuse = False
ContinuarCancelacion = True
CancelacionFecha = Now.Date
CancelacionAcuse = ""
Dim diasTimbrado As Decimal = DateDiff(DateInterval.Day, ObjFactura.FechaCP, Now)
If ObjFactura.Total < 5000D OrElse diasTimbrado <= 3 OrElse ObjFactura.Cliente.RFC.Contiene("XAXX010101000", "XEXX010101000") Then
RequiereAceptacion = False
End If
Return Retorno
End If
If Not ObtenerAcuse Then

View File

@@ -59,18 +59,20 @@ Public Class Timbrado
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) As Boolean
Dim Retorno As Boolean = False
Dim MsgCancelacion As New StringBuilder
If ValidaFactura Then
Dim Vigencia = VerificarVigenciaSAT(FolioFiscal, RFCEmisor, RFCReceptor, Total.ToString(), True)
If Vigencia IsNot Nothing Then
If Vigencia.EsCancelable.ToUpper() = "NO CANCELABLE" Then
If Not (Empresa.Funcionalidad(529) = "1") Then
If ValidaFactura Then
Dim Vigencia = VerificarVigenciaSAT(FolioFiscal, RFCEmisor, RFCReceptor, Total.ToString(), True)
If Vigencia IsNot Nothing Then
If Vigencia.EsCancelable.ToUpper() = "NO CANCELABLE" Then
Return False
End If
Else
Return False
End If
Else
Return False
End If
End If
MsgCancelacion.AppendFormat("CvePAC:{0}", CvePACCancelacion)
Select Case CvePACCancelacion