From f6d959197ddc499b47f315e09756e8af524a65a1 Mon Sep 17 00:00:00 2001 From: JORGE LUIS CAUDILLO ESPARZA Date: Fri, 26 May 2023 06:55:28 -0700 Subject: [PATCH 1/3] --- App_Code/ClsNominas.vb | 23 ++++++++++++++++ App_Code/ClsPaginas.vb | 62 ++++++++++++++++++++++++++---------------- Nomina/Nomina.aspx.cs | 4 +-- 3 files changed, 63 insertions(+), 26 deletions(-) diff --git a/App_Code/ClsNominas.vb b/App_Code/ClsNominas.vb index a2a76e664..4bfc60525 100644 --- a/App_Code/ClsNominas.vb +++ b/App_Code/ClsNominas.vb @@ -1008,6 +1008,29 @@ Public Class ClsNominas Return Retorno End Function + Public Function GetNom_NominasDataXML(CveNomina As Integer, CvePersonal As Integer, CvePeriodo As Integer, CveNominaTipo As Integer, CveEmpresa As Integer) As Boolean + Dim Retorno As Boolean = False + DataAdapter("PA_Nom_NominasDataXMLGet") + + With SqlAdapter.SelectCommand.Parameters + .Add("CveNomina", SqlDbType.Int).Value = CveNomina + .Add("CvePersonal", SqlDbType.Int).Value = CvePersonal + .Add("CvePeriodo", SqlDbType.Int).Value = CvePeriodo + .Add("CveNominaTipo", SqlDbType.Int).Value = CveNominaTipo + .Add("CveEmpresa", SqlDbType.Int).Value = CveEmpresa + End With + + Try + SqlAdapter.Fill(Data) + + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al obtener La Nómina.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + End Try + + Return Retorno + End Function + Public Function AutorizaNom_Nominas(CvePersonal As Integer, CvePeriodo As Integer, Optional Autorizado As Boolean = True) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Nom_Nominas_Autoriza") diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index 7bfd0a318..753316592 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -4652,7 +4652,7 @@ Public Class ClsPaginas bdir = RutaEmpresa.Replace($"{CveEmpresa}/", "") End If RutaReporte.Replace("/", "\") - If Not RutaReporte.ToUpper().StartsWith(bdir.ToUpper()) Then + If Not RutaReporte.ToUpper().StartsWith(bdir.ToUpper()) Then RutaReporte = String.Format("{0}{1}", bdir, RutaReporte) End If If EsProduccion Then @@ -6720,6 +6720,10 @@ Public Class ClsPaginas DTPercepciones = Nothing DTDeducciones = Nothing End If + Dim SalarioDiario As String + Dim SDI As String + Dim Departamento As String + Dim Puesto As String 'DATOS DEL EMPLEADO If ObjPersonal.GetPersonal(CvePersonal, CveEmpresa) Then RptParametro.Add(New ReportParameter("NoEmpleado", ObjPersonal.Codigo)) @@ -6729,39 +6733,49 @@ Public Class ClsPaginas RptParametro.Add(New ReportParameter("Regimen", ObjPersonal.RegimenContratacion)) RptParametro.Add(New ReportParameter("RiesgoPuesto", ObjPersonal.RiesgoPuesto)) RptParametro.Add(New ReportParameter("NSS", ObjPersonal.NumeroSS)) - RptParametro.Add(New ReportParameter("Departamento", ObjPersonal.Departamento)) - RptParametro.Add(New ReportParameter("Puesto", ObjPersonal.Puesto.ToString())) + Departamento = ObjPersonal.Departamento + Puesto = ObjPersonal.Puesto.ToString() RptParametro.Add(New ReportParameter("FechaIngreso", ObjPersonal.FechaIngreso.ToString("dd/MM/yyyy"))) RptParametro.Add(New ReportParameter("Contrato", ObjPersonal.TipoContrato.ToString)) RptParametro.Add(New ReportParameter("Jornada", ObjPersonal.Jornada)) RptParametro.Add(New ReportParameter("Periodo", ObjNomina.TipoPeriodo)) - RptParametro.Add(New ReportParameter("SalarioBase", ObjPersonal.SalarioDiario.ToString)) - RptParametro.Add(New ReportParameter("SalarioDiarioInt", ObjPersonal.SDI.ToString)) RptParametro.Add(New ReportParameter("Banco", ObjPersonal.Banco)) RptParametro.Add(New ReportParameter("CLABE", ObjPersonal.CLABE)) - + SalarioDiario = ObjPersonal.SalarioDiario.ToString + SDI = ObjPersonal.SDI.ToString + If ObjNomina.GetNom_NominasDataXML(CveNomina, CvePersonal, CvePeriodo, 1, CveEmpresa) AndAlso ObjNomina.DtResultados.Rows.Count > 0 Then + Dim drow As DataRow = ObjNomina.DtResultados.Rows(0) + SalarioDiario = drow("SalarioDiario").ToString() + SDI = drow("NomRSalarioDiarioIntegrado").ToString() + Departamento = drow("NomRDepartamento").ToString() + Puesto = drow("NomRPuesto").ToString() + End If + RptParametro.Add(New ReportParameter("SalarioBase", SalarioDiario)) + RptParametro.Add(New ReportParameter("SalarioDiarioInt", SDI)) + RptParametro.Add(New ReportParameter("Departamento", Departamento)) + RptParametro.Add(New ReportParameter("Puesto", Puesto)) 'DATOS NOMINA If ObjNomina.GetNom_Nominas(CveNomina, CvePersonal, CvePeriodo, 1, CveEmpresa) Then - RptParametro.Add(New ReportParameter("ReciboNomina", ObjNomina.Folio.ToString)) - RptParametro.Add(New ReportParameter("Serie", ObjNomina.Serie)) - RptParametro.Add(New ReportParameter("Fecha", ObjNomina.Fecha.ToString)) - RptParametro.Add(New ReportParameter("Periodo", ObjNomina.TipoPeriodo)) - RptParametro.Add(New ReportParameter("DiasPagados", ObjNomina.DiasPagados.ToString)) - RptParametro.Add(New ReportParameter("MetodoPago", ObjNomina.MetodoPago)) '"""PUE"" (Pago en una sola exhibición)" - RptParametro.Add(New ReportParameter("FormaPago", """99"" (Por definir)")) - RptParametro.Add(New ReportParameter("Cantidad", "1")) - RptParametro.Add(New ReportParameter("Unidad", "ACT")) - RptParametro.Add(New ReportParameter("Descripcion", "PAGO DE NÓMINA")) - RptParametro.Add(New ReportParameter("Total", If(indemnizacion, ajusteindemnizacion, ObjNomina.Total - ajusteindemnizacion).ToString())) - Dim CBB As New ClbNegBICFDv3_2.ClsNegCBBGenerar() - cQr = CBB.GenerarCBBBytes(UsuarioActual.Empresa.RFC, ObjPersonal.RFC, ObjNomina.Total.ToString().ToDecimal(), FolioFiscal) - RptParametro.Add(New ReportParameter("ImporteLetra", ObjNomina.Total.ToString.ToDouble.Texto2Letras)) - RptParametro.Add(New ReportParameter("Clave", "84111505")) + RptParametro.Add(New ReportParameter("ReciboNomina", ObjNomina.Folio.ToString)) + RptParametro.Add(New ReportParameter("Serie", ObjNomina.Serie)) + RptParametro.Add(New ReportParameter("Fecha", ObjNomina.Fecha.ToString)) + RptParametro.Add(New ReportParameter("Periodo", ObjNomina.TipoPeriodo)) + RptParametro.Add(New ReportParameter("DiasPagados", ObjNomina.DiasPagados.ToString)) + RptParametro.Add(New ReportParameter("MetodoPago", ObjNomina.MetodoPago)) '"""PUE"" (Pago en una sola exhibición)" + RptParametro.Add(New ReportParameter("FormaPago", """99"" (Por definir)")) + RptParametro.Add(New ReportParameter("Cantidad", "1")) + RptParametro.Add(New ReportParameter("Unidad", "ACT")) + RptParametro.Add(New ReportParameter("Descripcion", "PAGO DE NÓMINA")) + RptParametro.Add(New ReportParameter("Total", If(indemnizacion, ajusteindemnizacion, ObjNomina.Total - ajusteindemnizacion).ToString())) + Dim CBB As New ClbNegBICFDv3_2.ClsNegCBBGenerar() + cQr = CBB.GenerarCBBBytes(UsuarioActual.Empresa.RFC, ObjPersonal.RFC, ObjNomina.Total.ToString().ToDecimal(), FolioFiscal) + RptParametro.Add(New ReportParameter("ImporteLetra", ObjNomina.Total.ToString.ToDouble.Texto2Letras)) + RptParametro.Add(New ReportParameter("Clave", "84111505")) + Else + TieneError = True + End If Else TieneError = True - End If - Else - TieneError = True End If If Not TieneError Then If ObjNomina.GetPeriodos(-1, CveEmpresa, -1, -1, CvePeriodo) Then diff --git a/Nomina/Nomina.aspx.cs b/Nomina/Nomina.aspx.cs index 71dc2ced9..4adfb243c 100644 --- a/Nomina/Nomina.aspx.cs +++ b/Nomina/Nomina.aspx.cs @@ -2776,8 +2776,8 @@ public partial class Nomina_Nomina2 : ClsPaginas //NomAutorizado = gvrow.DataKey("NomAutorizado").ToUpper().Contiene(new string[] { "1", "TRUE" }); SRCvePersonal = TxtCvePersonal.Text.ToEntero(); showhideaccionesSR(); - HypXmlSobreRecibo.Attributes.Add("onclick", string.Format("GETPDF({0},{1})", SRCvePersonal, CvePeriodoSeleccionado)); - HyppdfSobreRecibo.Attributes.Add("onclick", string.Format("GETXML({0},{1})", SRCvePersonal, CvePeriodoSeleccionado)); + HypXmlSobreRecibo.Attributes.Add("onclick", string.Format("GETXML({0},{1})", SRCvePersonal, CvePeriodoSeleccionado)); + HyppdfSobreRecibo.Attributes.Add("onclick", string.Format("GETPDF({0},{1})", SRCvePersonal, CvePeriodoSeleccionado)); DataRow drow = dtempleados.FiltroPrimero(string.Format("CvePersonal = {0}", SRCvePersonal)); string Nombre = ""; From 84d8d7bec15be6859bee26bdd3b497d9ac7cf82f Mon Sep 17 00:00:00 2001 From: Oscar Irigoyen Date: Fri, 26 May 2023 09:59:37 -0700 Subject: [PATCH 2/3] Prorateo deducible Compras, clientes asignar cuenta sig generada --- Compras/Compras.aspx | 1 + Compras/Compras.aspx.vb | 72 +++++++++++++++++++ .../Reportes/RepSituacionFinanciera.rdlc | 1 + Ventas/Clientes.aspx.vb | 13 ++-- 4 files changed, 82 insertions(+), 5 deletions(-) diff --git a/Compras/Compras.aspx b/Compras/Compras.aspx index c836aa7ef..d628b144e 100644 --- a/Compras/Compras.aspx +++ b/Compras/Compras.aspx @@ -1140,6 +1140,7 @@
+
diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 1bd3b8565..30fc968ec 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -1444,6 +1444,11 @@ Partial Class Compras_Compras End If + + If UsuarioActual.TienePermisoProceso(360) Then + BtnProrateoDeducible.Visible = True + End If + ElseIf Request("CveCompra") IsNot Nothing AndAlso IsNumeric(Request("CveCompra")) AndAlso Request("CveCompra").ToEntero > 0 Then ViewState("CveCompra") = Request("CveCompra") @@ -20622,6 +20627,73 @@ Partial Class Compras_Compras End Sub + Private Sub ProratearDeducible() + + + ChkEsNoDeducible_CheckedChanged1(Nothing, Nothing) + + + Dim DTProtateo As DataTable = TmpDT.Clone + + + Dim Consec As Integer = 1 + + For Each dRowOriginal As DataRow In TmpDT.Rows + + + + Dim dRow91_5 As DataRow = DTProtateo.NewRow + Dim dRow8_5 As DataRow = DTProtateo.NewRow + + dRow91_5.ItemArray = dRowOriginal.ItemArray + dRow8_5.ItemArray = dRowOriginal.ItemArray + + Dim Mul91_5 As Decimal = 0.915D + Dim Mul85 As Decimal = 0.085D + + + dRow91_5("Consec") = Consec + dRow91_5("PU") = dRow91_5("PU").ToString.ToDecimal * Mul91_5 + dRow91_5("IVA") = dRow91_5("IVA").ToString.ToDecimal * Mul91_5 + dRow91_5("RetIVA") = dRow91_5("RetIVA").ToString.ToDecimal * Mul91_5 + dRow91_5("RetISR") = dRow91_5("RetISR").ToString.ToDecimal * Mul91_5 + dRow91_5("IEPSPS") = dRow91_5("IEPSPS").ToString.ToDecimal * Mul91_5 + dRow91_5("IEPSPSIVA") = dRow91_5("IEPSPSIVA").ToString.ToDecimal * Mul91_5 + dRow91_5("Total") = dRow91_5("Total").ToString.ToDecimal * Mul91_5 + dRow91_5("NoDeducible") = 1 + + + dRow8_5("Consec") = Consec + 1 + dRow8_5("PU") = dRow8_5("PU").ToString.ToDecimal * Mul85 + dRow8_5("IVA") = dRow8_5("IVA").ToString.ToDecimal * Mul85 + dRow8_5("RetIVA") = dRow8_5("RetIVA").ToString.ToDecimal * Mul85 + dRow8_5("RetISR") = dRow8_5("RetISR").ToString.ToDecimal * Mul85 + dRow8_5("IEPSPS") = dRow8_5("IEPSPS").ToString.ToDecimal * Mul85 + dRow8_5("IEPSPSIVA") = dRow8_5("IEPSPSIVA").ToString.ToDecimal * Mul85 + dRow8_5("Total") = dRow8_5("Total").ToString.ToDecimal * Mul85 + dRow8_5("NoDeducible") = 0 + + + DTProtateo.Rows.Add(dRow91_5) + DTProtateo.Rows.Add(dRow8_5) + + Consec = Consec + 2 + + Next + + DTProtateo.AcceptChanges() + TmpDT = DTProtateo + + BtnProrateoDeducible.Visible = False + + AddPS2(True) + + End Sub + + Private Sub BtnProrateoDeducible_Click(sender As Object, e As EventArgs) Handles BtnProrateoDeducible.Click + ProratearDeducible() + End Sub + #End Region diff --git a/Contabilidad2/Reportes/RepSituacionFinanciera.rdlc b/Contabilidad2/Reportes/RepSituacionFinanciera.rdlc index 8fbc653f0..a9df55f06 100644 --- a/Contabilidad2/Reportes/RepSituacionFinanciera.rdlc +++ b/Contabilidad2/Reportes/RepSituacionFinanciera.rdlc @@ -3056,6 +3056,7 @@ Fields!ImporteActual.Value, 0), "DataSet1") =Sum(Microsoft.VisualBasic.Interaction.iif(Fields!Sup.Value = "CAPITAL" OR Fields!Sup.Value = "CAPITAL CONTABLE" +OR Fields!Sup.Value = "Capital Contable" OR Fields!Sup.Value = "Capital Social" OR Fields!Sup.Value = "Capital", Fields!ImporteActual.Value, 0),"DataSet1") diff --git a/Ventas/Clientes.aspx.vb b/Ventas/Clientes.aspx.vb index ccce8bfae..ccf7e3e44 100644 --- a/Ventas/Clientes.aspx.vb +++ b/Ventas/Clientes.aspx.vb @@ -3968,17 +3968,19 @@ Partial Class Clientes If ObjContabilidad.GetCuentasGlobales(UsuarioActual.CveEmpresa, 1) Then Dim CvePadre As Integer = ObjContabilidad.DtResultados.FiltroPrimeroValor("CveCuenta").ToEntero If CvePadre > 0 Then - If ObjContabilidad.AddCuenta(CvePadre, CodigoCuentaAltaCompaq, NombreCuentaCuentaAltaCompaq, "A", 2, 1, CveCliente:=CveCliente, IdCompaq:=IdCuentaAltaCompaq) > 0 Then - Respuesta = True + + Dim CvecuentaNueva As Integer = ObjContabilidad.AddCuenta(CvePadre, CodigoCuentaAltaCompaq, NombreCuentaCuentaAltaCompaq, "A", 2, 1, CveCliente:=CveCliente, IdCompaq:=IdCuentaAltaCompaq) + + If CvecuentaNueva > 0 Then + If ObjContabilidad.AddCuentasAsignaciones(1, UsuarioActual.CveEmpresa, CvecuentaNueva, CveCliente:=CveCliente) Then + Respuesta = True + End If End If End If End If - 'If ObjContabilidad.GetCuentasAsignacionesSistema(UsuarioActual.CveEmpresa, 7, -1, 1) Then - 'End If - End If Return Respuesta @@ -4856,6 +4858,7 @@ Partial Class Clientes #Region "Cuentas/Equipos" Public Sub BtnAgregarCtaEquipo_Click(sender As Object, e As EventArgs) + HdnModalidad.Value = "I" DivCicloComercial.Visible = False TxtIdentificador.Text = "" From 153141d7643f3e8c0744ed1debeb746fb95097de Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Fri, 26 May 2023 10:56:26 -0700 Subject: [PATCH 3/3] --Actualizar el TC de una venta no timbrada --- App_Code/ClsVentas.vb | 18 +++++++++++++ Ventas/Ventas.aspx.vb | 59 ++++++++++++++++++++++++++++++++----------- 2 files changed, 62 insertions(+), 15 deletions(-) diff --git a/App_Code/ClsVentas.vb b/App_Code/ClsVentas.vb index 7a4694fb5..776206141 100644 --- a/App_Code/ClsVentas.vb +++ b/App_Code/ClsVentas.vb @@ -616,6 +616,24 @@ Public Class ClsVentas Return Retorno End Function + + Public Function UpdateVentaTC(CveVenta As Integer, CveEmpresa As Integer, TipoCambio As Decimal) As Boolean + Dim Retorno As Boolean = False + DataAdapter("PA_Vta_VentasTipoCambioUpdate") + With SqlAdapter.SelectCommand.Parameters + .Add("@CveVenta", SqlDbType.Int).Value = CveVenta + .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa + .Add("@TipoCambio", SqlDbType.Decimal).Value = TipoCambio + End With + Try + SqlAdapter.Fill(Data) + Retorno = True + Catch ex As Exception + OnError("Ocurrió un error al actualizar el TC de la venta.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) + End Try + Return Retorno + End Function + Public Function UpdateFechaVencimientoVenta(CveVenta As Integer, FechaVencimiento As Date) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Vta_VentasFechaVencimientoUpdate") diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 2d757bc67..7406afa9e 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -33193,7 +33193,7 @@ Partial Class Ventas ErrorTrans = True End If - If Not ObjEventos.AddEventoBitacora($"Se actualizo la fecha de pago. Anterior:{FechaVencimientoAnterior} Actual:{TxtFechaPago.Text}.", "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CveVenta) Then + If Not ObjEventos.AddEventoBitacora($"Se actualizó la fecha de pago. Anterior:{FechaVencimientoAnterior} Actual:{TxtFechaPago.Text}.", "-1", UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, CveVenta:=CveVenta) Then ErrorTrans = True End If @@ -34425,15 +34425,15 @@ Partial Class Ventas TFuenteRecaudacion.Visible = False End If - If UsuarioActual.CveRol = 1 Then - If ChkEmitirComercioExterior.Checked Then - TxtTipoCambio.Text = GlobalTipoCambio(TxtFecha.Text.ToDate.AddDays(-1)).ToString() - Else - TxtTipoCambio.Text = GlobalTipoCambio(TxtFecha.Text.ToDate).ToString() - End If + 'If UsuarioActual.CveRol = 1 Then + ' If ChkEmitirComercioExterior.Checked Then + ' TxtTipoCambio.Text = GlobalTipoCambio(TxtFecha.Text.ToDate.AddDays(-1)).ToString() + ' Else + ' TxtTipoCambio.Text = GlobalTipoCambio(TxtFecha.Text.ToDate).ToString() + ' End If - UpPS.Update() - End If + ' UpPS.Update() + 'End If End Sub @@ -34574,6 +34574,13 @@ Partial Class Ventas DdlUsoCFDI.Enabled = True End If + If LblSeTimbro.Text = "No" AndAlso DdlMoneda.SelectedValue.ToEntero() = 2 AndAlso ChkEmitirComercioExterior.Checked AndAlso DdlTipoComprobante.SelectedValue = "Ing" Then + TxtTipoCambio.Enabled = True + TxtTipoCambio.ReadOnly = False + + UpPS.Update() + End If + UpParametros.Update() UPObservaciones.Update() UpFacturar.Update() @@ -34581,18 +34588,42 @@ Partial Class Ventas End Sub Private Sub GuardarValoresEditados() + Dim TieneError As Boolean = False + Dim AplicaUpdateTC As Boolean = False + + If LblSeTimbro.Text = "No" AndAlso DdlMoneda.SelectedValue.ToEntero() = 2 AndAlso ChkEmitirComercioExterior.Checked AndAlso DdlTipoComprobante.SelectedValue = "Ing" Then + AplicaUpdateTC = True + End If + Dim ObjVentas As New ClsVentas() - If ObjVentas.UpdateObservacionesVenta(CveVenta, UsuarioActual.CveEmpresa, DdlVendedor.SelectedValue.ToEntero(), TxtObsFact.Text, RblPaqueteria.SelectedValue.ToEntero(), TxtCorreoNotificaciones.Text, + ObjVentas.IniciaTransacSQL() + + If Not ObjVentas.UpdateObservacionesVenta(Me.CveVenta, UsuarioActual.CveEmpresa, DdlVendedor.SelectedValue.ToEntero(), TxtObsFact.Text, RblPaqueteria.SelectedValue.ToEntero(), TxtCorreoNotificaciones.Text, TxtObsAlmacen.Text, TxtPedidoContrato.Text, TxtOrdenCompra.Text, TxtFechaPago.Text) Then - CargaVenta() + TieneError = True + End If + + If Not TieneError AndAlso AplicaUpdateTC Then + If Not ObjVentas.UpdateVentaTC(Me.CveVenta, UsuarioActual.CveEmpresa, TxtTipoCambio.Text.ToDecimal()) Then + TieneError = True + End If + End If + + If Not TieneError Then + ObjVentas.Commit() BtnEditar.Text = "Editar" - Alert("Actualizado correctamente") + + Dim Liga = $"document.location.href=""/Ventas/Ventas.aspx?CveVenta={Me.CveVenta}"";" + Alert("La venta se actualizó correctamente", TipoMensaje.MsgInformacion, Liga, TextoConfirmacion:="Aceptar", TextoSegundoBoton:=Nothing, JSBtn2:=Nothing, ShowCloseButton:=False) + UpParametros.Update() UPObservaciones.Update() UpFacturar.Update() + Else + ObjVentas.RollBack() End If - ObjVentas.Dispose() + ObjVentas.Dispose() 'REGENERAR EL PDF Try Dim CveEmpresaPDF As Integer = UsuarioActual.CveEmpresa @@ -34600,8 +34631,6 @@ Partial Class Ventas Dim strURLHOST = String.Format("{0}://{1}:{2}", HttpContext.Current.Request.Url.Scheme, HttpContext.Current.Request.Url.Host, HttpContext.Current.Request.Url.Port) RegenerarPDF(CveVenta, CveEmpresaPDF, CveUsuarioPDF, strURLHOST) - 'Dim Hilo As New System.Threading.Thread(Sub() ) - 'Hilo.Start() Catch ex As Exception OnError("Ocurrió un error al regenerar el PDF", ex) End Try