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