--cambio a stimul
-- verificación en cancelaciones
This commit is contained in:
@@ -4426,7 +4426,7 @@ Public Class ClsPaginas
|
|||||||
End Sub
|
End Sub
|
||||||
Private Shared Function GetCurrentPageViewState() As System.Web.UI.StateBag
|
Private Shared Function GetCurrentPageViewState() As System.Web.UI.StateBag
|
||||||
Dim page As Page = TryCast(HttpContext.Current.CurrentHandler, Page)
|
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)
|
Return CType(viewStateProp?.GetValue(page), System.Web.UI.StateBag)
|
||||||
End Function
|
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 = "")
|
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
|
End Sub
|
||||||
Public Sub NotificacionesPendientes(Nota As String)
|
Public Sub NotificacionesPendientes(Nota As String)
|
||||||
'incremento el contador de alertas
|
'incremento el contador de alertas
|
||||||
Dim Type = Master.GetType
|
Dim Type As System.Type = Master.GetType
|
||||||
Dim Prop = Type.GetProperty("countNotificaciones")
|
Dim Prop As Reflection.PropertyInfo = Type.GetProperty("countNotificaciones")
|
||||||
Prop.SetValue(Master, 1 + CInt(Prop.GetValue(Master)))
|
Prop.SetValue(Master, 1 + CInt(Prop.GetValue(Master)))
|
||||||
'end incremento contador de alertas
|
'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)
|
ltl.Text = String.Format(" {0} {1}", ltl.Text, Nota)
|
||||||
End Sub
|
End Sub
|
||||||
Public Sub Confirmacion(Mensaje As String, Tipo As String, FuncionOK As String, FuncionCancel As String)
|
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)
|
lrds.Add(rds)
|
||||||
ImprimirPDF(RutaReporte, lrds, Parametros, NombreArchivo, Formato, MR, Content_Disposition)
|
ImprimirPDF(RutaReporte, lrds, Parametros, NombreArchivo, Formato, MR, Content_Disposition)
|
||||||
End Sub
|
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 lrds As New List(Of ReportDataSource)
|
||||||
Dim rds As New ReportDataSource
|
Dim rds As New ReportDataSource
|
||||||
rds.Name = RDSName
|
rds.Name = RDSName
|
||||||
@@ -4638,7 +4638,7 @@ Public Class ClsPaginas
|
|||||||
If Formato.ToLower() = "excel" Then
|
If Formato.ToLower() = "excel" Then
|
||||||
Extension = "xlsx"
|
Extension = "xlsx"
|
||||||
End If
|
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
|
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)
|
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)
|
ImprimirPDF(RutaReporte, lrds, Parametros, NombreArchivo, Formato, MR)
|
||||||
@@ -5110,7 +5110,7 @@ Public Class ClsPaginas
|
|||||||
#End Region
|
#End Region
|
||||||
#Region "IMPRIMIR FACTURA"
|
#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 retorno As Byte() = Nothing
|
||||||
' Dim ObjVentas As New ClsVentas
|
' Dim ObjVentas As New ClsVentas
|
||||||
'DATOS GENERALES
|
'DATOS GENERALES
|
||||||
@@ -5947,7 +5947,7 @@ Public Class ClsPaginas
|
|||||||
lrds.Add(rds3)
|
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
|
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)
|
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
|
If Vta.Cliente.CodigoRegimenFiscal.ToString.Length > 0 Then
|
||||||
params.Add(New ReportParameter("ClienteRegimenFiscal", $"{Vta.Cliente.CodigoRegimenFiscal}-{Vta.Cliente.RegimenFiscal}"))
|
params.Add(New ReportParameter("ClienteRegimenFiscal", $"{Vta.Cliente.CodigoRegimenFiscal}-{Vta.Cliente.RegimenFiscal}"))
|
||||||
End If
|
End If
|
||||||
@@ -5993,11 +5993,11 @@ Public Class ClsPaginas
|
|||||||
If UsuarioActual.Empresa.Funcionalidad(707) = "1" Then
|
If UsuarioActual.Empresa.Funcionalidad(707) = "1" Then
|
||||||
Dim ArchivoStimulsfot As New System.IO.FileInfo(RutaFormato.Replace(".rdlc", ".mrt"))
|
Dim ArchivoStimulsfot As New System.IO.FileInfo(RutaFormato.Replace(".rdlc", ".mrt"))
|
||||||
If ArchivoStimulsfot.Exists Then
|
If ArchivoStimulsfot.Exists Then
|
||||||
UsarStimulsoft = True
|
UsarStimul = True
|
||||||
params.Add(New ReportParameter("RegimenFiscalEmpresa", String.Format("{0} - {1}", UsuarioActual.Empresa.CodigoRegimenFiscal, UsuarioActual.Empresa.RegimenFiscal)))
|
params.Add(New ReportParameter("RegimenFiscalEmpresa", String.Format("{0} - {1}", UsuarioActual.Empresa.CodigoRegimenFiscal, UsuarioActual.Empresa.RegimenFiscal)))
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
If Not UsarStimulsoft Then
|
If Not UsarStimul Then
|
||||||
Dim Archivo As New System.IO.FileInfo(RutaFormato)
|
Dim Archivo As New System.IO.FileInfo(RutaFormato)
|
||||||
If Archivo.Exists Then
|
If Archivo.Exists Then
|
||||||
|
|
||||||
@@ -6029,7 +6029,7 @@ Public Class ClsPaginas
|
|||||||
End If
|
End If
|
||||||
Else
|
Else
|
||||||
RutaFormato = RutaFormato.Replace(".rdlc", ".mrt")
|
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
|
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))
|
Dim ArchivoPDF As New System.IO.FileInfo(String.Format("{0}PDF\{1}\{2}.pdf", UsuarioActual.Empresa.Ruta, Vta.TipoDocto, Vta.SerieFolio))
|
||||||
If Guardar Then
|
If Guardar Then
|
||||||
@@ -6057,7 +6057,7 @@ Public Class ClsPaginas
|
|||||||
End Try
|
End Try
|
||||||
Return retorno
|
Return retorno
|
||||||
End Function
|
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
|
'limpio ReportViwer
|
||||||
Dim sw As Stopwatch = Stopwatch.StartNew()
|
Dim sw As Stopwatch = Stopwatch.StartNew()
|
||||||
|
|
||||||
@@ -6119,12 +6119,12 @@ Public Class ClsPaginas
|
|||||||
New JProperty("parametros", paramsArray),
|
New JProperty("parametros", paramsArray),
|
||||||
New JProperty("dataSource", dataSourceArray)
|
New JProperty("dataSource", dataSourceArray)
|
||||||
)
|
)
|
||||||
Dim data = New StringContent(payload.ToString(), Encoding.UTF8, "application/json")
|
Dim data As New StringContent(payload.ToString(), Encoding.UTF8, "application/json")
|
||||||
Using httpClient = New HttpClient()
|
Using httpClient As New HttpClient()
|
||||||
Using request = New HttpRequestMessage(HttpMethod.Post, Url)
|
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.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")
|
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
|
If response.StatusCode = Net.HttpStatusCode.OK Then
|
||||||
Bytes = response.Content.ReadAsByteArrayAsync().Result
|
Bytes = response.Content.ReadAsByteArrayAsync().Result
|
||||||
End If
|
End If
|
||||||
|
|||||||
@@ -7115,7 +7115,7 @@ Namespace Modelos
|
|||||||
Public Property CvePAC As Integer
|
Public Property CvePAC As Integer
|
||||||
Public Property CveAnticipo As Integer
|
Public Property CveAnticipo As Integer
|
||||||
Public Property RemisionesLista As List(Of 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 GenerarSalidaAlmacen As Boolean = False
|
||||||
Public Property CveConceptoMovimiento As Integer
|
Public Property CveConceptoMovimiento As Integer
|
||||||
Public Property MovimientoObservaciones As String
|
Public Property MovimientoObservaciones As String
|
||||||
@@ -7323,7 +7323,7 @@ Namespace Modelos
|
|||||||
Public Property TipoCambioDolares As Decimal
|
Public Property TipoCambioDolares As Decimal
|
||||||
Public Property ConvertirPesos As Boolean
|
Public Property ConvertirPesos As Boolean
|
||||||
Public Property ConvertirDolares As Boolean
|
Public Property ConvertirDolares As Boolean
|
||||||
Public Property FormaPago As Integer
|
Public Property FormaPago As Integer = 0
|
||||||
|
|
||||||
Public ReadOnly Property FormaPagoText As String
|
Public ReadOnly Property FormaPagoText As String
|
||||||
Get
|
Get
|
||||||
@@ -7338,7 +7338,7 @@ Namespace Modelos
|
|||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
Public Property CondicionesPago As Integer
|
Public Property CondicionesPago As Integer = 0 ' 0 - Contado, 1 - Credito (CHECAR)
|
||||||
|
|
||||||
Public ReadOnly Property CondicionesPagoText As String
|
Public ReadOnly Property CondicionesPagoText As String
|
||||||
Get
|
Get
|
||||||
@@ -7589,10 +7589,10 @@ Namespace Modelos
|
|||||||
Public Property NumeroContrato As String = ""
|
Public Property NumeroContrato As String = ""
|
||||||
Public Property PedidoContrato As String = ""
|
Public Property PedidoContrato As String = ""
|
||||||
Public Property OrdenCompra 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 MetodoPago As String = ""
|
||||||
Public Property ClaveMetodoPagoSAT 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 MetodoPago33 As String = ""
|
||||||
Public Property CveFormaPago33 As Integer
|
Public Property CveFormaPago33 As Integer
|
||||||
Public Property MetodoPagoSAT33 As String = ""
|
Public Property MetodoPagoSAT33 As String = ""
|
||||||
|
|||||||
@@ -252,255 +252,6 @@ Public Class Timbrado
|
|||||||
MsgCancelacion.AppendFormat("CvePAC:{0}", CvePACCancelacion)
|
MsgCancelacion.AppendFormat("CvePAC:{0}", CvePACCancelacion)
|
||||||
|
|
||||||
Select Case 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
|
Case 3
|
||||||
MsgCancelacion.AppendFormat("3.1")
|
MsgCancelacion.AppendFormat("3.1")
|
||||||
@@ -522,7 +273,6 @@ Public Class Timbrado
|
|||||||
AmbienteProductivo = False
|
AmbienteProductivo = False
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
|
||||||
#Region "Valida"
|
#Region "Valida"
|
||||||
If Not File.Exists(ArchivoCertificado) Then
|
If Not File.Exists(ArchivoCertificado) Then
|
||||||
Alert("El archivo de certificado no existe", TipoMensaje.MsgError)
|
Alert("El archivo de certificado no existe", TipoMensaje.MsgError)
|
||||||
@@ -537,7 +287,6 @@ Public Class Timbrado
|
|||||||
Retorno.Verificado = False
|
Retorno.Verificado = False
|
||||||
End If
|
End If
|
||||||
#End Region
|
#End Region
|
||||||
|
|
||||||
Dim conector As New Profact.TimbraCFDI40.Conector(AmbienteProductivo)
|
Dim conector As New Profact.TimbraCFDI40.Conector(AmbienteProductivo)
|
||||||
|
|
||||||
If Not AmbienteProductivo Then
|
If Not AmbienteProductivo Then
|
||||||
@@ -545,16 +294,17 @@ Public Class Timbrado
|
|||||||
Else
|
Else
|
||||||
conector.EstableceCredenciales("vSGxMFWnNRy/nDoowxqrqw==|Sia123654")
|
conector.EstableceCredenciales("vSGxMFWnNRy/nDoowxqrqw==|Sia123654")
|
||||||
End If
|
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
|
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)
|
resp = conector.ObtieneCFDI(RFCEmisor, FolioFiscal)
|
||||||
MsgCancelacion.AppendFormat("-3.3")
|
MsgCancelacion.AppendFormat("-3.3")
|
||||||
|
|
||||||
'VERIFICA SI SE CANCELO O FUE CANCELADO PREVIAMENTE (CODIGO DE ERROR "330279")
|
'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")
|
MsgCancelacion.AppendFormat("-3.4")
|
||||||
CancelacionMensaje = resultadoCancelacion.Descripcion
|
CancelacionMensaje = resultadoCancelacion.Descripcion
|
||||||
Retorno.CancelacionFecha = CancelacionFecha
|
Retorno.CancelacionFecha = CancelacionFecha
|
||||||
@@ -563,7 +313,7 @@ Public Class Timbrado
|
|||||||
|
|
||||||
MsgCancelacion.AppendFormat("-3.4.1")
|
MsgCancelacion.AppendFormat("-3.4.1")
|
||||||
Try
|
Try
|
||||||
xmlDoc.LoadXml(Encoding.UTF8.GetString(Convert.FromBase64String(resp.Xml)))
|
xmlDoc.LoadXml(Encoding.UTF8.GetString(Convert.FromBase64String(resultadoCancelacion.Xml)))
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
If resp.NumeroError.ToEntero() > 0 Then
|
If resp.NumeroError.ToEntero() > 0 Then
|
||||||
CancelacionMensaje = resp.Descripcion
|
CancelacionMensaje = resp.Descripcion
|
||||||
@@ -592,13 +342,11 @@ Public Class Timbrado
|
|||||||
Else
|
Else
|
||||||
Retorno.Verificado = False
|
Retorno.Verificado = False
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
|
||||||
Else
|
Else
|
||||||
MsgCancelacion.AppendFormat("-3.5")
|
MsgCancelacion.AppendFormat("-3.5")
|
||||||
CancelacionAcuse = resp.NumeroError
|
CancelacionAcuse = resp.NumeroError
|
||||||
CancelacionMensaje = resultadoCancelacion.Descripcion
|
CancelacionMensaje = resultadoCancelacion.Descripcion
|
||||||
Retorno.Verificado = True
|
Retorno.Verificado = False
|
||||||
End If
|
End If
|
||||||
|
|
||||||
Case 4
|
Case 4
|
||||||
@@ -610,7 +358,6 @@ Public Class Timbrado
|
|||||||
Dim Clave As String = Empresa.ContraseñaKey
|
Dim Clave As String = Empresa.ContraseñaKey
|
||||||
Dim UrlServicio As String = "" ' Produccion
|
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"
|
UrlServicio = "https://cfdi.gofac.com.mx/timbrado.asmx?WSDL"
|
||||||
|
|
||||||
If Not Empresa.FacturaProduccion Then
|
If Not Empresa.FacturaProduccion Then
|
||||||
@@ -620,9 +367,7 @@ Public Class Timbrado
|
|||||||
UsuarioServicio = "UserTest"
|
UsuarioServicio = "UserTest"
|
||||||
ClaveServicio = "1234567890"
|
ClaveServicio = "1234567890"
|
||||||
'UrlServicio = "http://juancalderon-001-site6.ftempurl.com/cancelacion.asmx?WSDL"
|
'UrlServicio = "http://juancalderon-001-site6.ftempurl.com/cancelacion.asmx?WSDL"
|
||||||
|
|
||||||
End If
|
End If
|
||||||
|
|
||||||
#Region "Valida"
|
#Region "Valida"
|
||||||
If Not File.Exists(ArchivoCertificado) Then
|
If Not File.Exists(ArchivoCertificado) Then
|
||||||
Alert("El archivo de certificado no existe", TipoMensaje.MsgError)
|
Alert("El archivo de certificado no existe", TipoMensaje.MsgError)
|
||||||
@@ -644,8 +389,6 @@ Public Class Timbrado
|
|||||||
Dim objCan As New GoFac.GoCfdi()
|
Dim objCan As New GoFac.GoCfdi()
|
||||||
Dim complemento As String = ""
|
Dim complemento As String = ""
|
||||||
Dim complementoConcepto As String = ""
|
Dim complementoConcepto As String = ""
|
||||||
|
|
||||||
|
|
||||||
#End Region
|
#End Region
|
||||||
|
|
||||||
#Region "Verifica"
|
#Region "Verifica"
|
||||||
@@ -656,8 +399,6 @@ Public Class Timbrado
|
|||||||
Alert($"Error al leer la llave privada: {ex.Message}", TipoMensaje.MsgError)
|
Alert($"Error al leer la llave privada: {ex.Message}", TipoMensaje.MsgError)
|
||||||
Retorno.Verificado = False
|
Retorno.Verificado = False
|
||||||
End Try
|
End Try
|
||||||
|
|
||||||
|
|
||||||
Try
|
Try
|
||||||
certByte = System.IO.File.ReadAllBytes(ArchivoCertificado)
|
certByte = System.IO.File.ReadAllBytes(ArchivoCertificado)
|
||||||
certBase64 = Convert.ToBase64String(certByte)
|
certBase64 = Convert.ToBase64String(certByte)
|
||||||
@@ -759,7 +500,7 @@ Public Class Timbrado
|
|||||||
|
|
||||||
If result IsNot Nothing Then
|
If result IsNot Nothing Then
|
||||||
If result.statusOk Then
|
If result.statusOk Then
|
||||||
Dim cancelacion = result.cancelaciones.First()
|
Dim cancelacion As PADECancelacion = result.cancelaciones.First()
|
||||||
If cancelacion IsNot Nothing Then
|
If cancelacion IsNot Nothing Then
|
||||||
'EN PROCESO, CANCELABLE SIN ACEPTACION,CANCEALDO PREVIAMENTE
|
'EN PROCESO, CANCELABLE SIN ACEPTACION,CANCEALDO PREVIAMENTE
|
||||||
If cancelacion.codigo.Contiene("96", "201", "202") Then
|
If cancelacion.codigo.Contiene("96", "201", "202") Then
|
||||||
@@ -1549,7 +1290,7 @@ Public Class Timbrado
|
|||||||
|
|
||||||
Dim y As Integer = 0
|
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) = New Profact.TimbraCFDI40.ComprobanteImpuestosTraslado()
|
||||||
comprobante.Impuestos.Traslados(y).Base = Tras.Base.RoundSQL(NumDecimalesImporte)
|
comprobante.Impuestos.Traslados(y).Base = Tras.Base.RoundSQL(NumDecimalesImporte)
|
||||||
comprobante.Impuestos.Traslados(y).Impuesto = Tras.Impuesto
|
comprobante.Impuestos.Traslados(y).Impuesto = Tras.Impuesto
|
||||||
@@ -1588,7 +1329,7 @@ Public Class Timbrado
|
|||||||
|
|
||||||
|
|
||||||
If ObjCFDITimbre.RetencionesLocales.Sum(Function(x) x.Importe) > 0 Then
|
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.version = "1.0"
|
||||||
Imp.TotaldeRetenciones = ObjCFDITimbre.RetencionesLocales.Sum(Function(x) x.Importe).FormatoNumero().ToDecimal
|
Imp.TotaldeRetenciones = ObjCFDITimbre.RetencionesLocales.Sum(Function(x) x.Importe).FormatoNumero().ToDecimal
|
||||||
Imp.TotaldeTraslados = 0
|
Imp.TotaldeTraslados = 0
|
||||||
@@ -2064,7 +1805,7 @@ Public Class Timbrado
|
|||||||
|
|
||||||
Dim j As Integer = 0
|
Dim j As Integer = 0
|
||||||
ComCartaPorte.Mercancias.Mercancia(i).CantidadTransporta = New ProfactCartaPorte.CartaPorteMercanciasMercanciaCantidadTransporta(Carta.Mercancias.Mercancias.Count - 1) {}
|
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) = New ProfactCartaPorte.CartaPorteMercanciasMercanciaCantidadTransporta
|
||||||
ComCartaPorte.Mercancias.Mercancia(i).CantidadTransporta(j).Cantidad = transp.Cantidad
|
ComCartaPorte.Mercancias.Mercancia(i).CantidadTransporta(j).Cantidad = transp.Cantidad
|
||||||
ComCartaPorte.Mercancias.Mercancia(i).CantidadTransporta(j).IDOrigen = transp.IDOrigen
|
ComCartaPorte.Mercancias.Mercancia(i).CantidadTransporta(j).IDOrigen = transp.IDOrigen
|
||||||
@@ -2484,7 +2225,7 @@ Public Class Timbrado
|
|||||||
|
|
||||||
If Not String.IsNullOrEmpty(resultadoTimbre.Detalle) Then
|
If Not String.IsNullOrEmpty(resultadoTimbre.Detalle) Then
|
||||||
Try
|
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 Resultados.Count > 0 Then
|
||||||
If resultadoTimbre.Descripcion.Contains("RFC del receptor no existe") 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
|
If ObjCFDITimbre.Retenciones.Sum(Function(x) x.Importe) > 0 Then
|
||||||
''se acumulan los importes
|
''se acumulan los importes
|
||||||
For Each Ret In ObjCFDITimbre.Retenciones
|
For Each Ret As CFDIRetenciones In ObjCFDITimbre.Retenciones
|
||||||
cfdi.Retencion(Ret.Impuesto, Ret.Importe)
|
cfdi.Retencion(Ret.Impuesto, Ret.Importe)
|
||||||
Next
|
Next
|
||||||
End If
|
End If
|
||||||
|
|
||||||
''se acumulan los importes
|
''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)
|
cfdi.Traslado(Tras.Base, Tras.Impuesto, Tras.TipoFactor, Tras.TasaOCuota, Tras.Importe)
|
||||||
Next
|
Next
|
||||||
#End Region
|
#End Region
|
||||||
@@ -2791,7 +2532,7 @@ Public Class Timbrado
|
|||||||
For Each concep As CFDICartaPorteMercancia In Carta.Mercancias.Mercancias
|
For Each concep As CFDICartaPorteMercancia In Carta.Mercancias.Mercancias
|
||||||
If concep.ValorMercancia <= 0 Then concep.Moneda = ""
|
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)
|
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)
|
cfdi.CartaPorteCantidadTransporta(transp.Cantidad, transp.IDOrigen, transp.IDDestino, transp.CvesTransportes)
|
||||||
Next
|
Next
|
||||||
Next
|
Next
|
||||||
@@ -3380,11 +3121,11 @@ Public Class Timbrado
|
|||||||
#Region "Timbra"
|
#Region "Timbra"
|
||||||
If RespGeneracionXML = "" Then
|
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
|
'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
|
Try
|
||||||
|
|
||||||
Dim tipo = GetType(GoFac.Cfdi4)
|
Dim tipo As Type = GetType(GoFac.Cfdi4)
|
||||||
Dim info = tipo.GetField("_xml", BindingFlags.NonPublic Or BindingFlags.Instance)
|
Dim info As FieldInfo = tipo.GetField("_xml", BindingFlags.NonPublic Or BindingFlags.Instance)
|
||||||
valorXML = info?.GetValue(cfdi).ToString()
|
valorXML = info?.GetValue(cfdi).ToString()
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
valorXML = ""
|
valorXML = ""
|
||||||
|
|||||||
Reference in New Issue
Block a user