diff --git a/App_Code/Timbrado.vb b/App_Code/Timbrado.vb
index d6d8c9bc3..7b9038153 100644
--- a/App_Code/Timbrado.vb
+++ b/App_Code/Timbrado.vb
@@ -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}.
", msg("Value"))
+ sbMsgLog.AppendFormat("{0}.
", msg("Value"))
Next
+ sbMsgLog.ToString.GuardaLog()
Retorno = sbMsg.ToString()
MensajeErrorCFDI = Retorno
End If