Cambios en PDF Sali

This commit is contained in:
2020-08-20 17:02:24 -07:00
parent 718567694c
commit 24ade88469

View File

@@ -9,6 +9,9 @@ Imports Extensiones
Imports System.IO Imports System.IO
Imports Microsoft.Reporting.WebForms Imports Microsoft.Reporting.WebForms
Imports ADSistemaLibrary.SatXml
Imports ADSistemaLibrary.SatXml.XmlSatCFDI
Public Class GenerarPDFFactura : Implements IHttpHandler Public Class GenerarPDFFactura : Implements IHttpHandler
Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
@@ -19,11 +22,12 @@ Public Class GenerarPDFFactura : Implements IHttpHandler
Public ReadOnly Property EsProduccion As Boolean Public ReadOnly Property EsProduccion As Boolean
Get Get
If IsNothing(System.Configuration.ConfigurationManager.AppSettings("EsProduccion")) Then Return False
Return False 'If IsNothing(System.Configuration.ConfigurationManager.AppSettings("EsProduccion")) Then
Else ' Return False
Return (System.Configuration.ConfigurationManager.AppSettings("EsProduccion").ToString() = "1") 'Else
End If ' Return (System.Configuration.ConfigurationManager.AppSettings("EsProduccion").ToString() = "1")
'End If
End Get End Get
End Property End Property
@@ -46,96 +50,211 @@ Public Class GenerarPDFFactura : Implements IHttpHandler
Dim Formato As String = "" Dim Formato As String = ""
If datos.API_SALI Then Dim Xml = New System.Xml.XmlDocument()
Formato = ModExtensiones.DirectorioBaseEmpresas + "Empresas/Grales/ReporteAPISali.rdlc" Xml.LoadXml(datos.XML)
Else Dim ArchivoXML = $"{context.Server.MapPath("/")}/Temp/{DateTime.UtcNow.Ticks}_{datos.Factura.Serie}-{datos.Factura.Folio}.xml"
Formato = ModExtensiones.DirectorioBaseEmpresas + "Empresas/Grales/ReporteAPI.rdlc" Xml.Save(ArchivoXML)
End If
Parametros.Add(New ReportParameter("Empresa", datos.Empresa.Empresa)) ImprimirbytesPDF(context, GenerarCFDi(context, ArchivoXML, datos), "Factura")
Parametros.Add(New ReportParameter("RFC", datos.Empresa.RFC))
Parametros.Add(New ReportParameter("DomicilioExpedicion", datos.Empresa.DomicilioFiscal))
Parametros.Add(New ReportParameter("Serie", datos.Factura.Serie))
Parametros.Add(New ReportParameter("Folio", datos.Factura.Folio))
Parametros.Add(New ReportParameter("Fecha", datos.Factura.Fecha))
Parametros.Add(New ReportParameter("ClienteNombre", datos.Cliente.NombreComercial))
Parametros.Add(New ReportParameter("ClienteDireccion", datos.Cliente.Calle + " Colonia " + datos.Cliente.Colonia + " " + datos.Cliente.Ciudad + ", " + datos.Cliente.Estado))
Parametros.Add(New ReportParameter("ClienteLugar", datos.Cliente.Ciudad))
Parametros.Add(New ReportParameter("ClienteRFC", datos.Cliente.RFC))
Parametros.Add(New ReportParameter("ImporteLetra", datos.Factura.Total.Texto2Letras()))
Parametros.Add(New ReportParameter("FormaPago", datos.Factura.FormaPago))
Parametros.Add(New ReportParameter("MetodoPago", datos.Factura.MetodoPago))
Parametros.Add(New ReportParameter("SelloCFDI", datos.Timbrado.SelloCFDI))
Parametros.Add(New ReportParameter("SelloSAT", datos.Timbrado.SelloSAT))
Parametros.Add(New ReportParameter("CadenaOriginal", datos.Timbrado.CadenaOriginal))
Parametros.Add(New ReportParameter("FolioFiscal", datos.Factura.UUID))
Parametros.Add(New ReportParameter("SerieCertificadoSAT", datos.Timbrado.SerieCertificadoSAT))
Parametros.Add(New ReportParameter("FechaCertificado", datos.Timbrado.FechaCertificado))
Parametros.Add(New ReportParameter("CertificadoContribuyente", datos.Timbrado.CertificadoContribuyente))
Parametros.Add(New ReportParameter("UsoCFDI", datos.Factura.UsoCFDI))
Parametros.Add(New ReportParameter("Vencimiento", datos.Factura.FechaVencimiento))
Parametros.Add(New ReportParameter("SubTotal", datos.Factura.SubTotal))
Parametros.Add(New ReportParameter("Descuentos", datos.Factura.Descuentos))
Parametros.Add(New ReportParameter("IVA", datos.Factura.IVA))
Parametros.Add(New ReportParameter("IEPS", datos.Factura.IEPS))
Parametros.Add(New ReportParameter("Total", datos.Factura.Total))
Parametros.Add(New ReportParameter("QR", datos.Timbrado.QR))
Dim DtDatos As New DataTable 'If datos.API_SALI Then
DtDatos.Columns.Add(New DataColumn("Cantidad", GetType(Decimal))) ' Dim Xml = New System.Xml.XmlDocument()
DtDatos.Columns.Add(New DataColumn("UnidadMedida", GetType(String))) ' Xml.LoadXml(datos.XML)
DtDatos.Columns.Add(New DataColumn("PS", GetType(String))) ' Dim ArchivoXML = $"{context.Server.MapPath("/")}/Temp/{DateTime.UtcNow.Ticks}_{datos.Factura.Serie}-{datos.Factura.Folio}.xml"
DtDatos.Columns.Add(New DataColumn("PU", GetType(Decimal))) ' Xml.Save(ArchivoXML)
DtDatos.Columns.Add(New DataColumn("IVA", GetType(Decimal)))
DtDatos.Columns.Add(New DataColumn("IEPS", GetType(Decimal)))
DtDatos.Columns.Add(New DataColumn("Descuento", GetType(Decimal)))
DtDatos.Columns.Add(New DataColumn("Total", GetType(Decimal)))
Dim DtImpuestos As New DataTable ' ImprimirbytesPDF(context, GenerarCFDi(context, ArchivoXML, datos), "Factura")
DtImpuestos.Columns.Add(New DataColumn("Impuesto", GetType(String))) 'Else
DtImpuestos.Columns.Add(New DataColumn("Tipo", GetType(String))) ' Formato = ModExtensiones.DirectorioBaseEmpresas + "Empresas/Grales/ReporteAPI.rdlc"
DtImpuestos.Columns.Add(New DataColumn("Base", GetType(Decimal)))
DtImpuestos.Columns.Add(New DataColumn("TipoFactor", GetType(String)))
DtImpuestos.Columns.Add(New DataColumn("TasaOCuota", GetType(String)))
DtImpuestos.Columns.Add(New DataColumn("Importe", GetType(Decimal)))
For Each PS In datos.Factura.ListaProductos ' Parametros.Add(New ReportParameter("Empresa", datos.Empresa.Empresa))
Dim Row = DtDatos.NewRow() ' Parametros.Add(New ReportParameter("RFC", datos.Empresa.RFC))
Row("Cantidad") = PS.Cantidad ' Parametros.Add(New ReportParameter("DomicilioExpedicion", datos.Empresa.DomicilioFiscal))
Row("UnidadMedida") = PS.UnidadMedida ' Parametros.Add(New ReportParameter("Serie", datos.Factura.Serie))
Row("PS") = PS.CodigoPS ' Parametros.Add(New ReportParameter("Folio", datos.Factura.Folio))
Row("PU") = PS.PU ' Parametros.Add(New ReportParameter("Fecha", datos.Factura.Fecha))
Row("IVA") = PS.IVA ' Parametros.Add(New ReportParameter("ClienteNombre", datos.Cliente.NombreComercial))
Row("IEPS") = PS.IEPS ' Parametros.Add(New ReportParameter("ClienteDireccion", datos.Cliente.Calle + " Colonia " + datos.Cliente.Colonia + " " + datos.Cliente.Ciudad + ", " + datos.Cliente.Estado))
Row("Descuento") = PS.Descuento ' Parametros.Add(New ReportParameter("ClienteLugar", datos.Cliente.Ciudad))
Row("Total") = (PS.Cantidad * PS.PU) + PS.IVA + PS.IEPS ' Parametros.Add(New ReportParameter("ClienteRFC", datos.Cliente.RFC))
' Parametros.Add(New ReportParameter("ImporteLetra", datos.Factura.Total.Texto2Letras()))
' Parametros.Add(New ReportParameter("FormaPago", datos.Factura.FormaPago))
' Parametros.Add(New ReportParameter("MetodoPago", datos.Factura.MetodoPago))
' Parametros.Add(New ReportParameter("SelloCFDI", datos.Timbrado.SelloCFDI))
' Parametros.Add(New ReportParameter("SelloSAT", datos.Timbrado.SelloSAT))
' Parametros.Add(New ReportParameter("CadenaOriginal", datos.Timbrado.CadenaOriginal))
' Parametros.Add(New ReportParameter("FolioFiscal", datos.Factura.UUID))
' Parametros.Add(New ReportParameter("SerieCertificadoSAT", datos.Timbrado.SerieCertificadoSAT))
' Parametros.Add(New ReportParameter("FechaCertificado", datos.Timbrado.FechaCertificado))
' Parametros.Add(New ReportParameter("CertificadoContribuyente", datos.Timbrado.CertificadoContribuyente))
' Parametros.Add(New ReportParameter("UsoCFDI", datos.Factura.UsoCFDI))
' Parametros.Add(New ReportParameter("Vencimiento", datos.Factura.FechaVencimiento))
' Parametros.Add(New ReportParameter("SubTotal", datos.Factura.SubTotal))
' Parametros.Add(New ReportParameter("Descuentos", datos.Factura.Descuentos))
' Parametros.Add(New ReportParameter("IVA", datos.Factura.IVA))
' Parametros.Add(New ReportParameter("IEPS", datos.Factura.IEPS))
' Parametros.Add(New ReportParameter("Total", datos.Factura.Total))
' Parametros.Add(New ReportParameter("QR", datos.Timbrado.QR))
DtDatos.Rows.Add(Row) ' Dim DtDatos As New DataTable
Next ' DtDatos.Columns.Add(New DataColumn("Cantidad", GetType(Decimal)))
' DtDatos.Columns.Add(New DataColumn("UnidadMedida", GetType(String)))
' DtDatos.Columns.Add(New DataColumn("PS", GetType(String)))
' DtDatos.Columns.Add(New DataColumn("PU", GetType(Decimal)))
' DtDatos.Columns.Add(New DataColumn("IVA", GetType(Decimal)))
' DtDatos.Columns.Add(New DataColumn("IEPS", GetType(Decimal)))
' DtDatos.Columns.Add(New DataColumn("Descuento", GetType(Decimal)))
' DtDatos.Columns.Add(New DataColumn("Total", GetType(Decimal)))
Dim RowImpuesto = DtImpuestos.NewRow() ' Dim DtImpuestos As New DataTable
RowImpuesto("Impuesto") = "IVA" ' DtImpuestos.Columns.Add(New DataColumn("Impuesto", GetType(String)))
RowImpuesto("Tipo") = "Traslado" ' DtImpuestos.Columns.Add(New DataColumn("Tipo", GetType(String)))
RowImpuesto("Base") = datos.Factura.SubTotal ' DtImpuestos.Columns.Add(New DataColumn("Base", GetType(Decimal)))
RowImpuesto("TipoFactor") = "Tasa" ' DtImpuestos.Columns.Add(New DataColumn("TipoFactor", GetType(String)))
RowImpuesto("TasaOCuota") = "16%" ' DtImpuestos.Columns.Add(New DataColumn("TasaOCuota", GetType(String)))
RowImpuesto("Importe") = datos.Factura.IVA ' DtImpuestos.Columns.Add(New DataColumn("Importe", GetType(Decimal)))
DtImpuestos.Rows.Add(RowImpuesto) ' For Each PS In datos.Factura.ListaProductos
' Dim Row = DtDatos.NewRow()
' Row("Cantidad") = PS.Cantidad
' Row("UnidadMedida") = PS.UnidadMedida
' Row("PS") = PS.CodigoPS
' Row("PU") = PS.PU
' Row("IVA") = PS.IVA
' Row("IEPS") = PS.IEPS
' Row("Descuento") = PS.Descuento
' Row("Total") = (PS.Cantidad * PS.PU) + PS.IVA + PS.IEPS
ListaDS.Add(New ReportDataSource("DsProductos", DtDatos)) ' DtDatos.Rows.Add(Row)
ListaDS.Add(New ReportDataSource("DsImpuestos", DtImpuestos)) ' Next
ImprimirbytesPDF(context, StreamPDF(context, Formato, ListaDS, Parametros), "Factura") ' Dim RowImpuesto = DtImpuestos.NewRow()
' RowImpuesto("Impuesto") = "IVA"
' RowImpuesto("Tipo") = "Traslado"
' RowImpuesto("Base") = datos.Factura.SubTotal
' RowImpuesto("TipoFactor") = "Tasa"
' RowImpuesto("TasaOCuota") = "16%"
' RowImpuesto("Importe") = datos.Factura.IVA
' DtImpuestos.Rows.Add(RowImpuesto)
' ListaDS.Add(New ReportDataSource("DsProductos", DtDatos))
' ListaDS.Add(New ReportDataSource("DsImpuestos", DtImpuestos))
' ImprimirbytesPDF(context, StreamPDF(context, Formato, ListaDS, Parametros), "Factura")
'End If
Else
retorno = "no hay datossss"
End If End If
Catch ex As Exception Catch ex As Exception
retorno = ex.ToString()
ex.GuardaLog(ex.ToString()) ex.GuardaLog(ex.ToString())
context.Response.Write(retorno) context.Response.Write(retorno)
End Try End Try
End Sub End Sub
Private Function GenerarCFDi(ByVal context As HttpContext, RutaXml As String, datos As ParametroWS) As Byte()
Dim bytes As Byte() = Nothing
Dim objxml As XmlSatCFDI = XmlSatCFDI.readXML(RutaXml)
Dim rutaReporte As String = "\Empresas\Grales\Formatos\FacturaSALI.rdlc"
Dim QR As ClbNegBICFDv3_2.ClsNegCBBGenerar = New ClbNegBICFDv3_2.ClsNegCBBGenerar()
Dim cQr As Byte() = QR.GenerarCBBBytes(objxml.emisor.Rfc, objxml.receptor.Rfc, objxml.comprobante.Total, objxml.complemento.UUID)
Dim parametros As List(Of ReportParameter) = New List(Of ReportParameter)()
parametros.Add(New ReportParameter("comprobante_Certificado", objxml.comprobante.Certificado))
parametros.Add(New ReportParameter("comprobante_CondicionesDePago", objxml.comprobante.CondicionesDePago))
parametros.Add(New ReportParameter("comprobante_Confirmacion", objxml.comprobante.Confirmacion))
parametros.Add(New ReportParameter("comprobante_Fecha", objxml.comprobante.Fecha))
parametros.Add(New ReportParameter("comprobante_Serie", objxml.comprobante.Serie))
parametros.Add(New ReportParameter("comprobante_Folio", objxml.comprobante.Folio))
parametros.Add(New ReportParameter("comprobante_Descuento", objxml.comprobante.Descuento.ToString("N2")))
parametros.Add(New ReportParameter("comprobante_SubTotal", objxml.comprobante.SubTotal.ToString("N2")))
parametros.Add(New ReportParameter("comprobante_Total", objxml.comprobante.Total.ToString("N2")))
parametros.Add(New ReportParameter("comprobante_Version", objxml.comprobante.Version))
parametros.Add(New ReportParameter("comprobante_TipoDeComprobante", objxml.comprobante.TipoDeComprobanteTexto))
parametros.Add(New ReportParameter("comprobante_FormaPago", objxml.comprobante.FormaPagoTexto))
parametros.Add(New ReportParameter("comprobante_LugarExpedicion", objxml.comprobante.LugarExpedicion))
parametros.Add(New ReportParameter("comprobante_NoCertificado", objxml.comprobante.NoCertificado))
parametros.Add(New ReportParameter("comprobante_Sello", objxml.comprobante.Sello))
parametros.Add(New ReportParameter("comprobante_Moneda", objxml.comprobante.Moneda))
parametros.Add(New ReportParameter("comprobante_TipoCambio", objxml.comprobante.TipoCambio.ToString("N2")))
parametros.Add(New ReportParameter("comprobante_MetodoPago", objxml.comprobante.MetodoPagoTexto))
parametros.Add(New ReportParameter("emisor_Rfc", objxml.emisor.Rfc))
parametros.Add(New ReportParameter("emisor_Nombre", objxml.emisor.Nombre))
parametros.Add(New ReportParameter("emisor_RegimenFiscal", objxml.emisor.RegimenFiscalTexto))
parametros.Add(New ReportParameter("emisor_Direccion", datos.Empresa.DomicilioFiscal))
parametros.Add(New ReportParameter("receptor_Rfc", objxml.receptor.Rfc))
parametros.Add(New ReportParameter("receptor_Nombre", objxml.receptor.Nombre))
parametros.Add(New ReportParameter("receptor_NumRegIdTrib", objxml.receptor.NumRegIdTrib))
parametros.Add(New ReportParameter("receptor_ResidenciaFiscal", objxml.receptor.ResidenciaFiscal))
parametros.Add(New ReportParameter("receptor_UsoCFDI", objxml.receptor.UsoCFDITexto))
parametros.Add(New ReportParameter("complemento_FechaTimbrado", objxml.complemento.FechaTimbrado))
parametros.Add(New ReportParameter("complemento_NoCertificadoSAT", objxml.complemento.NoCertificadoSAT))
parametros.Add(New ReportParameter("complemento_RfcProvCertif", objxml.complemento.RfcProvCertif))
parametros.Add(New ReportParameter("complemento_SelloCFD", objxml.complemento.SelloCFD))
parametros.Add(New ReportParameter("complemento_SelloSAT", objxml.complemento.SelloSAT))
parametros.Add(New ReportParameter("complemento_UUID", objxml.complemento.UUID))
parametros.Add(New ReportParameter("complemento_CadenaOriginal", objxml.complemento.CadenaOriginal))
Dim ds As New List(Of ReportDataSource)
Dim rdsTotales As ReportDataSource = New ReportDataSource()
Dim ltotales As List(Of utilValores) = New List(Of utilValores)()
ltotales.Add(New utilValores("Subtotal", objxml.comprobante.SubTotal.ToString("N2")))
If objxml.comprobante.Descuento > 0 Then
ltotales.Add(New utilValores("Descuento", objxml.comprobante.Descuento.ToString("N2")))
End If
For Each item As CFDIImpuesto In objxml.Impuestos
If item.Importe > 0 Then
Dim TasaOCuota As Decimal = 0
Decimal.TryParse(item.TasaOCuota, TasaOCuota)
ltotales.Add(New utilValores($"Impuestos {item.Tipo} {item.ImpuestoTexto} {(If(item.TipoFactor = "Tasa", (TasaOCuota * 100).ToString("N4"), item.TasaOCuota))} {(If(item.TipoFactor = "Tasa", "%", ""))}", item.Importe.ToString("N2")))
End If
Next
ltotales.Add(New utilValores("Total", objxml.comprobante.Total.ToString("N2")))
rdsTotales.Name = "dsTotales"
rdsTotales.Value = ltotales
ds.Add(rdsTotales)
Dim rds2 As ReportDataSource = New ReportDataSource()
Dim limagenes As List(Of utilImage) = New List(Of utilImage)()
limagenes.Add(New utilImage(cQr))
rds2.Name = "dsImagenes"
rds2.Value = limagenes
ds.Add(rds2)
Dim rdsrelacionados As ReportDataSource = New ReportDataSource()
rdsrelacionados.Name = "dsRelacionados"
rdsrelacionados.Value = objxml.cFDIRelacionados
ds.Add(rdsrelacionados)
Dim rds1 As ReportDataSource = New ReportDataSource()
rds1.Name = "dsConceptos"
rds1.Value = objxml.GetConceptosforpdf()
ds.Add(rds1)
Try
bytes = StreamPDF(context, rutaReporte, ds, parametros)
System.IO.File.Delete(RutaXml)
Catch ex As Exception
End Try
Return bytes
End Function
Public Function StreamPDF(ByVal context As HttpContext, RutaReporte As String, DataSource As List(Of ReportDataSource), Parametros As List(Of ReportParameter), Optional NombreArchivo As String = "Reporte", Optional Formato As String = "PDF", Optional MR As ReportViewer = Nothing) As Byte() Public Function StreamPDF(ByVal context As HttpContext, RutaReporte As String, DataSource As List(Of ReportDataSource), Parametros As List(Of ReportParameter), Optional NombreArchivo As String = "Reporte", Optional Formato As String = "PDF", Optional MR As ReportViewer = Nothing) As Byte()
'limpio ReportViwer 'limpio ReportViwer
Dim sw As New System.Diagnostics.Stopwatch() Dim sw As New System.Diagnostics.Stopwatch()
@@ -150,8 +269,8 @@ Public Class GenerarPDFFactura : Implements IHttpHandler
If EsProduccion Then If EsProduccion Then
Dim CveUsuario As Integer = 0 Dim CveUsuario As Integer = -1
Dim CveEmpresa As Integer = 0 Dim CveEmpresa As Integer = -1
Dim wsreport As New WSRDLC.WebServiceSoapClient Dim wsreport As New WSRDLC.WebServiceSoapClient
Dim params As New List(Of WSRDLC.ReportParameter) Dim params As New List(Of WSRDLC.ReportParameter)
@@ -175,6 +294,7 @@ Public Class GenerarPDFFactura : Implements IHttpHandler
Bytes = wsreport.StreamPDFBytes(RutaReporte, ds, params.ToArray(), NombreArchivo, Formato, CveEmpresa, CveUsuario) Bytes = wsreport.StreamPDFBytes(RutaReporte, ds, params.ToArray(), NombreArchivo, Formato, CveEmpresa, CveUsuario)
wsreport = Nothing wsreport = Nothing
params = Nothing params = Nothing
Else Else
If IsNothing(MR) Then MR = New ReportViewer If IsNothing(MR) Then MR = New ReportViewer
Try Try
@@ -364,8 +484,10 @@ Public Class GenerarPDFFactura : Implements IHttpHandler
Public Property Factura As FacturaWS Public Property Factura As FacturaWS
Public Property Cliente As ClienteWS Public Property Cliente As ClienteWS
Public Property Empresa As EmpresaWS Public Property Empresa As EmpresaWS
Public Property Timbrado As DatosSATWS
Public Property API_SALI As Boolean Public Property API_SALI As Boolean
Public Property Timbrado As DatosSATWS
Public Property XML As String
End Class End Class