1528 lines
93 KiB
Plaintext
1528 lines
93 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
|
|
Imports Microsoft.Reporting.WebForms
|
|
|
|
Public Class TareasProgramadas : Implements IHttpHandler, IReadOnlySessionState
|
|
|
|
|
|
Private ReadOnly Property GlobalDTUsuariosE140(Optional CveUsuario As Integer = -1, Optional CveCliente As Integer = -1, Optional CveProveedor As Integer = -1) As DataTable
|
|
Get
|
|
Dim CveEmpresa As Integer = 140
|
|
Dim Str As New StringBuilder
|
|
If CveUsuario <> -1 Then Str.AppendFormat("CveUsuario = {0}", CveUsuario)
|
|
If CveEmpresa <> -1 Then Str.AppendFormat(" {0} CveEmpresa = {1}", If(Str.Length > 0, "AND", ""), CveEmpresa)
|
|
If CveCliente <> -1 Then Str.AppendFormat(" {0} CveCliente = {1}", If(Str.Length > 0, "AND", ""), CveCliente)
|
|
If CveProveedor <> -1 Then Str.AppendFormat(" {0} CveProveedor = {1}", If(Str.Length > 0, "AND", ""), CveProveedor)
|
|
|
|
If CveUsuario <> -1 OrElse CveEmpresa <> -1 Then
|
|
Dim Dv As New DataView(DirectCast(HttpContext.Current.Application("GlobalDTUsuarios"), DataTable), Str.ToString, "", DataViewRowState.CurrentRows)
|
|
GlobalDTUsuariosE140 = Dv.ToTable
|
|
Dv.Dispose()
|
|
Else
|
|
GlobalDTUsuariosE140 = DirectCast(HttpContext.Current.Application("GlobalDTUsuarios"), DataTable)
|
|
End If
|
|
End Get
|
|
End Property
|
|
|
|
Public Shared ReadOnly Property GlobalDTSubProyectosE140(CveProyecto As Integer, Optional CveSubProyecto As Integer = -1, Optional Estatus As Integer = 1) As DataTable
|
|
Get
|
|
Dim CveEmpresa As Integer = 140
|
|
Dim AppNombre As String = String.Format("GlobalDTSubProyectos-{0}", CveEmpresa)
|
|
'sino existe, recarga los datos
|
|
If DirectCast(HttpContext.Current.Application(AppNombre), DataTable) Is Nothing Or (DirectCast(HttpContext.Current.Application(AppNombre), DataTable) IsNot Nothing AndAlso DirectCast(HttpContext.Current.Application(AppNombre), DataTable).Rows.Count = 0) Then
|
|
Dim P As New ClsSubProyectos
|
|
If P.GetSubProyectos(CveEmpresa:=CveEmpresa) Then HttpContext.Current.Application(AppNombre) = P.DtResultados
|
|
P.Dispose()
|
|
End If
|
|
|
|
If CveProyecto <> -1 OrElse CveSubProyecto <> -1 OrElse CveEmpresa <> -1 OrElse Estatus <> -1 Then
|
|
Dim StrSQL As New StringBuilder
|
|
If CveProyecto <> -1 Then StrSQL.AppendFormat(" AND CveProyecto = {0}", CveProyecto)
|
|
If CveSubProyecto <> -1 Then StrSQL.AppendFormat(" AND CveSubProyecto = {0}", CveSubProyecto)
|
|
If Estatus <> -1 Then StrSQL.AppendFormat(" AND CveEstatus = {0}", Estatus)
|
|
If CveEmpresa <> -1 Then StrSQL.AppendFormat(" AND CveEmpresa = {0}", CveEmpresa)
|
|
|
|
Dim Dv As New DataView(DirectCast(HttpContext.Current.Application(AppNombre), DataTable), StrSQL.ToString.Trim.TrimStart("A"c, "N"c, "D"c), "", DataViewRowState.CurrentRows)
|
|
GlobalDTSubProyectosE140 = Dv.ToTable
|
|
Dv.Dispose()
|
|
|
|
Else
|
|
GlobalDTSubProyectosE140 = DirectCast(HttpContext.Current.Application(AppNombre), DataTable)
|
|
End If
|
|
|
|
End Get
|
|
End Property
|
|
|
|
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
|
|
Dim retorno As String = "no se encontro la variable"
|
|
Try
|
|
Dim metodo As String = ""
|
|
Dim FechaActual As DateTime = ClsPaginas.NowADS()
|
|
Dim FechaEnvio As DateTime = FechaActual
|
|
|
|
If context.Request("var") IsNot Nothing Then
|
|
URLParametros = Parametros(context.Request("var"))
|
|
metodo = URLParametros("metodo").ToString
|
|
'SI TRAE UN JSON COMO PARAMETRO
|
|
ElseIf context.Request("metodo") IsNot Nothing Then
|
|
metodo = context.Request("metodo").ToString()
|
|
If context.Request("FechaEnvio") IsNot Nothing Then
|
|
FechaEnvio = context.Request("FechaEnvio").ToString().ToDateTime()
|
|
End If
|
|
End If
|
|
|
|
Select Case metodo
|
|
Case "TimbrarNomina"
|
|
retorno = "Error Timbrado Nomina"
|
|
retorno = timbrarNomina()
|
|
retorno = ""
|
|
context.Response.Write(retorno)
|
|
Case "EstadosCuenta"
|
|
'CargaEstadosCuenta(context, 119, 227774)
|
|
CargaEstadosCuenta(context, 119, -1, FechaEnvio, FechaActual)
|
|
|
|
Case "ScoreCard"
|
|
CargaScoreCard(context, 140, FechaEnvio)
|
|
Case "EjecutaReporteDiario"
|
|
Dim tCveEmpresa As Integer = context.Request("CveEmpresa").ToString.ToEntero
|
|
retorno = If(ReporteDiario(tCveEmpresa, context), "True", "false")
|
|
context.Response.Write(retorno)
|
|
End Select
|
|
Catch ex As Exception
|
|
ex.GuardaLog(ex.ToString())
|
|
context.Response.Write(retorno)
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
|
|
Public Sub timbrarNominab()
|
|
Dim cveEmpresa As Integer = 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 NombreCadena As String = ClsPaginas.GlobalNombreCadenaConexion(cveEmpresa)
|
|
Dim ObjUsuario As New ClsSisUsuarioAutenticacion(NombreCadena:=NombreCadena)
|
|
usuario = ObjUsuario.ValidaUsuario(dtrow("Usuario").ToString, dtrow("Contraseña").ToString, CveEmpresa:=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").ToString
|
|
pass = dtrow("Contraseña").ToString
|
|
End If
|
|
End Using
|
|
End Using
|
|
End If
|
|
#End Region
|
|
#Region "obtengo el usuario con el username y la pass"
|
|
'Dim tGrupoEmpresa As String = ClsPaginas.GlobalGrupoEmpresa(Request.Url.Host.ToUpper())
|
|
Dim NombreCadena As String = ClsPaginas.GlobalNombreCadenaConexion(CveEmpresa)
|
|
Using ObjUsuario As New ClsSisUsuarioAutenticacion(NombreCadena:=NombreCadena)
|
|
usuario = ObjUsuario.ValidaUsuario(username, pass, CveEmpresa:=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 Integer = 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, pCveEmpresa As Integer, pCveCliente As Integer, FechaEnvio As DateTime, FechaActual As DateTime)
|
|
Dim Retorno As New JArray()
|
|
Dim DtEmpresas As DataTable = Nothing
|
|
Using ObjEmpresas As New ClsSisEmpresas()
|
|
If ObjEmpresas.GetEmpresas(pCveEmpresa, "-1", "-1", "-1", "-1") Then
|
|
DtEmpresas = ObjEmpresas.DtResultados.FiltraParametros("", "", {"CveEmpresa"})
|
|
End If
|
|
End Using
|
|
|
|
If DtEmpresas IsNot Nothing Then
|
|
For Each Row As DataRow In DtEmpresas.Rows
|
|
Dim Usuario As Usuario = ValidaUsuarioSistema(100, Row("CveEmpresa").ToString().ToEntero())
|
|
Dim obj As JObject = EjecutarEnvioEstadoCuenta(Usuario, FechaEnvio, FechaActual, pCveCliente:=pCveCliente)
|
|
|
|
Retorno.Add(obj)
|
|
Next
|
|
|
|
DtEmpresas.Dispose()
|
|
End If
|
|
|
|
GuardaLogEdoCuenta(Retorno.ToString())
|
|
|
|
context.Response.Write("True")
|
|
End Sub
|
|
|
|
|
|
Private Function ValidaUsuarioSistema(CveUsuario As Integer, CveEmpresa As Integer) As Usuario
|
|
Dim UsuarioActual As Usuario = Nothing
|
|
Dim NombreCadena As String = ClsPaginas.GlobalNombreCadenaConexion(CveEmpresa)
|
|
Dim ObjUsuarios As New ClsSisUsuarioAutenticacion(NombreCadena:=NombreCadena)
|
|
UsuarioActual = ObjUsuarios.GetUsuarioDetalle(CveUsuario, CveEmpresa)
|
|
If UsuarioActual IsNot Nothing Then
|
|
HttpContext.Current.Session("UsuarioSIG") = UsuarioActual
|
|
'CreaObjetoEmpresa(UsuarioActual)
|
|
End If
|
|
ObjUsuarios.Dispose()
|
|
|
|
Return UsuarioActual
|
|
End Function
|
|
|
|
Private Function EjecutarEnvioEstadoCuenta(UsuarioActual As Usuario, FechaEnvio As DateTime, FechaActual As DateTime, Optional pCveCliente As Integer = -1) As JObject
|
|
Dim ClientesSinEnviar As New JArray()
|
|
Dim ClientesEdoEnviado As New JArray()
|
|
|
|
Dim Json As New JObject(
|
|
New JProperty("Empresa", UsuarioActual.Empresa.Empresa),
|
|
New JProperty("Usuario", UsuarioActual.Usuario),
|
|
New JProperty("Fecha", ClsPaginas.NowADS().ToString("dd/MM/yyy HH:mm:ss"))
|
|
)
|
|
Dim DTClientes As DataTable = Nothing
|
|
Dim EnviarPendientes As Boolean = False
|
|
|
|
If FechaActual <> FechaEnvio Then
|
|
EnviarPendientes = True
|
|
End If
|
|
|
|
If Not EnviarPendientes Then
|
|
Using ObjMov As New ClsMovimientos
|
|
Dim FechaI As String = "-1"
|
|
Dim FechaF As String = "-1"
|
|
Dim FechaVI As String = "-1"
|
|
Dim FechaVF As String = "-1"
|
|
Dim TCEspecifico As Decimal = -1
|
|
|
|
Dim CveCobranzaEstatus As Integer = -1
|
|
Dim CveClienteClasificacion As Integer = -1
|
|
Dim CveCliente As Integer = -1
|
|
Dim AplicaAnticipos As Integer = 0
|
|
|
|
Dim CveSubProyecto As Integer = -1
|
|
Dim CveVendedor As Integer = -1
|
|
Dim Grupo As Integer = 5
|
|
Dim TipoCambio As Integer = 1
|
|
Dim TipoDocto As String = "Ing"
|
|
Dim FechaCorte As DateTime = New DateTime(ClsPaginas.NowADS().Year, 12, 31)
|
|
|
|
If ObjMov.GetCxC(FechaI, FechaF, CveCliente, CveSubProyecto, CveVendedor, -1, -1, "-1", UsuarioActual.CveEmpresa, Grupo, -1, TipoCambio, TCEspecifico, TipoDocto, FechaVI, FechaVF, FechaCorte:=FechaCorte,
|
|
EstatusCliente:=1, CveUsuarioConsulta:=UsuarioActual.CveUsuario, CveCobranzaEstatus:=CveCobranzaEstatus, CveClienteClasificacion:=-1, TipoCliente:=-1) Then
|
|
DTClientes = ObjMov.DtResultados.FiltraParametros("CveCliente > 0", DistinctColumns:={"CveCliente"})
|
|
End If
|
|
|
|
End Using
|
|
End If
|
|
|
|
|
|
If DTClientes IsNot Nothing OrElse EnviarPendientes Then
|
|
|
|
DTClientes = DTClientes.FiltraParametros("CveCliente NOT IN (228080,228565,228910,233126,231465,232730,232697,227338)")
|
|
|
|
Dim DtNotificaciones As DataTable = Nothing
|
|
|
|
Dim TieneErrorRegistro As Boolean = False
|
|
|
|
Dim ObjMovimientos As New ClsMovimientos
|
|
ObjMovimientos.IniciaTransacSQL()
|
|
|
|
If Not EnviarPendientes Then
|
|
Try
|
|
For Each RowCliente As DataRow In DTClientes.Rows
|
|
If Not ObjMovimientos.AddNotificacionEdoCuentaCliente(RowCliente("CveCliente").ToString().ToEntero(), FechaEnvio) Then
|
|
GuardaLog("Ocurrio un error al agregar las notificaciones de edo cuenta. CveCliente: " + RowCliente("CveCliente").ToString())
|
|
TieneErrorRegistro = True
|
|
Exit For
|
|
End If
|
|
Next
|
|
Catch ex As Exception
|
|
GuardaLog("Ocurrio un error al agregar las notificaciones de edo cuenta" + ex.ToString())
|
|
TieneErrorRegistro = True
|
|
End Try
|
|
End If
|
|
|
|
If Not TieneErrorRegistro Then
|
|
If ObjMovimientos.GetNotificacionEdoCuentaCliente(UsuarioActual.CveEmpresa, -1, FechaEnvio) Then
|
|
DtNotificaciones = ObjMovimientos.DtResultados.Copy()
|
|
Else
|
|
TieneErrorRegistro = True
|
|
End If
|
|
End If
|
|
|
|
|
|
If Not TieneErrorRegistro Then
|
|
ObjMovimientos.Commit()
|
|
Else
|
|
ObjMovimientos.RollBack()
|
|
If DtNotificaciones IsNot Nothing Then
|
|
DtNotificaciones.Clear()
|
|
DtNotificaciones = Nothing
|
|
End If
|
|
End If
|
|
ObjMovimientos.Dispose()
|
|
|
|
If DTClientes IsNot Nothing Then
|
|
DTClientes.Dispose()
|
|
End If
|
|
|
|
Try
|
|
If DtNotificaciones IsNot Nothing Then
|
|
For Each Row As DataRow In DtNotificaciones.Rows
|
|
Dim CveCliente As Integer = Row("CveCliente").ToString().ToEntero()
|
|
Dim Cliente As New Modelos.ClienteModel(CveCliente, UsuarioActual.CveEmpresa)
|
|
|
|
If Cliente IsNot Nothing Then
|
|
Dim Correo As String = Cliente.CobranzaCorreo
|
|
|
|
Dim Envio As Boolean = False
|
|
If Not String.IsNullOrEmpty(Correo) Then
|
|
Envio = EnviarEstadoCuenta(UsuarioActual, Correo, Cliente)
|
|
End If
|
|
|
|
If Envio Then
|
|
|
|
Using ObjMov As New ClsMovimientos
|
|
ObjMov.UpdateNotificacionEdoCuentaCliente(Row("CveNotificacionBitacora").ToString().ToEntero(), Notifico:=True)
|
|
End Using
|
|
|
|
ClientesEdoEnviado.Add(New JObject(
|
|
New JProperty("CveCliente", Cliente.CveCliente),
|
|
New JProperty("Cliente", Cliente.Nombre)
|
|
))
|
|
|
|
Using ObjBitacora As New ClsOIEventos
|
|
ObjBitacora.AddEventoBitacora("Se envió correo con el estado de cuenta del cliente", "", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveCliente:=Cliente.CveCliente)
|
|
End Using
|
|
Else
|
|
ClientesSinEnviar.Add(New JObject(
|
|
New JProperty("CveCliente", Cliente.CveCliente),
|
|
New JProperty("Cliente", Cliente.Nombre)
|
|
))
|
|
End If
|
|
End If
|
|
Next
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
GuardaLog("Ocurrio un error al agregar las notificaciones de edo cuenta. " + ex.ToString())
|
|
End Try
|
|
|
|
If DtNotificaciones IsNot Nothing Then
|
|
DtNotificaciones.Dispose()
|
|
End If
|
|
|
|
End If
|
|
Json.Add(New JProperty("ClientesSinEnviar", ClientesSinEnviar))
|
|
Json.Add(New JProperty("ClientesEdoEnviado", ClientesEdoEnviado))
|
|
|
|
Return Json
|
|
End Function
|
|
|
|
Private Function EnviarEstadoCuenta(UsuarioActual As Usuario, Correo As String, Cliente As Modelos.ClienteModel) As Boolean
|
|
Dim Retorno As Boolean = True
|
|
Try
|
|
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 As String = 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 TipoDocto2 As String = "'Ing'"
|
|
Dim FechaVencimientoI As String = "-1"
|
|
Dim FechaVencimientoF As String = "-1"
|
|
Dim FI As String = "-1"
|
|
Dim FF As String = "-1"
|
|
Dim dtt As DataTable = Nothing
|
|
|
|
Try
|
|
Using ObjMovtos As New ClsMovimientos()
|
|
If ObjMovtos.GetCxCClienteDetalle(Cliente.CveCliente, "-1", "-1", -1, -1, UsuarioActual.CveEmpresa, CveClienteSucursal:=-1) Then
|
|
DtCxCFact = ObjMovtos.DtResultados.FiltraParametros("Tipo = 'Act'", "TipoDocto")
|
|
'cargo los anticipos NC
|
|
DtCxCFact.Columns.Add("SaldoAnticipo", GetType(Decimal))
|
|
If ObjMovtos.GetAnticiposNCIxCCliente(Cliente.CveCliente, -1, -1) Then
|
|
dtt = ObjMovtos.DtResultados.FiltraParametros("Saldo > 0 AND 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
|
|
End Using
|
|
Catch ex As Exception
|
|
Retorno = False
|
|
dtt = Nothing
|
|
GuardaLog("Ocurrió un erro al obtener el CxC. " + ex.ToString())
|
|
End Try
|
|
|
|
If Not Retorno Then
|
|
Return Retorno
|
|
End If
|
|
|
|
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
|
|
|
|
If TotalIng.RoundSQL(2) = 0 AndAlso TotalAnt.RoundSQL(2) = 0 Then
|
|
Retorno = False
|
|
Return Retorno
|
|
End If
|
|
|
|
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 As New List(Of CrystalParametro)
|
|
lista.Add(New CrystalParametro("Empresa", UsuarioActual.Empresa.Empresa))
|
|
lista.Add(New CrystalParametro("TipoCuentas", "Con Saldo"))
|
|
lista.Add(New CrystalParametro("NombreCliente", Cliente.Nombre))
|
|
lista.Add(New CrystalParametro("FechaInicio", If(FI = "-1", "-", FI)))
|
|
lista.Add(New CrystalParametro("FechaFin", If(FF = "-1", ClsPaginas.NowADS().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
|
|
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
|
|
|
|
Catch ex As Exception
|
|
ArchivoPDF = Nothing
|
|
GuardaLog("Ocurrió un erro al obtener el CxC" + ex.ToString())
|
|
End Try
|
|
Else
|
|
Dim lista As New List(Of CrystalParametro)
|
|
lista.Add(New CrystalParametro("Empresa", UsuarioActual.Empresa.Empresa))
|
|
lista.Add(New CrystalParametro("TipoCuentas", "Con Saldo"))
|
|
lista.Add(New CrystalParametro("NombreCliente", Cliente.Nombre))
|
|
lista.Add(New CrystalParametro("FechaInicio", If(FI = "-1", "-", FI)))
|
|
lista.Add(New CrystalParametro("FechaFin", If(FF = "-1", ClsPaginas.NowADS().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
|
|
GuardaLog("Ocurrió un error al generar el pdf" + ex.ToString())
|
|
ArchivoPDF = Nothing
|
|
End Try
|
|
|
|
If ArchivoPDF IsNot Nothing Then
|
|
Try
|
|
Dim Cuerpo As String = String.Format("Estimado cliente {0}, al presente del 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)
|
|
|
|
Retorno = MandaCorreo(ArchivoPDF, Correo, $"Estado Actual de Cartera {UsuarioActual.Empresa.Empresa}", Cuerpo)
|
|
Catch ex As Exception
|
|
Retorno = False
|
|
GuardaLog("Ocurrió error al mandar el correo de estado de cuenta. " + ex.ToString())
|
|
End Try
|
|
Else
|
|
Retorno = False
|
|
End If
|
|
Catch ex As Exception
|
|
Retorno = False
|
|
GuardaLog("Ocurrió error al mandar el correo de estado de cuenta" + ex.ToString())
|
|
End Try
|
|
|
|
Return Retorno
|
|
End Function
|
|
|
|
|
|
|
|
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 Function MandaCorreo(File As Byte(), Para As String, Asunto As String, Body As String) As Boolean
|
|
'Para = "japmx95@gmail.com"
|
|
Try
|
|
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"})
|
|
|
|
Return Mail.SendMail(ClsPaginas.EmpresaNotificaciones, Para, Asunto, Body, Archivos:=LSRutasMail)
|
|
Catch ex As Exception
|
|
GuardaLog("Ocurrió error al mandar el correo de estado de cuenta. " + ex.ToString())
|
|
Return False
|
|
End Try
|
|
|
|
End Function
|
|
|
|
Public Sub GuardaLogEdoCuenta(Str As String)
|
|
Dim ArchivoW As StreamWriter
|
|
Dim strLineaTMP As String
|
|
|
|
' strLineaTMP = Chr(13) & Chr(10) & Day(NowADS()) & "/" & Month(NowADS()) & "/" & Year(NowADS()) & " " & Hour(NowADS()) & ":" & Minuto & ". " & Str & Chr(13) & Chr(10)
|
|
strLineaTMP = String.Format("{0}{1}Log: {2}{3}:{4}", Chr(13), Chr(10), Str, ClsPaginas.NowADS().ToShortDateString, ClsPaginas.NowADS().ToShortTimeString)
|
|
Try
|
|
ArchivoW = New StreamWriter(String.Format("{0}\Log\LogEdoCuenta.txt", ModExtensiones.DirectorioBaseEmpresas), True, System.Text.Encoding.UTF8)
|
|
Catch ex As UnauthorizedAccessException
|
|
'Alert("No hay permisos para guardar en el Log.", Extensiones.TipoMensaje.MsgError)
|
|
Exit Sub
|
|
Catch ex As Exception
|
|
Exit Sub
|
|
End Try
|
|
|
|
Try
|
|
ArchivoW.WriteLine(strLineaTMP)
|
|
Catch
|
|
End Try
|
|
|
|
ArchivoW.Close()
|
|
ArchivoW.Dispose()
|
|
End Sub
|
|
#End Region
|
|
|
|
#Region "S C O R E C A R D"
|
|
Private Sub CargaScoreCard(ByVal context As HttpContext, pCveEmpresa As Integer, FechaEnvio As DateTime)
|
|
Dim Usuario As Usuario = ValidaUsuarioSistema(100, pCveEmpresa)
|
|
Dim obj As Boolean = EjecutarEnvioScoreCard(Usuario, FechaEnvio)
|
|
|
|
End Sub
|
|
|
|
Private Function EjecutarEnvioScoreCard(UsuarioActual As Usuario, FechaEnvio As DateTime) As Boolean
|
|
Dim DtGrupoVendedores As DataTable = Nothing
|
|
Dim DtGrupoSucursales As DataTable = Nothing
|
|
Dim DtGrupoEmpresa As DataTable = Nothing
|
|
|
|
Using ObjVentas As New ClsVentas
|
|
'VENDEDORES
|
|
If ObjVentas.GetRepMetasVendedores(FechaEnvio, UsuarioActual.CveEmpresa, -1, -1,
|
|
-1, -1, -1, -1,
|
|
-1, -1, GrupoSuperior:=0) Then
|
|
DtGrupoVendedores = ObjVentas.DtResultados.Copy
|
|
End If
|
|
'SUCURSAL
|
|
If ObjVentas.GetRepMetasVendedores(FechaEnvio, UsuarioActual.CveEmpresa, -1, -1,
|
|
-1, -1, -1, -1,
|
|
-1, -1, GrupoSuperior:=1) Then
|
|
DtGrupoSucursales = ObjVentas.DtResultados.Copy
|
|
End If
|
|
'EMPRESA
|
|
If ObjVentas.GetRepMetasVendedores(FechaEnvio, UsuarioActual.CveEmpresa, -1, -1,
|
|
-1, -1, -1, -1,
|
|
-1, -1, GrupoSuperior:=2) Then
|
|
DtGrupoEmpresa = ObjVentas.DtResultados.Copy
|
|
End If
|
|
End Using
|
|
|
|
Dim DtUsuarios As DataTable = GlobalDTUsuariosE140()
|
|
|
|
Dim ListaDirectivos As New List(Of MUsuarioEnviar)
|
|
'OSCAR FERNANDO LOPEZ CARRASCO
|
|
ListaDirectivos.Add(New MUsuarioEnviar(DtUsuarios.FiltroPrimero($"CveUsuario = {2138}"), TipoUsuarioEnviar.Directivo) With
|
|
{
|
|
.SubProyecto = "Todos",
|
|
.ReporteEnviar = New MReporteEnviar() With
|
|
{
|
|
.Empresa = True, .Sucursal = True, .Vendedor = True
|
|
}
|
|
})
|
|
'ANA IVETTE LOPEZ CARRASCO
|
|
ListaDirectivos.Add(New MUsuarioEnviar(DtUsuarios.FiltroPrimero($"CveUsuario = {2292}"), TipoUsuarioEnviar.Directivo) With
|
|
{
|
|
.SubProyecto = "Todos",
|
|
.ReporteEnviar = New MReporteEnviar() With
|
|
{
|
|
.Empresa = True, .Sucursal = True, .Vendedor = True
|
|
}
|
|
})
|
|
'FERNANDO MENDOZA LAMADRID
|
|
ListaDirectivos.Add(New MUsuarioEnviar(DtUsuarios.FiltroPrimero($"CveUsuario = {2275}"), TipoUsuarioEnviar.Directivo) With
|
|
{
|
|
.SubProyecto = "Todos",
|
|
.ReporteEnviar = New MReporteEnviar() With
|
|
{
|
|
.Empresa = True, .Sucursal = True, .Vendedor = True
|
|
}
|
|
})
|
|
'CARLOS ARMANDO MORENO GONZALEZ
|
|
ListaDirectivos.Add(New MUsuarioEnviar(DtUsuarios.FiltroPrimero($"CveUsuario = {2763}"), TipoUsuarioEnviar.Directivo) With
|
|
{
|
|
.SubProyecto = "Todos",
|
|
.ReporteEnviar = New MReporteEnviar() With
|
|
{
|
|
.Empresa = True, .Sucursal = True, .Vendedor = True
|
|
}
|
|
})
|
|
'EMMANUEL LOPEZ FIMBRES
|
|
ListaDirectivos.Add(New MUsuarioEnviar(DtUsuarios.FiltroPrimero($"CveUsuario = {3099}"), TipoUsuarioEnviar.Directivo) With
|
|
{
|
|
.SubProyecto = "Todos",
|
|
.ReporteEnviar = New MReporteEnviar() With
|
|
{
|
|
.Empresa = True, .Sucursal = True, .Vendedor = True
|
|
}
|
|
})
|
|
|
|
Dim PDFEmpresa As Byte() = GenerarScoredCardDirectivo(UsuarioActual, DtGrupoEmpresa)
|
|
Dim PDFSucursales As Byte() = GenerarScoredCardDirectivo(UsuarioActual, DtGrupoSucursales)
|
|
Dim PDFVendedores As Byte() = GenerarScoredCardDirectivo(UsuarioActual, DtGrupoVendedores)
|
|
|
|
For Each UsuarioEnviar As MUsuarioEnviar In ListaDirectivos
|
|
Dim LSRutasMail As New List(Of ClsSisMail.ArchivoMail)
|
|
|
|
If UsuarioEnviar.ReporteEnviar.Empresa Then
|
|
LSRutasMail.Add(New ClsSisMail.ArchivoMail With
|
|
{
|
|
.ArchivoBinario = PDFEmpresa,
|
|
.NombreArchivo = "ScoreCardEmpresa.pdf"
|
|
})
|
|
End If
|
|
|
|
If UsuarioEnviar.ReporteEnviar.Sucursal Then
|
|
LSRutasMail.Add(New ClsSisMail.ArchivoMail With
|
|
{
|
|
.ArchivoBinario = PDFSucursales,
|
|
.NombreArchivo = "ScoreCardSucursales.pdf"
|
|
})
|
|
End If
|
|
|
|
If UsuarioEnviar.ReporteEnviar.Vendedor Then
|
|
LSRutasMail.Add(New ClsSisMail.ArchivoMail With
|
|
{
|
|
.ArchivoBinario = PDFVendedores,
|
|
.NombreArchivo = "ScoreCardVendedores.pdf"
|
|
})
|
|
End If
|
|
|
|
If LSRutasMail.Count > 0 Then
|
|
EnviarCorreoFactura(UsuarioActual, UsuarioEnviar, LSRutasMail)
|
|
End If
|
|
|
|
Next
|
|
|
|
Dim ListaVendedores As New List(Of MUsuarioEnviar)
|
|
'LUIS FERNADO GRIJALVA COTA
|
|
ListaVendedores.Add(New MUsuarioEnviar(DtUsuarios.FiltroPrimero($"CveUsuario = {3236} AND CveSubProyecto > 0"), TipoUsuarioEnviar.Vendedor))
|
|
'FERNANDO GRIJALVA
|
|
ListaVendedores.Add(New MUsuarioEnviar(DtUsuarios.FiltroPrimero($"CveUsuario = {3293} AND CveSubProyecto > 0"), TipoUsuarioEnviar.Vendedor))
|
|
'ADRIAN MURRIETA
|
|
ListaVendedores.Add(New MUsuarioEnviar(DtUsuarios.FiltroPrimero($"CveUsuario = {3352} AND CveSubProyecto > 0"), TipoUsuarioEnviar.Vendedor))
|
|
'BRAYAM URIEL CORRALES
|
|
ListaVendedores.Add(New MUsuarioEnviar(DtUsuarios.FiltroPrimero($"CveUsuario = {2700} AND CveSubProyecto > 0"), TipoUsuarioEnviar.Vendedor))
|
|
'DANIEL GASTELUM
|
|
ListaVendedores.Add(New MUsuarioEnviar(DtUsuarios.FiltroPrimero($"CveUsuario = {3360} AND CveSubProyecto > 0"), TipoUsuarioEnviar.Vendedor))
|
|
'ALEJANDRA QUINTERO
|
|
ListaVendedores.Add(New MUsuarioEnviar(DtUsuarios.FiltroPrimero($"CveUsuario = {3336} AND CveSubProyecto > 0"), TipoUsuarioEnviar.Vendedor))
|
|
'RICARDO FUENTES
|
|
ListaVendedores.Add(New MUsuarioEnviar(DtUsuarios.FiltroPrimero($"CveUsuario = {3363} AND CveSubProyecto > 0"), TipoUsuarioEnviar.Vendedor))
|
|
'GERMAN LUNA
|
|
ListaVendedores.Add(New MUsuarioEnviar(DtUsuarios.FiltroPrimero($"CveUsuario = {3354} AND CveSubProyecto > 0"), TipoUsuarioEnviar.Vendedor))
|
|
|
|
For Each UsuarioEnviar As MUsuarioEnviar In ListaVendedores
|
|
Dim LSRutasMail As New List(Of ClsSisMail.ArchivoMail)
|
|
Dim DtReporteVendedor As DataTable = Nothing
|
|
|
|
If UsuarioEnviar.CveSubProyecto > 0 AndAlso UsuarioEnviar.CveVendedor > 0 Then
|
|
|
|
Using ObjVentas As New ClsVentas
|
|
If ObjVentas.GetRepMetasVendedores(FechaEnvio, UsuarioActual.CveEmpresa, UsuarioEnviar.CveVendedor, -1,
|
|
-1, -1, -1, UsuarioEnviar.CveSubProyecto, -1, -1, GrupoSuperior:=1) Then
|
|
DtReporteVendedor = ObjVentas.DtResultados.Copy
|
|
End If
|
|
End Using
|
|
|
|
LSRutasMail.Add(New ClsSisMail.ArchivoMail With
|
|
{
|
|
.ArchivoBinario = GenerarScoredCard(UsuarioActual, UsuarioEnviar, DtReporteVendedor),
|
|
.NombreArchivo = "ScoreCardSucursales.pdf"
|
|
})
|
|
|
|
If LSRutasMail.Count > 0 Then
|
|
EnviarCorreoFactura(UsuarioActual, UsuarioEnviar, LSRutasMail)
|
|
End If
|
|
|
|
End If
|
|
Next
|
|
|
|
Return False
|
|
End Function
|
|
|
|
Private Sub EnviarCorreoFactura(UsuarioActual As Usuario, UsuarioEnviar As MUsuarioEnviar, LSRutasMail As List(Of ClsSisMail.ArchivoMail))
|
|
Dim ObjMail As New ClsSisMail()
|
|
Dim Mail As String = "jonathan.perez@adssistemas.mx"
|
|
Dim MailCC As String = "rene.molina@adssistemas.mx"
|
|
|
|
Dim ExistePDF As Boolean = False
|
|
|
|
If Not String.IsNullOrEmpty(Mail) Then
|
|
Try
|
|
Dim Asunto As String = $"ScoreCard: {ClsPaginas.NowADS().ToString("dd/MM/yyyy")}"
|
|
Dim Cuerpo As String = String.Empty
|
|
Dim ResultadoMail As Integer = 0
|
|
|
|
If ObjMail.SendMail(ClsPaginas.EmpresaNotificaciones, Mail, Asunto, Cuerpo, If(String.IsNullOrEmpty(MailCC), "", MailCC), LSRutasMail) Then
|
|
ResultadoMail = 1
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
OnError("Ocurrió error al mandar el Mail", ex)
|
|
End Try
|
|
End If
|
|
End Sub
|
|
|
|
Protected Function GenerarScoredCard(UsuarioActual As Usuario, UsuarioEnviar As MUsuarioEnviar, DtDatos As DataTable) As Byte()
|
|
Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta))
|
|
Dim logouri As String = 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)
|
|
|
|
Dim params As New List(Of ReportParameter)
|
|
params.Add(New ReportParameter("pEmp", UsuarioActual.Empresa.Empresa))
|
|
If Imagen.Exists Then
|
|
params.Add(New ReportParameter("pImg", logouri))
|
|
Else
|
|
params.Add(New ReportParameter("pImg", ""))
|
|
End If
|
|
params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Usuario))
|
|
params.Add(New ReportParameter("FechaImpresion", Today.ToString))
|
|
params.Add(New ReportParameter("SubProyecto", UsuarioEnviar.SubProyecto))
|
|
params.Add(New ReportParameter("Agente", UsuarioEnviar.Agente))
|
|
|
|
|
|
Dim lrds As New List(Of ReportDataSource)
|
|
Dim rds As New ReportDataSource
|
|
rds.Name = "DataSet1"
|
|
rds.Value = DtDatos
|
|
lrds.Add(rds)
|
|
|
|
Return StreamPDF(UsuarioActual, "Empresas/Grales/Formatos/MetasVendedores.rdlc", lrds, params, "Rep. Metas por vendedores", "PDF")
|
|
End Function
|
|
|
|
Protected Function GenerarScoredCardDirectivo(UsuarioActual As Usuario, DtDatos As DataTable) As Byte()
|
|
Dim Imagen As New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta))
|
|
Dim logouri As String = 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)
|
|
|
|
Dim params As New List(Of ReportParameter)
|
|
params.Add(New ReportParameter("pEmp", UsuarioActual.Empresa.Empresa))
|
|
If Imagen.Exists Then
|
|
params.Add(New ReportParameter("pImg", logouri))
|
|
Else
|
|
params.Add(New ReportParameter("pImg", ""))
|
|
End If
|
|
params.Add(New ReportParameter("UsuarioImprimio", UsuarioActual.Usuario))
|
|
params.Add(New ReportParameter("FechaImpresion", Today.ToString))
|
|
params.Add(New ReportParameter("SubProyecto", "Todos"))
|
|
params.Add(New ReportParameter("Agente", "Todos"))
|
|
|
|
|
|
Dim lrds As New List(Of ReportDataSource)
|
|
Dim rds As New ReportDataSource
|
|
rds.Name = "DataSet1"
|
|
rds.Value = DtDatos
|
|
lrds.Add(rds)
|
|
|
|
Return StreamPDF(UsuarioActual, "Empresas/Grales/Formatos/MetasVendedores.rdlc", lrds, params, "Rep. Metas por vendedores", "PDF")
|
|
End Function
|
|
|
|
Public Enum TipoUsuarioEnviar
|
|
Directivo
|
|
Vendedor
|
|
End Enum
|
|
|
|
Public Class MUsuarioEnviar
|
|
|
|
Sub New(RowUsuario As DataRow, Tipo As TipoUsuarioEnviar)
|
|
If RowUsuario IsNot Nothing Then
|
|
Me.CveUsuario = RowUsuario("CveUsuario").ToString().ToEntero()
|
|
Me.Nombre = RowUsuario("Nombre").ToString()
|
|
Me.Correo = RowUsuario("Correo").ToString()
|
|
Me.CveSubProyecto = RowUsuario("CveSubProyecto").ToString().ToEntero()
|
|
Me.CveVendedor = RowUsuario("CveVendedor").ToString().ToEntero()
|
|
Me.Tipo = Tipo
|
|
|
|
If Me.Tipo = TipoUsuarioEnviar.Vendedor Then
|
|
Me.Agente = Me.Nombre
|
|
Else
|
|
Me.Agente = "Todos"
|
|
End If
|
|
|
|
If String.IsNullOrEmpty(SubProyecto) AndAlso CveSubProyecto > 0 Then
|
|
Me.SubProyecto = GlobalDTSubProyectosE140(-1, CveSubProyecto:=Me.CveSubProyecto).FiltroPrimeroValor("SubProyecto")
|
|
End If
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Public Property CveUsuario As Integer
|
|
Public Property Nombre As String
|
|
Public Property Tipo As TipoUsuarioEnviar
|
|
Public Property ReporteEnviar As MReporteEnviar
|
|
Public Property CveSubProyecto As Integer
|
|
Public Property SubProyecto As String
|
|
Public Property Correo As String
|
|
Public Property CveVendedor As Integer
|
|
Public Property Agente As String
|
|
|
|
End Class
|
|
|
|
Public Class MReporteEnviar
|
|
Public Property Empresa As Boolean = False
|
|
Public Property Sucursal As Boolean = False
|
|
Public Property Vendedor As Boolean = False
|
|
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) As Byte()
|
|
'limpio ReportViwer
|
|
Dim sw As New System.Diagnostics.Stopwatch()
|
|
sw.Start()
|
|
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") 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
|
|
|
|
Dim EsProduccion As Boolean = UsuarioActual.Empresa.FacturaProduccion
|
|
|
|
If EsProduccion Then
|
|
|
|
Dim wsreport As New WSRDLC.WebServiceSoapClient
|
|
Dim params As New List(Of WSRDLC.ReportParameter)
|
|
Dim ds As New DataSet
|
|
For Each rpds As ReportDataSource In DataSource
|
|
Dim dt As DataTable = DirectCast(rpds.Value, Data.DataTable)
|
|
If dt Is Nothing Then
|
|
dt = New DataTable()
|
|
Else
|
|
dt = dt.Copy()
|
|
End If
|
|
dt.TableName = rpds.Name
|
|
ds.Tables.Add(dt)
|
|
Next
|
|
For Each rpds As ReportParameter In Parametros
|
|
Dim param As New WSRDLC.ReportParameter
|
|
param.Name = rpds.Name
|
|
param.Values = {rpds.Values(0)}
|
|
params.Add(param)
|
|
Next
|
|
Bytes = wsreport.StreamPDFBytes(RutaReporte, ds, params.ToArray(), NombreArchivo, Formato, CveEmpresa, CveUsuario)
|
|
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
|
|
MR.Dispose()
|
|
MR = Nothing
|
|
'Dim ruta = wsreport.StreamPDF(RutaReporte, ds, params.ToArray(), NombreArchivo, Formato, CveEmpresa, CveUsuario)
|
|
'If File.Exists(ruta) Then
|
|
' Bytes = File.ReadAllBytes(ruta)
|
|
' File.Delete(ruta)
|
|
'End If
|
|
'Dim setup As AppDomainSetup = New AppDomainSetup
|
|
'With setup
|
|
' .ApplicationBase = Environment.CurrentDirectory
|
|
' .LoaderOptimization = LoaderOptimization.MultiDomainHost
|
|
'End With
|
|
'setup.SetCompatibilitySwitches({"NetFx40_LegacySecurityPolicy"})
|
|
'Dim _casPolicyEnabledDomain As AppDomain = AppDomain.CreateDomain("Full Trust", Nothing, setup)
|
|
'Dim fllreport As ADSReportLib.FullTrustReportviewer = Nothing
|
|
'Try
|
|
|
|
' fllreport = CType(_casPolicyEnabledDomain.CreateInstanceFromAndUnwrap(GetType(ADSReportLib.FullTrustReportviewer).Assembly.CodeBase, GetType(ADSReportLib.FullTrustReportviewer).FullName), ADSReportLib.FullTrustReportviewer)
|
|
|
|
' fllreport.Initialize("DisplayName", RutaReporte, Parametros.AsEnumerable(), New List(Of String()), True)
|
|
' For Each RDS As ReportDataSource In DataSource
|
|
' fllreport.AddDataSources(RDS.Name, DirectCast(RDS.Value, DataTable))
|
|
' Next
|
|
' 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 = fllreport.Render(Formato, Nothing, MimeType, Encoding, Extension, StreamIds)
|
|
' fllreport = Nothing
|
|
'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}")
|
|
'Finally
|
|
' AppDomain.Unload(_casPolicyEnabledDomain)
|
|
'End Try
|
|
'If fllreport IsNot Nothing Then fllreport.liberarecursos()
|
|
|
|
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 Region
|
|
|
|
#Region "R E P O R T E D I A R I O "
|
|
'Private Function ReporteDiario(ByVal CveEmpresa As Integer, ByVal context As HttpContext) As Boolean
|
|
' Dim Usuario As Usuario = ValidaUsuarioSistema(100, CveEmpresa)
|
|
' Dim objGenerales As ClsGenerales = New ClsGenerales()
|
|
' Dim respuesta As Boolean = True
|
|
' Dim sbTablas As StringBuilder = New StringBuilder()
|
|
' sbTablas.Append($"<b><center>Reporte Diario {DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss")}</center><b><br><br>")
|
|
|
|
' If objGenerales.GetReporteDiario(CveEmpresa) Then
|
|
' Dim TablaActual As Integer = 1
|
|
|
|
' For Each tabla As DataTable In objGenerales.DSResultados.Tables
|
|
' sbTablas.AppendLine(ConvertDataTableToHtml(tabla))
|
|
' TablaActual += 1
|
|
' sbTablas.Append("<br>")
|
|
' sbTablas.Append("<br>")
|
|
' Next
|
|
' Else
|
|
' respuesta = False
|
|
' End If
|
|
|
|
' objGenerales.Dispose()
|
|
' 'MandaCorreoDiario
|
|
' Dim Correos As String = "hdiaz@grupodiaz.com.mx;libarra@grupodiaz.com.mx;jguerrero@grupodiaz.com.mx;contabilidad@grupodiaz.com.mx;cnazarit@yahoo.com;julian@adsistemas.mx;rene.molina@adssistemas.mx"
|
|
' ' Dim Correos As String = " rene.molina@adssistemas.mx"
|
|
' MandaCorreoDiario(sbTablas.ToString(), Correos, respuesta)
|
|
' Return respuesta
|
|
'End Function
|
|
|
|
'Private Function ConvertDataTableToHtml(ByVal table As DataTable) As String
|
|
' Dim html As StringBuilder = New StringBuilder()
|
|
' Dim ColumnaTitulo As String = "Titulo"
|
|
' html.Append("<table border='1' style='border-collapse:collapse; width:100%;'>")
|
|
' If table.Columns(0).ColumnName = ColumnaTitulo AndAlso table.Rows.Count > 0 Then html.AppendFormat(" <caption style='background-color:#333333;'>{0}</caption>", table.Rows(0)(ColumnaTitulo))
|
|
' html.Append("<thead style='background-color:#DDD; padding: 0px;'><tr>")
|
|
|
|
' For Each column As DataColumn In table.Columns
|
|
' If ColumnaTitulo <> column.ColumnName Then html.Append($"<th style='padding:5px; text-align:left;'>{column.ColumnName}</th>")
|
|
' Next
|
|
|
|
' html.Append("</tr></thead>")
|
|
' html.Append("<tbody>")
|
|
' Dim numericValue As Decimal = Nothing
|
|
|
|
' For Each row As DataRow In table.Rows
|
|
' html.Append("<tr>")
|
|
|
|
' For Each column As DataColumn In table.Columns
|
|
|
|
' If ColumnaTitulo <> column.ColumnName Then
|
|
' Dim value As Object = row(column)
|
|
' Dim cellValue As String
|
|
|
|
' If column.DataType = GetType(Integer) OrElse column.DataType = GetType(Decimal) OrElse column.DataType = GetType(Double) OrElse column.DataType = GetType(Single) Then
|
|
|
|
' If value IsNot DBNull.Value AndAlso Decimal.TryParse(value.ToString(), numericValue) Then
|
|
|
|
' If numericValue <> 0 Then
|
|
' cellValue = numericValue.ToString("N2")
|
|
' Else
|
|
' cellValue = ""
|
|
' End If
|
|
' Else
|
|
' cellValue = ""
|
|
' End If
|
|
|
|
' html.Append($"<td style='padding:5px; text-align:right;'>{cellValue}</td>")
|
|
' Else
|
|
' cellValue = If(value?.ToString(), String.Empty)
|
|
' html.Append($"<td style='padding:5px; text-align:left;'>{cellValue}</td>")
|
|
' End If
|
|
' End If
|
|
' Next
|
|
|
|
' html.Append("</tr>")
|
|
' Next
|
|
|
|
' html.Append("</tbody>")
|
|
' html.Append("</table>")
|
|
' Return html.ToString()
|
|
'End Function
|
|
|
|
Private Function ReporteDiario(ByVal CveEmpresa As Integer, ByVal context As HttpContext) As Boolean
|
|
Dim Usuario As Usuario = ValidaUsuarioSistema(100, CveEmpresa)
|
|
Dim objGenerales As ClsGenerales = New ClsGenerales()
|
|
Dim respuesta As Boolean = True
|
|
Dim sbTablas As StringBuilder = New StringBuilder()
|
|
'sbTablas.Append($"<b><center>Reporte Diario {DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss")}</center><b><br><br>")
|
|
|
|
sbTablas.AppendLine($"<div style='font-family: Arial, sans-serif; margin: 20px; padding: 20px; background-color: #f4f4f4;'>
|
|
<div style='width: 90%; margin: auto; background: white; padding: 20px; border-radius: 10px; box-shadow: 0px 0px 10px 0px #aaa; '>
|
|
<table style='width:100%'>
|
|
<td style='width:33%'><img src='data:image/jpeg;base64,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' height='95px' width='210px'></td>
|
|
<td style='width:33%'><h1 style='text-align: center;'>Reporte Diario</h1></td>
|
|
<td style='width:33%;text-align:right'><img src='data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAWgBaAAD/4gKwSUNDX1BST0ZJTEUAAQEAAAKgbGNtcwQwAABtbnRyUkdCIFhZWiAH6QADAAEAAAARACRhY3NwTVNGVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWxjbXMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1kZXNjAAABIAAAAEBjcHJ0AAABYAAAADZ3dHB0AAABmAAAABRjaGFkAAABrAAAACxyWFlaAAAB2AAAABRiWFlaAAAB7AAAABRnWFlaAAACAAAAABRyVFJDAAACFAAAACBnVFJDAAACFAAAACBiVFJDAAACFAAAACBjaHJtAAACNAAAACRkbW5kAAACWAAAACRkbWRkAAACfAAAACRtbHVjAAAAAAAAAAEAAAAMZW5VUwAAACQAAAAcAEcASQBNAFAAIABiAHUAaQBsAHQALQBpAG4AIABzAFIARwBCbWx1YwAAAAAAAAABAAAADGVuVVMAAAAaAAAAHABQAHUAYgBsAGkAYwAgAEQAbwBtAGEAaQBuAABYWVogAAAAAAAA9tYAAQAAAADTLXNmMzIAAAAAAAEMQgAABd7///MlAAAHkwAA/ZD///uh///9ogAAA9wAAMBuWFlaIAAAAAAAAG+gAAA49QAAA5BYWVogAAAAAAAAJJ8AAA+EAAC2xFhZWiAAAAAAAABilwAAt4cAABjZcGFyYQAAAAAAAwAAAAJmZgAA8qcAAA1ZAAAT0AAACltjaHJtAAAAAAADAAAAAKPXAABUfAAATM0AAJmaAAAmZwAAD1xtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAgAAAAcAEcASQBNAFBtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAgAAAAcAHMAUgBHAEL/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAA4ADgDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9U64zxR8Q7fRne2tFW6vF4bJ+SM+/qfYfnR8Q/FB0WzW0tW23lwMlh1jTpn6noPxryXrXDXruL5Y7nqYXCqoueextXnifWdcuFje9lJkbasUTbFyTwMDH61of8K98Rbt3kDd/e89c/wA653TZ0ttQtZpDhI5UdiPQEE17B/wsTw//ANBD/wAgyf8AxNYUoxqXdSR2VpTo2VGGnp/keYWfibWNDumRL2YGNirRStvXIPIwc/pXoHhf4hway6W12q2t43C4PySH29D7H868u1KdLnULqaM5SSV3Un0JJFV+lZwrSpvR3RrUw8K0dVZn0bRXGfDzxQ2tWbWl0+68txwx6yJ6/UdD+FFetCSnHmR89UpypycJHnnizUm1TxFfTk5USFE/3V4H8s/jWPT5t3mvu+9uOfrTK8STu2z6qMVGKijuvB3gWx8RaN9ruJrlJPMZMRsoGBj1U1u/8Kp0n/nvff8Afaf/ABNcRofjjUfD9iba2WBot5f96hJBP0I9K9ur0KMadSO2qPGxM69Kd+bR7Hzk2NxwMDsCc0lFFeae2bHhPUm0vxFYz5wpkCPz/C3B/nn8KKyod3mpt+9uGPrRXRTqypqyOHEYaNaSkzV8WaadL8RX0BGFMhdOP4W5H88fhWPXrfxD8LnWrNby1XdeW45UdZE64+o6j8a8l6Uq0HCbNMNVVWmn1Roaf4d1LVITLaWkk8QO3eo4zXvteceBfFml6LoAgvboQzeazbfLZuOPQGui/wCFieH/APoIf+QZP/ia7KHJCN+bVnmYr2tWduXReR5PqHh3UtLhEt3aSQRE7d7DjNZ1ejeOvFml61oJgsroTTearbfLZeOfUCvOutcNSMYytF3R6tCc6kLzVma/hPTW1TxFYwAZUSB39lXk/wAsfjRXofw78Ltotm15crtvLgABT1jTrj6nqfwor0KFJKHvI8fFYhyqe49EdnXGeKPh5BrTPc2jLa3jcsCPkkPv6H3H5UUV0Sgpq0jjp1JU3zRZ55qXhPV9LYiexlKj/lpGN6/mP61leTJu27G3emOaKK8qpTUJWR9DQrSqxvI1NN8J6vqjAQ2MoU/8tJF2L+Z/pXofhf4eQaKyXN2y3V4vKgD5Iz7ep9z+VFFddGjC3MeZiMTUbcFojtKKKK7TzT//2Q==' height='56px' width='56px'></td>
|
|
</table>
|
|
<h2 style='text-align: center;'>{DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss")}</h2>")
|
|
|
|
If objGenerales.GetReporteDiario(CveEmpresa) Then
|
|
|
|
If objGenerales.DSResultados.Tables(0).Rows.Count > 0 AndAlso objGenerales.DSResultados.Tables(0).Columns.Count > 0 Then
|
|
sbTablas.AppendLine($"
|
|
<h3>VENTA ACUMULADA</h3>
|
|
<p><strong>Mes actual:</strong> ${objGenerales.DSResultados.Tables(0).Rows(0)(1).ToString.ToDecimal.ToString("###,###,###.00")}M.N.</p>
|
|
<p><strong>Año actual:</strong> ${objGenerales.DSResultados.Tables(0).Rows(0)(2).ToString.ToDecimal.ToString("###,###,###.00")}M.N.</p>
|
|
")
|
|
End If
|
|
|
|
sbTablas.AppendLine($"</br>")
|
|
sbTablas.AppendLine("</br>")
|
|
|
|
sbTablas.AppendLine(ConvertDataTableToHtml(objGenerales.DSResultados.Tables(4)))
|
|
sbTablas.AppendLine($"</br>")
|
|
sbTablas.AppendLine("</br>")
|
|
|
|
|
|
sbTablas.AppendLine($"
|
|
<table style='width:100%'>
|
|
<td style='width:50%'>{ConvertDataTableToHtml(objGenerales.DSResultados.Tables(1))}</td>
|
|
<td style='width:50%'>{ConvertDataTableToHtml(objGenerales.DSResultados.Tables(3))}</td>
|
|
</table>
|
|
")
|
|
|
|
sbTablas.AppendLine($"
|
|
<table style='width:100%'>
|
|
<td style='width:50%'>{ConvertDataTableToHtml(objGenerales.DSResultados.Tables(2))}</td>
|
|
<td style='width:50%'></td>
|
|
</table>
|
|
")
|
|
sbTablas.AppendLine($"</br>")
|
|
sbTablas.AppendLine("</br>")
|
|
|
|
'Dim TablaActual As Integer = 1
|
|
'For Each tabla As DataTable In objGenerales.DSResultados.Tables
|
|
' sbTablas.AppendLine(ConvertDataTableToHtml(tabla))
|
|
' TablaActual += 1
|
|
' sbTablas.Append("<br>")
|
|
' sbTablas.Append("<br>")
|
|
'Next
|
|
Else
|
|
respuesta = False
|
|
End If
|
|
|
|
sbTablas.AppendLine("</div></div>")
|
|
|
|
|
|
objGenerales.Dispose()
|
|
'MandaCorreoDiario
|
|
'Dim Correos As String = "hdiaz@grupodiaz.com.mx;libarra@grupodiaz.com.mx;jguerrero@grupodiaz.com.mx;contabilidad@grupodiaz.com.mx;cnazarit@yahoo.com;julian@adsistemas.mx;rene.molina@adssistemas.mx"
|
|
Dim Correos As String = " oscar.irigoyen@adssistemas.mx"
|
|
MandaCorreoDiario(sbTablas.ToString(), Correos, respuesta)
|
|
Return respuesta
|
|
End Function
|
|
|
|
Private Function ConvertDataTableToHtml(ByVal table As DataTable) As String
|
|
Dim html As StringBuilder = New StringBuilder()
|
|
Dim ColumnaTitulo As String = "Titulo"
|
|
html.Append("<table style='width: 100%; border-collapse: collapse; margin-top: 20px;'>")
|
|
If table.Columns(0).ColumnName = ColumnaTitulo AndAlso table.Rows.Count > 0 Then html.AppendFormat("<caption><h3 style=' background-color: #dbb19a;'>{0}</h3></caption>", table.Rows(0)(ColumnaTitulo))
|
|
html.Append("<tr>")
|
|
|
|
For Each column As DataColumn In table.Columns
|
|
If ColumnaTitulo <> column.ColumnName Then html.Append($"<th style='border: 1px solid #ddd; padding: 8px; text-align: center; color:#dbb19a; '>{column.ColumnName}</th>")
|
|
Next
|
|
|
|
html.Append("</thead>")
|
|
html.Append("<tbody>")
|
|
Dim numericValue As Decimal = Nothing
|
|
|
|
For Each row As DataRow In table.Rows
|
|
html.Append("<tr>")
|
|
|
|
For Each column As DataColumn In table.Columns
|
|
|
|
If ColumnaTitulo <> column.ColumnName Then
|
|
Dim value As Object = row(column)
|
|
Dim cellValue As String
|
|
|
|
If column.DataType = GetType(Integer) OrElse column.DataType = GetType(Decimal) OrElse column.DataType = GetType(Double) OrElse column.DataType = GetType(Single) Then
|
|
|
|
If value IsNot DBNull.Value AndAlso Decimal.TryParse(value.ToString(), numericValue) Then
|
|
|
|
If numericValue <> 0 Then
|
|
cellValue = numericValue.ToString("N2")
|
|
Else
|
|
cellValue = ""
|
|
End If
|
|
Else
|
|
cellValue = ""
|
|
End If
|
|
|
|
html.Append($"<td style='border: 1px solid #ddd; padding: 8px; text-align: center;'>{cellValue}</td>")
|
|
Else
|
|
cellValue = If(value?.ToString(), String.Empty)
|
|
html.Append($"<td style='border: 1px solid #ddd; padding: 8px; text-align: center;'>{cellValue}</td>")
|
|
End If
|
|
End If
|
|
Next
|
|
|
|
html.Append("</tr>")
|
|
Next
|
|
|
|
html.Append("</tbody>")
|
|
html.Append("</table>")
|
|
Return html.ToString()
|
|
End Function
|
|
|
|
Private Sub MandaCorreoDiario(ByVal Cuerpo As String, Correos As String, ByVal ProcesoOK As Boolean)
|
|
Try
|
|
Dim ListaArchivos As List(Of ClsSisMail.ArchivoMail) = New List(Of ClsSisMail.ArchivoMail)()
|
|
Dim Correo As ClsSisMail = New ClsSisMail()
|
|
Dim Para As String = Correos '"hdiaz@grupodiaz.com.mx;libarra@grupodiaz.com.mx;jguerrero@grupodiaz.com.mx;contabilidad@grupodiaz.com.mx;cnazarit@yahoo.com;julian@adsistemas.mx;rene.molina@adssistemas.mx"
|
|
Dim Asunto As String = If(ProcesoOK, $"Reporte Diario", "Reporte Diario Error")
|
|
Asunto = $"{Asunto} {DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss")}"
|
|
Correo.SendMail(ClsPaginas.EmpresaNotificaciones, Para, Asunto, Cuerpo, Archivos:=ListaArchivos)
|
|
Me.GuardaLog($"EjecutaReporteDiario: MandaCorreo() correo enviado. ")
|
|
Catch ex As Exception
|
|
Extensiones.ModExtensiones.GuardaLog(Nothing, $"Error Tareas Programadas 119 error enviar mail --> {ex.Message} ")
|
|
Me.GuardaLog($"EjecutaReporteDiario: MandaCorreo() Error {ex.StackTrace.ToString()}. ")
|
|
End Try
|
|
End Sub
|
|
End Class
|
|
#End Region
|
|
|