diff --git a/Ashx/TareasProgramadas.ashx b/Ashx/TareasProgramadas.ashx
index d3fe1ed59..b03186634 100644
--- a/Ashx/TareasProgramadas.ashx
+++ b/Ashx/TareasProgramadas.ashx
@@ -1,11 +1,14 @@
-<%@ WebHandler Language="VB" Class="TareasProgramadas" %>
-
+<%@ WebHandler Language="VB" Class="TareasProgramadas" %>
+
Imports System
Imports System.Web
Imports System.Data
-Imports Newtonsoft.Json
+Imports Newtonsoft.Json
+Imports Newtonsoft.Json.Linq
Imports Extensiones
-Imports System.IO
+Imports System.IO
+Imports CrystalDecisions.CrystalReports.Engine
+Imports CrystalDecisions.Shared
Public Class TareasProgramadas : Implements IHttpHandler
@@ -16,14 +19,19 @@ Public Class TareasProgramadas : Implements IHttpHandler
currentcontext = context
'timbrarNominab()
Dim retorno As String = "no se encontro la variable"
- Try
- URLParametros = Parametros(context.Request("var"))
+ Try
+ If context.Request("var") IsNot Nothing Then
+ URLParametros = Parametros(context.Request("var"))
+ End If
+
Dim metodo As String = URLParametros("metodo")
Select Case metodo
Case "TimbrarNomina"
retorno = "Error Timbrado Nomina"
retorno = timbrarNomina()
- retorno = ""
+ retorno = ""
+ Case "EstadosCuenta"
+ IniciaEnvioEstadoDeCuenta(context, 1, "-1", "-1")
End Select
Catch ex As Exception
ex.GuardaLog(ex.ToString())
@@ -127,18 +135,18 @@ Public Class TareasProgramadas : Implements IHttpHandler
Private Function GetUsuario(CveEmpresa As Integer, Optional CveUsuario As Integer = -1, Optional username As String = "", Optional pass As String = "") As Usuario
- Dim usuario As Usuario = Nothing
+ Dim usuario As Usuario = Nothing
#Region "Valido que los campos usuario contraseña no sean nulos"
-
+
If IsNothing(username) Then
username = ""
End If
If IsNothing(pass) Then
pass = ""
- End If
+ End If
#End Region
#Region "Si el CveUsuario es mayor que cero asigno el username y pass la de la CveUsuario"
-
+
If CveUsuario > 0 Then
Using Dv As New DataView(DirectCast(currentcontext.Application("GlobalDTUsuarios"), DataTable), $"CveUsuario = 100 AND CveEmpresa ={CveEmpresa}", "", DataViewRowState.CurrentRows)
Using GlobalDTUsuarios As DataTable = Dv.ToTable()
@@ -149,13 +157,13 @@ Public Class TareasProgramadas : Implements IHttpHandler
End If
End Using
End Using
- End If
+ End If
#End Region
#Region "obtengo el usuario con el username y la pass"
-
+
Using ObjUsuario As New ClsSisUsuarios()
usuario = ObjUsuario.ValidaUsuario(username, pass, IMEI, CveEmpresa)
- End Using
+ End Using
#End Region
#Region "Asigno la empresa al usuario"
If Not IsNothing(usuario) Then
@@ -179,7 +187,7 @@ Public Class TareasProgramadas : Implements IHttpHandler
End If
End Using
- End If
+ End If
#End Region
Return usuario
End Function
@@ -224,8 +232,6 @@ Public Class TareasProgramadas : Implements IHttpHandler
Return retorno
End Function
-
-
Private Function Parametros(Cadena As String) As Hashtable
Cadena = Decripta(Cadena)
Dim P1() As String = Cadena.Split("&"c)
@@ -244,6 +250,426 @@ Public Class TareasProgramadas : Implements IHttpHandler
Get
Return False
End Get
- End Property
+ End Property
+
+
+#Region "E S T A D O S D E C U E N T A"
+ Private Sub CargaEstadosCuenta(ByVal context As HttpContext)
+ Dim DtEmpresas As DataTable = Nothing
+
+ Dim ObjEmpresas As New ClsSisEmpresas()
+ If ObjEmpresas.GetEmpresas(-1, "-1", "-1", "-1", "-1") Then
+ DtEmpresas = ObjEmpresas.DtResultados.FiltraParametros("", "", {"CveEmpresa"})
+ End If
+ ObjEmpresas.Dispose()
+
+ If DtEmpresas IsNot Nothing Then
+ For Each Row As DataRow In DtEmpresas.Rows
+ IniciaEnvioEstadoDeCuenta(context, Row("CveEmpresa").ToString().ToEntero(), "-1", "-1")
+ Next
+ End If
+ End Sub
+
+ Private Sub IniciaEnvioEstadoDeCuenta(ByVal context As HttpContext, CveEmpresa As Integer, pFechaI As String, pFechaF As String)
+ Dim JsonRetorno As New JObject()
+ If CveEmpresa > 0 Then
+ Dim Usuario = ValidaUsuarioSistema(CveEmpresa)
+ Dim FechaI, FechaF As DateTime
+ If pFechaI <> "-1" AndAlso pFechaF <> "-1" Then
+ Dim FechaReferencia = DateTime.Now
+
+ Dim DiaAnterior = FechaReferencia.AddDays(-1)
+ Dim DiaAnteriorSemanaPasada = DiaAnterior.AddDays(-7)
+
+ FechaI = New DateTime(DiaAnteriorSemanaPasada.Year, DiaAnteriorSemanaPasada.Month, DiaAnteriorSemanaPasada.Day, 0, 0, 0)
+ FechaF = New DateTime(DiaAnterior.Year, DiaAnterior.Month, DiaAnterior.Day, 23, 59, 59)
+
+ JsonRetorno = EjecutarEnvioEstadoCuenta(Usuario, FechaI, FechaF)
+ Else
+ FechaI = pFechaI.ToDateTime()
+ FechaF = pFechaF.ToDateTime()
+
+ JsonRetorno = EjecutarEnvioEstadoCuenta(Usuario, FechaI, FechaF)
+ End If
+
+ End If
+ End Sub
+
+ Private Function ValidaUsuarioSistema(CveEmpresa As Integer) As Usuario
+ Dim UsuarioActual As Usuario = Nothing
+ Dim ObjUsuarios As New ClsSisUsuarios
+ If ObjUsuarios.GetUsuarios(100) Then
+ If ObjUsuarios.DtResultados.Rows.Count > 0 Then
+ Dim Usuario = ObjUsuarios.DtResultados.Rows(0)("Usuario").ToString()
+ Dim Contrasenia = ObjUsuarios.DtResultados.Rows(0)("Contraseña").ToString()
+ UsuarioActual = ObjUsuarios.ValidaUsuario(Usuario, Contrasenia, IMEI, CveEmpresa)
+ UsuarioActual.CveEmpresa = CveEmpresa
+ CreaObjetoEmpresa(UsuarioActual)
+ End If
+ End If
+ ObjUsuarios.Dispose()
+ Return UsuarioActual
+ End Function
+
+ Private Sub CreaObjetoEmpresa(ByRef UsuarioActual As Usuario)
+
+ Dim ObjEmpresa As New ClsSisEmpresas()
+ If ObjEmpresa.GetEmpresas(UsuarioActual.CveEmpresa, "-1", "-1", "-1", "-1") Then
+ If ObjEmpresa.GetEmpresasFuncionalidades(UsuarioActual.CveEmpresa) Then
+ Dim dttmp As Data.DataTable = ObjEmpresa.DtResultados
+
+ Dim EmpresasFuncionalidades As New HybridDictionary
+ For Each Row As Data.DataRow In dttmp.Rows
+ EmpresasFuncionalidades.Add(Convert.ToInt32(Row("CveFuncionalidad")), Row("Valor").ToString)
+ Next
+ ObjEmpresa.Empresa.SetFuncionalidades(EmpresasFuncionalidades)
+ End If
+
+ UsuarioActual.Empresa = ObjEmpresa.Empresa
+ End If
+ ObjEmpresa.Dispose()
+ End Sub
+
+
+ Private Function EjecutarEnvioEstadoCuenta(UsuarioActual As Usuario, FechaI As DateTime, FechaF As DateTime) As JObject
+ Dim Facturas As New JArray()
+ Dim DebeTimbrar As Boolean = True
+
+ Dim Json As New JObject(
+ New JProperty("Empresa", UsuarioActual.Empresa.Empresa),
+ New JProperty("Usuario", UsuarioActual.Usuario),
+ New JProperty("FechaI", FechaI.ToString("dd/MM/yyy HH:mm:ss")),
+ New JProperty("FechaF", FechaF.ToString("dd/MM/yyy HH:mm:ss"))
+ )
+ Dim DTClientes As DataTable = Nothing
+
+ Dim ObjCliente As New ClsClientes
+ If ObjCliente.GetClientes(-1, "-1", "-1", "-1", "-1", "-1", "-1", -1, UsuarioActual.CveEmpresa, TipoCliente:=-1) Then
+ If ObjCliente.DtResultados.Rows.Count > 0 Then
+ DTClientes = ObjCliente.DtResultados.Copy()
+ End If
+ End If
+ ObjCliente.Dispose()
+
+ If DTClientes IsNot Nothing Then
+ For Each RowCliente As DataRow In DTClientes.Rows
+ Dim CveCliente As Integer = RowCliente("CveCliente").ToString().ToEntero()
+ Dim Correo As String = "jonathan.perez@adssistemas.mx" 'RowCliente("Correo").ToString()
+
+ Dim Cliente As New Modelos.ClienteModel(CveCliente, UsuarioActual.CveEmpresa)
+
+ GenerarPDFCrystal(UsuarioActual, Correo, "-1", "-1", Cliente)
+ Next
+ DTClientes.Dispose()
+ End If
+ Json.Add(New JProperty("Facturas", Facturas))
+
+ Return Json
+ End Function
+
+ Private Sub GenerarPDFCrystal(UsuarioActual As Usuario, Correo As String, FI As String, FF As String, Cliente As Modelos.ClienteModel)
+ Dim ArchivoPDF As Byte() = Nothing
+
+ Dim Formato As String = "PDF"
+ Dim Archivo As New System.IO.FileInfo(String.Format("{0}Formatos/RepClientesCxC.rpt", UsuarioActual.Empresa.Ruta))
+ 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", HttpContext.Current.Request.Url.Scheme, HttpContext.Current.Request.Url.Host, HttpContext.Current.Request.Url.Port, UsuarioActual.CveEmpresa)
+ 'OBTENEMOS LOS DATOS
+ Dim DtCxCFact As DataTable = Nothing
+
+ Dim SaldoIngDolares As Double = 0
+ Dim SaldoIngPesos As Double = 0
+ Dim SaldoIngDolaresPesos As Double = 0
+ Dim TotalIng As Double = 0
+ Dim SaldoAntDolares As Double = 0
+ Dim SaldoAntPesos As Double = 0
+ Dim SaldoAntDolaresPesos As Double = 0
+ Dim TotalAnt As Double = 0
+ Dim ContaIng As Integer = 0
+ Dim ContaAnt As Integer = 0
+ Dim FechaCorte As Date = ("9999/01/01").ToDate
+ Dim TipoDocto As String = "-1"
+ Dim TipoDocto2 As String = "-1"
+ Dim FechaVencimientoI As String = "-1"
+ Dim FechaVencimientoF As String = "-1"
+ Dim dtt As DataTable = Nothing
+
+ Dim ObjMovtos As New ClsMovimientos()
+ If ObjMovtos.GetCxCClienteDetalle(Cliente.CveCliente, "-1", "-1", -1, -1, UsuarioActual.CveEmpresa, CveClienteSucursal:=-1) Then
+ DtCxCFact = ObjMovtos.DtResultados.FiltraParametros("", "TipoDocto").Copy
+ 'cargo los anticipos NC
+ DtCxCFact.Columns.Add("SaldoAnticipo", GetType(Decimal))
+ If ObjMovtos.GetAnticiposNCIxCCliente(Cliente.CveCliente, -1, -1) Then
+ dtt = ObjMovtos.DtResultados.FiltraParametros("SaldoVentaAnticipo = 0 AND ((Tipo = 'IxC' AND CveIE > 0) OR (Tipo = 'Ant' AND CveVenta > 0) OR (Tipo = 'NC' AND CveVenta > 0) OR (Tipo = 'Egs' AND CveVenta > 0) )")
+ End If
+ End If
+ ObjMovtos.Dispose()
+
+ Try
+ If dtt IsNot Nothing AndAlso dtt.Rows.Count > 0 Then
+ For Each drt As DataRow In dtt.Rows
+ Dim drr As DataRow = DtCxCFact.NewRow
+ drr("TipoDocto") = drt("Tipo")
+ drr("SerieFolio") = drt("Folio")
+ drr("Original") = drt("Original")
+ drr("TipoCambio") = drt("TipoCambio")
+ drr("Saldo") = 0
+ drr("SaldoAnticipo") = drt("Saldo")
+ drr("Fecha") = drt("Fecha")
+ drr("Moneda") = drt("Moneda")
+ drr("CveMoneda") = drt("CveMoneda")
+ DtCxCFact.Rows.Add(drr)
+ Next
+ End If
+
+ If DtCxCFact IsNot Nothing Then
+ For Each Row As DataRow In DtCxCFact.FiltraParametros($"TipoDocto IN ({TipoDocto2})").Rows
+ If Row("TipoDocto").ToString = "Ing" Or Row("TipoDocto").ToString = "Rem" Or (Row("TipoDocto").ToString = "Ant" And Row("Saldo").ToString.ToDouble > 0) Then 'Ingresos
+ ContaIng = ContaIng + 1
+ If Row("CveMoneda").ToString.ToEntero = 1 Then
+ SaldoIngPesos = SaldoIngPesos + Row("Saldo").ToString.ToDouble
+ ElseIf Row("CveMoneda").ToString.ToEntero = 2 Then
+ SaldoIngDolares = SaldoIngDolares + Row("Saldo").ToString.ToDouble
+ SaldoIngDolaresPesos = SaldoIngDolaresPesos + (Row("Saldo").ToString.ToDouble * Row("TipoCambio").ToString.ToDouble)
+ End If
+
+ ElseIf (Row("TipoDocto").ToString = "Ant" And Row("Saldo").ToString.ToDouble = 0) Or Row("TipoDocto").ToString = "IxC" Or Row("TipoDocto").ToString = "NC" Or Row("TipoDocto").ToString = "Dev" Then 'Anticipos, NC, IxC
+ ContaAnt = ContaAnt + 1
+ If Row("CveMoneda").ToString.ToEntero = 1 Then
+ If Row("TipoDocto").ToString = "Dev" Then
+ SaldoAntPesos = SaldoAntPesos + Row("Saldo").ToString.ToDouble
+ Else
+ SaldoAntPesos = SaldoAntPesos + Row("SaldoAnticipo").ToString.ToDouble
+ End If
+ ElseIf Row("CveMoneda").ToString.ToEntero = 2 Then
+ SaldoAntDolares = SaldoAntDolares + Row("Saldo").ToString.ToDouble
+ SaldoAntDolaresPesos = SaldoAntDolaresPesos + (Row("SaldoAnticipo").ToString.ToDouble * Row("TipoCambio").ToString.ToDouble)
+ End If
+ End If
+ Next
+ End If
+
+ TotalIng = SaldoIngPesos + SaldoIngDolaresPesos
+ TotalAnt = SaldoAntPesos + SaldoAntDolaresPesos
+
+ Dim DtCxCFact2 As DataTable = DtCxCFact.FiltraParametros($"TipoDocto IN ({TipoDocto2})")
+
+ 'INGRESOS
+ If SaldoIngPesos > 0 Then
+ Dim drr As DataRow = DtCxCFact2.NewRow
+ drr("SerieFolio") = "Total Ing Pesos"
+ drr("Original") = DtCxCFact2.FiltraParametros("CveMoneda = 1").SUM("Original", "TipoDocto IN ('Ing','Rem') OR (TipoDocto = 'Ant' AND Saldo > 0)")
+ drr("Abonado") = DtCxCFact2.FiltraParametros("CveMoneda = 1").SUM("Abonado", "TipoDocto IN ('Ing','Rem') OR (TipoDocto = 'Ant' AND Saldo > 0)")
+ drr("Saldo") = SaldoIngPesos
+ drr("CveMoneda") = 1
+ DtCxCFact2.Rows.Add(drr)
+ End If
+ If SaldoIngDolares > 0 Then
+ Dim drr As DataRow = DtCxCFact2.NewRow
+ drr("SerieFolio") = "Total Ing Dólares"
+ drr("Original") = DtCxCFact2.FiltraParametros("CveMoneda = 2").SUM("Original", "TipoDocto IN ('Ing','Rem') OR (TipoDocto = 'Ant' AND Saldo > 0)")
+ drr("Abonado") = DtCxCFact2.FiltraParametros("CveMoneda = 2").SUM("Abonado", "TipoDocto IN ('Ing','Rem') OR (TipoDocto = 'Ant' AND Saldo > 0)")
+ drr("Saldo") = SaldoIngDolares
+ drr("CveMoneda") = 2
+ DtCxCFact2.Rows.Add(drr)
+ End If
+
+ 'ANTICIPOS
+ If SaldoAntPesos > 0 Then
+ Dim drr As DataRow = DtCxCFact2.NewRow
+ drr("SerieFolio") = "Total Pesos"
+ drr("SaldoAnticipo") = SaldoAntPesos
+ drr("CveMoneda") = 1
+ DtCxCFact2.Rows.Add(drr)
+ End If
+ If SaldoAntDolares > 0 Then
+ Dim drr As DataRow = DtCxCFact2.NewRow
+ drr("SerieFolio") = "Total Dólares"
+ drr("SaldoAnticipo") = SaldoAntDolares
+ drr("CveMoneda") = 2
+ DtCxCFact2.Rows.Add(drr)
+ End If
+
+ If DtCxCFact2 IsNot Nothing AndAlso DtCxCFact2.Rows.Count > 0 Then
+ Dim dr As DataRow = DtCxCFact2.Rows(0)
+ Dim lista = New List(Of CrystalParametro)
+ lista.Add(New CrystalParametro("Empresa", UsuarioActual.Empresa.Empresa))
+ lista.Add(New CrystalParametro("TipoCuentas", ""))
+ lista.Add(New CrystalParametro("NombreCliente", Cliente.Nombre))
+ lista.Add(New CrystalParametro("FechaInicio", If(FI = "-1", "-", FI)))
+ lista.Add(New CrystalParametro("FechaFin", If(FF = "-1", DateTime.Now.ToShortDateString, FF)))
+ lista.Add(New CrystalParametro("UsuarioImprimio", UsuarioActual.Nombre))
+ lista.Add(New CrystalParametro("DireccionCliente", String.Format("Calle {0} #{1} Colonia {2}", Cliente.Direccion, If(Cliente.NoExt = "", "S/N", Cliente.NoExt), Cliente.Colonia)))
+ lista.Add(New CrystalParametro("ClienteCP", Cliente.CP))
+ lista.Add(New CrystalParametro("ClienteCiudad", Cliente.Ciudad))
+ lista.Add(New CrystalParametro("ClienteRFC", Cliente.RFC))
+ lista.Add(New CrystalParametro("ClienteTelefono", Cliente.Telefono))
+ lista.Add(New CrystalParametro("DiasCredito", Cliente.PlazoCobranza))
+ lista.Add(New CrystalParametro("LimiteCredito", Cliente.LimiteCredito))
+ lista.Add(New CrystalParametro("SaldoDisponible", (Cliente.LimiteCredito - DtCxCFact2(0)("Saldo").ToString.ToDouble).FormatoNumero))
+ lista.Add(New CrystalParametro("SaldoIngDolares", SaldoIngDolares.FormatoNumero))
+ lista.Add(New CrystalParametro("SaldoIngPesos", SaldoIngPesos.FormatoNumero))
+ lista.Add(New CrystalParametro("TotalIng", TotalIng.FormatoNumero))
+ lista.Add(New CrystalParametro("SaldoAntDolares", SaldoAntDolares.FormatoNumero))
+ lista.Add(New CrystalParametro("SaldoAntPesos", SaldoAntPesos.FormatoNumero))
+ lista.Add(New CrystalParametro("TotalAnt", TotalAnt.FormatoNumero))
+ lista.Add(New CrystalParametro("ContaIng", ContaIng))
+ lista.Add(New CrystalParametro("ContaAnt", ContaAnt))
+
+ If Imagen.Exists Then
+ lista.Add(New CrystalParametro("LogoPath", logouri))
+ Else
+ lista.Add(New CrystalParametro("LogoPath", ""))
+ End If
+
+ Try
+ Dim File As Byte()
+ If Archivo.Exists Then
+ File = ImprimirPDFCrystal($"{UsuarioActual.Empresa.Ruta}Formatos/RepClientesCxC.rpt", DtCxCFact2.FiltraParametros("", "CveMoneda,Fecha"), lista, "Estado de cuenta", Formato)
+ Else
+ File = ImprimirPDFCrystal(HttpContext.Current.Server.MapPath("~/Empresas/Grales/Formatos/RepClientesCxC.rpt"), DtCxCFact2.FiltraParametros("", "CveMoneda,Fecha"), lista, "Estado de cuenta", Formato)
+ End If
+
+ Catch ex As Exception
+ OnError("Ocurrió error al mandar MAIL de Orden de Compra", ex)
+ End Try
+ Else
+ Dim lista = New List(Of CrystalParametro)
+ lista.Add(New CrystalParametro("Empresa", UsuarioActual.Empresa.Empresa))
+ lista.Add(New CrystalParametro("TipoCuentas", "Todas"))
+ lista.Add(New CrystalParametro("NombreCliente", Cliente.Nombre))
+ lista.Add(New CrystalParametro("FechaInicio", If(FI = "-1", "-", FI)))
+ lista.Add(New CrystalParametro("FechaFin", If(FF = "-1", DateTime.Now.ToShortDateString, FF)))
+ lista.Add(New CrystalParametro("UsuarioImprimio", UsuarioActual.Nombre))
+ lista.Add(New CrystalParametro("DireccionCliente", String.Format("Calle {0} #{1} Colonia {2}", Cliente.Direccion, If(Cliente.NoExt = "", "S/N", Cliente.NoExt), Cliente.Colonia)))
+ lista.Add(New CrystalParametro("ClienteCP", Cliente.CP))
+ lista.Add(New CrystalParametro("ClienteCiudad", Cliente.Ciudad))
+ lista.Add(New CrystalParametro("ClienteRFC", Cliente.RFC))
+ lista.Add(New CrystalParametro("ClienteTelefono", Cliente.Telefono))
+ lista.Add(New CrystalParametro("DiasCredito", Cliente.PlazoCobranza))
+ lista.Add(New CrystalParametro("LimiteCredito", Cliente.LimiteCredito))
+ lista.Add(New CrystalParametro("SaldoDisponible", (Cliente.LimiteCredito).FormatoNumero))
+
+ lista.Add(New CrystalParametro("SaldoIngDolares", SaldoIngDolares.FormatoNumero))
+ lista.Add(New CrystalParametro("SaldoIngPesos", SaldoIngPesos.FormatoNumero))
+ lista.Add(New CrystalParametro("TotalIng", TotalIng.FormatoNumero))
+ lista.Add(New CrystalParametro("SaldoAntDolares", SaldoAntDolares.FormatoNumero))
+ lista.Add(New CrystalParametro("SaldoAntPesos", SaldoAntPesos.FormatoNumero))
+ lista.Add(New CrystalParametro("TotalAnt", TotalAnt.FormatoNumero))
+ lista.Add(New CrystalParametro("ContaIng", ContaIng))
+ lista.Add(New CrystalParametro("ContaAnt", ContaAnt))
+
+ If Imagen.Exists Then
+ lista.Add(New CrystalParametro("LogoPath", logouri))
+ Else
+ lista.Add(New CrystalParametro("LogoPath", ""))
+ End If
+
+ Dim drr As DataRow = DtCxCFact2.NewRow
+ drr("SerieFolio") = "Total Ing Pesos"
+ drr("Original") = DtCxCFact2.FiltraParametros("CveMoneda = 1").SUM("Original", "TipoDocto IN ('Ing','Rem') OR (TipoDocto = 'Ant' AND Saldo > 0)")
+ drr("Abonado") = DtCxCFact2.FiltraParametros("CveMoneda = 1").SUM("Abonado", "TipoDocto IN ('Ing','Rem') OR (TipoDocto = 'Ant' AND Saldo > 0)")
+ drr("Saldo") = 0
+ drr("SaldoAnticipo") = 0
+ drr("CveMoneda") = 1
+ DtCxCFact2.Rows.Add(drr)
+
+ If Archivo.Exists Then
+ ArchivoPDF = ImprimirPDFCrystal($"{UsuarioActual.Empresa.Ruta}Formatos/RepClientesCxC.rpt", DtCxCFact2.FiltraParametros("", "CveMoneda,Fecha"), lista, "Estado de cuenta", Formato)
+ Else
+ ArchivoPDF = ImprimirPDFCrystal(HttpContext.Current.Server.MapPath("~/Empresas/Grales/Formatos/RepClientesCxC.rpt"), DtCxCFact2.FiltraParametros("", "CveMoneda,Fecha"), lista, "Estado de cuenta", Formato)
+ End If
+ End If
+
+ Catch ex As Exception
+ ArchivoPDF = Nothing
+ End Try
+
+ Try
+ Dim Cuerpo As String = String.Format("Estimado cliente {0}, al presente se correo se anexa su estado actual de cartera en {1}.
+
+ Quedamos a sus ordenes para cualquier duda o aclaración con su agente de Ventas.
+
+
+ Gracias por la atención brindada al presente.
Reciba un cordial saludo.
+
+ ESTE CORREO SE GENERO EN FORMA AUTOMATICA.", Cliente.NombreComercial, UsuarioActual.Empresa.Empresa)
+
+ MandaCorreo(ArchivoPDF, Correo, $"Estado Actual de Cartera {UsuarioActual.Empresa.Empresa}", Cuerpo)
+ Catch ex As Exception
+ Alert("Ocurrió un error al enviar el correo", TipoMensaje.MsgAdvertencia)
+ End Try
+
+ End Sub
+
+
+
+ Public Function ImprimirPDFCrystal(RutaReporte As String, DataSource As DataTable, Parametros As List(Of CrystalParametro), Optional NombreArchivo As String = "Reporte", Optional Formato As String = "PDF", Optional MR As ReportDocument = Nothing) As Byte()
+ 'limpio ReportViwer
+ Dim sw As New System.Diagnostics.Stopwatch()
+ sw.Start()
+ If IsNothing(MR) Then MR = New ReportDocument()
+ Dim Bytes As Byte() = Nothing
+ Dim formatType As ExportFormatType = ExportFormatType.NoFormat
+ Try
+ MR.Load(RutaReporte)
+ MR.SetDataSource(DataSource)
+
+ For Each item As CrystalParametro In Parametros
+ MR.SetParameterValue(item.Nombre, item.Valor)
+ Next
+
+ Select Case Formato
+ Case "PDF"
+ formatType = ExportFormatType.PortableDocFormat
+ 'Format = "Application/pdf"
+ Case "EXCEL"
+ formatType = ExportFormatType.Excel
+ 'Format = "application/ms-excel"
+ End Select
+ Dim Stream As IO.Stream = MR.ExportToStream(formatType)
+ Dim BD As New BinaryReader(MR.ExportToStream(formatType))
+ Bytes = BD.ReadBytes(CInt(MR.ExportToStream(formatType).Length))
+ BD.Dispose()
+ Stream.Dispose()
+ 'Dim Buffer(CInt(Stream.Length)) As Byte
+ 'Bytes = Buffer
+ 'MR.ExportToHttpResponse(formatType, Response, True, NombreArchivo)
+ Catch ex As CrystalReportsException
+ GuardaLog(If(ex.InnerException IsNot Nothing AndAlso ex.Message IsNot Nothing,
+ $"Error: {If(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}", $"Sin descripción - 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(If(ex.InnerException IsNot Nothing AndAlso ex.Message IsNot Nothing,
+ $"Error: {If(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}", $"Sin descripción - 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
+ sw.Stop()
+ If sw.Elapsed.TotalSeconds > 10 Then
+ GuardaLog($"Reporte:{RutaReporte} | Tiempo Renderizado Milisegundos: {sw.ElapsedMilliseconds},Total Segundos: {sw.Elapsed.TotalSeconds} ")
+ End If
+ If MR IsNot Nothing Then MR.Dispose()
+ Return Bytes
+ End Function
+
+ Private Sub MandaCorreo(File As Byte(), Para As String, Asunto As String, Body As String)
+
+ Dim a As String = String.Format("{0} -- {1} ---- -->", Asunto, Para)
+ 'a.GuardaLog()
+ Dim Mail As New ClsSisMail()
+
+ Dim LSRutasMail As New List(Of ClsSisMail.ArchivoMail)
+ LSRutasMail.Add(New ClsSisMail.ArchivoMail With {.ArchivoBinario = File, .NombreArchivo = "EstadoDeCuenta.pdf"})
+
+ Mail.SendMail(ClsPaginas.EmpresaNotificaciones, Para, Asunto, Body, Archivos:=LSRutasMail)
+
+ End Sub
+#End Region
+
End Class
\ No newline at end of file
diff --git a/Contabilidad2/RepMovimientosAuxiliaresCatalogo.aspx b/Contabilidad2/RepMovimientosAuxiliaresCatalogo.aspx
index 3719f257d..5d76ce0f0 100644
--- a/Contabilidad2/RepMovimientosAuxiliaresCatalogo.aspx
+++ b/Contabilidad2/RepMovimientosAuxiliaresCatalogo.aspx
@@ -151,6 +151,7 @@