Funcionalidad de verificacion ante el sat
This commit is contained in:
@@ -4407,63 +4407,79 @@ Namespace Modelos
|
|||||||
If ObjFactura.FolioFiscal <> "" Then
|
If ObjFactura.FolioFiscal <> "" Then
|
||||||
If ObjFactura.TipoDocto.Contiene("Ing", "Ant", "Dev", "Egs") 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
|
Dim Vigencia = Timbrado.VerificarVigenciaSAT(FolioFiscal, UsuarioActual.Empresa.RFC, RFCReceptor, TotalT.ToString(), UsuarioActual.Empresa.FacturaProduccion)
|
||||||
If Vigencia.EsCancelable.ToUpper() = "NO CANCELABLE" Then
|
|
||||||
Retorno.Mensaje = "Esta factura no es cancelable."
|
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
|
Retorno.TipoMensaje = TipoMensaje.MsgAdvertencia
|
||||||
|
|
||||||
Return Retorno
|
Return Retorno
|
||||||
End If
|
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
|
Else
|
||||||
Retorno.Mensaje = "SAT - No se pudo verificar el estatus de la factura."
|
ObtenerAcuse = False
|
||||||
Retorno.TipoMensaje = TipoMensaje.MsgAdvertencia
|
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
|
End If
|
||||||
|
|
||||||
If Not ObtenerAcuse Then
|
If Not ObtenerAcuse Then
|
||||||
|
|||||||
@@ -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
|
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 Retorno As Boolean = False
|
||||||
Dim MsgCancelacion As New StringBuilder
|
Dim MsgCancelacion As New StringBuilder
|
||||||
If ValidaFactura Then
|
|
||||||
Dim Vigencia = VerificarVigenciaSAT(FolioFiscal, RFCEmisor, RFCReceptor, Total.ToString(), True)
|
If Not (Empresa.Funcionalidad(529) = "1") Then
|
||||||
If Vigencia IsNot Nothing Then
|
If ValidaFactura Then
|
||||||
If Vigencia.EsCancelable.ToUpper() = "NO CANCELABLE" 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
|
Return False
|
||||||
End If
|
End If
|
||||||
Else
|
|
||||||
Return False
|
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
|
||||||
MsgCancelacion.AppendFormat("CvePAC:{0}", CvePACCancelacion)
|
MsgCancelacion.AppendFormat("CvePAC:{0}", CvePACCancelacion)
|
||||||
|
|
||||||
Select Case CvePACCancelacion
|
Select Case CvePACCancelacion
|
||||||
|
|||||||
Reference in New Issue
Block a user