diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index 7c52cd248..7208a8403 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -11400,5 +11400,109 @@ Public Class ClsPaginas End If End Sub + + Public Shared Function PlantillaMailVenta(ObjFactura As Modelos.Factura, UsuarioActual As Usuario) As MCuerpoFacturaMail + Dim Retorno As New MCuerpoFacturaMail() + Try + Dim Asunto As String = String.Empty + Dim Cuerpo As String = String.Empty + Dim TipoComprobante As String = "" + + Dim TipoDocto = ObjFactura.TipoDocto + + If TipoDocto = "Ing" Then TipoComprobante = "Factura" + If TipoDocto = "Egs" Then TipoComprobante = "Nota de Crédito" + If TipoDocto = "Dev" Then TipoComprobante = "Nota de Devolución" + If TipoDocto = "Rem" Then TipoComprobante = "Remisión" + If TipoDocto = "Cot" Then TipoComprobante = "Cotización" + If TipoDocto = "Ant" Then TipoComprobante = "Anticipo" + + + If TipoDocto = "Cot" Then + If UsuarioActual.Empresa.PlantillaMailVentaCotizacion.Trim.Length > 0 Then + Cuerpo = UsuarioActual.Empresa.PlantillaMailVentaCotizacion + Cuerpo = Cuerpo.Replace("{""NombreEmpresa""}", UsuarioActual.Empresa.Empresa) + Cuerpo = Cuerpo.Replace("{""NombreCliente""}", ObjFactura.Cliente.NombreComercial) + Cuerpo = Cuerpo.Replace("{""TipoDocumento""}", TipoComprobante) + Cuerpo = Cuerpo.Replace("{""Fecha""}", ObjFactura.Fecha.ToString("dd/MM/yyyy")) + Cuerpo = Cuerpo.Replace("{""Total""}", ObjFactura.Total.FormatoNumero(2)) + Cuerpo = Cuerpo.Replace("{""FechaVencimiento""}", ObjFactura.FechaVencimiento.ToString("dd/MM/yyyy")) + Cuerpo = Cuerpo.Replace("{""SerieFolio""}", ObjFactura.SerieFolio) + Cuerpo = Cuerpo.Replace("{""Vigencia""}", ObjFactura.Vigencia.ToString("dd/MM/yyyy")) + Cuerpo = Cuerpo.Replace("{""AtencionA""}", ObjFactura.AtencionA) + Cuerpo = Cuerpo.Replace("{""Sucursal""}", ObjFactura.SubProyecto.SubProyecto) + Cuerpo = Cuerpo.Replace("{""DescripcionVenta""}", ObjFactura.DescripcionVenta) + End If + + If UsuarioActual.Empresa.AsuntoPlantillaMailVentaCotizacion.Trim.Length > 0 Then + Asunto = UsuarioActual.Empresa.AsuntoPlantillaMailVentaCotizacion + Asunto = Asunto.Replace("{""NombreEmpresa""}", UsuarioActual.Empresa.Empresa) + Asunto = Asunto.Replace("{""NombreCliente""}", ObjFactura.Cliente.NombreComercial) + Asunto = Asunto.Replace("{""TipoDocumento""}", TipoComprobante) + Asunto = Asunto.Replace("{""Fecha""}", ObjFactura.Fecha.ToString("dd/MM/yyyy")) + Asunto = Asunto.Replace("{""Total""}", ObjFactura.Total.FormatoNumero(2)) + Asunto = Asunto.Replace("{""FechaVencimiento""}", ObjFactura.FechaVencimiento.ToString("dd/MM/yyyy")) + Asunto = Asunto.Replace("{""SerieFolio""}", ObjFactura.SerieFolio) + Asunto = Asunto.Replace("{""Vigencia""}", ObjFactura.Vigencia.ToString("dd/MM/yyyy")) + Asunto = Asunto.Replace("{""AtencionA""}", ObjFactura.AtencionA) + Asunto = Asunto.Replace("{""Sucursal""}", ObjFactura.SubProyecto.SubProyecto) + Asunto = Asunto.Replace("{""DescripcionVenta""}", ObjFactura.DescripcionVenta) + End If + Else + If UsuarioActual.Empresa.PlantillaMailVenta.Trim.Length > 0 Then + Cuerpo = UsuarioActual.Empresa.PlantillaMailVenta + Cuerpo = Cuerpo.Replace("{""NombreEmpresa""}", UsuarioActual.Empresa.Empresa) + Cuerpo = Cuerpo.Replace("{""NombreCliente""}", ObjFactura.Cliente.NombreComercial) + Cuerpo = Cuerpo.Replace("{""TipoDocumento""}", TipoComprobante) + Cuerpo = Cuerpo.Replace("{""Fecha""}", ObjFactura.Fecha.ToString("dd/MM/yyyy")) + Cuerpo = Cuerpo.Replace("{""Total""}", ObjFactura.Total.FormatoNumero(2)) + Cuerpo = Cuerpo.Replace("{""FechaVencimiento""}", ObjFactura.FechaVencimiento.ToString("dd/MM/yyyy")) + Cuerpo = Cuerpo.Replace("{""SerieFolio""}", ObjFactura.SerieFolio) + Cuerpo = Cuerpo.Replace("{""AtencionA""}", ObjFactura.AtencionA) + Cuerpo = Cuerpo.Replace("{""Sucursal""}", ObjFactura.SubProyecto.SubProyecto) + Cuerpo = Cuerpo.Replace("{""DescripcionVenta""}", ObjFactura.DescripcionVenta) + End If + + If UsuarioActual.Empresa.AsuntoPlantillaMailVenta.Trim.Length > 0 Then + Asunto = UsuarioActual.Empresa.AsuntoPlantillaMailVenta + Asunto = Asunto.Replace("{""NombreEmpresa""}", UsuarioActual.Empresa.Empresa) + Asunto = Asunto.Replace("{""NombreCliente""}", ObjFactura.Cliente.NombreComercial) + Asunto = Asunto.Replace("{""TipoDocumento""}", TipoComprobante) + Asunto = Asunto.Replace("{""Fecha""}", ObjFactura.Fecha.ToString("dd/MM/yyyy")) + Asunto = Asunto.Replace("{""Total""}", ObjFactura.Total.FormatoNumero(2)) + Asunto = Asunto.Replace("{""FechaVencimiento""}", ObjFactura.FechaVencimiento.ToString("dd/MM/yyyy")) + Asunto = Asunto.Replace("{""SerieFolio""}", ObjFactura.SerieFolio) + Asunto = Asunto.Replace("{""Vigencia""}", ObjFactura.Vigencia.ToString("dd/MM/yyyy")) + Asunto = Asunto.Replace("{""AtencionA""}", ObjFactura.AtencionA) + Asunto = Asunto.Replace("{""Sucursal""}", ObjFactura.SubProyecto.SubProyecto) + Asunto = Asunto.Replace("{""DescripcionVenta""}", ObjFactura.DescripcionVenta) + End If + End If + + Dim DisplayName As String = "" + If UsuarioActual.CveEmpresa = 119 Then DisplayName = "Facturación Agroquímicos JAM" + + Retorno.DisplayName = DisplayName + Retorno.Cuerpo = Cuerpo + Retorno.Asunto = Asunto + + Catch ex As Exception + + End Try + + Return Retorno + End Function + Public Class MCuerpoFacturaMail + Public Sub New() + Asunto = "" + Cuerpo = "" + DisplayName = "" + Archivos = New List(Of ClsSisMail.ArchivoMail) + End Sub + Public Property Asunto As String + Public Property Cuerpo As String + Public Property DisplayName As String + Public Property Archivos As List(Of ClsSisMail.ArchivoMail) + End Class End Class diff --git a/Ashx/E194.ashx b/Ashx/E194.ashx index ffceffa11..01ff5c8d4 100644 --- a/Ashx/E194.ashx +++ b/Ashx/E194.ashx @@ -36,7 +36,17 @@ Public Class E194 : Implements IHttpHandler, System.Web.SessionState.IRequiresSe pFechaF = context.Request("FechaF") End If - Retorno = IniciaFacturacionMasiva(CveEmpresaFacturar.ToString, pFechaI, pFechaF) + Retorno = IniciaFacturacionMasiva(context, CveEmpresaFacturar.ToString, pFechaI, pFechaF) + End If + + If Metodo = "EnviarMailDemo" Then + Dim pFechaI As String = "" + Dim pFechaF As String = "" + + If context.Request("CveVenta") IsNot Nothing Then + Dim CveVenta = context.Request("CveVenta").ToString().ToEntero() + Retorno = EnviarMailDemo(context, CveEmpresaFacturar.ToString, CveVenta) + End If End If Catch ex As Exception @@ -52,7 +62,20 @@ Public Class E194 : Implements IHttpHandler, System.Web.SessionState.IRequiresSe End Sub - Private Function IniciaFacturacionMasiva(pCveEmpresa As String, pFechaI As String, pFechaF As String) As Boolean + Private Function EnviarMailDemo(ByVal context As HttpContext, pCveEmpresa As String, CveVenta As Integer) As Boolean + Dim Retorno As Boolean = True + Dim CveEmpresa As Integer = pCveEmpresa.ToEntero() + + If CveEmpresa > 0 Then + GuardaLogFacturacion($"EnviarMail - CveE:{CveEmpresa}") + Dim Usuario = ValidaUsuarioSistema(CveEmpresa, context) + EnviarCorreo(CveVenta, Usuario) + End If + + Return Retorno + End Function + + Private Function IniciaFacturacionMasiva(ByVal context As HttpContext, pCveEmpresa As String, pFechaI As String, pFechaF As String) As Boolean Dim Retorno As Boolean = True Dim JsonRetorno As New JObject() Dim CveEmpresa As Integer = pCveEmpresa.ToEntero() @@ -60,9 +83,8 @@ Public Class E194 : Implements IHttpHandler, System.Web.SessionState.IRequiresSe GuardaLogFacturacion("- Inicio de facturación ") If CveEmpresa > 0 Then GuardaLogFacturacion($"1.10 - CveE:{CveEmpresa}") - Dim Usuario = ValidaUsuarioSistema(CveEmpresa) + Dim Usuario = ValidaUsuarioSistema(CveEmpresa, context) Dim FechaI, FechaF As DateTime - 'EnviarCorreoFactura(New Modelos.Factura(Usuario, 844966, 1, context.ModExtensiones.DirectorioBaseEmpresas), Usuario) If String.IsNullOrEmpty(pFechaI) AndAlso String.IsNullOrEmpty(pFechaF) Then GuardaLogFacturacion("1.200") @@ -156,7 +178,7 @@ Public Class E194 : Implements IHttpHandler, System.Web.SessionState.IRequiresSe If Resp.CveVenta > 0 AndAlso Not Resp.TieneError Then If Resp.SeTimbro OrElse Not Produccion Then - EnviarCorreo(ObjFactura, UsuarioActual) + EnviarCorreo(Resp.CveVenta, UsuarioActual) End If End If @@ -223,7 +245,7 @@ Public Class E194 : Implements IHttpHandler, System.Web.SessionState.IRequiresSe End Function #Region "V A L I D A - D A T O S" - Private Function ValidaUsuarioSistema(CveEmpresa As Integer) As Usuario + Private Function ValidaUsuarioSistema(CveEmpresa As Integer, ByVal context As HttpContext) As Usuario Dim UsuarioActual As Usuario = Nothing Dim NombreCadena As String = ClsPaginas.GlobalNombreCadenaConexion(CveEmpresa) Dim ObjUsuarios As New ClsSisUsuarioAutenticacion(NombreCadena:=NombreCadena) @@ -232,8 +254,13 @@ Public Class E194 : Implements IHttpHandler, System.Web.SessionState.IRequiresSe Dim Usuario = ObjUsuarios.DtResultados.Rows(0)("Usuario").ToString() Dim Contrasenia = ObjUsuarios.DtResultados.Rows(0)("Contraseña").ToString() UsuarioActual = ObjUsuarios.ValidaUsuario(Usuario, Contrasenia, CveEmpresa:=CveEmpresa) + If UsuarioActual IsNot Nothing AndAlso context.Session("UsuarioSIG") Is Nothing Then + context.Session("UsuarioSIG") = UsuarioActual + End If End If ObjUsuarios.Dispose() + + Return UsuarioActual End Function Private Sub CreaObjetoEmpresa(ByRef UsuarioActual As Usuario) @@ -758,8 +785,9 @@ Public Class E194 : Implements IHttpHandler, System.Web.SessionState.IRequiresSe End Function #End Region #Region "E N V I O - C O R R E O" - Private Sub EnviarCorreo(Objfactura As Modelos.Factura, UsuarioActual As Usuario) + Private Sub EnviarCorreo(CveVenta As Integer, UsuarioActual As Usuario) Try + Dim ObjFactura As New Modelos.Factura(UsuarioActual, CveVenta, UsuarioActual.CveEmpresa, CargaDatosCliente:=True) Dim Hilo As New System.Threading.Thread(Sub() EnviarCorreoFactura(Objfactura, UsuarioActual)) Hilo.Start() Catch ex As Exception @@ -790,115 +818,94 @@ Public Class E194 : Implements IHttpHandler, System.Web.SessionState.IRequiresSe End Function Private Sub EnviarCorreoFactura(ObjFactura As Modelos.Factura, UsuarioActual As Usuario) - Dim ObjMail As New ClsSisMail() - Dim ObjVentas As New ClsVentas - Dim ObjCliente As New ClsClientes - Dim Mail As String = "" - Dim MailCC As String = "" + If ObjFactura.CveVenta > 0 Then + Dim ObjMail As New ClsSisMail() + Dim ObjVentas As New ClsVentas + Dim ObjCliente As New ClsClientes + Dim Mail As String = "" + Dim MailCC As String = "" - Dim ArchivoXML As String = "" - Dim ArchivoPDF As String = "" - Dim ArchivoPDFBytes As Byte() = Nothing - Dim ExistePDF As Boolean = False - Try - ArchivoXML = String.Format("{0}XML\{1}\{2}.xml", UsuarioActual.Empresa.Ruta, ObjFactura.TipoDocto, ObjFactura.SerieFolio) - ArchivoPDF = String.Format("{0}PDF\{1}\{2}.pdf", UsuarioActual.Empresa.Ruta, ObjFactura.TipoDocto, ObjFactura.SerieFolio) - - If Not File.Exists(ArchivoPDF) Then - ArchivoPDFBytes = DescargarFactura(ObjFactura.CveVenta, ObjFactura.CveEmpresa) - Else - ExistePDF = True - End If - - If ObjFactura.CveClienteSucursal > 0 Then - If ObjCliente.GetSucursales(ObjFactura.CveCliente, ObjFactura.CveClienteSucursal) Then - If ObjCliente.DtResultados.Rows.Count > 0 Then - Dim Correo As String = ObjCliente.DtResultados.Rows(0)("Correo").ToString - If Correo.Trim.Length > 0 Then - Mail = Correo - End If - MailCC = ObjCliente.NotificarA - End If - End If - Else - If ObjCliente.GetClientes(ObjFactura.CveCliente, "-1", "-1", "-1", "-1", "-1", "-1", -1, UsuarioActual.CveEmpresa, TipoCliente:=-1) Then - If ObjCliente.DtResultados.Rows.Count > 0 Then - Mail = If(ObjFactura.TipoDocto = "Cot", ObjCliente.MailCotizacion, ObjCliente.Mail) - End If - End If - End If - - Catch ex As Exception - OnError("Ocurrió un error al obtener el correo", ex) - Finally - ObjCliente.Dispose() - End Try - - If Not String.IsNullOrEmpty(Mail) Then + Dim ArchivoXML As String = "" + Dim ArchivoPDF As String = "" + Dim ArchivoPDFBytes As Byte() = Nothing + Dim ExistePDF As Boolean = False Try - Dim Asunto As String = String.Empty - Dim Cuerpo As String = String.Empty - Dim ResultadoMail As Integer = 0 + ArchivoXML = String.Format("{0}XML\{1}\{2}.xml", UsuarioActual.Empresa.Ruta, ObjFactura.TipoDocto, ObjFactura.SerieFolio) + ArchivoPDF = String.Format("{0}PDF\{1}\{2}.pdf", UsuarioActual.Empresa.Ruta, ObjFactura.TipoDocto, ObjFactura.SerieFolio) - Dim TipoComprobante As String = "" - - If ObjFactura.TipoDocto = "Ing" Then TipoComprobante = "Factura" - If ObjFactura.TipoDocto = "Egs" Then TipoComprobante = "Nota de Crédito" - If ObjFactura.TipoDocto = "Dev" Then TipoComprobante = "Nota de Devolución" - If ObjFactura.TipoDocto = "Rem" Then TipoComprobante = "Remisión" - If ObjFactura.TipoDocto = "Cot" Then TipoComprobante = "Cotización" - If ObjFactura.TipoDocto = "Ant" Then TipoComprobante = "Anticipo" - - If UsuarioActual.Empresa.PlantillaMailVenta.Trim.Length > 0 Then - Cuerpo = UsuarioActual.Empresa.PlantillaMailVenta - Cuerpo = Cuerpo.Replace("{""NombreEmpresa""}", UsuarioActual.Empresa.Empresa) - Cuerpo = Cuerpo.Replace("{""NombreCliente""}", ObjFactura.Cliente.NombreComercial) - Cuerpo = Cuerpo.Replace("{""TipoDocumento""}", TipoComprobante) - Cuerpo = Cuerpo.Replace("{""Fecha""}", ObjFactura.Fecha.ToString("dd/MM/yyyy")) - Cuerpo = Cuerpo.Replace("{""Total""}", ObjFactura.Total.ToString) - Cuerpo = Cuerpo.Replace("{""FechaVencimiento""}", ObjFactura.FechaVencimiento.ToString("dd/MM/yyyy")) - Cuerpo = Cuerpo.Replace("{""SerieFolio""}", ObjFactura.SerieFolio) - End If - - If UsuarioActual.Empresa.AsuntoPlantillaMailVenta.Trim.Length > 0 Then - Asunto = UsuarioActual.Empresa.AsuntoPlantillaMailVenta - Asunto = Asunto.Replace("{""TipoDocumento""}", TipoComprobante) - Asunto = Asunto.Replace("{""Sucursal""}", ObjFactura.SubProyecto.SubProyecto) - Asunto = Asunto.Replace("{""SerieFolio""}", ObjFactura.SerieFolio) - End If - - Dim LSRutasMail As New List(Of ClsSisMail.ArchivoMail) - LSRutasMail.Add(New ClsSisMail.ArchivoMail With {.Ruta = ArchivoXML}) - If ExistePDF Then - LSRutasMail.Add(New ClsSisMail.ArchivoMail With {.Ruta = ArchivoPDF}) + If Not File.Exists(ArchivoPDF) Then + ArchivoPDFBytes = DescargarFactura(ObjFactura.CveVenta, ObjFactura.CveEmpresa) Else - LSRutasMail.Add(New ClsSisMail.ArchivoMail With {.ArchivoBinario = ArchivoPDFBytes, .NombreArchivo = String.Format("{0}.pdf", ObjFactura.SerieFolio)}) + ExistePDF = True End If - Dim DisplayName As String = "" - If UsuarioActual.CveEmpresa = 119 Then DisplayName = "Facturación Agroquímicos JAM" - - If ObjMail.SendMail(UsuarioActual.Empresa, Mail, Asunto, Cuerpo, If(String.IsNullOrEmpty(MailCC), "", MailCC), LSRutasMail, Displayname:=DisplayName) Then - ResultadoMail = 1 + If ObjFactura.CveClienteSucursal > 0 Then + If ObjCliente.GetSucursales(ObjFactura.CveCliente, ObjFactura.CveClienteSucursal) Then + If ObjCliente.DtResultados.Rows.Count > 0 Then + Dim Correo As String = ObjCliente.DtResultados.Rows(0)("Correo").ToString + If Correo.Trim.Length > 0 Then + Mail = Correo + End If + MailCC = ObjCliente.NotificarA + End If + End If Else - GuardaLogFacturacion($"No se envio el correo {Mail}, {Asunto}, {Cuerpo}, {MailCC},") - GuardaLogFacturacion($"Ruta XML {ArchivoXML}") - ResultadoMail = 3 + If ObjCliente.GetClientes(ObjFactura.CveCliente, "-1", "-1", "-1", "-1", "-1", "-1", -1, UsuarioActual.CveEmpresa, TipoCliente:=-1) Then + If ObjCliente.DtResultados.Rows.Count > 0 Then + Mail = If(ObjFactura.TipoDocto = "Cot", ObjCliente.MailCotizacion, ObjCliente.Mail) + End If + End If End If - ObjVentas.UpdateVentaMail(ResultadoMail, ObjFactura.CveVenta) + 'Mail = "japmx95@gmail.com" Catch ex As Exception - OnError("Ocurrió error al mandar el Mail", ex) - GuardaLogFacturacion(ex.ToString()) - ObjVentas.UpdateVentaMail(3, ObjFactura.CveVenta) + OnError("Ocurrió un error al obtener el correo", ex) Finally - ObjVentas.Dispose() - If ObjFactura IsNot Nothing Then - ObjFactura.Dispose() - End If + ObjCliente.Dispose() End Try + + If Not String.IsNullOrEmpty(Mail) Then + Try + Dim ObjCuerpoMail = ClsPaginas.PlantillaMailVenta(ObjFactura, UsuarioActual) + + Dim Asunto As String = ObjCuerpoMail.Asunto + Dim Cuerpo As String = ObjCuerpoMail.Cuerpo + Dim ResultadoMail As Integer = 0 + Dim LSRutasMail = ObjCuerpoMail.Archivos + + LSRutasMail.Add(New ClsSisMail.ArchivoMail With {.Ruta = ArchivoXML}) + If ExistePDF Then + LSRutasMail.Add(New ClsSisMail.ArchivoMail With {.Ruta = ArchivoPDF}) + Else + LSRutasMail.Add(New ClsSisMail.ArchivoMail With {.ArchivoBinario = ArchivoPDFBytes, .NombreArchivo = String.Format("{0}.pdf", ObjFactura.SerieFolio)}) + End If + + Dim DisplayName As String = ObjCuerpoMail.DisplayName + + If ObjMail.SendMail(UsuarioActual.Empresa, Mail, Asunto, Cuerpo, If(String.IsNullOrEmpty(MailCC), "", MailCC), LSRutasMail, Displayname:=DisplayName) Then + ResultadoMail = 1 + Else + GuardaLogFacturacion($"No se envio el correo {Mail}, {Asunto}, {Cuerpo}, {MailCC},") + GuardaLogFacturacion($"Ruta XML {ArchivoXML}") + ResultadoMail = 3 + End If + + ObjVentas.UpdateVentaMail(ResultadoMail, ObjFactura.CveVenta) + + Catch ex As Exception + OnError("Ocurrió error al mandar el Mail", ex) + GuardaLogFacturacion(ex.ToString()) + ObjVentas.UpdateVentaMail(3, ObjFactura.CveVenta) + Finally + ObjVentas.Dispose() + If ObjFactura IsNot Nothing Then + ObjFactura.Dispose() + End If + End Try + End If End If + End Sub #End Region