Funcion para obtener el acuse de cancelacion

This commit is contained in:
2022-01-24 17:28:36 -07:00
parent 80940f3b27
commit 63b22e7f4f

View File

@@ -51,6 +51,83 @@ Public Class Timbrado
#End Region
Public Function ObtenerAcuse(CveVenta As Integer, UsuarioActual As Usuario) As Boolean
Dim Retorno As Boolean = False
Try
Dim RowVentas As DataRow = Nothing
Dim RFCEmisor = UsuarioActual.Empresa.RFC
Dim RFCReceptor As String = ""
Dim FolioFiscal As String = ""
Dim FolioSustitucion As String = ""
Dim CvePACCancelacion As Integer = -1
Dim CveSATMotivoCancelacion As Integer = -1
Dim CveMotivoCancelacion As Integer = -1
Dim TotalT As Decimal = 0
Using ObjVentas As New ClsVentas
If ObjVentas.GetVentasPendientesCancelacion(UsuarioActual.CveEmpresa, 100, CveVenta) AndAlso ObjVentas.DtResultados.Rows.Count > 0 Then
RowVentas = ObjVentas.DtResultados.Rows(0)
End If
End Using
If RowVentas IsNot Nothing Then
FolioFiscal = RowVentas("FolioFiscal").ToString()
RFCReceptor = RowVentas("RFCReceptor").ToString()
CvePACCancelacion = RowVentas("CvePAC").ToString().ToEntero()
CveMotivoCancelacion = RowVentas("CveMotivoCancelacion").ToString().ToEntero()
TotalT = RowVentas("Total").ToString().ToDecimal()
FolioSustitucion = RowVentas("FolioFiscalSustitucion").ToString()
End If
If CveMotivoCancelacion > 0 Then
Dim Row As DataRow = ClsPaginas.GlobalDTMotivosCancelacionEmpresa(UsuarioActual.CveEmpresa, CveMotivoCancelacion:=CveMotivoCancelacion).FiltroPrimero("")
If Row IsNot Nothing Then
CveSATMotivoCancelacion = Row("CveSATMotivoCancelacion").ToString().ToEntero()
End If
End If
If CvePACCancelacion = 4 Then
Dim solicitud As New WSGF.Service1SoapClient
Dim resp As New WSGF.StructXml()
resp = solicitud.GetAcuse(RFCEmisor, "rene.molina@adsistemas.mx", "rene2018", FolioFiscal)
If (resp.Estado = 0) Then
Dim xmlDoc As New System.Xml.XmlDocument()
xmlDoc.LoadXml(Encoding.UTF8.GetString(Convert.FromBase64String(resp.CfdiB64)))
Dim xpath As String = "Acuse/Folios"
Dim nodes = xmlDoc.SelectNodes(xpath)
CancelacionState = xmlDoc.GetElementsByTagName("EstatusUUID")(0).InnerText.ToEntero
xpath = "Acuse/Signature"
nodes = xmlDoc.SelectNodes(xpath)
Me.CancelacionAcuse = xmlDoc.GetElementsByTagName("SignatureValue")(0).InnerText
Me.CancelacionFecha = xmlDoc.SelectSingleNode("Acuse").Attributes("Fecha").Value.ToDate
Retorno = True
Else
CancelacionAcuse = resp.Descripcion
Retorno = False
End If
solicitud = Nothing
Else
If CFDICancelar(UsuarioActual.Empresa, FolioFiscal, TotalT, RFCReceptor, UsuarioActual.Empresa.RFC, CvePACCancelacion, CveSATMotivoCancelacion:=CveSATMotivoCancelacion, FolioSustitucion:=FolioSustitucion) Then
'GENERAMOS EL ACUSE Y MANDAMOS MAIL DE CON EL ACUSE DE CANCELACIÓN
CancelacionFecha = Me.CancelacionFecha
CancelacionAcuse = Me.CancelacionAcuse
Retorno = True
End If
End If
Catch ex As Exception
OnError("Ocurrió un error al intentar obtener el acuse", ex)
Retorno = False
End Try
Return Retorno
End Function
Public Shared Function VerificarVigenciaSAT(uuid As String, emisor As String, receptor As String, total As String, produccion As Boolean) As AcuseCancelacionSAT
Dim Retorno As AcuseCancelacionSAT = Nothing
Dim resp As Cancelacion2022.AcuseSat = New Cancelacion2022.AcuseSat()