--cambio a stimul

-- verificación en cancelaciones
This commit is contained in:
2023-09-27 07:14:24 -07:00
parent 2f0d3775ec
commit e3072dbaf2
3 changed files with 40 additions and 299 deletions

View File

@@ -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

View File

@@ -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 = ""

View File

@@ -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 = ""