675 lines
33 KiB
Plaintext
675 lines
33 KiB
Plaintext
<%@ WebHandler Language="VB" Class="TareasProgramadas" %>
|
|
|
|
Imports System
|
|
Imports System.Web
|
|
Imports System.Data
|
|
Imports Newtonsoft.Json
|
|
Imports Newtonsoft.Json.Linq
|
|
Imports Extensiones
|
|
Imports System.IO
|
|
Imports CrystalDecisions.CrystalReports.Engine
|
|
Imports CrystalDecisions.Shared
|
|
|
|
Public Class TareasProgramadas : Implements IHttpHandler
|
|
|
|
Private currentcontext As HttpContext
|
|
Private URLParametros As New Hashtable
|
|
Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
|
|
context.Response.ContentType = "text/plain"
|
|
currentcontext = context
|
|
'timbrarNominab()
|
|
Dim retorno As String = "no se encontro la variable"
|
|
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 = ""
|
|
Case "EstadosCuenta"
|
|
IniciaEnvioEstadoDeCuenta(context, 1, "-1", "-1")
|
|
End Select
|
|
Catch ex As Exception
|
|
ex.GuardaLog(ex.ToString())
|
|
End Try
|
|
context.Response.Write(retorno)
|
|
End Sub
|
|
|
|
|
|
Public Sub timbrarNominab()
|
|
Dim cveEmpresa As String = "5"
|
|
|
|
|
|
Dim Dv As New DataView(DirectCast(currentcontext.Application("GlobalDTUsuarios"), DataTable), $"CveUsuario = 100 AND CveEmpresa ={cveEmpresa}", "", DataViewRowState.CurrentRows)
|
|
Dim GlobalDTUsuarios As DataTable = Dv.ToTable
|
|
Dv.Dispose()
|
|
Dim usuario As Usuario = Nothing
|
|
'Dim UsuarioAsignaciones As Usuario
|
|
|
|
|
|
If GlobalDTUsuarios.Rows.Count > 0 Then
|
|
Dim dtrow As DataRow = GlobalDTUsuarios.Rows(0)
|
|
Dim ObjUsuario As New ClsSisUsuarios
|
|
usuario = ObjUsuario.ValidaUsuario(dtrow("Usuario"), dtrow("Contraseña"), IMEI, cveEmpresa)
|
|
ObjUsuario.Dispose()
|
|
|
|
Dim ObjEmpresa As New ClsSisEmpresas()
|
|
If ObjEmpresa.GetEmpresas(cveEmpresa, "-1", "-1", "-1", "-1") Then
|
|
If ObjEmpresa.GetEmpresasFuncionalidades(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
|
|
|
|
usuario.Empresa = ObjEmpresa.Empresa
|
|
usuario.CveEmpresa = ObjEmpresa.Empresa.CveEmpresa
|
|
|
|
ADSSession.ADSSessionConfig.SessionManager(ADSSession.OpcionSession.CambiarEmpresa, Nothing, ObjEmpresa.Empresa.CveEmpresa)
|
|
Else
|
|
End If
|
|
ObjEmpresa.Dispose()
|
|
|
|
Dim StrErrores As New StringBuilder
|
|
Dim Msg As String = String.Empty
|
|
Dim CvePeriodo As Integer
|
|
Dim CveNomina As Integer
|
|
Dim CvePersonal As Integer
|
|
|
|
Dim SerieFolio As String
|
|
Dim DtNominas As New DataTable
|
|
Dim objnom As New ClsNominas
|
|
objnom.GetNom_porTimbrar(usuario.CveEmpresa)
|
|
DtNominas = objnom.DtResultados
|
|
'DtNominas = New DataTable
|
|
Dim noCiclos As Integer = 0
|
|
Dim noTotal As Integer = DtNominas.Rows.Count
|
|
|
|
Dim lognom As New LogicNominas
|
|
For Each Row As DataRow In DtNominas.Rows
|
|
'If noCiclos < 4 Then
|
|
noCiclos = noCiclos + 1
|
|
CveNomina = Row("CveNomina").ToString().ToEntero()
|
|
CvePersonal = Row("CvePersonal").ToString().ToEntero()
|
|
|
|
SerieFolio = Row("SerieFolio").ToString()
|
|
|
|
CvePeriodo = Row("CvePeriodo").ToString.ToEntero
|
|
|
|
If CveNomina > 0 Then
|
|
|
|
Msg = lognom.TimbrarNomina(CveNomina, CvePersonal, CvePeriodo, usuario)
|
|
|
|
If Msg.Trim <> String.Empty Then StrErrores.Append(Msg & "<br />")
|
|
End If
|
|
'Else
|
|
' Exit For
|
|
'End If
|
|
Next
|
|
GC.Collect()
|
|
StrErrores.ToString().GuardaLog()
|
|
|
|
If StrErrores.ToString().Length > 0 And CvePeriodo > 0 Then
|
|
Dim ObjPeriodo As New ClsNominas()
|
|
ObjPeriodo.CambiaEstatusPeriodo(CvePeriodo, enumNominasEstatus.Timbrada, usuario.CveUsuario, usuario.CveEmpresa)
|
|
ObjPeriodo.Dispose()
|
|
'EnvioMasivoCorreo()
|
|
'Dim temp As String = DdlPeriodo.SelectedValue
|
|
'CargaPeriodos()
|
|
'BtnEmitir.Visible = False
|
|
'DdlPeriodo.SelectedValue = temp
|
|
End If
|
|
End If
|
|
|
|
|
|
End Sub
|
|
|
|
|
|
|
|
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
|
|
#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 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()
|
|
If GlobalDTUsuarios.Rows.Count > 0 Then
|
|
Dim dtrow As DataRow = GlobalDTUsuarios.Rows(0)
|
|
username = dtrow("Usuario")
|
|
pass = dtrow("Contraseña")
|
|
End If
|
|
End Using
|
|
End Using
|
|
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 Region
|
|
#Region "Asigno la empresa al usuario"
|
|
If Not IsNothing(usuario) Then
|
|
Using ObjEmpresa As New ClsSisEmpresas()
|
|
|
|
If ObjEmpresa.GetEmpresas(CveEmpresa, "-1", "-1", "-1", "-1") Then
|
|
If ObjEmpresa.GetEmpresasFuncionalidades(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
|
|
|
|
usuario.Empresa = ObjEmpresa.Empresa
|
|
usuario.CveEmpresa = ObjEmpresa.Empresa.CveEmpresa
|
|
Else
|
|
End If
|
|
End Using
|
|
|
|
End If
|
|
#End Region
|
|
Return usuario
|
|
End Function
|
|
|
|
|
|
Public Function timbrarNomina() As String
|
|
Dim retorno As String = ""
|
|
Dim cveEmpresa As String = URLParametros("CveEmpresa").ToString().ToEntero()
|
|
|
|
Dim CvePeriodo As Integer = URLParametros("CvePeriodo").ToString().ToEntero()
|
|
Dim CveNomina As Integer = URLParametros("CveNomina").ToString().ToEntero()
|
|
Dim CvePersonal As Integer = URLParametros("CvePersonal").ToString().ToEntero()
|
|
|
|
Dim usuario As Usuario = GetUsuario(cveEmpresa, 100)
|
|
If Not IsNothing(usuario) Then
|
|
|
|
Dim StrErrores As New StringBuilder
|
|
Dim Msg As String = String.Empty
|
|
|
|
Dim lognom As New LogicNominas
|
|
If CveNomina > 0 Then
|
|
Msg = lognom.TimbrarNomina(CveNomina, CvePersonal, CvePeriodo, usuario)
|
|
If Msg.Trim() <> String.Empty Then StrErrores.Append(Msg)
|
|
retorno = Msg.Trim()
|
|
Else
|
|
retorno = "Nomina invalida periodo timbrar"
|
|
End If
|
|
'Using ObjPeriodo As New ClsNominas()
|
|
' If StrErrores.ToString().Length > 0 Then
|
|
' ObjPeriodo.CambiaEstatusPeriodo(CvePeriodo, enumNominasEstatus.ErrorEnTimbrado, usuario.CveUsuario, usuario.CveEmpresa)
|
|
' Else
|
|
' ObjPeriodo.CambiaEstatusPeriodo(CvePeriodo, enumNominasEstatus.Timbrada, usuario.CveUsuario, usuario.CveEmpresa)
|
|
|
|
' End If
|
|
'End Using
|
|
Else
|
|
retorno = "No se encontro el usuario"
|
|
|
|
Me.GuardaLog(String.Format("Error Timbrado Nomina CveEmpresa:{0} ", usuario.CveEmpresa))
|
|
End If
|
|
|
|
Return retorno
|
|
End Function
|
|
|
|
Private Function Parametros(Cadena As String) As Hashtable
|
|
Cadena = Decripta(Cadena)
|
|
Dim P1() As String = Cadena.Split("&"c)
|
|
Dim Tmp As String
|
|
Dim P2() As String
|
|
|
|
Dim URLParametros As New Hashtable
|
|
|
|
For Each Tmp In P1
|
|
P2 = Tmp.Replace("%26%", "&").Split("="c)
|
|
URLParametros.Add(P2(0).ToString(), P2(1))
|
|
Next
|
|
Return URLParametros
|
|
End Function
|
|
Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
|
|
Get
|
|
Return False
|
|
End Get
|
|
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}.<br />
|
|
<br />
|
|
Quedamos a sus ordenes para cualquier duda o aclaración con su agente de Ventas.<br />
|
|
<br />
|
|
<br />
|
|
Gracias por la atención brindada al presente.<br /> Reciba un cordial saludo.<br />
|
|
<br />
|
|
<b>ESTE CORREO SE GENERO EN FORMA AUTOMATICA.</b>", 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 |