-- mejora en timbrado de carta porte PAC 3

This commit is contained in:
2023-07-04 18:33:33 -07:00
parent 7e32d9eaeb
commit 019ee97be9

View File

@@ -10,6 +10,7 @@ Imports System.Xml
Imports System.Xml.Serialization Imports System.Xml.Serialization
Imports Extensiones Imports Extensiones
Imports Newtonsoft.Json.Linq Imports Newtonsoft.Json.Linq
Imports Profact.TimbraCFDI33.Complementos
Imports ProfactCartaPorte = Profact.TimbraCFDI33.Complementos.CartaPorte20 Imports ProfactCartaPorte = Profact.TimbraCFDI33.Complementos.CartaPorte20
@@ -1254,13 +1255,13 @@ Public Class Timbrado
Case 4 Case 4
Dim Ret As String = TimbrarFacturaGoCFDIv40(Ventas, UsuarioActual, CvePACEspecial) Dim Ret As String = TimbrarFacturaGoCFDIv40(Ventas, UsuarioActual, CvePACEspecial)
If Ret <> "" Then MensajeErrorCFDI = Ret If Ret <> "" Then MensajeErrorCFDI = Ret
Retorno = If(Ret = "", True, False) Retorno = If(Ret = "", True, False)
Case 5 Case 5
Dim Ret As String = TimbrarFacturaPADEv40(Ventas, UsuarioActual, CvePACEspecial) Dim Ret As String = TimbrarFacturaPADEv40(Ventas, UsuarioActual, CvePACEspecial)
If Ret <> "" Then MensajeErrorCFDI = Ret If Ret <> "" Then MensajeErrorCFDI = Ret
Retorno = If(Ret = "", True, False) Retorno = If(Ret = "", True, False)
@@ -1463,7 +1464,7 @@ Public Class Timbrado
Dim k As Integer = 0 Dim k As Integer = 0
For Each concep As CFDIConceptos In ObjCFDITimbre.Conceptos For Each concep As CFDIConceptos In ObjCFDITimbre.Conceptos
comprobante.Conceptos(i) = New Profact.TimbraCFDI40.ComprobanteConcepto() comprobante.Conceptos(i) = New Profact.TimbraCFDI40.ComprobanteConcepto()
comprobante.Conceptos(i).Cantidad = concep.Cantidad comprobante.Conceptos(i).Cantidad = concep.Cantidad.RoundSQL(6)
If concep.Unidad <> "" Then comprobante.Conceptos(i).Unidad = concep.Unidad If concep.Unidad <> "" Then comprobante.Conceptos(i).Unidad = concep.Unidad
comprobante.Conceptos(i).ClaveUnidad = concep.ClaveUnidad comprobante.Conceptos(i).ClaveUnidad = concep.ClaveUnidad
@@ -1962,7 +1963,7 @@ Public Class Timbrado
Dim xmlComp As String = Profact.TimbraCFDI.XMLUtilerias.SerializaObjeto(ComPag, GetType(Profact.TimbraCFDI40.Complementos.Pagos20.Pagos), nsComp) Dim xmlComp As String = Profact.TimbraCFDI.XMLUtilerias.SerializaObjeto(ComPag, GetType(Profact.TimbraCFDI40.Complementos.Pagos20.Pagos), nsComp)
Dim docComp As New XmlDocument() Dim docComp As New XmlDocument()
docComp.LoadXml(xmlComp) docComp.LoadXml(xmlComp)
'comprobante.PagosSpecified = True comprobante.Pagos20Specified = True
LXmlComplementos.Add(docComp.DocumentElement) LXmlComplementos.Add(docComp.DocumentElement)
TieneComplemento = True TieneComplemento = True
End If End If
@@ -1981,7 +1982,8 @@ Public Class Timbrado
ComCartaPorte.TranspInternac = CType([Enum].Parse(GetType(ProfactCartaPorte.CartaPorteTranspInternac), Carta.TranspInternac), ProfactCartaPorte.CartaPorteTranspInternac) ComCartaPorte.TranspInternac = CType([Enum].Parse(GetType(ProfactCartaPorte.CartaPorteTranspInternac), Carta.TranspInternac), ProfactCartaPorte.CartaPorteTranspInternac)
ComCartaPorte.EntradaSalidaMercSpecified = False ComCartaPorte.EntradaSalidaMercSpecified = False
ComCartaPorte.ViaEntradaSalidaSpecified = False ComCartaPorte.ViaEntradaSalidaSpecified = False
ComCartaPorte.TotalDistRecSpecified = False ComCartaPorte.TotalDistRecSpecified = True
ComCartaPorte.TotalDistRec = Carta.TotalDistanciaRecorrida
'UBICACIONES 'UBICACIONES
If Carta.Ubicaciones IsNot Nothing AndAlso Carta.Ubicaciones.Count > 0 Then If Carta.Ubicaciones IsNot Nothing AndAlso Carta.Ubicaciones.Count > 0 Then
@@ -2003,6 +2005,7 @@ Public Class Timbrado
'ComCartaPorte.Ubicaciones(i).NavegacionTrafico = ubica.NavegacionTrafico 'ComCartaPorte.Ubicaciones(i).NavegacionTrafico = ubica.NavegacionTrafico
ComCartaPorte.Ubicaciones(i).FechaHoraSalidaLlegada = ubica.FechaHoraSalidaLlegada.ToDate ComCartaPorte.Ubicaciones(i).FechaHoraSalidaLlegada = ubica.FechaHoraSalidaLlegada.ToDate
ComCartaPorte.Ubicaciones(i).DistanciaRecorrida = ubica.DistanciaRecorrida ComCartaPorte.Ubicaciones(i).DistanciaRecorrida = ubica.DistanciaRecorrida
ComCartaPorte.Ubicaciones(i).DistanciaRecorridaSpecified = ubica.DistanciaRecorrida > 0
ComCartaPorte.Ubicaciones(i).Domicilio = New ProfactCartaPorte.CartaPorteUbicacionDomicilio With {.Calle = ubica.Domicilio.Calle, ComCartaPorte.Ubicaciones(i).Domicilio = New ProfactCartaPorte.CartaPorteUbicacionDomicilio With {.Calle = ubica.Domicilio.Calle,
.Colonia = ubica.Domicilio.Colonia, .Colonia = ubica.Domicilio.Colonia,
@@ -2027,7 +2030,7 @@ Public Class Timbrado
ComCartaPorte.Mercancias.PesoNetoTotal = Carta.Mercancias.PesoNetoTotal.ToDecimal ComCartaPorte.Mercancias.PesoNetoTotal = Carta.Mercancias.PesoNetoTotal.ToDecimal
ComCartaPorte.Mercancias.NumTotalMercancias = Carta.Mercancias.NumTotalMercancias ComCartaPorte.Mercancias.NumTotalMercancias = Carta.Mercancias.NumTotalMercancias
ComCartaPorte.Mercancias.CargoPorTasacion = Carta.Mercancias.CargoporTasacion.ToDecimal ComCartaPorte.Mercancias.CargoPorTasacion = Carta.Mercancias.CargoporTasacion.ToDecimal
' ComCartaPorte.Mercancias.UnidadPeso = Carta.Mercancias.UnidadPeso ComCartaPorte.Mercancias.UnidadPeso = ProfactCartaPorte.c_ClaveUnidadPeso.KGM
If Carta.Mercancias IsNot Nothing AndAlso Carta.Mercancias.Mercancias.Count > 0 Then If Carta.Mercancias IsNot Nothing AndAlso Carta.Mercancias.Mercancias.Count > 0 Then
Dim i As Integer = 0 Dim i As Integer = 0
@@ -2042,9 +2045,12 @@ Public Class Timbrado
ComCartaPorte.Mercancias.Mercancia(i).Descripcion = concep.Descripción ComCartaPorte.Mercancias.Mercancia(i).Descripcion = concep.Descripción
ComCartaPorte.Mercancias.Mercancia(i).Cantidad = concep.Cantidad ComCartaPorte.Mercancias.Mercancia(i).Cantidad = concep.Cantidad
ComCartaPorte.Mercancias.Mercancia(i).Unidad = concep.Unidad ComCartaPorte.Mercancias.Mercancia(i).Unidad = concep.Unidad
ComCartaPorte.Mercancias.Mercancia(i).ClaveUnidad = concep.ClaveUnidad
If concep.Dimensiones <> "" Then ComCartaPorte.Mercancias.Mercancia(i).Dimensiones = concep.Dimensiones If concep.Dimensiones <> "" Then ComCartaPorte.Mercancias.Mercancia(i).Dimensiones = concep.Dimensiones
If concep.ClaveMaterialPeligroso <> "" Then If concep.ClaveMaterialPeligroso <> "" Then
ComCartaPorte.Mercancias.Mercancia(i).MaterialPeligroso = ProfactCartaPorte.CartaPorteMercanciasMercanciaMaterialPeligroso.Sí
ComCartaPorte.Mercancias.Mercancia(i).MaterialPeligrosoSpecified = True ComCartaPorte.Mercancias.Mercancia(i).MaterialPeligrosoSpecified = True
'ComCartaPorte.Mercancias.Mercancia(i).CveMaterialPeligroso = concep.ClaveMaterialPeligroso
ComCartaPorte.Mercancias.Mercancia(i).CveMaterialPeligrosoSpecified = True ComCartaPorte.Mercancias.Mercancia(i).CveMaterialPeligrosoSpecified = True
'si lleva material pelgroso, debe llevar embalaje 'si lleva material pelgroso, debe llevar embalaje
ComCartaPorte.Mercancias.Mercancia(i).EmbalajeSpecified = True ComCartaPorte.Mercancias.Mercancia(i).EmbalajeSpecified = True
@@ -2130,6 +2136,7 @@ Public Class Timbrado
ComCartaPorte.FiguraTransporte(i).RFCFigura = concep.RFCFigura ComCartaPorte.FiguraTransporte(i).RFCFigura = concep.RFCFigura
ComCartaPorte.FiguraTransporte(i).NumLicencia = concep.NumLicencia ComCartaPorte.FiguraTransporte(i).NumLicencia = concep.NumLicencia
ComCartaPorte.FiguraTransporte(i).NombreFigura = concep.NombreFigura ComCartaPorte.FiguraTransporte(i).NombreFigura = concep.NombreFigura
ComCartaPorte.FiguraTransporte(i).TipoFigura = concep.TipoFigura
If concep.NumRegidTribFigura <> "" Then ComCartaPorte.FiguraTransporte(i).NumRegIdTribFigura = concep.NumRegidTribFigura If concep.NumRegidTribFigura <> "" Then ComCartaPorte.FiguraTransporte(i).NumRegIdTribFigura = concep.NumRegidTribFigura
'OComCartaPorte.FiguraTransporte.Operadores(i)(0) = concep.ResidenciaFiscalOperador 'falta 'OComCartaPorte.FiguraTransporte.Operadores(i)(0) = concep.ResidenciaFiscalOperador 'falta
@@ -2150,11 +2157,11 @@ Public Class Timbrado
End If End If
Dim nsComp As New System.Xml.Serialization.XmlSerializerNamespaces() Dim nsComp As New System.Xml.Serialization.XmlSerializerNamespaces()
nsComp.Add("CartaPorte", "http://www.sat.gob.mx/CartaPorte") nsComp.Add("cartaporte20", "http://www.sat.gob.mx/CartaPorte20")
Dim xmlComp As String = Profact.TimbraCFDI.XMLUtilerias.SerializaObjeto(ComCartaPorte, GetType(ProfactCartaPorte.CartaPorte), nsComp) Dim xmlComp As String = Profact.TimbraCFDI.XMLUtilerias.SerializaObjeto(ComCartaPorte, GetType(ProfactCartaPorte.CartaPorte), nsComp)
Dim docComp As New XmlDocument() Dim docComp As New XmlDocument()
docComp.LoadXml(xmlComp) docComp.LoadXml(xmlComp)
'comprobante.CartaPorteSpecified = True comprobante.CartaPorte20Specified = True
LXmlComplementos.Add(docComp.DocumentElement) LXmlComplementos.Add(docComp.DocumentElement)
TieneComplemento = True TieneComplemento = True
@@ -2318,6 +2325,7 @@ Public Class Timbrado
Dim xmlNom As String = Profact.TimbraCFDI.XMLUtilerias.SerializaObjeto(Nom, GetType(Profact.TimbraCFDI33.Complementos.Nomina12.Nomina), nsNom) Dim xmlNom As String = Profact.TimbraCFDI.XMLUtilerias.SerializaObjeto(Nom, GetType(Profact.TimbraCFDI33.Complementos.Nomina12.Nomina), nsNom)
Dim docNom As New XmlDocument() Dim docNom As New XmlDocument()
docNom.LoadXml(xmlNom) docNom.LoadXml(xmlNom)
comprobante.Nomina12Specified = True
LXmlComplementos.Add(docNom.DocumentElement) LXmlComplementos.Add(docNom.DocumentElement)
TieneComplemento = True TieneComplemento = True
@@ -2327,8 +2335,6 @@ Public Class Timbrado
#End Region #End Region
If TieneComplemento Then If TieneComplemento Then
comprobante.Complemento = New Profact.TimbraCFDI40.ComprobanteComplemento comprobante.Complemento = New Profact.TimbraCFDI40.ComprobanteComplemento
comprobante.Complemento.Any = LXmlComplementos.ToArray() comprobante.Complemento.Any = LXmlComplementos.ToArray()
@@ -2340,12 +2346,7 @@ Public Class Timbrado
sw.Start() sw.Start()
#Region "Genera XML" #Region "Genera XML"
' Try
' cfdi.GenerarXMLBase64(llaveBase64, Clave)
' cfdi.EscribirXML(cfdi.Xml, RutaArchivo, NombreArchivoXML)
' Catch ex As Exception
' End Try
'//Timbramos el CFDI por medio del conector y guardamos resultado '//Timbramos el CFDI por medio del conector y guardamos resultado
Dim resultadoTimbre As Profact.TimbraCFDI.ResultadoTimbre = Nothing Dim resultadoTimbre As Profact.TimbraCFDI.ResultadoTimbre = Nothing
@@ -2418,13 +2419,22 @@ Public Class Timbrado
End If End If
If ObjCFDITimbre.Comprobante.TipoComprobante = "T" Then If ObjCFDITimbre.Comprobante.TipoComprobante = "T" Then
Dim ObjInv As New ClsInventarios() Dim objGrales As New ClsGenerales
If ObjInv.UpdateMovimientoTimbrado(Ventas.Inv_CveMovimiento, 1, FolioFiscal, MinFecha) Then If objGrales.UpdateTimbreTimbrado(Ventas.CveTimbre, FolioFiscal, ObjCFDITimbre.Comprobante.Fecha, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, UsuarioActual.Empresa.CvePAC, "4.0") Then
Retorno = "" Retorno = ""
Else Else
Retorno = "Error" Retorno = "Error"
End If End If
ObjInv.Dispose() objGrales.Dispose()
Using ObjInv As New ClsInventarios()
If ObjInv.UpdateMovimientoTimbrado(Ventas.Inv_CveMovimiento, 1, FolioFiscal, MinFecha) Then
Retorno = ""
Else
Retorno = "Error"
End If
End Using
End If End If
'Pendiente. Ruta guardar archivos 'Pendiente. Ruta guardar archivos
@@ -2437,8 +2447,6 @@ Public Class Timbrado
Else Else
Retorno = "No se pudo timbrar ante el SAT. UUID no generado." Retorno = "No se pudo timbrar ante el SAT. UUID no generado."
End If End If
Else Else
If Not String.IsNullOrEmpty(resultadoTimbre.Detalle) Then If Not String.IsNullOrEmpty(resultadoTimbre.Detalle) Then
@@ -2447,13 +2455,16 @@ Public Class Timbrado
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
Retorno = $"El RFC { Resultados(0)("Value").ToString() } no existe en las bases de datos publicadas por el SAT, corrobore este dato con su cliente" Retorno = $"El RFC { Resultados(0)("Value") } no existe en las bases de datos publicadas por el SAT, corrobore este dato con su cliente"
MensajeErrorCFDI = $"El RFC { Resultados(0)("Value").ToString() } no existe en las bases de datos publicadas por el SAT, corrobore este dato con su cliente" MensajeErrorCFDI = $"El RFC { Resultados(0)("Value")} no existe en las bases de datos publicadas por el SAT, corrobore este dato con su cliente"
Else Else
Dim sbMsg As New StringBuilder Dim sbMsg As New StringBuilder
Dim sbMsgLog As New StringBuilder
For Each msg In Resultados For Each msg In Resultados
sbMsg.AppendFormat("{0}.<br/>", msg("Value")) sbMsg.AppendFormat("{0}.<br/>", msg("Value"))
sbMsgLog.AppendFormat("{0}.<br/>", msg("Value"))
Next Next
sbMsgLog.ToString.GuardaLog()
Retorno = sbMsg.ToString() Retorno = sbMsg.ToString()
MensajeErrorCFDI = Retorno MensajeErrorCFDI = Retorno
End If End If