--cambio a stimul
-- verificación en cancelaciones
This commit is contained in:
@@ -4426,7 +4426,7 @@ Public Class ClsPaginas
|
||||
End Sub
|
||||
Private Shared Function GetCurrentPageViewState() As System.Web.UI.StateBag
|
||||
Dim page As Page = TryCast(HttpContext.Current.CurrentHandler, Page)
|
||||
Dim viewStateProp = page?.[GetType]().GetProperty("ViewState", Reflection.BindingFlags.FlattenHierarchy Or Reflection.BindingFlags.Instance Or Reflection.BindingFlags.NonPublic)
|
||||
Dim viewStateProp As Reflection.PropertyInfo = page?.[GetType]().GetProperty("ViewState", Reflection.BindingFlags.FlattenHierarchy Or Reflection.BindingFlags.Instance Or Reflection.BindingFlags.NonPublic)
|
||||
Return CType(viewStateProp?.GetValue(page), System.Web.UI.StateBag)
|
||||
End Function
|
||||
Public Shared Sub Alert(Mensaje As String, Optional pOpcion As TipoMensaje = TipoMensaje.MsgInformacion, Optional JSBtnAceptar As String = "", Optional timeout As Integer = 5, Optional ShowCloseButton As Boolean = True, Optional TextoConfirmacion As String = "", Optional TextoSegundoBoton As String = "", Optional JSBtn2 As String = "")
|
||||
@@ -4521,11 +4521,11 @@ Public Class ClsPaginas
|
||||
End Sub
|
||||
Public Sub NotificacionesPendientes(Nota As String)
|
||||
'incremento el contador de alertas
|
||||
Dim Type = Master.GetType
|
||||
Dim Prop = Type.GetProperty("countNotificaciones")
|
||||
Dim Type As System.Type = Master.GetType
|
||||
Dim Prop As Reflection.PropertyInfo = Type.GetProperty("countNotificaciones")
|
||||
Prop.SetValue(Master, 1 + CInt(Prop.GetValue(Master)))
|
||||
'end incremento contador de alertas
|
||||
Dim ltl = DirectCast(Master.FindControl("LtlMNotificaciones"), Literal)
|
||||
Dim ltl As Literal = DirectCast(Master.FindControl("LtlMNotificaciones"), Literal)
|
||||
ltl.Text = String.Format(" {0} {1}", ltl.Text, Nota)
|
||||
End Sub
|
||||
Public Sub Confirmacion(Mensaje As String, Tipo As String, FuncionOK As String, FuncionCancel As String)
|
||||
@@ -4628,7 +4628,7 @@ Public Class ClsPaginas
|
||||
lrds.Add(rds)
|
||||
ImprimirPDF(RutaReporte, lrds, Parametros, NombreArchivo, Formato, MR, Content_Disposition)
|
||||
End Sub
|
||||
Public Sub ImprimirPDFStimulsoft(RutaReporte As String, DtDatos As DataTable, Parametros As List(Of ReportParameter), Optional NombreArchivo As String = "Reporte", Optional Formato As String = "PDF", Optional RDSName As String = "Datos", Optional Content_Disposition As String = "attachment")
|
||||
Public Sub ImprimirPDFStimul(RutaReporte As String, DtDatos As DataTable, Parametros As List(Of ReportParameter), Optional NombreArchivo As String = "Reporte", Optional Formato As String = "PDF", Optional RDSName As String = "Datos", Optional Content_Disposition As String = "attachment")
|
||||
Dim lrds As New List(Of ReportDataSource)
|
||||
Dim rds As New ReportDataSource
|
||||
rds.Name = RDSName
|
||||
@@ -4638,7 +4638,7 @@ Public Class ClsPaginas
|
||||
If Formato.ToLower() = "excel" Then
|
||||
Extension = "xlsx"
|
||||
End If
|
||||
ImprimirbytesPDF(StreamBytesStimulsoft("Facturas", RutaReporte, lrds, Parametros, NombreArchivo:=NombreArchivo, Formato:=Formato), NombreArchivo, Formato, Content_Disposition:=Content_Disposition, Extension:=Extension)
|
||||
ImprimirbytesPDF(StreamBytesStimul("Facturas", RutaReporte, lrds, Parametros, NombreArchivo:=NombreArchivo, Formato:=Formato), NombreArchivo, Formato, Content_Disposition:=Content_Disposition, Extension:=Extension)
|
||||
End Sub
|
||||
Public Sub ImprimirPDFMultiDS(RutaReporte As String, lrds As List(Of ReportDataSource), Parametros As List(Of ReportParameter), Optional NombreArchivo As String = "Reporte", Optional Formato As String = "PDF", Optional RDSName As String = "DataSet1", Optional MR As ReportViewer = Nothing)
|
||||
ImprimirPDF(RutaReporte, lrds, Parametros, NombreArchivo, Formato, MR)
|
||||
@@ -5110,7 +5110,7 @@ Public Class ClsPaginas
|
||||
#End Region
|
||||
#Region "IMPRIMIR FACTURA"
|
||||
|
||||
Public Function PdfFactura(ByRef Vta As Modelos.Factura, Optional AplicaPagare As String = "0", Optional Guardar As Boolean = True, Optional SubReportData As Modelos.MSubReportData = Nothing, Optional UsarStimulsoft As Boolean = False) As Byte()
|
||||
Public Function PdfFactura(ByRef Vta As Modelos.Factura, Optional AplicaPagare As String = "0", Optional Guardar As Boolean = True, Optional SubReportData As Modelos.MSubReportData = Nothing, Optional UsarStimul As Boolean = False) As Byte()
|
||||
Dim retorno As Byte() = Nothing
|
||||
' Dim ObjVentas As New ClsVentas
|
||||
'DATOS GENERALES
|
||||
@@ -5947,7 +5947,7 @@ Public Class ClsPaginas
|
||||
lrds.Add(rds3)
|
||||
Dim rds4 As New ReportDataSource With {.Name = "DataSet4", .Value = If(Vta.DtDocumentosRelacionados IsNot Nothing, Vta.DtDocumentosRelacionados, New DataTable)} ' sino esta creado el objeto, lo creamos, para que no truene el reporte
|
||||
lrds.Add(rds4)
|
||||
If UsuarioActual.Empresa.Funcionalidad(707) = "1" OrElse UsarStimulsoft Then
|
||||
If UsuarioActual.Empresa.Funcionalidad(707) = "1" OrElse UsarStimul Then
|
||||
If Vta.Cliente.CodigoRegimenFiscal.ToString.Length > 0 Then
|
||||
params.Add(New ReportParameter("ClienteRegimenFiscal", $"{Vta.Cliente.CodigoRegimenFiscal}-{Vta.Cliente.RegimenFiscal}"))
|
||||
End If
|
||||
@@ -5993,11 +5993,11 @@ Public Class ClsPaginas
|
||||
If UsuarioActual.Empresa.Funcionalidad(707) = "1" Then
|
||||
Dim ArchivoStimulsfot As New System.IO.FileInfo(RutaFormato.Replace(".rdlc", ".mrt"))
|
||||
If ArchivoStimulsfot.Exists Then
|
||||
UsarStimulsoft = True
|
||||
UsarStimul = True
|
||||
params.Add(New ReportParameter("RegimenFiscalEmpresa", String.Format("{0} - {1}", UsuarioActual.Empresa.CodigoRegimenFiscal, UsuarioActual.Empresa.RegimenFiscal)))
|
||||
End If
|
||||
End If
|
||||
If Not UsarStimulsoft Then
|
||||
If Not UsarStimul Then
|
||||
Dim Archivo As New System.IO.FileInfo(RutaFormato)
|
||||
If Archivo.Exists Then
|
||||
|
||||
@@ -6029,7 +6029,7 @@ Public Class ClsPaginas
|
||||
End If
|
||||
Else
|
||||
RutaFormato = RutaFormato.Replace(".rdlc", ".mrt")
|
||||
retorno = StreamBytesStimulsoft("Facturas", RutaFormato, lrds, params, NombreArchivo:=NombreArchivo, Formato:="PDF")
|
||||
retorno = StreamBytesStimul("Facturas", RutaFormato, lrds, params, NombreArchivo:=NombreArchivo, Formato:="PDF")
|
||||
If UsuarioActual.Empresa.Funcionalidad(707) = "1" Then
|
||||
Dim ArchivoPDF As New System.IO.FileInfo(String.Format("{0}PDF\{1}\{2}.pdf", UsuarioActual.Empresa.Ruta, Vta.TipoDocto, Vta.SerieFolio))
|
||||
If Guardar Then
|
||||
@@ -6057,7 +6057,7 @@ Public Class ClsPaginas
|
||||
End Try
|
||||
Return retorno
|
||||
End Function
|
||||
Protected Function StreamBytesStimulsoft(Opcion As String, RutaReporte As String, DataSource As List(Of ReportDataSource), Parametros As List(Of ReportParameter), Optional NombreArchivo As String = "Reporte", Optional Formato As String = "PDF", Optional NombreDataSource As String = "Datos") As Byte()
|
||||
Protected Function StreamBytesStimul(Opcion As String, RutaReporte As String, DataSource As List(Of ReportDataSource), Parametros As List(Of ReportParameter), Optional NombreArchivo As String = "Reporte", Optional Formato As String = "PDF", Optional NombreDataSource As String = "Datos") As Byte()
|
||||
'limpio ReportViwer
|
||||
Dim sw As Stopwatch = Stopwatch.StartNew()
|
||||
|
||||
@@ -6119,12 +6119,12 @@ Public Class ClsPaginas
|
||||
New JProperty("parametros", paramsArray),
|
||||
New JProperty("dataSource", dataSourceArray)
|
||||
)
|
||||
Dim data = New StringContent(payload.ToString(), Encoding.UTF8, "application/json")
|
||||
Using httpClient = New HttpClient()
|
||||
Using request = New HttpRequestMessage(HttpMethod.Post, Url)
|
||||
Dim data As New StringContent(payload.ToString(), Encoding.UTF8, "application/json")
|
||||
Using httpClient As New HttpClient()
|
||||
Using request As New HttpRequestMessage(HttpMethod.Post, Url)
|
||||
'request.Headers.Add("ADSToken", Encripta(String.Format("CVEEMPRESA={0}&TICKS={1}&CVEUSUARIO=100", CveEmpresa, DateTime.UtcNow.Ticks)))
|
||||
request.Content = New StringContent(payload.ToString(), Encoding.UTF8, "application/json")
|
||||
Dim response = httpClient.SendAsync(request).Result
|
||||
Dim response As HttpResponseMessage = httpClient.SendAsync(request).Result
|
||||
If response.StatusCode = Net.HttpStatusCode.OK Then
|
||||
Bytes = response.Content.ReadAsByteArrayAsync().Result
|
||||
End If
|
||||
|
||||
@@ -7115,7 +7115,7 @@ Namespace Modelos
|
||||
Public Property CvePAC As Integer
|
||||
Public Property CveAnticipo As Integer
|
||||
Public Property RemisionesLista As List(Of Integer)
|
||||
Public Property CveAlmacen As Integer
|
||||
Public Property CveAlmacen As Integer = -1
|
||||
Public Property GenerarSalidaAlmacen As Boolean = False
|
||||
Public Property CveConceptoMovimiento As Integer
|
||||
Public Property MovimientoObservaciones As String
|
||||
@@ -7323,7 +7323,7 @@ Namespace Modelos
|
||||
Public Property TipoCambioDolares As Decimal
|
||||
Public Property ConvertirPesos As Boolean
|
||||
Public Property ConvertirDolares As Boolean
|
||||
Public Property FormaPago As Integer
|
||||
Public Property FormaPago As Integer = 0
|
||||
|
||||
Public ReadOnly Property FormaPagoText As String
|
||||
Get
|
||||
@@ -7338,7 +7338,7 @@ Namespace Modelos
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public Property CondicionesPago As Integer
|
||||
Public Property CondicionesPago As Integer = 0 ' 0 - Contado, 1 - Credito (CHECAR)
|
||||
|
||||
Public ReadOnly Property CondicionesPagoText As String
|
||||
Get
|
||||
@@ -7589,10 +7589,10 @@ Namespace Modelos
|
||||
Public Property NumeroContrato As String = ""
|
||||
Public Property PedidoContrato As String = ""
|
||||
Public Property OrdenCompra As String = ""
|
||||
Public Property CveMetodoPago As Integer
|
||||
Public Property CveMetodoPago As Integer = 0
|
||||
Public Property MetodoPago As String = ""
|
||||
Public Property ClaveMetodoPagoSAT As String = ""
|
||||
Public Property CveMetodoPago33 As Integer
|
||||
Public Property CveMetodoPago33 As Integer = 1
|
||||
Public Property MetodoPago33 As String = ""
|
||||
Public Property CveFormaPago33 As Integer
|
||||
Public Property MetodoPagoSAT33 As String = ""
|
||||
|
||||
@@ -252,255 +252,6 @@ Public Class Timbrado
|
||||
MsgCancelacion.AppendFormat("CvePAC:{0}", CvePACCancelacion)
|
||||
|
||||
Select Case CvePACCancelacion
|
||||
Case 1
|
||||
MsgCancelacion.AppendFormat("1.1")
|
||||
Try
|
||||
Dim CFDi As New ClbNegBICFDv3_2.ClsNegEDI
|
||||
Dim Respuesta As New ClbNegBICFDv3_2.ClsNegRespuesta
|
||||
Respuesta = CFDi.CancelaCFdi(Empresa.BIUsuario, Empresa.BIContraseña, Empresa.Ruta & "Certificados\" & Empresa.ArchivoPfx, Empresa.ContraseñaKey, Empresa.RFC, FolioFiscal, "http://portalbiinform.com.mx/srvCFDi/service1.asmx")
|
||||
|
||||
If Respuesta IsNot Nothing AndAlso Respuesta.SelloSAT <> "" Then
|
||||
Dim xml64 As String = ""
|
||||
Dim myXml As String = Respuesta.SelloSAT
|
||||
Dim resp As XElement = XElement.Parse(myXml)
|
||||
For Each elem As XElement In resp.Descendants
|
||||
If elem.Name = "xmlBase64" Then xml64 = elem.Value
|
||||
Next
|
||||
|
||||
'If Respuesta.UUDI.Contiene("0", "201", "202") Then
|
||||
Dim xmlDoc As New System.Xml.XmlDocument()
|
||||
xmlDoc.LoadXml(If(xml64 = "", Respuesta.SelloSAT, Encoding.UTF8.GetString(Convert.FromBase64String(xml64))))
|
||||
Dim AcuseChild = xmlDoc.ChildNodes.Cast(Of XmlNode).Where(Function(a) a.Name.Equals("Acuse", StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault()
|
||||
|
||||
Dim FoliosChild = AcuseChild.ChildNodes.Cast(Of XmlNode).Where(Function(a) a.LocalName.Equals("Folios", StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault()
|
||||
Dim SignatureChild = AcuseChild.ChildNodes.Cast(Of XmlNode).Where(Function(a) a.LocalName.Equals("Signature", StringComparison.CurrentCultureIgnoreCase)).FirstOrDefault()
|
||||
|
||||
Dim prefixFol As String = FoliosChild.Prefix
|
||||
If prefixFol <> "" Then prefixFol = $"{prefixFol}:" 'se le agregan los ":" si tiene prefijo
|
||||
|
||||
CancelacionState = xmlDoc.GetElementsByTagName($"{prefixFol}EstatusUUID")(0).InnerText.ToEntero
|
||||
'verificación basada en el resultado del xml.
|
||||
If CancelacionState.Contiene(201, 202) Then
|
||||
|
||||
Dim prefixSig = SignatureChild.Prefix
|
||||
If prefixSig <> "" Then prefixSig = $"{prefixSig}:" 'se le agregan los ":" si tiene prefijo
|
||||
Dim SignatureValue = xmlDoc.GetElementsByTagName($"{prefixSig}SignatureValue")
|
||||
CancelacionAcuse = If(SignatureValue.Count < 1, SignatureValue(0).InnerText, SignatureValue(0).InnerText)
|
||||
Try
|
||||
CancelacionFecha = AcuseChild.Attributes("Fecha").Value.ToDate
|
||||
Catch ex As Exception
|
||||
CancelacionFecha = xmlDoc.GetElementsByTagName("CancelaCFDResult")(0).Attributes("Fecha").Value.ToDate
|
||||
End Try
|
||||
|
||||
Retorno.Verificado = True
|
||||
Retorno.CancelacionFecha = CancelacionFecha
|
||||
Retorno.CancelacionAcuse = CancelacionAcuse
|
||||
End If
|
||||
|
||||
'End If
|
||||
|
||||
Else
|
||||
Me.GuardaLog(CFDi.MsgError)
|
||||
End If
|
||||
Respuesta = Nothing
|
||||
CFDi = Nothing
|
||||
Catch ex As Exception
|
||||
GuardaLog($"{ex.Message}")
|
||||
End Try
|
||||
|
||||
Case 2
|
||||
MsgCancelacion.AppendFormat("2.1")
|
||||
Dim ArchivoLLave As String = $"{Empresa.Ruta}Certificados\{Empresa.ArchivoKey}"
|
||||
Dim ArchivoCertificado As String = $"{Empresa.Ruta}Certificados\{Empresa.ArchivoCer}"
|
||||
Dim UsuarioServicio As String = If(CvePACCancelacion = 2, Empresa.RFC, "rene.molina@adsistemas.mx")
|
||||
Dim ClaveServicio As String = If(CvePACCancelacion = 2, Empresa.RFC.ToLower, "rene2018")
|
||||
Dim Clave As String = Empresa.ContraseñaKey
|
||||
Dim UrlServicio As String = "" ' Produccion
|
||||
Select Case CvePACCancelacion
|
||||
Case 2
|
||||
UrlServicio = "http://generacfdi.com.mx/rvltimbrado/service1.asmx?WSDL"
|
||||
Case 4
|
||||
UrlServicio = "http://192.168.0.2:8080/ADSistemas/Timbrado.asmx?WSDL"
|
||||
End Select
|
||||
|
||||
If Not Empresa.FacturaProduccion Then
|
||||
ArchivoLLave = $"{Empresa.Ruta}Certificados\CSD01_AAA010101AAA.key"
|
||||
ArchivoCertificado = $"{Empresa.Ruta}Certificados\CSD01_AAA010101AAA.cer"
|
||||
Select Case CvePACCancelacion
|
||||
Case 2
|
||||
UsuarioServicio = "fgomez"
|
||||
ClaveServicio = "12121212"
|
||||
UrlServicio = "http://generacfdi.com.mx/rvltimbrado/service1.asmx?WSDL"
|
||||
Case 4
|
||||
UsuarioServicio = "UserTest"
|
||||
ClaveServicio = "1234567890"
|
||||
UrlServicio = "http://192.168.0.2:8080/ADSistemas/Timbrado.asmx?WSDL"
|
||||
End Select
|
||||
End If
|
||||
|
||||
#Region "Valida"
|
||||
If Not File.Exists(ArchivoCertificado) Then
|
||||
Alert("El archivo de certificado no existe", TipoMensaje.MsgError)
|
||||
Retorno.Verificado = False
|
||||
End If
|
||||
If Not File.Exists(ArchivoLLave) Then
|
||||
Alert("El archivo de llave privada no existe", TipoMensaje.MsgError)
|
||||
Retorno.Verificado = False
|
||||
End If
|
||||
If Empresa.ContraseñaKey = "" Then
|
||||
Alert("La clave no puede ser vacía", TipoMensaje.MsgError)
|
||||
Retorno.Verificado = False
|
||||
End If
|
||||
#End Region
|
||||
|
||||
#Region "Variables"
|
||||
Dim llaveByte As Byte(), certByte As Byte()
|
||||
Dim llaveBase64 As String = "", certBase64 As String = ""
|
||||
Dim cfdi As New RVCFDI.GeneraCFDI()
|
||||
Dim complemento As String = ""
|
||||
Dim complementoConcepto As String = ""
|
||||
|
||||
#End Region
|
||||
|
||||
#Region "Verifica"
|
||||
Try
|
||||
llaveByte = System.IO.File.ReadAllBytes(ArchivoLLave)
|
||||
llaveBase64 = Convert.ToBase64String(llaveByte)
|
||||
Catch ex As Exception
|
||||
Alert($"Error al leer la llave privada: {ex.Message}", TipoMensaje.MsgError)
|
||||
Retorno.Verificado = False
|
||||
End Try
|
||||
|
||||
|
||||
Try
|
||||
certByte = System.IO.File.ReadAllBytes(ArchivoCertificado)
|
||||
certBase64 = Convert.ToBase64String(certByte)
|
||||
Catch ex As Exception
|
||||
Alert($"Error al leer el certificado: {ex.Message}", TipoMensaje.MsgError)
|
||||
Retorno.Verificado = False
|
||||
End Try
|
||||
#End Region
|
||||
|
||||
|
||||
Dim base64 As String
|
||||
Dim ObjCancelacion As New RVCancelacion.Cancelacion()
|
||||
|
||||
Dim xmlCancelacion As String = ObjCancelacion.crearXMLCancelacion(certBase64, llaveBase64, Clave, FolioFiscal)
|
||||
If (ObjCancelacion.MensajeDeError = "") Then
|
||||
|
||||
base64 = CodificarABase64(xmlCancelacion)
|
||||
|
||||
Dim objWS As RVCFDI.WSGeneraCFDI.Service = Nothing
|
||||
Dim objAuthSoapHD As RVCFDI.WSGeneraCFDI.AuthSoapHd
|
||||
Dim objResponse As RVCFDI.WSGeneraCFDI.StructCfd
|
||||
Dim objCancel As RVCFDI.WSGeneraCFDI.StructCancel
|
||||
|
||||
Try
|
||||
|
||||
|
||||
'Variables de consumo de servicio web
|
||||
objWS = New RVCFDI.WSGeneraCFDI.Service()
|
||||
objAuthSoapHD = New RVCFDI.WSGeneraCFDI.AuthSoapHd()
|
||||
'creacion de Autorizacion de cabecera Soap
|
||||
objCancel = New RVCFDI.WSGeneraCFDI.StructCancel()
|
||||
'Configura el servicio
|
||||
objWS.Url = UrlServicio
|
||||
|
||||
objAuthSoapHD.strPassword = ClaveServicio
|
||||
objAuthSoapHD.strUserName = UsuarioServicio
|
||||
'Coloca la cabecera
|
||||
objWS.AuthSoapHdValue = objAuthSoapHD
|
||||
'Obtiene el resultado
|
||||
objCancel = objWS.CancelTicket(base64)
|
||||
'Valida la respuesta
|
||||
''Codigos del SAT
|
||||
''201 - El folio se ha cancelado con éxito.
|
||||
''202 - El CFDI ya había sido cancelado previamente.
|
||||
''203 - UUID no corresponde al emisor.
|
||||
''204 - El CFDI no aplica para cancelación.
|
||||
''205 - El UUID no existe o no ha sido procesado por el SAT.
|
||||
''402 - El Contribuyente no se encuentra el la LCO o la validez de obligaciones se reporta como negativa.
|
||||
CancelacionState = objCancel.state
|
||||
CancelacionMensaje = objCancel.Descripcion
|
||||
|
||||
If objCancel.state.Contiene(0, 201, 202) Then
|
||||
CancelacionFecha = Now
|
||||
|
||||
Select Case CvePACCancelacion
|
||||
Case 2
|
||||
Dim solicitud As New WSRVConsultas.Service1SoapClient
|
||||
Dim resp As New WSRVConsultas.resp_Acuse()
|
||||
resp = solicitud.ConsultarAcuseCancelacion(RFCEmisor, UsuarioServicio, ClaveServicio, FolioFiscal, CancelacionFecha.ToShortDateString)
|
||||
CancelacionMensaje = objCancel.Descripcion
|
||||
|
||||
If (resp.Estado = 0) Then
|
||||
|
||||
Dim xmlDoc As New System.Xml.XmlDocument()
|
||||
xmlDoc.LoadXml(Encoding.UTF8.GetString(Convert.FromBase64String(resp.Xml)))
|
||||
Dim xpath As String = "Acuse/Folios"
|
||||
Dim nodes As XmlNodeList = xmlDoc.SelectNodes(xpath)
|
||||
CancelacionState = xmlDoc.GetElementsByTagName("EstatusUUID")(0).InnerText.ToEntero
|
||||
|
||||
xpath = "Acuse/Signature"
|
||||
nodes = xmlDoc.SelectNodes(xpath)
|
||||
|
||||
CancelacionAcuse = xmlDoc.GetElementsByTagName("SignatureValue")(0).InnerText
|
||||
CancelacionFecha = xmlDoc.SelectSingleNode("Acuse").Attributes("Fecha").Value.ToDate
|
||||
Retorno.Verificado = True
|
||||
Retorno.CancelacionFecha = CancelacionFecha
|
||||
Retorno.CancelacionAcuse = CancelacionAcuse
|
||||
Else
|
||||
CancelacionAcuse = resp.MensajeDeError
|
||||
Retorno.Verificado = True
|
||||
Retorno.CancelacionFecha = CancelacionFecha
|
||||
Retorno.CancelacionAcuse = CancelacionAcuse
|
||||
End If
|
||||
solicitud = Nothing
|
||||
Case 4
|
||||
|
||||
Dim solicitud As New WSGF.Service1SoapClient
|
||||
Dim resp As New WSGF.StructXml()
|
||||
resp = solicitud.GetAcuse(RFCEmisor, UsuarioServicio, ClaveServicio, FolioFiscal)
|
||||
CancelacionMensaje = objCancel.Descripcion
|
||||
|
||||
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 As XmlNodeList = xmlDoc.SelectNodes(xpath)
|
||||
CancelacionState = xmlDoc.GetElementsByTagName("EstatusUUID")(0).InnerText.ToEntero
|
||||
|
||||
xpath = "Acuse/Signature"
|
||||
nodes = xmlDoc.SelectNodes(xpath)
|
||||
|
||||
CancelacionAcuse = xmlDoc.GetElementsByTagName("SignatureValue")(0).InnerText
|
||||
CancelacionFecha = xmlDoc.SelectSingleNode("Acuse").Attributes("Fecha").Value.ToDate
|
||||
Retorno.Verificado = True
|
||||
Retorno.CancelacionFecha = CancelacionFecha
|
||||
Retorno.CancelacionAcuse = CancelacionAcuse
|
||||
Else
|
||||
CancelacionAcuse = resp.Descripcion
|
||||
Retorno.Verificado = True
|
||||
Retorno.CancelacionAcuse = CancelacionAcuse
|
||||
End If
|
||||
solicitud = Nothing
|
||||
End Select
|
||||
|
||||
|
||||
End If
|
||||
Catch ex As Exception
|
||||
CancelacionMensaje += $" | ex: {ex}"
|
||||
Retorno.Verificado = False
|
||||
End Try
|
||||
|
||||
'Libera memoria
|
||||
objWS.Dispose()
|
||||
objResponse = Nothing
|
||||
objAuthSoapHD = Nothing
|
||||
GC.Collect()
|
||||
End If
|
||||
|
||||
|
||||
Case 3
|
||||
MsgCancelacion.AppendFormat("3.1")
|
||||
@@ -522,7 +273,6 @@ Public Class Timbrado
|
||||
AmbienteProductivo = False
|
||||
End If
|
||||
|
||||
|
||||
#Region "Valida"
|
||||
If Not File.Exists(ArchivoCertificado) Then
|
||||
Alert("El archivo de certificado no existe", TipoMensaje.MsgError)
|
||||
@@ -537,7 +287,6 @@ Public Class Timbrado
|
||||
Retorno.Verificado = False
|
||||
End If
|
||||
#End Region
|
||||
|
||||
Dim conector As New Profact.TimbraCFDI40.Conector(AmbienteProductivo)
|
||||
|
||||
If Not AmbienteProductivo Then
|
||||
@@ -545,16 +294,17 @@ Public Class Timbrado
|
||||
Else
|
||||
conector.EstableceCredenciales("vSGxMFWnNRy/nDoowxqrqw==|Sia123654")
|
||||
End If
|
||||
MsgCancelacion.AppendFormat("-3.2")
|
||||
Dim resultadoCancelacion As Profact.TimbraCFDI.ResultadoCancelacion
|
||||
resultadoCancelacion = conector.CancelaCFDI40(RFCEmisor, FolioFiscal, CodigoSATMotivoCancelacion, FolioSustitucion)
|
||||
CancelacionFecha = Now
|
||||
Dim resp As Profact.TimbraCFDI.ResultadoConsulta
|
||||
MsgCancelacion.AppendFormat("-3.2")
|
||||
Dim resultadoCancelacion As Profact.TimbraCFDI.ResultadoCancelacionAck
|
||||
resultadoCancelacion = conector.CancelaCFDIAck40(RFCEmisor, FolioFiscal, CodigoSATMotivoCancelacion, FolioSustitucion)
|
||||
CancelacionFecha = Now
|
||||
|
||||
resp = conector.ObtieneCFDI(RFCEmisor, FolioFiscal)
|
||||
MsgCancelacion.AppendFormat("-3.3")
|
||||
|
||||
'VERIFICA SI SE CANCELO O FUE CANCELADO PREVIAMENTE (CODIGO DE ERROR "330279")
|
||||
If resultadoCancelacion.Exitoso OrElse resultadoCancelacion.NumeroError.Contiene("202", "330279") Then
|
||||
If resultadoCancelacion.Exitoso OrElse resultadoCancelacion.NumeroError.Contiene("202", "330279", "330280") Then
|
||||
MsgCancelacion.AppendFormat("-3.4")
|
||||
CancelacionMensaje = resultadoCancelacion.Descripcion
|
||||
Retorno.CancelacionFecha = CancelacionFecha
|
||||
@@ -563,7 +313,7 @@ Public Class Timbrado
|
||||
|
||||
MsgCancelacion.AppendFormat("-3.4.1")
|
||||
Try
|
||||
xmlDoc.LoadXml(Encoding.UTF8.GetString(Convert.FromBase64String(resp.Xml)))
|
||||
xmlDoc.LoadXml(Encoding.UTF8.GetString(Convert.FromBase64String(resultadoCancelacion.Xml)))
|
||||
Catch ex As Exception
|
||||
If resp.NumeroError.ToEntero() > 0 Then
|
||||
CancelacionMensaje = resp.Descripcion
|
||||
@@ -592,13 +342,11 @@ Public Class Timbrado
|
||||
Else
|
||||
Retorno.Verificado = False
|
||||
End If
|
||||
|
||||
|
||||
Else
|
||||
MsgCancelacion.AppendFormat("-3.5")
|
||||
CancelacionAcuse = resp.NumeroError
|
||||
CancelacionMensaje = resultadoCancelacion.Descripcion
|
||||
Retorno.Verificado = True
|
||||
Retorno.Verificado = False
|
||||
End If
|
||||
|
||||
Case 4
|
||||
@@ -610,7 +358,6 @@ Public Class Timbrado
|
||||
Dim Clave As String = Empresa.ContraseñaKey
|
||||
Dim UrlServicio As String = "" ' Produccion
|
||||
|
||||
'UrlServicio = "http://alterno.gofac.com.mx/cfdi/timbrado.asmx?WSDL" ' alterno
|
||||
UrlServicio = "https://cfdi.gofac.com.mx/timbrado.asmx?WSDL"
|
||||
|
||||
If Not Empresa.FacturaProduccion Then
|
||||
@@ -620,9 +367,7 @@ Public Class Timbrado
|
||||
UsuarioServicio = "UserTest"
|
||||
ClaveServicio = "1234567890"
|
||||
'UrlServicio = "http://juancalderon-001-site6.ftempurl.com/cancelacion.asmx?WSDL"
|
||||
|
||||
End If
|
||||
|
||||
#Region "Valida"
|
||||
If Not File.Exists(ArchivoCertificado) Then
|
||||
Alert("El archivo de certificado no existe", TipoMensaje.MsgError)
|
||||
@@ -644,8 +389,6 @@ Public Class Timbrado
|
||||
Dim objCan As New GoFac.GoCfdi()
|
||||
Dim complemento As String = ""
|
||||
Dim complementoConcepto As String = ""
|
||||
|
||||
|
||||
#End Region
|
||||
|
||||
#Region "Verifica"
|
||||
@@ -656,8 +399,6 @@ Public Class Timbrado
|
||||
Alert($"Error al leer la llave privada: {ex.Message}", TipoMensaje.MsgError)
|
||||
Retorno.Verificado = False
|
||||
End Try
|
||||
|
||||
|
||||
Try
|
||||
certByte = System.IO.File.ReadAllBytes(ArchivoCertificado)
|
||||
certBase64 = Convert.ToBase64String(certByte)
|
||||
@@ -759,7 +500,7 @@ Public Class Timbrado
|
||||
|
||||
If result IsNot Nothing Then
|
||||
If result.statusOk Then
|
||||
Dim cancelacion = result.cancelaciones.First()
|
||||
Dim cancelacion As PADECancelacion = result.cancelaciones.First()
|
||||
If cancelacion IsNot Nothing Then
|
||||
'EN PROCESO, CANCELABLE SIN ACEPTACION,CANCEALDO PREVIAMENTE
|
||||
If cancelacion.codigo.Contiene("96", "201", "202") Then
|
||||
@@ -1549,7 +1290,7 @@ Public Class Timbrado
|
||||
|
||||
Dim y As Integer = 0
|
||||
|
||||
For Each Tras In ObjCFDITimbre.Traslados
|
||||
For Each Tras As CFDITraslados In ObjCFDITimbre.Traslados
|
||||
comprobante.Impuestos.Traslados(y) = New Profact.TimbraCFDI40.ComprobanteImpuestosTraslado()
|
||||
comprobante.Impuestos.Traslados(y).Base = Tras.Base.RoundSQL(NumDecimalesImporte)
|
||||
comprobante.Impuestos.Traslados(y).Impuesto = Tras.Impuesto
|
||||
@@ -1588,7 +1329,7 @@ Public Class Timbrado
|
||||
|
||||
|
||||
If ObjCFDITimbre.RetencionesLocales.Sum(Function(x) x.Importe) > 0 Then
|
||||
Dim Imp = New Profact.TimbraCFDI.Complementos.ImpuestoLocal.ImpuestosLocales()
|
||||
Dim Imp As New Profact.TimbraCFDI.Complementos.ImpuestoLocal.ImpuestosLocales()
|
||||
Imp.version = "1.0"
|
||||
Imp.TotaldeRetenciones = ObjCFDITimbre.RetencionesLocales.Sum(Function(x) x.Importe).FormatoNumero().ToDecimal
|
||||
Imp.TotaldeTraslados = 0
|
||||
@@ -2064,7 +1805,7 @@ Public Class Timbrado
|
||||
|
||||
Dim j As Integer = 0
|
||||
ComCartaPorte.Mercancias.Mercancia(i).CantidadTransporta = New ProfactCartaPorte.CartaPorteMercanciasMercanciaCantidadTransporta(Carta.Mercancias.Mercancias.Count - 1) {}
|
||||
For Each transp In concep.MercanciasCantidadTransporta
|
||||
For Each transp As CFDICartaPorteMercanciaTransporta In concep.MercanciasCantidadTransporta
|
||||
ComCartaPorte.Mercancias.Mercancia(i).CantidadTransporta(j) = New ProfactCartaPorte.CartaPorteMercanciasMercanciaCantidadTransporta
|
||||
ComCartaPorte.Mercancias.Mercancia(i).CantidadTransporta(j).Cantidad = transp.Cantidad
|
||||
ComCartaPorte.Mercancias.Mercancia(i).CantidadTransporta(j).IDOrigen = transp.IDOrigen
|
||||
@@ -2484,7 +2225,7 @@ Public Class Timbrado
|
||||
|
||||
If Not String.IsNullOrEmpty(resultadoTimbre.Detalle) Then
|
||||
Try
|
||||
Dim Resultados = Newtonsoft.Json.Linq.JArray.Parse(resultadoTimbre.Detalle)
|
||||
Dim Resultados As JArray = Newtonsoft.Json.Linq.JArray.Parse(resultadoTimbre.Detalle)
|
||||
|
||||
If Resultados.Count > 0 Then
|
||||
If resultadoTimbre.Descripcion.Contains("RFC del receptor no existe") Then
|
||||
@@ -2620,13 +2361,13 @@ Public Class Timbrado
|
||||
|
||||
If ObjCFDITimbre.Retenciones.Sum(Function(x) x.Importe) > 0 Then
|
||||
''se acumulan los importes
|
||||
For Each Ret In ObjCFDITimbre.Retenciones
|
||||
For Each Ret As CFDIRetenciones In ObjCFDITimbre.Retenciones
|
||||
cfdi.Retencion(Ret.Impuesto, Ret.Importe)
|
||||
Next
|
||||
End If
|
||||
|
||||
''se acumulan los importes
|
||||
For Each Tras In ObjCFDITimbre.Traslados
|
||||
For Each Tras As CFDITraslados In ObjCFDITimbre.Traslados
|
||||
cfdi.Traslado(Tras.Base, Tras.Impuesto, Tras.TipoFactor, Tras.TasaOCuota, Tras.Importe)
|
||||
Next
|
||||
#End Region
|
||||
@@ -2791,7 +2532,7 @@ Public Class Timbrado
|
||||
For Each concep As CFDICartaPorteMercancia In Carta.Mercancias.Mercancias
|
||||
If concep.ValorMercancia <= 0 Then concep.Moneda = ""
|
||||
cfdi.CartaPorteMercancia(concep.BienesTransp, concep.ClaveSTCC, concep.Descripción, concep.Cantidad, concep.ClaveUnidad, concep.Unidad, concep.Dimensiones, concep.MaterialPeligroso, concep.ClaveMaterialPeligroso, If(concep.ClaveMaterialPeligroso <> "", concep.Embalaje, ""), If(concep.ClaveMaterialPeligroso <> "", concep.DescripEmbalaje, ""), concep.PesoenKg, concep.ValorMercancia, concep.Moneda, concep.FraccionArrancelaria, concep.UUIDComercioExt)
|
||||
For Each transp In concep.MercanciasCantidadTransporta
|
||||
For Each transp As CFDICartaPorteMercanciaTransporta In concep.MercanciasCantidadTransporta
|
||||
cfdi.CartaPorteCantidadTransporta(transp.Cantidad, transp.IDOrigen, transp.IDDestino, transp.CvesTransportes)
|
||||
Next
|
||||
Next
|
||||
@@ -3380,11 +3121,11 @@ Public Class Timbrado
|
||||
#Region "Timbra"
|
||||
If RespGeneracionXML = "" Then
|
||||
'OBTENER EL XML DE LA VARIABLE PRIVADA "_xml" YA QUE NO ES ACCESIBLE POR MEDIO DE LA PROPIEDAD "XML" ANTES DE TIMBRAR
|
||||
Dim valorXML = ""
|
||||
Dim valorXML As String = ""
|
||||
Try
|
||||
|
||||
Dim tipo = GetType(GoFac.Cfdi4)
|
||||
Dim info = tipo.GetField("_xml", BindingFlags.NonPublic Or BindingFlags.Instance)
|
||||
Dim tipo As Type = GetType(GoFac.Cfdi4)
|
||||
Dim info As FieldInfo = tipo.GetField("_xml", BindingFlags.NonPublic Or BindingFlags.Instance)
|
||||
valorXML = info?.GetValue(cfdi).ToString()
|
||||
Catch ex As Exception
|
||||
valorXML = ""
|
||||
|
||||
Reference in New Issue
Block a user