-- eFacturas. generacion de facturas en hilo en pdf

This commit is contained in:
2024-10-05 12:30:51 -07:00
parent 5a47a88a48
commit 216fdfb9bd
3 changed files with 340 additions and 270 deletions

View File

@@ -173,9 +173,13 @@ Public Class ClsPaginas
Dim tHora As Integer = 0 Dim tHora As Integer = 0
'If UsuarioActual IsNot Nothing AndAlso UsuarioActual.Empresa IsNot Nothing Then tHora = UsuarioActual.Empresa.UTCOffset 'If UsuarioActual IsNot Nothing AndAlso UsuarioActual.Empresa IsNot Nothing Then tHora = UsuarioActual.Empresa.UTCOffset
Try Try
If HttpContext.Current.Session IsNot Nothing AndAlso HttpContext.Current.Session("UsuarioSIG") IsNot Nothing AndAlso CType(HttpContext.Current.Session("UsuarioSIG"), Usuario).Empresa IsNot Nothing Then tHora = CType(HttpContext.Current.Session("UsuarioSIG"), Usuario).Empresa.UTCOffset If HttpContext.Current IsNot Nothing Then
If HttpContext.Current.Session IsNot Nothing AndAlso HttpContext.Current.Session("UsuarioSIG") IsNot Nothing AndAlso CType(HttpContext.Current.Session("UsuarioSIG"), Usuario).Empresa IsNot Nothing Then
tHora = CType(HttpContext.Current.Session("UsuarioSIG"), Usuario).Empresa.UTCOffset
End If
End If
Catch ex As Exception Catch ex As Exception
tHora = 0
End Try End Try
Return If(tHora <> 0, Now.ToUniversalTime.AddMinutes(tHora), Now) Return If(tHora <> 0, Now.ToUniversalTime.AddMinutes(tHora), Now)

View File

@@ -331,7 +331,7 @@ Namespace Extensiones
Public Sub GuardaLogAD(Mensaje As String, Optional Archivo As String = "Log") Public Sub GuardaLogAD(Mensaje As String, Optional Archivo As String = "Log")
Dim ArchivoW As StreamWriter Dim ArchivoW As StreamWriter
Dim MensajeFormato As String = String.Format("{0}{1}Log: {2} | Fecha:{3}", Chr(13), Chr(10), Mensaje, ClsPaginas.NowADS().ToString("dd/MM/yyyy HH:mm")) Dim MensajeFormato As String = String.Format("{0}{1}Log: {2} | Fecha:{3}", Chr(13), Chr(10), Mensaje, DateTime.Now.ToString("dd/MM/yyyy HH:mm"))
Try Try
ArchivoW = New StreamWriter(String.Format("{0}\Log\{1}.txt", AppDomain.CurrentDomain.BaseDirectory, Archivo), True, System.Text.Encoding.UTF8) ArchivoW = New StreamWriter(String.Format("{0}\Log\{1}.txt", AppDomain.CurrentDomain.BaseDirectory, Archivo), True, System.Text.Encoding.UTF8)

View File

@@ -27,6 +27,7 @@ Imports SharpCompress.Reader
Imports System.Drawing Imports System.Drawing
Imports Microsoft.Owin.Security.Provider Imports Microsoft.Owin.Security.Provider
Imports Telerik.Web.UI Imports Telerik.Web.UI
Imports Stimulsoft.Base.StiDbType
'Imports Telerik.Web.UI 'Imports Telerik.Web.UI
@@ -785,7 +786,7 @@ Partial Class Compras_eFacturas
End If End If
CargaGvBitacora() CargaGvBitacora()
CargaDatos() CargaDatos(NowADS())
MostrarSolcitudesSAT() MostrarSolcitudesSAT()
If UsuarioActual.CveRol = 1 Then If UsuarioActual.CveRol = 1 Then
@@ -810,10 +811,10 @@ Partial Class Compras_eFacturas
End Sub End Sub
Protected Sub BtnConsultar_Click(sender As Object, e As System.EventArgs) Handles BtnConsultar.Click Protected Sub BtnConsultar_Click(sender As Object, e As System.EventArgs) Handles BtnConsultar.Click
CargaDatos() CargaDatos(NowADS())
End Sub End Sub
Private Sub CargaDatos() Private Sub CargaDatos(NowEmpresa As DateTime)
DTTraslados = New DataTable DTTraslados = New DataTable
@@ -832,7 +833,7 @@ Partial Class Compras_eFacturas
FechaI = MinFecha FechaI = MinFecha
FechaF = MaxFecha FechaF = MaxFecha
txtFechaI.Text = MinFecha.ToString txtFechaI.Text = MinFecha.ToString
txtFechaF.Text = NowADS().ToShortDateString txtFechaF.Text = NowEmpresa.ToShortDateString
End If End If
Dim DtPagos As DataTable = Nothing Dim DtPagos As DataTable = Nothing
@@ -887,13 +888,13 @@ Partial Class Compras_eFacturas
End Sub End Sub
Protected Sub LnkExportar_Click(sender As Object, e As EventArgs) Handles LnkExportar.Click Protected Sub LnkExportar_Click(sender As Object, e As EventArgs) Handles LnkExportar.Click
GenerarPDF("Excel") GenerarPDF(NowADS(), "Excel")
End Sub End Sub
Protected Sub ImgRefresh_Click(sender As Object, e As EventArgs) Handles ImgRefresh.Click Protected Sub ImgRefresh_Click(sender As Object, e As EventArgs) Handles ImgRefresh.Click
If VerificaCorreo() Then If VerificaCorreo() Then
CargaDatos() CargaDatos(NowADS())
End If End If
End Sub End Sub
@@ -1137,11 +1138,11 @@ Partial Class Compras_eFacturas
ObjDatos.Dispose() ObjDatos.Dispose()
CargaDatos() CargaDatos(NowADS())
End Sub End Sub
Protected Sub GvDatos_RowCancelingEdit(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCancelEditEventArgs) Handles GvD.RowCancelingEdit Protected Sub GvDatos_RowCancelingEdit(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCancelEditEventArgs) Handles GvD.RowCancelingEdit
GvD.EditIndex = -1 GvD.EditIndex = -1
CargaDatos() CargaDatos(NowADS())
End Sub End Sub
@@ -1157,7 +1158,7 @@ Partial Class Compras_eFacturas
Protected Sub GvDatos_RowEditing(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles GvD.RowEditing Protected Sub GvDatos_RowEditing(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles GvD.RowEditing
GvD.EditIndex = e.NewEditIndex GvD.EditIndex = e.NewEditIndex
CargaDatos() CargaDatos(NowADS())
End Sub End Sub
Protected Sub GvDatos_RowCommand(sender As Object, e As GridViewCommandEventArgs) Handles GvD.RowCommand Protected Sub GvDatos_RowCommand(sender As Object, e As GridViewCommandEventArgs) Handles GvD.RowCommand
@@ -1187,7 +1188,7 @@ Partial Class Compras_eFacturas
ObjDatos.Dispose() ObjDatos.Dispose()
If Correcto Then If Correcto Then
CargaDatos() CargaDatos(NowADS())
End If End If
End Sub End Sub
@@ -1300,15 +1301,15 @@ Partial Class Compras_eFacturas
GvPagos.EditIndex = -1 GvPagos.EditIndex = -1
End If End If
ObjDatos.Dispose() ObjDatos.Dispose()
CargaDatos() CargaDatos(NowADS())
End Sub End Sub
Protected Sub GvPagos_RowCancelingEdit(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCancelEditEventArgs) Handles GvPagos.RowCancelingEdit Protected Sub GvPagos_RowCancelingEdit(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCancelEditEventArgs) Handles GvPagos.RowCancelingEdit
GvPagos.EditIndex = -1 GvPagos.EditIndex = -1
CargaDatos() CargaDatos(NowADS())
End Sub End Sub
Protected Sub GvPagos_RowEditing(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles GvPagos.RowEditing Protected Sub GvPagos_RowEditing(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles GvPagos.RowEditing
GvPagos.EditIndex = e.NewEditIndex GvPagos.EditIndex = e.NewEditIndex
CargaDatos() CargaDatos(NowADS())
End Sub End Sub
Protected Sub imgDP_Click(sender As Object, e As EventArgs) Protected Sub imgDP_Click(sender As Object, e As EventArgs)
Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow) Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow)
@@ -1347,7 +1348,7 @@ Partial Class Compras_eFacturas
ObjDatos.Dispose() ObjDatos.Dispose()
If Correcto Then If Correcto Then
CargaDatos() CargaDatos(NowADS())
End If End If
End Sub End Sub
#End Region #End Region
@@ -1386,7 +1387,7 @@ Partial Class Compras_eFacturas
If Not ErrorTrans Then If Not ErrorTrans Then
Alert("La verificación masiva ha terminado", TipoMensaje.MsgInformacion) Alert("La verificación masiva ha terminado", TipoMensaje.MsgInformacion)
CargaDatos() CargaDatos(NowADS())
End If End If
@@ -1432,11 +1433,11 @@ Partial Class Compras_eFacturas
DtNoRecibidas.Dispose() DtNoRecibidas.Dispose()
CargaDatos() CargaDatos(NowADS())
End Sub End Sub
#Region "G E N E R A P D F " #Region "G E N E R A P D F "
Private Sub GenerarPDF(Optional Tipo As String = "PDF") Private Sub GenerarPDF(Fecha As DateTime, Optional Tipo As String = "PDF")
Dim ObjDatos As New ClsCompras Dim ObjDatos As New ClsCompras
Dim FechaI As String = txtFechaI.Text Dim FechaI As String = txtFechaI.Text
Dim FechaF As String = txtFechaF.Text Dim FechaF As String = txtFechaF.Text
@@ -1470,7 +1471,7 @@ Partial Class Compras_eFacturas
params.Add(New ReportParameter("FechaInicio", FechaI)) params.Add(New ReportParameter("FechaInicio", FechaI))
params.Add(New ReportParameter("FechaFin", FechaF)) params.Add(New ReportParameter("FechaFin", FechaF))
params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre)) params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Nombre))
params.Add(New ReportParameter("FechaImpresion", NowADS().ToDateTime.ToShortDateString)) params.Add(New ReportParameter("FechaImpresion", Fecha.ToDateTime.ToShortDateString))
If Imagen.Exists Then If Imagen.Exists Then
params.Add(New ReportParameter("LogoPath", $"file//:{Imagen.FullName}")) params.Add(New ReportParameter("LogoPath", $"file//:{Imagen.FullName}"))
@@ -1481,9 +1482,9 @@ Partial Class Compras_eFacturas
If Tab.ActiveTabIndex = 2 Then If Tab.ActiveTabIndex = 2 Then
ImprimirPDF("Empresas/Grales/Formatos/RepFacturas.rdlc", DTTraslados, params, $"FacturasBuzon_{NowADS().ToString("yyyyMMyyddmmss")}", Tipo) ImprimirPDF("Empresas/Grales/Formatos/RepFacturas.rdlc", DTTraslados, params, $"FacturasBuzon_{Fecha.ToString("yyyyMMyyddmmss")}", Tipo)
Else Else
ImprimirPDF("Empresas/Grales/Formatos/RepFacturas.rdlc", dt, params, $"FacturasBuzon_{NowADS().ToString("yyyyMMyyddmmss")}", Tipo) ImprimirPDF("Empresas/Grales/Formatos/RepFacturas.rdlc", dt, params, $"FacturasBuzon_{Fecha.ToString("yyyyMMyyddmmss")}", Tipo)
End If End If
@@ -1491,7 +1492,7 @@ Partial Class Compras_eFacturas
End Sub End Sub
Protected Sub LnkPdf_Click(sender As Object, e As EventArgs) Handles LnkPdf.Click Protected Sub LnkPdf_Click(sender As Object, e As EventArgs) Handles LnkPdf.Click
GenerarPDF() GenerarPDF(NowADS())
End Sub End Sub
#End Region #End Region
@@ -1556,7 +1557,7 @@ Partial Class Compras_eFacturas
End Sub End Sub
Private Sub SubirFacturas(ByRef ListComprimidos As List(Of String), ByRef ListXML As List(Of String), ByRef ListPDF As List(Of String)) Private Sub SubirFacturas(ByRef ListComprimidos As List(Of String), ByRef ListXML As List(Of String), ByRef ListPDF As List(Of String), Optional Validada As Integer = 0)
Dim DTLOG As New DataTable Dim DTLOG As New DataTable
DTLOG.Columns.Add("Serie", GetType(String)) DTLOG.Columns.Add("Serie", GetType(String))
DTLOG.Columns.Add("Folio", GetType(String)) DTLOG.Columns.Add("Folio", GetType(String))
@@ -1638,35 +1639,6 @@ Partial Class Compras_eFacturas
Next Next
'Dim fileEntries As String() = Directory.GetFiles(String.Format("{0}Temp\Facturas", UsuarioActual.Empresa.Ruta))
'Dim ListaDirectoriosTemporales As New List(Of String)
'Dim ListaComprimidos As New List(Of String)
''Dim fileName As String
'Dim ArchivoExtension As String
'Dim sOnlyFilename As String
'For Each filePath As String In fileEntries
' ArchivoExtension = IO.Path.GetExtension(String.Format("{0}", filePath)).Replace(".", "")
' sOnlyFilename = System.IO.Path.GetFileName(filePath)
' If ArchivoExtension.ToUpper = "RAR" Or ArchivoExtension.ToUpper = "ZIP" Then
' ListXML.Add(filePath)
' End If
'Next
'Dim Arreglo As New ArrayList()
'Dim Bandera As Boolean = True
'Dim Retorno As String = ""
'Dim ListaArchivosMail As New List(Of ClsSisMail.ArchivoMail)
'sw.Stop()
'swTiempo.AppendFormat("ReadFiles: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds)
'swmili = sw.ElapsedMilliseconds
'sw.Start()
Anexo.Text = "" Anexo.Text = ""
UPAddFacturas.Update() UPAddFacturas.Update()
@@ -1710,12 +1682,13 @@ Partial Class Compras_eFacturas
If File.Exists(filePathXML) Then If File.Exists(filePathXML) Then
Dim a As New ComprobanteFactura(eFacturasLog) Dim a As New ComprobanteFactura(eFacturasLog)
Dim FF As Factura = a.CargaComprobanteXML(File.ReadAllText(filePathXML), UsuarioActual.Empresa.Ruta, UsuarioActual.Empresa.RFC, UsuarioActual.CveEmpresa, True, rowLog, NombreArchivo:=fInfoXML.Name) Dim FF As Factura = a.CargaComprobanteXML(File.ReadAllText(filePathXML), UsuarioActual.Empresa.Ruta, UsuarioActual.Empresa.RFC, UsuarioActual.CveEmpresa, True, rowLog, NombreArchivo:=fInfoXML.Name, Validada:=Validada)
If FF IsNot Nothing AndAlso FF.CveFactura > 0 Then If FF IsNot Nothing AndAlso FF.CveFactura > 0 Then
If RutaPDF = "" Then If RutaPDF = "" Then
a.GeneraPDF(UsuarioActual.Empresa.Ruta, FF, UsuarioActual.Empresa.Ruta, True) Dim Hilo As New System.Threading.Thread(Sub() ProcesarPDF(UsuarioActual, a, FF))
Hilo.Start()
Else Else
Dim PDfDestino As String = $"{UsuarioActual.Empresa.Ruta}\Compras\{FF.EmisorRFC}\{FF.CveFactura}.PDF" Dim PDfDestino As String = $"{UsuarioActual.Empresa.Ruta}\Compras\{FF.EmisorRFC}\{FF.CveFactura}.PDF"
If File.Exists(PDfDestino) Then If File.Exists(PDfDestino) Then
@@ -1736,40 +1709,6 @@ Partial Class Compras_eFacturas
swmili = sw.ElapsedMilliseconds swmili = sw.ElapsedMilliseconds
sw.Start() sw.Start()
'If ListaArchivosMail.Count > 0 Then
' Dim Correo As New ClsSisMail
' 'If Correo.SendMail(UsuarioActual.Empresa, "sig.buzon@gmail.com", "Facturas Efacturas " & NowADS().ToString("yyyyMMddhhmmss"), "Facturas", Archivos:=ListaArchivosMail) Then
' If Correo.SendMail(UsuarioActual.Empresa, UsuarioActual.Empresa.Buzon_Mail, "Facturas Efacturas " & NowADS().ToString("yyyyMMddhhmmss"), "Facturas", Archivos:=ListaArchivosMail) Then
' sw.Stop()
' swTiempo.AppendFormat("EnvioCorreo: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds)
' swmili = sw.ElapsedMilliseconds
' sw.Start()
' System.Threading.Thread.Sleep(3000)
' 'ProcesaBuzon()
' sw.Stop()
' swTiempo.AppendFormat("espera: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds)
' swmili = sw.ElapsedMilliseconds
' sw.Start()
' If VerificaCorreo(True) Then
' CargaDatos()
' End If
' sw.Stop()
' swTiempo.AppendFormat("Verifica En la app: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds)
' swmili = sw.ElapsedMilliseconds
' sw.Start()
' Else
' Alert("Se presento un error al procesar las facturas.")
' End If
'End If
sw.Stop() sw.Stop()
swTiempo.AppendFormat("BorrarInicio: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds) swTiempo.AppendFormat("BorrarInicio: ({0}) {1} ", sw.ElapsedMilliseconds - swmili, sw.ElapsedMilliseconds)
@@ -1777,38 +1716,6 @@ Partial Class Compras_eFacturas
sw.Start() sw.Start()
'For Each filePath As String In ListXML
' Try
' File.Delete(filePath)
' Catch ex As Exception
' End Try
'Next
'For Each filePath As String In ListPDF
' Try
' File.Delete(filePath)
' Catch ex As Exception
' End Try
'Next
'For Each s As String In ListaComprimidos
' Try
' File.Delete(s)
' Catch ex As Exception
' End Try
'Next
'For Each d As String In ListaDirectoriosTemporales
' Try
' Directory.Delete(d, True)
' Catch ex As Exception
' End Try
'Next
For Each s As String In ListXML For Each s As String In ListXML
Try Try
File.Delete(s) File.Delete(s)
@@ -1829,74 +1736,6 @@ Partial Class Compras_eFacturas
GuardaLogefacturas(swTiempo.ToString()) GuardaLogefacturas(swTiempo.ToString())
'ArchivoExtension = IO.Path.GetExtension(String.Format("{0}", filePath)).Replace(".", "")
'NombreArchivo = System.IO.Path.GetFileName(filePath)
'If ArchivoExtension.ToUpper = "XML" Then
' Dim ArchivoInfo As New FileInfo(filePath)
' Dim Fact2 As Modelos.eFactura = GuardaArchivoXML(filePath)
' If Fact2 IsNot Nothing Then
' Fact2.DirectorioTemporal = ArchivoInfo.DirectoryName & "\"
' Arreglo.Add(Fact2)
' End If
'End If
'If Arreglo.Count > 0 Then
' For Each Fact As Modelos.eFactura In Arreglo
' ' si es exploraciones, no debe de insertar del 2013
' If UsuarioActual.CveEmpresa = 13 And Convert.ToDateTime(Fact.Fecha).Year < 2014 And Fact.TipodeComprobante <> "egreso" Then
' Bandera = False
' 'ModExtensiones.GuardaLog("'*******noingreso :" + Fact.ArchivoXML + " RFC: " + tRF + " Anio" + Convert.ToDateTime(Fact.Fecha).Year)
' End If
' 'por default, no alimentar facturas menores al 2013
' If Convert.ToDateTime(Fact.Fecha).Year < 2013 Then
' Bandera = False
' 'ModExtensiones.GuardaLog("'*******noingreso :" + Fact.ArchivoXML + " RFC: " + tRF + " Anio" + Convert.ToDateTime(Fact.Fecha).Year)
' End If
' If Bandera Then
' If Not String.IsNullOrEmpty(Fact.TFDUUID) Then
' Dim Valida As New ClsValidaCFDi(Fact.TFDUUID, Fact.EmisorRFC, Fact.ReceptorRFC, Fact.Total, Fact.Fecha)
' If Valida.EsValida = 1 Then
' Fact.Validada = 1
' End If
' Valida.Dispose()
' If Not String.IsNullOrEmpty(Fact.ArchivoPDF) Then
' Retorno = AgregaFactura(Fact)
' Else
' If GeneraPDF(Fact.DirectorioTemporal, Fact) Then
' ListPDF.Add(Fact.ArchivoPDF)
' Retorno = AgregaFactura(Fact)
' ' ModExtensiones.GuardaLog("'*******se genero el pdf :" + String.Format("{0}Empresas\{1}\Temp", ModExtensiones.DirectorioBaseEmpresas, UsuarioActual.CveEmpresa) + Fact.ArchivoXML + " RFC: " + tRF + " Anio" + Convert.ToDateTime(Fact.Fecha).Year + "Retorno:" + Retorno)
' Else
' ' ModExtensiones.GuardaLog("'*******no se genero el pdf :" + String.Format("{0}Empresas\{1}\Temp", ModExtensiones.DirectorioBaseEmpresas, UsuarioActual.CveEmpresa) + Fact.ArchivoXML + " RFC: " + tRF + " Anio" + Convert.ToDateTime(Fact.Fecha).Year + "Retorno:" + Retorno)
' End If
' End If
' End If
' End If
' Bandera = True
' Try
' If File.Exists(String.Format("{0}{1}", Fact.DirectorioTemporal, Fact.ArchivoXML)) Then
' File.Delete(String.Format("{0}{1}", Fact.DirectorioTemporal, Fact.ArchivoXML))
' End If
' If File.Exists(String.Format("{0}{1}", Fact.DirectorioTemporal, Fact.ArchivoPDF)) Then
' File.Delete(String.Format("{0}{1}", Fact.DirectorioTemporal, Fact.ArchivoPDF))
' End If
' Catch ex As Exception
' End Try
' Next
'End If
mesajeFaturasSubidas(DTLOG) mesajeFaturasSubidas(DTLOG)
@@ -1905,6 +1744,10 @@ Partial Class Compras_eFacturas
'Alert(String.Format("Se cargaron {0} Facturas", Arreglo.Count), TipoMensaje.MsgInformacion) 'Alert(String.Format("Se cargaron {0} Facturas", Arreglo.Count), TipoMensaje.MsgInformacion)
End Sub End Sub
Private Sub ProcesarPDF(UsuarioActual As Usuario, a As ComprobanteFactura, FF As Factura)
a.GeneraPDF(UsuarioActual, UsuarioActual.Empresa.Ruta, FF, UsuarioActual.Empresa.Ruta, True)
End Sub
Private Sub mesajeFaturasSubidas(DTLOG As DataTable) Private Sub mesajeFaturasSubidas(DTLOG As DataTable)
@@ -2430,7 +2273,7 @@ Partial Class Compras_eFacturas
'_TFDNoCertSAT = XMLDoc.DocumentElement("cfdi:Complemento").FirstChild.Attributes("noCertificadoSAT").InnerText '_TFDNoCertSAT = XMLDoc.DocumentElement("cfdi:Complemento").FirstChild.Attributes("noCertificadoSAT").InnerText
'_TFDSelloSAT = XMLDoc.DocumentElement("cfdi:Complemento").FirstChild.Attributes("selloSAT").InnerText '_TFDSelloSAT = XMLDoc.DocumentElement("cfdi:Complemento").FirstChild.Attributes("selloSAT").InnerText
End Sub End Sub
Public Function GeneraPDF(Ruta As String, Fact As Modelos.eFactura) As Boolean Public Function GeneraPDF(UsuarioActual As Usuario, Ruta As String, Fact As Modelos.eFactura) As Boolean
Dim RutaXML As String = String.Empty Dim RutaXML As String = String.Empty
Dim RutaPDF As String = String.Empty Dim RutaPDF As String = String.Empty
Dim Retorno As Boolean = False Dim Retorno As Boolean = False
@@ -2709,7 +2552,7 @@ Partial Class Compras_eFacturas
Using nom As ClsNominas = New ClsNominas() Using nom As ClsNominas = New ClsNominas()
If nom.SolicitudesGet(-1, UsuarioActual.CveEmpresa, CveTipoSolicitud:=2, Estatus:=0, Top:=50) Then If nom.SolicitudesGet(1611, UsuarioActual.CveEmpresa, CveTipoSolicitud:=2, Estatus:=-1, Top:=50) Then
GVSolicitudesPendientes.DataSource = nom.DtResultados GVSolicitudesPendientes.DataSource = nom.DtResultados
If nom.DtResultados.Rows.Count > 0 Then If nom.DtResultados.Rows.Count > 0 Then
@@ -3057,15 +2900,20 @@ Partial Class Compras_eFacturas
If ResultadoSolicitudOK And Verificar Then If ResultadoSolicitudOK And Verificar Then
Dim ObjApiVerificacion As JToken = CType(api.VerificaSolicitudesNominas(UsuarioActual.CveEmpresa, CveTipoSolicitud, CveSolicitudActual), JToken) If EsProduccion Then
Dim ObjApiVerificacion As JToken = CType(api.VerificaSolicitudesNominas(UsuarioActual.CveEmpresa, CveTipoSolicitud, CveSolicitudActual), JToken)
If Not (ObjApiVerificacion Is Nothing) Then If Not (ObjApiVerificacion Is Nothing) Then
resultVerificacion = ObjApiVerificacion.[Select](Function(token) token.Values().Aggregate(Function(i, j) $"{i}|{j}").Value(Of String)()).ToList() resultVerificacion = ObjApiVerificacion.[Select](Function(token) token.Values().Aggregate(Function(i, j) $"{i}|{j}").Value(Of String)()).ToList()
ResultadoVerificaionOK = Boolean.Parse(resultVerificacion(0)) ResultadoVerificaionOK = Boolean.Parse(resultVerificacion(0))
SeVerifico = True SeVerifico = True
Else
TipoMensaje = ModExtensiones.TipoMensaje.MsgAdvertencia
End If
Else Else
TipoMensaje = ModExtensiones.TipoMensaje.MsgAdvertencia ResultadoVerificaionOK = True
SeVerifico = True
End If End If
Dim Archivo = New FileInfo(String.Format("{0}DescargasSATXML\Compras\{1}.zip", UsuarioActual.Empresa.Ruta, CveSolicitudDetalle)) Dim Archivo = New FileInfo(String.Format("{0}DescargasSATXML\Compras\{1}.zip", UsuarioActual.Empresa.Ruta, CveSolicitudDetalle))
@@ -3103,7 +2951,7 @@ Partial Class Compras_eFacturas
End If End If
If SeVerifico Then If SeVerifico Then
SubirFacturas(ListComprimidos, ListXML, ListPDF) SubirFacturas(ListComprimidos, ListXML, ListPDF, Validada:=1)
End If End If
'If UsuarioActual.CveRol = 1 Then 'If UsuarioActual.CveRol = 1 Then
@@ -3342,7 +3190,7 @@ Partial Class Compras_eFacturas
GvD.EditIndex = -1 GvD.EditIndex = -1
RegistraScript(String.Format("$('#{0}').modal('hide');", "divDescripcion")) RegistraScript(String.Format("$('#{0}').modal('hide');", "divDescripcion"))
Alert("La factura se eliminó correctamente.", TipoMensaje.MsgInformacion) Alert("La factura se eliminó correctamente.", TipoMensaje.MsgInformacion)
CargaDatos() CargaDatos(NowADS())
UpBitacora.Update() UpBitacora.Update()
End If End If
@@ -3367,7 +3215,7 @@ Partial Class Compras_eFacturas
GvPagos.EditIndex = -1 GvPagos.EditIndex = -1
RegistraScript("$('#divDescripcionPago').modal('hide');") RegistraScript("$('#divDescripcionPago').modal('hide');")
Alert("La factura se eliminó correctamente.", TipoMensaje.MsgInformacion) Alert("La factura se eliminó correctamente.", TipoMensaje.MsgInformacion)
CargaDatos() CargaDatos(NowADS())
UpBitacora.Update() UpBitacora.Update()
End If End If
@@ -4039,7 +3887,7 @@ Partial Class Compras_eFacturas
Alert("El pago fue vinculado correctamente", TipoMensaje.MsgInformacion) Alert("El pago fue vinculado correctamente", TipoMensaje.MsgInformacion)
RegistraScript("$('#ModalVincularPago').modal('hide')", "VincularPagoModalHide") RegistraScript("$('#ModalVincularPago').modal('hide')", "VincularPagoModalHide")
CargaDatos() CargaDatos(NowADS())
Else Else
ObjCompra.RollBack() ObjCompra.RollBack()
Alert("Ocurrió un error al vincular el pago. Por favor verifique y vuelva a intentar", TipoMensaje.MsgError) Alert("Ocurrió un error al vincular el pago. Por favor verifique y vuelva a intentar", TipoMensaje.MsgError)
@@ -4490,7 +4338,7 @@ Partial Class Compras_eFacturas
Alert($"PDF Error se genero nulo", TipoMensaje.MsgAdvertencia) Alert($"PDF Error se genero nulo", TipoMensaje.MsgAdvertencia)
End If End If
CargaDatos() CargaDatos(NowADS())
Catch ex As Exception Catch ex As Exception
Alert($"PDF Error {ex.Message} -- > {ex.StackTrace}", TipoMensaje.MsgAdvertencia) Alert($"PDF Error {ex.Message} -- > {ex.StackTrace}", TipoMensaje.MsgAdvertencia)
@@ -4964,7 +4812,7 @@ Partial Class Compras_eFacturas
If CountVinculados > 0 Then If CountVinculados > 0 Then
Alert($"Se vincularon {CountVinculados} complementos") Alert($"Se vincularon {CountVinculados} complementos")
CargaDatos() CargaDatos(NowADS())
End If End If
@@ -5099,7 +4947,7 @@ Partial Class Compras_eFacturas
ObjDatos.Dispose() ObjDatos.Dispose()
If Correcto Then If Correcto Then
CargaDatos() CargaDatos(NowADS())
End If End If
End Sub End Sub
@@ -5172,7 +5020,7 @@ Partial Class Compras_eFacturas
If ProcesoOk Then If ProcesoOk Then
RegistraScript("$('#DvModalVincularTrasaldo').modal('hide');") RegistraScript("$('#DvModalVincularTrasaldo').modal('hide');")
CargaDatos() CargaDatos(NowADS())
Alert("Traslado Vinculado correctamente.") Alert("Traslado Vinculado correctamente.")
End If End If
@@ -5494,7 +5342,7 @@ Partial Class Compras_eFacturas
Next Next
If Not ErrorProceso Then If Not ErrorProceso Then
CargaDatos() CargaDatos(NowADS())
If Contador > 0 Then If Contador > 0 Then
Alert($"Se registraron {Contador} Compras") Alert($"Se registraron {Contador} Compras")
End If End If
@@ -7780,7 +7628,7 @@ Namespace ADS.eFacturas
' End If ' End If
'End Sub 'End Sub
Public Function CargaComprobanteXML(StrFuente As String, DirectorioEmpresa As String, RFCEmpresa As String, CveEmpresa As Integer, Registrar As Boolean, ByRef rowLog As DataRow, NombreArchivo As String) As Factura Public Function CargaComprobanteXML(StrFuente As String, DirectorioEmpresa As String, RFCEmpresa As String, CveEmpresa As Integer, Registrar As Boolean, ByRef rowLog As DataRow, NombreArchivo As String, Optional Validada As Integer = 0) As Factura
Dim SeValido As Boolean = False Dim SeValido As Boolean = False
@@ -8040,6 +7888,8 @@ Namespace ADS.eFacturas
If Fact.ReceptorRFC = RFCEmpresa Then If Fact.ReceptorRFC = RFCEmpresa Then
Fact.Validada = Validada
Dim ObjCompra As New ClsCompras Dim ObjCompra As New ClsCompras
Dim Correcto As Boolean = False Dim Correcto As Boolean = False
@@ -8135,7 +7985,7 @@ Namespace ADS.eFacturas
Public Function GeneraPDF(ByVal Ruta As String, ByVal Fact As Factura, DirectorioEmpresa As String, Guardar As Boolean) As Boolean Public Function GeneraPDF(UsuarioActual As Usuario, ByVal Ruta As String, ByVal Fact As Factura, DirectorioEmpresa As String, Guardar As Boolean) As Boolean
Dim RutaXML As String = String.Empty Dim RutaXML As String = String.Empty
Dim RutaPDF As String = String.Empty Dim RutaPDF As String = String.Empty
Dim Retorno As Boolean = False Dim Retorno As Boolean = False
@@ -8198,7 +8048,7 @@ Namespace ADS.eFacturas
If (Fact.Version = "3.3" Or Fact.Version = "4.0") Then If (Fact.Version = "3.3" Or Fact.Version = "4.0") Then
Dim cxml As XmlSatCFDI = XmlSatCFDI.readXML(ArchivoXML, ArchivoLog) Dim cxml As XmlSatCFDI = XmlSatCFDI.readXML(ArchivoXML, ArchivoLog)
ModExtensiones.GuardaLogAD(String.Format(" *********** UUID : {0} ***********", cxml.complemento.UUID), ArchivoLog) ModExtensiones.GuardaLogAD(String.Format(" *********** UUID : {0} ***********", cxml.complemento.UUID), ArchivoLog)
cxml.ImprimirPDF(TmpArchivoPDF, DirectorioEmpresa, Fact.TipoComprobante) cxml.ImprimirPDF(UsuarioActual, TmpArchivoPDF, DirectorioEmpresa, Fact.TipoComprobante)
Fact.ArchivoPDF = Path.GetFileName(TmpArchivoPDF) Fact.ArchivoPDF = Path.GetFileName(TmpArchivoPDF)
Try Try
@@ -8217,9 +8067,9 @@ Namespace ADS.eFacturas
ModExtensiones.GuardaLogAD(String.Format(" *********** TFDUUID : {0} ***********", Fact.UUID), ArchivoLog) ModExtensiones.GuardaLogAD(String.Format(" *********** TFDUUID : {0} ***********", Fact.UUID), ArchivoLog)
Dim DomFiscal As String = String.Format("Domicilio Fiscal {0}{1} {2}{0}Col.{3}{0}CP. {4} {5},{6},{7}", vbCr, Fact.DomFisCalle, Fact.DomFisNoExt, Fact.DomFisCol, Fact.DomFisCP, Fact.DomFisMun, Fact.DomFisEst, Fact.DomFisPais) Dim DomFiscal As String = String.Format("Domicilio Fiscal {0}{1} {2}{0}Col.{3}{0}CP. {4} {5},{6},{7}", vbCr, Fact.DomFisCalle, Fact.DomFisNoExt, Fact.DomFisCol, Fact.DomFisCP, Fact.DomFisMun, Fact.DomFisEst, Fact.DomFisPais)
If GeneraPDFNew(TmpArchivoPDF, Fact.UUID, Fact.SubTotal, Fact.Descuento, Fact.Total, Fact.TrasladoIVA.FormatoNumero(), Fact.Moneda, Fact.FormaDePago, Fact.TFDNoCertSAT, Fact.TFDFechaTimbrado.ToDate(), Fact.noCertificado, If GeneraPDFNew(UsuarioActual, TmpArchivoPDF, Fact.UUID, Fact.SubTotal, Fact.Descuento, Fact.Total, Fact.TrasladoIVA.FormatoNumero(), Fact.Moneda, Fact.FormaDePago, Fact.TFDNoCertSAT, Fact.TFDFechaTimbrado.ToDate(), Fact.noCertificado,
Fact.DTConceptos, Fact.TFDSelloCFD, Fact.TFDSelloSAT, TmpArchivoQR, Fact.Serie + Fact.Folio, Fact.TipoComprobante, "", Fact.ReceptorRFC, Fact.RecNombre, Fact.DomRecCalle, Fact.DomRecCol, Fact.DomRecFisNoExt, Fact.DTConceptos, Fact.TFDSelloCFD, Fact.TFDSelloSAT, TmpArchivoQR, Fact.Serie + Fact.Folio, Fact.TipoComprobante, "", Fact.ReceptorRFC, Fact.RecNombre, Fact.DomRecCalle, Fact.DomRecCol, Fact.DomRecFisNoExt,
Fact.DomRecFisNoInt, Fact.DomRecCP, Fact.DomRecMun, Fact.DomRecEst, Fact.Regimen, Fact.condicionesDePago, Fact.MetododePago, Fact.NumCtaPagoNumCtaPago, NowADS, Fact.DtPagos, Fact.DtDocumentosR, Fact.RetencionIVA, Fact.DomRecFisNoInt, Fact.DomRecCP, Fact.DomRecMun, Fact.DomRecEst, Fact.Regimen, Fact.condicionesDePago, Fact.MetododePago, Fact.NumCtaPagoNumCtaPago, DateTime.Now, Fact.DtPagos, Fact.DtDocumentosR, Fact.RetencionIVA,
Fact.RetencionISR, Fact.EmiNombre, Fact.EmiRFC, Fact.ReceptorNombre, DirectorioEmpresa, DomFiscal) Then Fact.RetencionISR, Fact.EmiNombre, Fact.EmiRFC, Fact.ReceptorNombre, DirectorioEmpresa, DomFiscal) Then
Fact.ArchivoPDF = Path.GetFileName(TmpArchivoPDF) Fact.ArchivoPDF = Path.GetFileName(TmpArchivoPDF)
@@ -8260,7 +8110,7 @@ Namespace ADS.eFacturas
End Function End Function
Private Function GeneraPDFNew(ByVal TmpArchivoPDF As String, ByVal FolioFiscal As String, ByVal SubTotal As Decimal, ByVal Descuento As Decimal, ByVal Total As Decimal, ByVal IVA As String, ByVal Moneda As String, ByVal FormaDePago As String, Private Function GeneraPDFNew(UsuarioActual As Usuario, ByVal TmpArchivoPDF As String, ByVal FolioFiscal As String, ByVal SubTotal As Decimal, ByVal Descuento As Decimal, ByVal Total As Decimal, ByVal IVA As String, ByVal Moneda As String, ByVal FormaDePago As String,
ByVal NoSerieCertificado As String, ByVal FechaCertificacion As DateTime, ByVal NoSerieCertificadoContribuyente As String, ByVal DTConceptos As DataTable, ByVal SelloCFDi As String, ByVal SelloSAT As String, ByVal NoSerieCertificado As String, ByVal FechaCertificacion As DateTime, ByVal NoSerieCertificadoContribuyente As String, ByVal DTConceptos As DataTable, ByVal SelloCFDi As String, ByVal SelloSAT As String,
ByVal CBB As String, ByVal Folio As String, ByVal TipodeComprobante As String, ByVal CadenaOriginalCFD As String, ByVal RFC As String, ByVal Cliente As String, ByVal Direccion As String, ByVal Colonia As String, ByVal CBB As String, ByVal Folio As String, ByVal TipodeComprobante As String, ByVal CadenaOriginalCFD As String, ByVal RFC As String, ByVal Cliente As String, ByVal Direccion As String, ByVal Colonia As String,
ByVal NoExt As String, ByVal NoInt As String, ByVal CP As String, ByVal Ciudad As String, ByVal Estado As String, ByVal Regimen As String, ByVal CondicionPago As String, ByVal MetodoPago As String, ByVal NumCtaPago As String, ByVal NoExt As String, ByVal NoInt As String, ByVal CP As String, ByVal Ciudad As String, ByVal Estado As String, ByVal Regimen As String, ByVal CondicionPago As String, ByVal MetodoPago As String, ByVal NumCtaPago As String,
@@ -8268,7 +8118,7 @@ Namespace ADS.eFacturas
Optional EmiNombre As String = "", Optional EmiRFC As String = "", Optional NombreEmpresa As String = "", Optional DirectorioEmpresa As String = "", Optional DomFiscal As String = "") As Boolean Optional EmiNombre As String = "", Optional EmiRFC As String = "", Optional NombreEmpresa As String = "", Optional DirectorioEmpresa As String = "", Optional DomFiscal As String = "") As Boolean
Dim RutaRDLC As String = If(TipodeComprobante = "Pag", $"{DirectorioEmpresa}..\Grales\Formatos\CFDIPago.rdlc", $"{DirectorioEmpresa}..\Grales\Formatos\CFDI.rdlc") Dim RutaRDLC As String = If(TipodeComprobante = "Pag", "Grales\Formatos\CFDIPago.rdlc", "Grales\Formatos\CFDI.rdlc")
Dim Retorno As Boolean = False Dim Retorno As Boolean = False
Dim NombreArchivo As String = TmpArchivoPDF Dim NombreArchivo As String = TmpArchivoPDF
@@ -8320,47 +8170,44 @@ Namespace ADS.eFacturas
parametros.Add(New ReportParameter("Empresa", NombreEmpresa)) parametros.Add(New ReportParameter("Empresa", NombreEmpresa))
Dim listaDs As New List(Of ReportDataSource)
Using MR As New ReportViewer() Dim rds1 As New ReportDataSource()
Dim rds1 As New ReportDataSource() rds1.Name = "DsOC"
rds1.Name = "DsOC" rds1.Value = DTConceptos
rds1.Value = DTConceptos
MR.LocalReport.DataSources.Add(rds1) 'MR.LocalReport.DataSources.Add(rds1)
listaDs.Add(rds1)
If DtPagos IsNot Nothing Then If DtPagos IsNot Nothing Then
Dim rds2 As New ReportDataSource() Dim rds2 As New ReportDataSource()
rds2.Name = "DsPago" rds2.Name = "DsPago"
rds2.Value = DtPagos rds2.Value = DtPagos
MR.LocalReport.DataSources.Add(rds2) 'MR.LocalReport.DataSources.Add(rds2)
End If listaDs.Add(rds2)
If DtRelacionados IsNot Nothing Then End If
Dim rds3 As New ReportDataSource()
rds3.Name = "DsDocRelacionados"
rds3.Value = DtRelacionados
MR.LocalReport.DataSources.Add(rds3)
End If
MR.LocalReport.ReportPath = RutaFormato If DtRelacionados IsNot Nothing Then
MR.ProcessingMode = ProcessingMode.Local Dim rds3 As New ReportDataSource()
MR.LocalReport.EnableExternalImages = True rds3.Name = "DsDocRelacionados"
MR.LocalReport.SetParameters(parametros) rds3.Value = DtRelacionados
MR.LocalReport.Refresh() 'MR.LocalReport.DataSources.Add(rds3)
listaDs.Add(rds3)
End If
Dim warnings As Warning() = Nothing
Dim streamids As String() = Nothing
Dim mimeType As String = Nothing
Dim encoding As String = Nothing
Dim extension As String = Nothing
Dim bytes As Byte() = Nothing
bytes = MR.LocalReport.Render("PDF", Nothing, mimeType, encoding, extension, streamids, warnings)
Dim bytes As Byte() = Nothing
bytes = StreamPDF(UsuarioActual, RutaRDLC, listaDs, parametros, NombreArchivo:=NombreArchivo, Formato:="PDF")
If bytes IsNot Nothing Then
Using fs As New FileStream(NombreArchivo, FileMode.Create) Using fs As New FileStream(NombreArchivo, FileMode.Create)
fs.Write(bytes, 0, bytes.Length) fs.Write(bytes, 0, bytes.Length)
fs.Close() fs.Close()
End Using End Using
End Using Retorno = True
Retorno = True Else
Retorno = False
End If
Else Else
ModExtensiones.GuardaLogAD("ERROR: No existe Formato Base", ArchivoLog) ModExtensiones.GuardaLogAD("ERROR: No existe Formato Base", ArchivoLog)
End If End If
@@ -8424,7 +8271,7 @@ Namespace ADS.eFacturas
Dim Pagos As New List(Of Pago)() Dim Pagos As New List(Of Pago)()
For Each nodePago As XmlNode In NodosNodePagos For Each nodePago As XmlNode In NodosNodePagos
Dim FechaPago As DateTime = NowADS() Dim FechaPago As DateTime = DateTime.Now
Try Try
FechaPago = ValorXML(nodePago, "FechaPago").ToDate() FechaPago = ValorXML(nodePago, "FechaPago").ToDate()
Catch e As Exception Catch e As Exception
@@ -8502,6 +8349,115 @@ Namespace ADS.eFacturas
End Function End Function
Public Function StreamPDF(UsuarioActual As Usuario, 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, Optional SubReportData As Modelos.MSubReportData = Nothing) As Byte()
'limpio ReportViwer
Dim sw As Stopwatch = Stopwatch.StartNew()
Dim Bytes As Byte() = Nothing
Dim CveUsuario As Integer = 0
Dim CveEmpresa As Integer = 0
Dim RutaEmpresa As String = ""
If UsuarioActual IsNot Nothing Then
CveUsuario = UsuarioActual.CveUsuario
CveEmpresa = UsuarioActual.CveEmpresa
RutaEmpresa = UsuarioActual.Empresa.Ruta
End If
Dim bdir As String = If(RutaReporte.Contains("Empresas"), ModExtensiones.DirectorioBaseEmpresas, AppDomain.CurrentDomain.BaseDirectory)
'TOMAR LA RUTA BASE PARA EL DIRECTORIO DE LA EMPRESA
If Not String.IsNullOrEmpty(RutaEmpresa) AndAlso Not RutaReporte.Contains("Grales") AndAlso Not RutaReporte.Contains("Contabilidad/Reportes/") AndAlso Not RutaReporte.Contains("Contabilidad/Reportes/") AndAlso Not RutaReporte.Contains("AC/Reportes/") Then
bdir = RutaEmpresa.Replace($"{CveEmpresa}/", "")
End If
RutaReporte.Replace("/", "\")
If Not RutaReporte.ToUpper().StartsWith(bdir.ToUpper()) Then
RutaReporte = String.Format("{0}{1}", bdir, RutaReporte)
End If
If EsProduccion Then
Dim wsreport As New WSRDLC2.WebServiceSoapClient
Dim params As New List(Of WSRDLC2.ReportParameter)
Dim reportobjects As New List(Of WSRDLC2.ReportObjects)
Dim jsonData As String = Nothing
If SubReportData IsNot Nothing Then
jsonData = Newtonsoft.Json.JsonConvert.SerializeObject(SubReportData)
End If
Dim ds As New DataSet
For Each rpds As ReportDataSource In DataSource
If rpds.Value IsNot Nothing Then
If rpds.Value.GetType().ToString() = "System.Data.DataTable" Then
Dim dt As DataTable = DirectCast(rpds.Value, Data.DataTable)
dt = dt.Copy()
dt.TableName = rpds.Name
ds.Tables.Add(dt)
Else
Dim ojext As New WSRDLC2.ReportObjects
ojext.Name = rpds.Name
ojext.Value = rpds.Value
reportobjects.Add(ojext)
End If
Else
Dim dt As DataTable = New DataTable()
dt.TableName = If(String.IsNullOrEmpty(rpds.Name), "DataTable1", rpds.Name)
ds.Tables.Add(dt)
End If
Next
For Each rpds As ReportParameter In Parametros
Dim param As New WSRDLC2.ReportParameter
param.Name = rpds.Name
'SI ES TEXTO, QUITAR TABS Y OTROS ESPACIOS QUE DEN PROBLEMAS AL MANDAR LA PETICION
If rpds IsNot Nothing AndAlso rpds.Values IsNot Nothing AndAlso rpds.Values.Count > 0 AndAlso rpds.Values(0) IsNot Nothing AndAlso rpds.Values(0).GetType() = GetType(String) Then
param.Values = {rpds.Values(0).Replace(vbVerticalTab, "")}
Else
param.Values = {rpds.Values(0)}
End If
params.Add(param)
Next
Bytes = wsreport.StreamNEWPDFBytes(RutaReporte, ds, reportobjects.ToArray(), params.ToArray(), NombreArchivo, Formato, CveEmpresa, CveUsuario, jsonData)
wsreport = Nothing
params = Nothing
ds.Dispose() : ds = Nothing
Else
If IsNothing(MR) Then MR = New ReportViewer
Try
' MasterReporteador.LocalReport.DataSources.Clear()
For Each RDS As ReportDataSource In DataSource
MR.LocalReport.DataSources.Add(RDS)
Next
MR.LocalReport.ReportPath = RutaReporte
MR.ProcessingMode = ProcessingMode.Local
MR.LocalReport.EnableExternalImages = True
MR.LocalReport.SetParameters(Parametros)
MR.LocalReport.Refresh()
Dim Warnings As Warning() = Nothing
Dim StreamIds As String() = Nothing
Dim MimeType As String = Nothing
Dim Encoding As String = Nothing
Dim Extension As String = Nothing
Bytes = MR.LocalReport.Render(Formato, Nothing, MimeType, Encoding, Extension, StreamIds, Warnings)
Catch ex As Microsoft.Reporting.WebForms.ScriptManagerNotFoundException
GuardaLog($"Error: { If(ex.InnerException.Message IsNot Nothing, ex.InnerException.Message, ex.Message) } | Descripcion: {If(ex.InnerException IsNot Nothing AndAlso ex.InnerException.InnerException IsNot Nothing AndAlso ex.InnerException.InnerException.Message IsNot Nothing, ex.InnerException.InnerException.Message, If(ex.InnerException IsNot Nothing AndAlso ex.InnerException.Message IsNot Nothing, ex.InnerException.Message, "Sin descripcion"))} - Ruta {RutaReporte}")
'HAY QUE VALIDAR QUE LOS OBJETOS QUE SE USAN PARA GUARDAR LOG EXISTEN!!! IPP 14 AGOSTO 2017
'GuardaLog($"Error: {ex.InnerException.Message} | Descripcion: {If(ex.InnerException.InnerException IsNot Nothing, ex.InnerException.InnerException.Message, "Sin descripcion")} - Ruta {RutaReporte}")
Catch ex As Exception
GuardaLog($"Error: { If(ex.InnerException.Message IsNot Nothing, ex.InnerException.Message, ex.Message) } | Descripcion: {If(ex.InnerException IsNot Nothing AndAlso ex.InnerException.InnerException IsNot Nothing AndAlso ex.InnerException.InnerException.Message IsNot Nothing, ex.InnerException.InnerException.Message, If(ex.InnerException IsNot Nothing AndAlso ex.InnerException.Message IsNot Nothing, ex.InnerException.Message, "Sin descripcion"))} - Ruta {RutaReporte}")
'HAY QUE VALIDAR QUE LOS OBJETOS QUE SE USAN PARA GUARDAR LOG EXISTEN!!! IPP 14 AGOSTO 2017
'GuardaLog($"Error {ex.InnerException.Message} | Descripcion: {If(ex.InnerException.InnerException IsNot Nothing, ex.InnerException.InnerException.Message, "Sin descripcion")} - Ruta {RutaReporte}")
End Try
Try
MR.Dispose()
Catch ex As Exception
GuardaLog($"Error: { ex.ToString() }")
End Try
MR = Nothing
End If
sw.Stop()
If sw.Elapsed.TotalSeconds > 5 Then
GuardaLog($"Reporte:{RutaReporte} | Tiempo Renderizado Milisegundos: {sw.ElapsedMilliseconds},Total Segundos: {sw.Elapsed.TotalSeconds} ")
End If
Return Bytes
End Function
End Class End Class
@@ -8976,10 +8932,10 @@ Namespace ADS.eFacturas
End If End If
End Function End Function
Public Sub ImprimirPDF(NombreArchivo As String, DirectorioEmpresa As String, TipodeComprobante As String) Public Sub ImprimirPDF(UsuarioActual As Usuario, NombreArchivo As String, DirectorioEmpresa As String, TipodeComprobante As String)
Dim objxml As XmlSatCFDI = Me Dim objxml As XmlSatCFDI = Me
Dim rutaReporte As String = If(TipodeComprobante = "Pag", $"{DirectorioEmpresa}..\Grales\Formatos\CFDIV3Pago.rdlc", $"{DirectorioEmpresa}..\Grales\Formatos\CFDIV3.rdlc") Dim rutaReporte As String = If(TipodeComprobante = "Pag", "Grales\Formatos\CFDIV3Pago.rdlc", "Grales\Formatos\CFDIV3.rdlc")
Dim cQr As Byte() = Nothing Dim cQr As Byte() = Nothing
@@ -9044,7 +9000,8 @@ Namespace ADS.eFacturas
parametros.Add(New ReportParameter("CPCtaBeneficiario", objxml.complemento.Pagos.CtaBeneficiario)) parametros.Add(New ReportParameter("CPCtaBeneficiario", objxml.complemento.Pagos.CtaBeneficiario))
End If End If
Using MR As New ReportViewer() Try
Dim listaDS As New List(Of ReportDataSource)
Dim rdsTotales As New ReportDataSource() Dim rdsTotales As New ReportDataSource()
Dim ltotales As New List(Of utilValores)() Dim ltotales As New List(Of utilValores)()
ltotales.Add(New utilValores("Subtotal", objxml.comprobante.SubTotal.ToString("N2"))) ltotales.Add(New utilValores("Subtotal", objxml.comprobante.SubTotal.ToString("N2")))
@@ -9063,51 +9020,49 @@ Namespace ADS.eFacturas
ltotales.Add(New utilValores("Total", objxml.comprobante.Total.ToString("N2"))) ltotales.Add(New utilValores("Total", objxml.comprobante.Total.ToString("N2")))
rdsTotales.Name = "dsTotales" rdsTotales.Name = "dsTotales"
rdsTotales.Value = ltotales rdsTotales.Value = ltotales
MR.LocalReport.DataSources.Add(rdsTotales) listaDS.Add(rdsTotales)
Dim rds2 As New ReportDataSource() Dim rds2 As New ReportDataSource()
Dim limagenes As New List(Of utilImage)() Dim limagenes As New List(Of utilImage)()
limagenes.Add(New utilImage(cQr)) limagenes.Add(New utilImage(cQr))
rds2.Name = "dsImagenes" rds2.Name = "dsImagenes"
rds2.Value = limagenes rds2.Value = limagenes
MR.LocalReport.DataSources.Add(rds2) listaDS.Add(rds2)
Dim rdsrelacionados As New ReportDataSource() Dim rdsrelacionados As New ReportDataSource()
rdsrelacionados.Name = "dsRelacionados" rdsrelacionados.Name = "dsRelacionados"
rdsrelacionados.Value = objxml.cFDIRelacionados rdsrelacionados.Value = objxml.cFDIRelacionados
MR.LocalReport.DataSources.Add(rdsrelacionados) listaDS.Add(rdsrelacionados)
Dim rds1 As New ReportDataSource() Dim rds1 As New ReportDataSource()
rds1.Name = "dsConceptos" rds1.Name = "dsConceptos"
rds1.Value = objxml.GetConceptosforpdf() rds1.Value = objxml.GetConceptosforpdf()
MR.LocalReport.DataSources.Add(rds1) listaDS.Add(rds1)
If objxml.complemento.Pagos IsNot Nothing Then If objxml.complemento.Pagos IsNot Nothing Then
Dim rdsp As New ReportDataSource() Dim rdsp As New ReportDataSource()
rdsp.Name = "dsPagos" rdsp.Name = "dsPagos"
rdsp.Value = objxml.complemento.Pagos.doctosRelacionados rdsp.Value = objxml.complemento.Pagos.doctosRelacionados
MR.LocalReport.DataSources.Add(rdsp) listaDS.Add(rdsp)
End If End If
MR.LocalReport.ReportPath = rutaReporte
MR.ProcessingMode = ProcessingMode.Local
MR.LocalReport.EnableExternalImages = True
MR.LocalReport.SetParameters(parametros)
MR.LocalReport.Refresh()
Dim warnings As Warning() = Nothing 'Dim bytes As Byte() = Nothing
Dim streamids As String() = Nothing 'bytes = MR.LocalReport.Render("PDF", Nothing, mimeType, encoding, extension, streamids, warnings)
Dim mimeType As String = Nothing
Dim encoding As String = Nothing
Dim extension As String = Nothing
Dim bytes As Byte() = Nothing Dim bytes As Byte() = Nothing
bytes = MR.LocalReport.Render("PDF", Nothing, mimeType, encoding, extension, streamids, warnings) bytes = StreamPDF(UsuarioActual, rutaReporte, listaDs, parametros, NombreArchivo:=NombreArchivo, Formato:="PDF")
If bytes IsNot Nothing Then
Using fs As New FileStream(NombreArchivo, FileMode.Create)
fs.Write(bytes, 0, bytes.Length)
fs.Close()
End Using
End If
Catch ex As Exception
ex.ToString().GuardaLogAD()
End Try
Using fs As New FileStream(NombreArchivo, FileMode.Create)
fs.Write(bytes, 0, bytes.Length)
fs.Close()
End Using
End Using
End Sub End Sub
Public Class utilValores Public Class utilValores
@@ -9125,6 +9080,117 @@ Namespace ADS.eFacturas
End Sub End Sub
Public Property ImagenByte As Byte() Public Property ImagenByte As Byte()
End Class End Class
Public Function StreamPDF(UsuarioActual As Usuario, 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, Optional SubReportData As Modelos.MSubReportData = Nothing) As Byte()
'limpio ReportViwer
Dim sw As Stopwatch = Stopwatch.StartNew()
Dim Bytes As Byte() = Nothing
Dim CveUsuario As Integer = 0
Dim CveEmpresa As Integer = 0
Dim RutaEmpresa As String = ""
If UsuarioActual IsNot Nothing Then
CveUsuario = UsuarioActual.CveUsuario
CveEmpresa = UsuarioActual.CveEmpresa
RutaEmpresa = UsuarioActual.Empresa.Ruta
End If
Dim bdir As String = If(RutaReporte.Contains("Empresas"), ModExtensiones.DirectorioBaseEmpresas, AppDomain.CurrentDomain.BaseDirectory)
'TOMAR LA RUTA BASE PARA EL DIRECTORIO DE LA EMPRESA
If Not String.IsNullOrEmpty(RutaEmpresa) AndAlso Not RutaReporte.Contains("Grales") AndAlso Not RutaReporte.Contains("Contabilidad/Reportes/") AndAlso Not RutaReporte.Contains("Contabilidad/Reportes/") AndAlso Not RutaReporte.Contains("AC/Reportes/") Then
bdir = RutaEmpresa.Replace($"{CveEmpresa}/", "")
End If
RutaReporte.Replace("/", "\")
If Not RutaReporte.ToUpper().StartsWith(bdir.ToUpper()) Then
RutaReporte = String.Format("{0}{1}", bdir, RutaReporte)
End If
If EsProduccion Then
Dim wsreport As New WSRDLC2.WebServiceSoapClient
Dim params As New List(Of WSRDLC2.ReportParameter)
Dim reportobjects As New List(Of WSRDLC2.ReportObjects)
Dim jsonData As String = Nothing
If SubReportData IsNot Nothing Then
jsonData = Newtonsoft.Json.JsonConvert.SerializeObject(SubReportData)
End If
Dim ds As New DataSet
For Each rpds As ReportDataSource In DataSource
If rpds.Value IsNot Nothing Then
If rpds.Value.GetType().ToString() = "System.Data.DataTable" Then
Dim dt As DataTable = DirectCast(rpds.Value, Data.DataTable)
dt = dt.Copy()
dt.TableName = rpds.Name
ds.Tables.Add(dt)
Else
Dim ojext As New WSRDLC2.ReportObjects
ojext.Name = rpds.Name
ojext.Value = rpds.Value
reportobjects.Add(ojext)
End If
Else
Dim dt As DataTable = New DataTable()
dt.TableName = If(String.IsNullOrEmpty(rpds.Name), "DataTable1", rpds.Name)
ds.Tables.Add(dt)
End If
Next
For Each rpds As ReportParameter In Parametros
Dim param As New WSRDLC2.ReportParameter
param.Name = rpds.Name
'SI ES TEXTO, QUITAR TABS Y OTROS ESPACIOS QUE DEN PROBLEMAS AL MANDAR LA PETICION
If rpds IsNot Nothing AndAlso rpds.Values IsNot Nothing AndAlso rpds.Values.Count > 0 AndAlso rpds.Values(0) IsNot Nothing AndAlso rpds.Values(0).GetType() = GetType(String) Then
param.Values = {rpds.Values(0).Replace(vbVerticalTab, "")}
Else
param.Values = {rpds.Values(0)}
End If
params.Add(param)
Next
Bytes = wsreport.StreamNEWPDFBytes(RutaReporte, ds, reportobjects.ToArray(), params.ToArray(), NombreArchivo, Formato, CveEmpresa, CveUsuario, jsonData)
wsreport = Nothing
params = Nothing
ds.Dispose() : ds = Nothing
Else
If IsNothing(MR) Then MR = New ReportViewer
Try
' MasterReporteador.LocalReport.DataSources.Clear()
For Each RDS As ReportDataSource In DataSource
MR.LocalReport.DataSources.Add(RDS)
Next
MR.LocalReport.ReportPath = RutaReporte
MR.ProcessingMode = ProcessingMode.Local
MR.LocalReport.EnableExternalImages = True
MR.LocalReport.SetParameters(Parametros)
MR.LocalReport.Refresh()
Dim Warnings As Warning() = Nothing
Dim StreamIds As String() = Nothing
Dim MimeType As String = Nothing
Dim Encoding As String = Nothing
Dim Extension As String = Nothing
Bytes = MR.LocalReport.Render(Formato, Nothing, MimeType, Encoding, Extension, StreamIds, Warnings)
Catch ex As Microsoft.Reporting.WebForms.ScriptManagerNotFoundException
GuardaLog($"Error: { If(ex.InnerException.Message IsNot Nothing, ex.InnerException.Message, ex.Message) } | Descripcion: {If(ex.InnerException IsNot Nothing AndAlso ex.InnerException.InnerException IsNot Nothing AndAlso ex.InnerException.InnerException.Message IsNot Nothing, ex.InnerException.InnerException.Message, If(ex.InnerException IsNot Nothing AndAlso ex.InnerException.Message IsNot Nothing, ex.InnerException.Message, "Sin descripcion"))} - Ruta {RutaReporte}")
'HAY QUE VALIDAR QUE LOS OBJETOS QUE SE USAN PARA GUARDAR LOG EXISTEN!!! IPP 14 AGOSTO 2017
'GuardaLog($"Error: {ex.InnerException.Message} | Descripcion: {If(ex.InnerException.InnerException IsNot Nothing, ex.InnerException.InnerException.Message, "Sin descripcion")} - Ruta {RutaReporte}")
Catch ex As Exception
GuardaLog($"Error: { If(ex.InnerException.Message IsNot Nothing, ex.InnerException.Message, ex.Message) } | Descripcion: {If(ex.InnerException IsNot Nothing AndAlso ex.InnerException.InnerException IsNot Nothing AndAlso ex.InnerException.InnerException.Message IsNot Nothing, ex.InnerException.InnerException.Message, If(ex.InnerException IsNot Nothing AndAlso ex.InnerException.Message IsNot Nothing, ex.InnerException.Message, "Sin descripcion"))} - Ruta {RutaReporte}")
'HAY QUE VALIDAR QUE LOS OBJETOS QUE SE USAN PARA GUARDAR LOG EXISTEN!!! IPP 14 AGOSTO 2017
'GuardaLog($"Error {ex.InnerException.Message} | Descripcion: {If(ex.InnerException.InnerException IsNot Nothing, ex.InnerException.InnerException.Message, "Sin descripcion")} - Ruta {RutaReporte}")
End Try
Try
MR.Dispose()
Catch ex As Exception
GuardaLog($"Error: { ex.ToString() }")
End Try
MR = Nothing
End If
sw.Stop()
If sw.Elapsed.TotalSeconds > 5 Then
GuardaLog($"Reporte:{RutaReporte} | Tiempo Renderizado Milisegundos: {sw.ElapsedMilliseconds},Total Segundos: {sw.Elapsed.TotalSeconds} ")
End If
Return Bytes
End Function
End Class End Class
Public Module InlineAssignHelper Public Module InlineAssignHelper