diff --git a/App_Code/Timbrado.vb b/App_Code/Timbrado.vb index 191c38d6e..dd2d4be5d 100644 --- a/App_Code/Timbrado.vb +++ b/App_Code/Timbrado.vb @@ -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()