-- 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 Extensiones
Imports Newtonsoft.Json.Linq
Imports Profact.TimbraCFDI33.Complementos
Imports ProfactCartaPorte = Profact.TimbraCFDI33.Complementos.CartaPorte20
@@ -1254,13 +1255,13 @@ Public Class Timbrado
Case 4
Dim Ret As String = TimbrarFacturaGoCFDIv40(Ventas, UsuarioActual, CvePACEspecial)
If Ret <> "" Then MensajeErrorCFDI = Ret
If Ret <> "" Then MensajeErrorCFDI = Ret
Retorno = If(Ret = "", True, False)
Case 5
Dim Ret As String = TimbrarFacturaPADEv40(Ventas, UsuarioActual, CvePACEspecial)
If Ret <> "" Then MensajeErrorCFDI = Ret
If Ret <> "" Then MensajeErrorCFDI = Ret
Retorno = If(Ret = "", True, False)
@@ -1463,7 +1464,7 @@ Public Class Timbrado
Dim k As Integer = 0
For Each concep As CFDIConceptos In ObjCFDITimbre.Conceptos
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
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 docComp As New XmlDocument()
docComp.LoadXml(xmlComp)
'comprobante.PagosSpecified = True
comprobante.Pagos20Specified = True
LXmlComplementos.Add(docComp.DocumentElement)
TieneComplemento = True
End If
@@ -1981,7 +1982,8 @@ Public Class Timbrado
ComCartaPorte.TranspInternac = CType([Enum].Parse(GetType(ProfactCartaPorte.CartaPorteTranspInternac), Carta.TranspInternac), ProfactCartaPorte.CartaPorteTranspInternac)
ComCartaPorte.EntradaSalidaMercSpecified = False
ComCartaPorte.ViaEntradaSalidaSpecified = False
ComCartaPorte.TotalDistRecSpecified = False
ComCartaPorte.TotalDistRecSpecified = True
ComCartaPorte.TotalDistRec = Carta.TotalDistanciaRecorrida
'UBICACIONES
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).FechaHoraSalidaLlegada = ubica.FechaHoraSalidaLlegada.ToDate
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,
.Colonia = ubica.Domicilio.Colonia,
@@ -2027,7 +2030,7 @@ Public Class Timbrado
ComCartaPorte.Mercancias.PesoNetoTotal = Carta.Mercancias.PesoNetoTotal.ToDecimal
ComCartaPorte.Mercancias.NumTotalMercancias = Carta.Mercancias.NumTotalMercancias
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
Dim i As Integer = 0
@@ -2042,9 +2045,12 @@ Public Class Timbrado
ComCartaPorte.Mercancias.Mercancia(i).Descripcion = concep.Descripción
ComCartaPorte.Mercancias.Mercancia(i).Cantidad = concep.Cantidad
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.ClaveMaterialPeligroso <> "" Then
ComCartaPorte.Mercancias.Mercancia(i).MaterialPeligroso = ProfactCartaPorte.CartaPorteMercanciasMercanciaMaterialPeligroso.Sí
ComCartaPorte.Mercancias.Mercancia(i).MaterialPeligrosoSpecified = True
'ComCartaPorte.Mercancias.Mercancia(i).CveMaterialPeligroso = concep.ClaveMaterialPeligroso
ComCartaPorte.Mercancias.Mercancia(i).CveMaterialPeligrosoSpecified = True
'si lleva material pelgroso, debe llevar embalaje
ComCartaPorte.Mercancias.Mercancia(i).EmbalajeSpecified = True
@@ -2130,6 +2136,7 @@ Public Class Timbrado
ComCartaPorte.FiguraTransporte(i).RFCFigura = concep.RFCFigura
ComCartaPorte.FiguraTransporte(i).NumLicencia = concep.NumLicencia
ComCartaPorte.FiguraTransporte(i).NombreFigura = concep.NombreFigura
ComCartaPorte.FiguraTransporte(i).TipoFigura = concep.TipoFigura
If concep.NumRegidTribFigura <> "" Then ComCartaPorte.FiguraTransporte(i).NumRegIdTribFigura = concep.NumRegidTribFigura
'OComCartaPorte.FiguraTransporte.Operadores(i)(0) = concep.ResidenciaFiscalOperador 'falta
@@ -2150,11 +2157,11 @@ Public Class Timbrado
End If
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 docComp As New XmlDocument()
docComp.LoadXml(xmlComp)
'comprobante.CartaPorteSpecified = True
comprobante.CartaPorte20Specified = True
LXmlComplementos.Add(docComp.DocumentElement)
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 docNom As New XmlDocument()
docNom.LoadXml(xmlNom)
comprobante.Nomina12Specified = True
LXmlComplementos.Add(docNom.DocumentElement)
TieneComplemento = True
@@ -2327,8 +2335,6 @@ Public Class Timbrado
#End Region
If TieneComplemento Then
comprobante.Complemento = New Profact.TimbraCFDI40.ComprobanteComplemento
comprobante.Complemento.Any = LXmlComplementos.ToArray()
@@ -2340,12 +2346,7 @@ Public Class Timbrado
sw.Start()
#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
Dim resultadoTimbre As Profact.TimbraCFDI.ResultadoTimbre = Nothing
@@ -2418,13 +2419,22 @@ Public Class Timbrado
End If
If ObjCFDITimbre.Comprobante.TipoComprobante = "T" Then
Dim ObjInv As New ClsInventarios()
If ObjInv.UpdateMovimientoTimbrado(Ventas.Inv_CveMovimiento, 1, FolioFiscal, MinFecha) Then
Dim objGrales As New ClsGenerales
If objGrales.UpdateTimbreTimbrado(Ventas.CveTimbre, FolioFiscal, ObjCFDITimbre.Comprobante.Fecha, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, UsuarioActual.Empresa.CvePAC, "4.0") Then
Retorno = ""
Else
Retorno = "Error"
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
'Pendiente. Ruta guardar archivos
@@ -2437,8 +2447,6 @@ Public Class Timbrado
Else
Retorno = "No se pudo timbrar ante el SAT. UUID no generado."
End If
Else
If Not String.IsNullOrEmpty(resultadoTimbre.Detalle) Then
@@ -2447,13 +2455,16 @@ Public Class Timbrado
If Resultados.Count > 0 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"
MensajeErrorCFDI = $"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")} no existe en las bases de datos publicadas por el SAT, corrobore este dato con su cliente"
Else
Dim sbMsg As New StringBuilder
Dim sbMsgLog As New StringBuilder
For Each msg In Resultados
sbMsg.AppendFormat("{0}.<br/>", msg("Value"))
sbMsgLog.AppendFormat("{0}.<br/>", msg("Value"))
Next
sbMsgLog.ToString.GuardaLog()
Retorno = sbMsg.ToString()
MensajeErrorCFDI = Retorno
End If