Impresion de carta porte Timbrado

This commit is contained in:
2021-09-08 15:41:27 -07:00
parent 242c7f1e1b
commit c3f273cf5f
4 changed files with 3982 additions and 1 deletions

View File

@@ -376,6 +376,12 @@ Partial Class PopUpVerFactura
If UrlParametros("CVEMOV") IsNot Nothing AndAlso UrlParametros("CVEMOV").ToString.ToEntero > 0 Then
ImprimeFormatoCartaPorte(UrlParametros("CVEMOV").ToString.ToEntero)
End If
End If
If UrlParametros("OP").ToString = "CARPOTIMBRE" Then
If UrlParametros("CVEMOV") IsNot Nothing AndAlso UrlParametros("CVEMOV").ToString.ToEntero > 0 Then
ImprimeFormatoCartaPorteTimbrado(UrlParametros("CVEMOV").ToString.ToEntero)
End If
End If
@@ -747,7 +753,7 @@ Partial Class PopUpVerFactura
#End Region
#Region "OP = 'CARPO' - IMPRIME FORMATO CARTA PORTE"
#Region "OP = 'CARPO' - IMPRIME FORMATO CARTA PORTE TIMBRADO"
Private Sub ImprimeFormatoCartaPorte(CveMovimiento As Integer)
If CveMovimiento > 0 Then
Dim ObjInv As New ClsInventarios
@@ -873,6 +879,345 @@ Partial Class PopUpVerFactura
End If
End Sub
Private Function ValorXML(n As XmlNode, Campo As String, Optional Retorno As String = "") As String
Dim o As XmlNode = n.Attributes.Cast(Of XmlAttribute)().SingleOrDefault(Function(a) String.Compare(a.Name, Campo, True) = 0)
If o Is Nothing Then
Return Retorno
Else
Return o.Value
End If
End Function
Private Sub ImprimeFormatoCartaPorteTimbrado(CveMovimiento As Integer)
If CveMovimiento > 0 Then
'01 Autotransporte Federal
'02 Transporte Marítimo
'03 Transporte Aéreo
'04 Transporte Ferroviario
'05 Ducto
Dim HtTransporte As New Hashtable()
HtTransporte.Add("01", "Autotransporte Federal")
HtTransporte.Add("02", "Transporte Marítimo")
HtTransporte.Add("03", "Transporte Aéreo")
HtTransporte.Add("04", "Transporte Ferroviario")
HtTransporte.Add("05", "Ducto")
'EMISOR
Dim LugarExpedicion As String = ""
Dim ImgCBB As String = ""
'COMPROBANTE
Dim SerieFolio As String = ""
Dim Telefono As String = ""
Dim SubTotal As Decimal = 0
Dim Descuentos As Decimal = 0
Dim Total As Decimal = 0
'DATOS DEL CLIENTE
Dim ClienteRFC As String = ""
Dim ClienteNombre As String = ""
Dim ClienteUsoCFDi As String = ""
'TRANSPORTE
Dim MedioTransporte As String = ""
Dim TransporteInternacional As String = ""
Dim PermisoSTCC As String = ""
Dim NumPermiso As String = ""
Dim Aseguradora As String = ""
Dim NumPolizaSeguro As String = ""
Dim PlacaVM As String = ""
Dim AnioModeloVM As String = ""
'TIMBRADO
Dim FolioFiscal As String = ""
Dim NoCertificadoSAT As String = ""
Dim CadenaOriginal As String = ""
Dim NoSerieCertificado As String = ""
Dim FechaCertificacion As DateTime = Nothing
Dim SelloCFDi As String = ""
Dim SelloSAT As String = ""
Dim ObjInv As New ClsInventarios
If ObjInv.GetMovimientos(CveMovimiento, -1, -1, UsuarioActual.CveEmpresa) Then
If ObjInv.DtResultados.Rows.Count > 0 Then
Dim Dr As DataRow = ObjInv.DtResultados.Rows(0)
If Dr IsNot Nothing Then
SerieFolio = Dr("Folio").ToString
Telefono = Dr("Telefono1").ToString
End If
End If
End If
ObjInv.Dispose()
Dim DtConceptos As New DataTable()
DtConceptos.Columns.Add(New DataColumn("Cantidad", GetType(Decimal)))
DtConceptos.Columns.Add(New DataColumn("Unidad", GetType(String)))
DtConceptos.Columns.Add(New DataColumn("Descripcion", GetType(String)))
DtConceptos.Columns.Add(New DataColumn("ValorUnitario", GetType(Decimal)))
DtConceptos.Columns.Add(New DataColumn("Importe", GetType(Decimal)))
Dim DtUbicaciones As New DataTable()
DtUbicaciones.Columns.Add(New DataColumn("Distancia", GetType(String)))
DtUbicaciones.Columns.Add(New DataColumn("RFC", GetType(String)))
DtUbicaciones.Columns.Add(New DataColumn("Nombre", GetType(String)))
DtUbicaciones.Columns.Add(New DataColumn("FechaHoraSalida", GetType(DateTime)))
DtUbicaciones.Columns.Add(New DataColumn("Direccion", GetType(String)))
Dim DtMercancias As New DataTable()
DtMercancias.Columns.Add(New DataColumn("Cantidad", GetType(Decimal)))
DtMercancias.Columns.Add(New DataColumn("UnidadMedida", GetType(String)))
DtMercancias.Columns.Add(New DataColumn("Descripcion", GetType(String)))
DtMercancias.Columns.Add(New DataColumn("PesoEnKg", GetType(String)))
Dim DtOperadores As New DataTable()
DtOperadores.Columns.Add(New DataColumn("RFC", GetType(String)))
DtOperadores.Columns.Add(New DataColumn("NumLicencia", GetType(String)))
DtOperadores.Columns.Add(New DataColumn("NombreOperador", GetType(String)))
Dim XMLDoc As New XmlDocument
Dim Path As String = String.Format("{0}\{1}\{2}\{3}.{4}", UsuarioActual.Empresa.Ruta, "XML", "Tra", String.Format("Tra-{0}", SerieFolio), "xml")
Dim Archivo As New System.IO.FileInfo(Path)
If Archivo.Exists Then
Try
XMLDoc.Load(Path)
Catch ex As Exception
Try
Dim oReader = New StreamReader(Path, Encoding.GetEncoding("ISO-8859-1"))
XMLDoc.Load(oReader)
oReader.Dispose()
Catch ex2 As Exception
GuardaLog("Error al intentar leer el XML del SAT. Error:" & ex2.ToString())
End Try
End Try
End If
If XMLDoc IsNot Nothing AndAlso Archivo.Exists Then
Dim RutaCBB As String = String.Format("{0}\CBB\Tra-{1}.jpg", UsuarioActual.Empresa.Ruta, SerieFolio)
Dim ImagenCBB As New System.IO.FileInfo(RutaCBB)
Dim nodo As XmlNode = XMLDoc.DocumentElement
Dim Prefijo As String = If(XMLDoc.DocumentElement.Prefix = "", "cfd", XMLDoc.DocumentElement.Prefix)
Dim cfdVer As String = "http://www.sat.gob.mx/cfd/3"
Dim namespaces As New XmlNamespaceManager(XMLDoc.NameTable)
If Prefijo.ToLower <> "cfdi" Then cfdVer = "http://www.sat.gob.mx/cfd/2"
namespaces.AddNamespace(Prefijo, cfdVer)
namespaces.AddNamespace("tfd", "http://www.sat.gob.mx/TimbreFiscalDigital")
namespaces.AddNamespace("implocal", "http://www.sat.gob.mx/implocal")
namespaces.AddNamespace("registrofiscal", "http://www.sat.gob.mx/registrofiscal")
namespaces.AddNamespace("cartaporte", "http://www.sat.gob.mx/CartaPorte")
Dim nodeComprobante As XmlNode = XMLDoc.SelectSingleNode(String.Format("//{0}:Comprobante", Prefijo), namespaces)
If nodeComprobante IsNot Nothing Then
LugarExpedicion = ValorXML(nodeComprobante, "LugarExpedicion")
SubTotal = ValorXML(nodeComprobante, "SubTotal").ToDecimal()
Total = ValorXML(nodeComprobante, "Total").ToDecimal()
End If
Dim nodeCliente As XmlNode = XMLDoc.SelectSingleNode(String.Format("//{0}:Receptor", Prefijo), namespaces)
If nodeCliente IsNot Nothing Then
ClienteRFC = ValorXML(nodeCliente, "RFC")
ClienteNombre = ValorXML(nodeCliente, "Nombre")
Dim UsoCFDI = ValorXML(nodeCliente, "UsoCFDI")
ClienteUsoCFDi = String.Format("{0} - {1}", UsoCFDI, GlobalDTSATUsosCFDI().FiltroPrimeroValor("Descripcion", String.Format("UsoCFDI = '{0}'", UsoCFDI)))
End If
Dim nodeConceptos As XmlNode = XMLDoc.SelectSingleNode(String.Format("//{0}:Conceptos", Prefijo), namespaces)
If nodeConceptos IsNot Nothing Then
For Each node As XmlNode In nodeConceptos.ChildNodes
Dim Row As DataRow = DtConceptos.NewRow
Row("Cantidad") = ValorXML(node, "Cantidad", "")
Row("Unidad") = ValorXML(node, "Unidad", "")
Row("Descripcion") = ValorXML(node, "Descripcion", "")
Row("ValorUnitario") = ValorXML(node, "ValorUnitario", "")
Row("Importe") = ValorXML(node, "Importe", "")
DtConceptos.Rows.Add(Row)
Next
End If
Dim nodeComp As XmlNode = XMLDoc.SelectSingleNode(String.Format("//{0}:Complemento", Prefijo), namespaces)
Dim nodeCartaPorte As XmlNode = nodeComp.SelectSingleNode(String.Format("//{0}:CartaPorte", "cartaporte"), namespaces)
If nodeCartaPorte IsNot Nothing Then
TransporteInternacional = ValorXML(nodeCartaPorte, "TranspInternac", "")
End If
Dim nodeAutotransporteFederal As XmlNode = nodeComp.SelectSingleNode(String.Format("//{0}:AutotransporteFederal", "cartaporte"), namespaces)
If nodeAutotransporteFederal IsNot Nothing Then
PermisoSTCC = ValorXML(nodeAutotransporteFederal, "PermSCT", "")
NumPermiso = ValorXML(nodeAutotransporteFederal, "NumPermisoSCT", "")
Aseguradora = ValorXML(nodeAutotransporteFederal, "NombreAseg", "")
NumPolizaSeguro = ValorXML(nodeAutotransporteFederal, "NumPolizaSeguro", "")
End If
Dim nodeIdentificacionVehicular As XmlNode = nodeComp.SelectSingleNode(String.Format("//{0}:IdentificacionVehicular", "cartaporte"), namespaces)
If nodeIdentificacionVehicular IsNot Nothing Then
PlacaVM = ValorXML(nodeIdentificacionVehicular, "PlacaVM", "")
AnioModeloVM = ValorXML(nodeIdentificacionVehicular, "AnioModeloVM", "")
End If
Dim nodeFiguraTransporte As XmlNode = nodeComp.SelectSingleNode(String.Format("//{0}:FiguraTransporte", "cartaporte"), namespaces)
If nodeFiguraTransporte IsNot Nothing Then
Dim CveTransporte As String = ValorXML(nodeFiguraTransporte, "CveTransporte", "")
MedioTransporte = String.Format("{0} - {1}", CveTransporte, HtTransporte(CveTransporte).ToString())
End If
Dim nodeMercancias As XmlNodeList = nodeComp.SelectNodes(String.Format("//{0}:Mercancia", "cartaporte"), namespaces)
For Each node As XmlNode In nodeMercancias
Dim Row As DataRow = DtMercancias.NewRow
Row("Cantidad") = ValorXML(node, "Cantidad", "")
Row("UnidadMedida") = ValorXML(node, "Unidad", "")
Row("Descripcion") = ValorXML(node, "Descripcion", "")
Row("PesoEnKg") = ValorXML(node, "PesoEnKg", "")
DtMercancias.Rows.Add(Row)
Next
Dim nodeOperadores As XmlNodeList = nodeComp.SelectNodes(String.Format("//{0}:Operador", "cartaporte"), namespaces)
For Each node As XmlNode In nodeOperadores
Dim Row As DataRow = DtOperadores.NewRow
Row("RFC") = ValorXML(node, "RFCOperador", "")
Row("NumLicencia") = ValorXML(node, "NumLicencia", "")
Row("NombreOperador") = ValorXML(node, "NombreOperador", "")
DtOperadores.Rows.Add(Row)
Next
Dim nodeUbicaciones As XmlNodeList = nodeComp.SelectNodes(String.Format("//{0}:Ubicacion", "cartaporte"), namespaces)
For Each node As XmlNode In nodeUbicaciones
Dim Row As DataRow = DtUbicaciones.NewRow
Row("Distancia") = ValorXML(node, "DistanciaRecorrida", "")
Dim nodeOrigen = node.ChildNodes.Cast(Of XmlNode).FirstOrDefault(Function(x) x.Name = "cartaporte:Origen")
If nodeOrigen IsNot Nothing Then
Row("RFC") = ValorXML(nodeOrigen, "RFCRemitente", "")
Row("Nombre") = ValorXML(nodeOrigen, "NombreRemitente", "")
Row("FechaHoraSalida") = ValorXML(nodeOrigen, "FechaHoraSalida", "").ToDateTime()
End If
Dim nodeDestino = node.ChildNodes.Cast(Of XmlNode).FirstOrDefault(Function(x) x.Name = "cartaporte:Destino") 'node.SelectSingleNode(String.Format("//{0}:Destino", "cartaporte"), namespaces)
If nodeDestino IsNot Nothing Then
Row("RFC") = ValorXML(nodeDestino, "RFCDestinatario", "")
Row("Nombre") = ValorXML(nodeDestino, "NombreDestinatario", "")
Row("FechaHoraSalida") = ValorXML(nodeDestino, "FechaHoraProgLlegada", "").ToDateTime()
End If
Dim nodeDomicilio = node.ChildNodes.Cast(Of XmlNode).FirstOrDefault(Function(x) x.Name = "cartaporte:Domicilio") 'node.SelectSingleNode(String.Format("//{0}:Domicilio", "cartaporte"), namespaces)
If nodeDomicilio IsNot Nothing Then
Dim calle = ValorXML(nodeDomicilio, "Calle", "")
Dim Estado = ValorXML(nodeDomicilio, "Estado", "")
Dim Pais = ValorXML(nodeDomicilio, "MEX", "")
Dim CP = ValorXML(nodeDomicilio, "CodigoPostal", "")
Row("Direccion") = String.Format("{0} ,{1},{2}. CP {3}", calle, Estado, Pais, CP)
End If
DtUbicaciones.Rows.Add(Row)
Next
Dim nodeTFD As XmlNode = nodeComp.SelectSingleNode(String.Format("//{0}:TimbreFiscalDigital", "tfd"), namespaces)
If nodeTFD IsNot Nothing Then
FolioFiscal = ValorXML(nodeTFD, "UUID", "")
NoSerieCertificado = ValorXML(nodeTFD, "NoCertificadoSAT", "")
FechaCertificacion = ValorXML(nodeTFD, "FechaTimbrado", "").ToDateTime
SelloCFDi = ValorXML(nodeTFD, "SelloCFD", "")
SelloSAT = ValorXML(nodeTFD, "SelloSAT", "")
NoCertificadoSAT = ValorXML(nodeTFD, "NoCertificadoSAT", "")
CadenaOriginal = "||1.0|" + FolioFiscal + "|" + FechaCertificacion.ToString("yyyy-MM-dd") + "T" + FechaCertificacion.ToString("HH:mm:ss") + "|" + SelloCFDi + "|" + NoSerieCertificado + "||"
End If
If Not ImagenCBB.Exists Then
Dim CBB As New ClbNegBICFDv3_2.ClsNegCBBGenerar()
CBB.GenerarCBB(UsuarioActual.Empresa.RFC, ClienteRFC, Total, FolioFiscal, RutaCBB)
End If
ImgCBB = String.Format("{0}://{1}:{2}/Empresas/{3}/CBB/Tra-{4}.jpg", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa, SerieFolio)
End If
If DtConceptos.Rows.Count > 0 Then
Dim params As New List(Of ReportParameter)
Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta))
Dim logouri = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa)
If Imagen.Exists Then
params.Add(New ReportParameter("LogoPath", logouri))
Else
params.Add(New ReportParameter("LogoPath", ""))
End If
'EMPRESA
params.Add(New ReportParameter("NombreEmpresa", UsuarioActual.Empresa.Empresa))
params.Add(New ReportParameter("RegimenFiscal", UsuarioActual.Empresa.Regimen))
params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre))
params.Add(New ReportParameter("FechaImpresion", Now.ToDateTime.ToShortDateString))
params.Add(New ReportParameter("DomicilioFiscal", $"{UsuarioActual.Empresa.Direccion}, {UsuarioActual.Empresa.Colonia}, {UsuarioActual.Empresa.Localidad}, {UsuarioActual.Empresa.Estado}, Tel. {Telefono}"))
params.Add(New ReportParameter("SerieFolio", SerieFolio))
params.Add(New ReportParameter("RFC", UsuarioActual.Empresa.RFC))
params.Add(New ReportParameter("DomicilioExpedicion", LugarExpedicion))
'CLIENTE
params.Add(New ReportParameter("ClienteNombre", ClienteNombre))
params.Add(New ReportParameter("ClienteRFC", ClienteRFC))
params.Add(New ReportParameter("UsoCFDi", ClienteUsoCFDi))
'TRANSPORTE
params.Add(New ReportParameter("MedioTransporte", MedioTransporte))
params.Add(New ReportParameter("TransporteInternacional", TransporteInternacional))
params.Add(New ReportParameter("PermisoSTCC", PermisoSTCC))
params.Add(New ReportParameter("NumPermiso", NumPermiso))
params.Add(New ReportParameter("Aseguradora", Aseguradora))
params.Add(New ReportParameter("NumPoliza", NumPolizaSeguro))
params.Add(New ReportParameter("PlacaVM", PlacaVM))
params.Add(New ReportParameter("AnioVM", AnioModeloVM))
'TIMBRADO
params.Add(New ReportParameter("FolioFiscal", FolioFiscal))
params.Add(New ReportParameter("QR", ImgCBB))
params.Add(New ReportParameter("SelloCFDI", SelloCFDi))
params.Add(New ReportParameter("CertificadoContribuyente", NoCertificadoSAT))
params.Add(New ReportParameter("CadenaOriginal", CadenaOriginal))
params.Add(New ReportParameter("SerieCertificadoSAT", NoSerieCertificado))
params.Add(New ReportParameter("FechaCertificacion", FechaCertificacion.ToString("dd/MM/yyyy HH:mm:ss")))
params.Add(New ReportParameter("SelloSAT", SelloSAT))
'TOTALES
params.Add(New ReportParameter("SubTotal", SubTotal.ToString()))
params.Add(New ReportParameter("Descuentos", Descuentos.ToString()))
params.Add(New ReportParameter("Total", Total.ToString()))
' [@CertificadoContribuyente]
'[@CadenaOriginal]
Dim lrds As New List(Of ReportDataSource)
Dim rds As New ReportDataSource
rds.Name = "DataSet1"
rds.Value = DtConceptos
lrds.Add(rds)
Dim rds2 As New ReportDataSource
rds2.Name = "DataSet2"
rds2.Value = DtUbicaciones
lrds.Add(rds2)
Dim rds3 As New ReportDataSource
rds3.Name = "DataSet3"
rds3.Value = DtMercancias
lrds.Add(rds3)
Dim rds4 As New ReportDataSource
rds4.Name = "DataSet4"
rds4.Value = DtOperadores
lrds.Add(rds4)
ImprimirPDF("Empresas/Grales/Formatos/CartaPorteTimbrado.rdlc", lrds, params, String.Format("Carta Porte -{0}", Now.ToDateTime.ToShortDateString))
End If
End If
End Sub
#End Region
#Region "OP = 'DesXmlTra' - IMPRIME XML TRASLADO"

File diff suppressed because it is too large Load Diff

View File

@@ -71,6 +71,9 @@
</li>
<li>
<asp:HyperLink ID="HplCartaPorte" runat="server" Visible="false"><i class="fa fa-ad-pdf"></i> Descargar Carta Porte</asp:HyperLink>
</li>
<li>
<asp:HyperLink ID="HplCartaPorteTimbre" runat="server" Visible="false"><i class="fa fa-ad-pdf"></i> Descargar Carta Porte Timbrado</asp:HyperLink>
</li>
<li>
<asp:HyperLink ID="HplTraspaso" Target="_blank" runat="server" Visible="false"><i class="fa fa-truck" aria-hidden="true"></i> Traspaso Almacen</asp:HyperLink>

View File

@@ -781,6 +781,12 @@ Partial Class Inventarios_EntradasSalidas
HplCartaPorte.Visible = True
HplCartaPorte.NavigateUrl = String.Format("/Compras/PopUpVerFactura.aspx?P={0}", Encripta(String.Format("OP=CARPO&CVEMOV={0}", CveMovimiento)))
If UsuarioActual.CveRol = 1 Then
HplCartaPorteTimbre.Visible = True
HplCartaPorteTimbre.NavigateUrl = String.Format("/Compras/PopUpVerFactura.aspx?P={0}", Encripta(String.Format("OP=CARPOTIMBRE&CVEMOV={0}", CveMovimiento)))
End If
If UsuarioActual.CveRol = 1 Then
LnkGenerarPDF.Visible = True
End If