STF. plantilla mail venta

This commit is contained in:
2025-03-21 18:06:47 -07:00
parent 2abcaa8b82
commit a103e16cab
2 changed files with 213 additions and 102 deletions

View File

@@ -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

View File

@@ -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