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 If
End Sub 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 End Class

View File

@@ -36,7 +36,17 @@ Public Class E194 : Implements IHttpHandler, System.Web.SessionState.IRequiresSe
pFechaF = context.Request("FechaF") pFechaF = context.Request("FechaF")
End If 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 End If
Catch ex As Exception Catch ex As Exception
@@ -52,7 +62,20 @@ Public Class E194 : Implements IHttpHandler, System.Web.SessionState.IRequiresSe
End Sub 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 Retorno As Boolean = True
Dim JsonRetorno As New JObject() Dim JsonRetorno As New JObject()
Dim CveEmpresa As Integer = pCveEmpresa.ToEntero() Dim CveEmpresa As Integer = pCveEmpresa.ToEntero()
@@ -60,9 +83,8 @@ Public Class E194 : Implements IHttpHandler, System.Web.SessionState.IRequiresSe
GuardaLogFacturacion("- Inicio de facturación ") GuardaLogFacturacion("- Inicio de facturación ")
If CveEmpresa > 0 Then If CveEmpresa > 0 Then
GuardaLogFacturacion($"1.10 - CveE:{CveEmpresa}") GuardaLogFacturacion($"1.10 - CveE:{CveEmpresa}")
Dim Usuario = ValidaUsuarioSistema(CveEmpresa) Dim Usuario = ValidaUsuarioSistema(CveEmpresa, context)
Dim FechaI, FechaF As DateTime 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 If String.IsNullOrEmpty(pFechaI) AndAlso String.IsNullOrEmpty(pFechaF) Then
GuardaLogFacturacion("1.200") 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.CveVenta > 0 AndAlso Not Resp.TieneError Then
If Resp.SeTimbro OrElse Not Produccion Then If Resp.SeTimbro OrElse Not Produccion Then
EnviarCorreo(ObjFactura, UsuarioActual) EnviarCorreo(Resp.CveVenta, UsuarioActual)
End If End If
End If End If
@@ -223,7 +245,7 @@ Public Class E194 : Implements IHttpHandler, System.Web.SessionState.IRequiresSe
End Function End Function
#Region "V A L I D A - D A T O S" #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 UsuarioActual As Usuario = Nothing
Dim NombreCadena As String = ClsPaginas.GlobalNombreCadenaConexion(CveEmpresa) Dim NombreCadena As String = ClsPaginas.GlobalNombreCadenaConexion(CveEmpresa)
Dim ObjUsuarios As New ClsSisUsuarioAutenticacion(NombreCadena:=NombreCadena) 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 Usuario = ObjUsuarios.DtResultados.Rows(0)("Usuario").ToString()
Dim Contrasenia = ObjUsuarios.DtResultados.Rows(0)("Contraseña").ToString() Dim Contrasenia = ObjUsuarios.DtResultados.Rows(0)("Contraseña").ToString()
UsuarioActual = ObjUsuarios.ValidaUsuario(Usuario, Contrasenia, CveEmpresa:=CveEmpresa) 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 End If
ObjUsuarios.Dispose() ObjUsuarios.Dispose()
Return UsuarioActual Return UsuarioActual
End Function End Function
Private Sub CreaObjetoEmpresa(ByRef UsuarioActual As Usuario) Private Sub CreaObjetoEmpresa(ByRef UsuarioActual As Usuario)
@@ -758,8 +785,9 @@ Public Class E194 : Implements IHttpHandler, System.Web.SessionState.IRequiresSe
End Function End Function
#End Region #End Region
#Region "E N V I O - C O R R E O" #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 Try
Dim ObjFactura As New Modelos.Factura(UsuarioActual, CveVenta, UsuarioActual.CveEmpresa, CargaDatosCliente:=True)
Dim Hilo As New System.Threading.Thread(Sub() EnviarCorreoFactura(Objfactura, UsuarioActual)) Dim Hilo As New System.Threading.Thread(Sub() EnviarCorreoFactura(Objfactura, UsuarioActual))
Hilo.Start() Hilo.Start()
Catch ex As Exception Catch ex As Exception
@@ -790,115 +818,94 @@ Public Class E194 : Implements IHttpHandler, System.Web.SessionState.IRequiresSe
End Function End Function
Private Sub EnviarCorreoFactura(ObjFactura As Modelos.Factura, UsuarioActual As Usuario) Private Sub EnviarCorreoFactura(ObjFactura As Modelos.Factura, UsuarioActual As Usuario)
Dim ObjMail As New ClsSisMail() If ObjFactura.CveVenta > 0 Then
Dim ObjVentas As New ClsVentas Dim ObjMail As New ClsSisMail()
Dim ObjCliente As New ClsClientes Dim ObjVentas As New ClsVentas
Dim Mail As String = "" Dim ObjCliente As New ClsClientes
Dim MailCC As String = "" Dim Mail As String = ""
Dim MailCC As String = ""
Dim ArchivoXML As String = "" Dim ArchivoXML As String = ""
Dim ArchivoPDF As String = "" Dim ArchivoPDF As String = ""
Dim ArchivoPDFBytes As Byte() = Nothing Dim ArchivoPDFBytes As Byte() = Nothing
Dim ExistePDF As Boolean = False 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
Try Try
Dim Asunto As String = String.Empty ArchivoXML = String.Format("{0}XML\{1}\{2}.xml", UsuarioActual.Empresa.Ruta, ObjFactura.TipoDocto, ObjFactura.SerieFolio)
Dim Cuerpo As String = String.Empty ArchivoPDF = String.Format("{0}PDF\{1}\{2}.pdf", UsuarioActual.Empresa.Ruta, ObjFactura.TipoDocto, ObjFactura.SerieFolio)
Dim ResultadoMail As Integer = 0
Dim TipoComprobante As String = "" If Not File.Exists(ArchivoPDF) Then
ArchivoPDFBytes = DescargarFactura(ObjFactura.CveVenta, ObjFactura.CveEmpresa)
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})
Else Else
LSRutasMail.Add(New ClsSisMail.ArchivoMail With {.ArchivoBinario = ArchivoPDFBytes, .NombreArchivo = String.Format("{0}.pdf", ObjFactura.SerieFolio)}) ExistePDF = True
End If End If
Dim DisplayName As String = "" If ObjFactura.CveClienteSucursal > 0 Then
If UsuarioActual.CveEmpresa = 119 Then DisplayName = "Facturación Agroquímicos JAM" If ObjCliente.GetSucursales(ObjFactura.CveCliente, ObjFactura.CveClienteSucursal) Then
If ObjCliente.DtResultados.Rows.Count > 0 Then
If ObjMail.SendMail(UsuarioActual.Empresa, Mail, Asunto, Cuerpo, If(String.IsNullOrEmpty(MailCC), "", MailCC), LSRutasMail, Displayname:=DisplayName) Then Dim Correo As String = ObjCliente.DtResultados.Rows(0)("Correo").ToString
ResultadoMail = 1 If Correo.Trim.Length > 0 Then
Mail = Correo
End If
MailCC = ObjCliente.NotificarA
End If
End If
Else Else
GuardaLogFacturacion($"No se envio el correo {Mail}, {Asunto}, {Cuerpo}, {MailCC},") If ObjCliente.GetClientes(ObjFactura.CveCliente, "-1", "-1", "-1", "-1", "-1", "-1", -1, UsuarioActual.CveEmpresa, TipoCliente:=-1) Then
GuardaLogFacturacion($"Ruta XML {ArchivoXML}") If ObjCliente.DtResultados.Rows.Count > 0 Then
ResultadoMail = 3 Mail = If(ObjFactura.TipoDocto = "Cot", ObjCliente.MailCotizacion, ObjCliente.Mail)
End If
End If
End If End If
ObjVentas.UpdateVentaMail(ResultadoMail, ObjFactura.CveVenta) 'Mail = "japmx95@gmail.com"
Catch ex As Exception Catch ex As Exception
OnError("Ocurrió error al mandar el Mail", ex) OnError("Ocurrió un error al obtener el correo", ex)
GuardaLogFacturacion(ex.ToString())
ObjVentas.UpdateVentaMail(3, ObjFactura.CveVenta)
Finally Finally
ObjVentas.Dispose() ObjCliente.Dispose()
If ObjFactura IsNot Nothing Then
ObjFactura.Dispose()
End If
End Try 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 If
End Sub End Sub
#End Region #End Region