Porcentaje y dias vencidos para autorizacion

This commit is contained in:
2022-02-01 17:53:00 -07:00
parent 25ec7859a3
commit 2021b3a851
7 changed files with 129 additions and 17 deletions

View File

@@ -239,7 +239,10 @@ Public Class ClsSisUsuarios
'*
Retorno.NombreAbreviatura = Data.Rows(0)("NombreAbreviatura").ToString()
Retorno.DescuentoAutorizado = Data.Rows(0)("DescuentoAutorizado").ToString().ToDouble()
Retorno.DescuentoAutorizado = Data.Rows(0)("DescuentoAutorizado").ToString().ToDouble()
Retorno.PorcentajeMaximoAutorizacion = Data.Rows(0)("PorcentajeMaximoAutorizacion").ToString().ToDecimal()
Retorno.DiasMaximoAutorizacion = Data.Rows(0)("DiasMaximoAutorizacion").ToString().ToEntero()
Retorno.CodigoAutorizado = Data.Rows(0)("CodigoAutorizado").ToString()
Dim autoip As String = Data.Rows(0)("AutorizadoxIP").ToString().ToUpper()
@@ -821,7 +824,8 @@ Public Class ClsSisUsuarios
Public Function AddUsuario(Usuario As String, Contraseña As String, Nombre As String, CveRol As Integer, Correo As String,
CvePersonal As Integer, CveVendedor As Integer, CambiarContraseña As Boolean,
CveUsuarioIng As Integer, CveEmpresa As Integer, CveSubProyecto As Integer, Optional Rol As String = "-1", Optional CveAlmacenAsignado As Integer = -1, Optional AsignarSubProyecto As Boolean = False, Optional AsignarOC As Boolean = False,
Optional CvePlataforma As Integer = -1, Optional CveClientePlataforma As Integer = -1, Optional CveProveedorPlataforma As Integer = -1, Optional DescuentoAutorizado As Double = 0, Optional CodigoAcceso As String = "-1", Optional LimiteCreditoAutorizado As Decimal = 0) As Integer
Optional CvePlataforma As Integer = -1, Optional CveClientePlataforma As Integer = -1, Optional CveProveedorPlataforma As Integer = -1, Optional DescuentoAutorizado As Double = 0, Optional CodigoAcceso As String = "-1",
Optional LimiteCreditoAutorizado As Decimal = 0, Optional PorcentajeMaximoAutorizacion As Decimal = 0, Optional DiasMaximoAutorizacion As Integer = 0) As Integer
Dim Retorno = -1
DataAdapter("PA_Sis_UsuarioAdd")
With SqlAdapter.SelectCommand.Parameters
@@ -843,8 +847,10 @@ Public Class ClsSisUsuarios
.Add("@DescuentoAutorizado", SqlDbType.Float).Value = DescuentoAutorizado
.Add("@CodigoAcceso", SqlDbType.VarChar).Value = CodigoAcceso
.Add("@LimiteCreditoAutorizado", SqlDbType.Money).Value = LimiteCreditoAutorizado
.Add("@PorcentajeMaximoAutorizacion", SqlDbType.Money).Value = PorcentajeMaximoAutorizacion
.Add("@DiasMaximoAutorizacion", SqlDbType.Int).Value = DiasMaximoAutorizacion
.Add("@CveUsuario", SqlDbType.Int).Direction = ParameterDirection.Output
.Add("@CveUsuario", SqlDbType.Int).Direction = ParameterDirection.Output
End With
Try
@@ -941,7 +947,7 @@ Public Class ClsSisUsuarios
End Function
Public Function UpdateUsuario(Usuario As String, Nombre As String, CveRol As Integer, Correo As String, CvePersonal As Integer,
CveVendedor As Integer, CambiarContraseña As Boolean, Activo As Boolean, CveEmpresa As Integer, CveUsuario As Integer, CveAlmacenAsignado As Integer, CveSubProyecto As Integer, Optional CveUsuarioModifico As Integer = -1, Optional AsignarSubProyecto As Boolean = False, Optional AsignarOC As Boolean = False,
Optional DescuentoAutorizado As Double = 0, Optional CodigoAcceso As String = "-1", Optional LimiteCreditoAutorizado As Decimal = 0) As Boolean
Optional DescuentoAutorizado As Double = 0, Optional CodigoAcceso As String = "-1", Optional LimiteCreditoAutorizado As Decimal = 0, Optional PorcentajeMaximoAutorizacion As Decimal = 0, Optional DiasMaximoAutorizacion As Integer = 0) As Boolean
Dim Retorno As Boolean = False
DataAdapter("PA_Sis_UsuarioUpdate")
@@ -963,7 +969,9 @@ Public Class ClsSisUsuarios
.Add("@AsignarOC", SqlDbType.Bit).Value = AsignarOC
.Add("@DescuentoAutorizado", SqlDbType.Float).Value = DescuentoAutorizado
.Add("@CodigoAcceso", SqlDbType.VarChar).Value = CodigoAcceso
.Add("@LimiteCreditoAutorizado", SqlDbType.Money).Value = LimiteCreditoAutorizado
.Add("@LimiteCreditoAutorizado", SqlDbType.Money).Value = LimiteCreditoAutorizado
.Add("@PorcentajeMaximoAutorizacion", SqlDbType.Money).Value = PorcentajeMaximoAutorizacion
.Add("@DiasMaximoAutorizacion", SqlDbType.Int).Value = DiasMaximoAutorizacion
End With
Try

View File

@@ -4620,7 +4620,7 @@ Namespace Modelos
''' <param name="FechaCancelacion"></param>
''' <param name="AcuseCancelacion"></param>
''' <returns></returns>
Public Function EjecutarCancelacionPendiente(CveEstatus As Integer, FechaCancelacion As DateTime, AcuseCancelacion As String) As MCancelacionVentaMensaje
Public Function EjecutarCancelacionPendiente(CveEstatus As Integer, FechaCancelacion As DateTime, AcuseCancelacion As String, Optional ValidarSAT As Boolean = True) As MCancelacionVentaMensaje
Dim ListaRemisionesCancelar As New List(Of Integer)
Dim ObjVentas As New ClsVentas()
If ObjVentas.GetRemisionesXCancelar(Me.CveVenta) Then
@@ -4630,14 +4630,14 @@ Namespace Modelos
End If
ObjVentas.Dispose()
Return CancelarVenta(Me, Me.UsuarioActual, RealizarDevolucionAlmacen:=Me.RealizarDevolucionAlmacen, ListaRemisionesCancelar:=ListaRemisionesCancelar, CveEstatusFacturaAsignado:=CveEstatus, FechaCancelacion:=FechaCancelacion.ToString("dd/MM/yyyy hh:mm:ss"), AcuseCancelacion:=AcuseCancelacion, CveMotivoCancelacion:=Me.CveMotivoCancelacion, MotivoCancelacion:=Me.MotivoCancelacion)
Return CancelarVenta(Me, Me.UsuarioActual, RealizarDevolucionAlmacen:=Me.RealizarDevolucionAlmacen, ListaRemisionesCancelar:=ListaRemisionesCancelar, CveEstatusFacturaAsignado:=CveEstatus, FechaCancelacion:=FechaCancelacion.ToString("dd/MM/yyyy hh:mm:ss"), AcuseCancelacion:=AcuseCancelacion, CveMotivoCancelacion:=Me.CveMotivoCancelacion, MotivoCancelacion:=Me.MotivoCancelacion, ValidarSAT:=ValidarSAT)
End Function
''' <summary>
''' Cancela la factura para poder realizar la refacturacion
''' </summary>
''' <returns></returns>
Public Function CancelarPorRefacturacion(CveMotivoCancelacion As Integer, Motivo As String, Optional FolioSustitucion As String = "") As MCancelacionVentaMensaje
Return CancelarVenta(Me, Me.UsuarioActual, EsRefacturacion:=True, CveMotivoCancelacion:=CveMotivoCancelacion, MotivoCancelacion:=Motivo, FolioSustitucion:=FolioSustitucion)
Public Function CancelarPorRefacturacion(CveMotivoCancelacion As Integer, Motivo As String, Optional FolioSustitucion As String = "", Optional ValidarSAT As Boolean = False) As MCancelacionVentaMensaje
Return CancelarVenta(Me, Me.UsuarioActual, EsRefacturacion:=True, CveMotivoCancelacion:=CveMotivoCancelacion, MotivoCancelacion:=Motivo, FolioSustitucion:=FolioSustitucion, ValidarSAT:=ValidarSAT)
End Function
''' <summary>
''' Cancela la factura y realiza las operaciones correspondientes
@@ -4645,7 +4645,7 @@ Namespace Modelos
''' <param name="RealizarDevolucionAlmacen"></param>
''' <param name="ListaRemisionesCancelar"></param>
''' <returns></returns>
Public Function CancelarFactura(RealizarDevolucionAlmacen As Boolean, Optional ListaRemisionesCancelar As List(Of Integer) = Nothing, Optional CveMotivoCancelacion As Integer = -1, Optional Motivo As String = "") As MCancelacionVentaMensaje
Public Function CancelarFactura(RealizarDevolucionAlmacen As Boolean, Optional ListaRemisionesCancelar As List(Of Integer) = Nothing, Optional CveMotivoCancelacion As Integer = -1, Optional Motivo As String = "", Optional ValidarSAT As Boolean = True) As MCancelacionVentaMensaje
'Comprobante emitido con errores sin relación
Return CancelarVenta(Me, Me.UsuarioActual, RealizarDevolucionAlmacen:=RealizarDevolucionAlmacen, ListaRemisionesCancelar:=ListaRemisionesCancelar, CveMotivoCancelacion:=CveMotivoCancelacion, MotivoCancelacion:=Motivo)
End Function
@@ -4653,7 +4653,7 @@ Namespace Modelos
Private Function CancelarVenta(ObjFactura As Modelos.Factura, UsuarioActual As Usuario, Optional EsRefacturacion As Boolean = False, Optional RealizarDevolucionAlmacen As Boolean = False,
Optional ListaRemisionesCancelar As List(Of Integer) = Nothing, Optional CveEstatusFacturaAsignado As Integer = -1,
Optional FechaCancelacion As String = "-1", Optional AcuseCancelacion As String = "",
Optional CveMotivoCancelacion As Integer = -1, Optional MotivoCancelacion As String = "", Optional FolioSustitucion As String = "") As MCancelacionVentaMensaje
Optional CveMotivoCancelacion As Integer = -1, Optional MotivoCancelacion As String = "", Optional FolioSustitucion As String = "", Optional ValidarSAT As Boolean = True) As MCancelacionVentaMensaje
Dim Retorno As New MCancelacionVentaMensaje()
Dim ErrorList As New List(Of String)
@@ -4851,7 +4851,7 @@ Namespace Modelos
If ObjFactura.TipoDocto.Contiene("Ing", "Ant", "Dev", "Egs") Then
'VERIFICA SI DEBE VALIDAR ANTE EL SAT
If Not (UsuarioActual.Empresa.Funcionalidad(529) = "1") Then
If ValidarSAT AndAlso Not (UsuarioActual.Empresa.Funcionalidad(529) = "1") Then
Dim Vigencia = Timbrado.VerificarVigenciaSAT(FolioFiscal, UsuarioActual.Empresa.RFC, RFCReceptor, TotalT.ToString(), UsuarioActual.Empresa.FacturaProduccion)
@@ -4961,7 +4961,7 @@ Namespace Modelos
If Not ObtenerAcuse Then
If ContinuarCancelacion Then
If ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscal, TotalT, RFCReceptor, UsuarioActual.Empresa.RFC, CvePACCancelacion, CveSATMotivoCancelacion:=CveSATMotivoCancelacion, FolioSustitucion:=FolioSustitucion) Then
If ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscal, TotalT, RFCReceptor, UsuarioActual.Empresa.RFC, CvePACCancelacion:=CvePACCancelacion, ValidaFactura:=ValidarSAT, CveSATMotivoCancelacion:=CveSATMotivoCancelacion, FolioSustitucion:=FolioSustitucion) Then
'GENERAMOS EL ACUSE Y MANDAMOS MAIL DE CON EL ACUSE DE CANCELACIÓN
If RequiereAceptacion Then
CancelacionFecha = Now.Date
@@ -5559,6 +5559,14 @@ Namespace Modelos
End If
End If
'CANCELA LOS FOLIOS DE GARANTIA
If Not ErrorCancelar Then
If Not ObjAcum.UpdateGarantiaCancelacion(CveVenta) Then
ErrorCancelar = True
MensajeError = "Ocurrió un error al actualizar la garantía"
End If
End If
End If
'MARCA LA VENTA PARA REALIZAR LA DEVOLUCION POSTERIORMENTE

View File

@@ -59,6 +59,8 @@ Public Class Usuario
Public Property CodigoAutorizado As String
Public Property UTCOffset As Integer
Public Property PorcentajeMaximoAutorizacion As Decimal
Public Property DiasMaximoAutorizacion As Integer
Public Property isLoginseted As Boolean = False

View File

@@ -1473,6 +1473,50 @@
</div>
</div>
</div>
<div class="col-md-5" id="DivDatosAutorizacion" runat="server" visible="false">
<asp:UpdatePanel ID="UpAutorizacion" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<div class="portlet light xspadding bordered ">
<div class="portlet-title">
<div class="caption font-green">
<i class="icon-pin font-green"></i>
<span class="caption-subject bold uppercase">Configuración de autorizaciones</span>
</div>
<div class="actions">
<div class="btn-group">
</div>
</div>
<div class="tools">
<a href="javascript:;" class="collapse" data-original-title="" title=""></a>
<a href="javascript:;" class="fullscreen" data-original-title="" title=""></a>
</div>
</div>
<div class="portlet-body nomarginleftright form-horizontal form-row-sepe formnombottom ">
<table border="0">
<tr>
<td>Porcentaje Máximo:</td>
<td>
<asp:TextBox ID="TxtPorcentajeMaximoAutorizacion" runat="server" Width="400px"></asp:TextBox>
<asp:RangeValidator ID="RVPM" runat="server" Type="Integer" MinimumValue="0" MaximumValue="999999" ErrorMessage="El campo <b>''Porcentaje Máximo''</b> no tiene el formato correcto, por favor ingréselo." ControlToValidate="TxtPorcentajeMaximoAutorizacion" Display="None" ValidationGroup="GrpGuardar"></asp:RangeValidator>
<ajax:ValidatorCalloutExtender ID="VCEPM" runat="server" HighlightCssClass="vco" TargetControlID="RVPM" Width="300px"></ajax:ValidatorCalloutExtender>
</td>
<td></td>
</tr>
<tr>
<td>Días vencidos:</td>
<td>
<asp:TextBox ID="TxtDiasVencidos" runat="server" Width="400px"></asp:TextBox>
<asp:RangeValidator ID="RVDV" runat="server" Type="Integer" MinimumValue="0" MaximumValue="999999" ErrorMessage="El campo <b>''Dias Vencidos''</b> no tiene el formato correcto, por favor ingréselo." ControlToValidate="TxtDiasVencidos" Display="None" ValidationGroup="GrpGuardar"></asp:RangeValidator>
<ajax:ValidatorCalloutExtender ID="VCEDV" runat="server" HighlightCssClass="vco" TargetControlID="RVDV" Width="300px"></ajax:ValidatorCalloutExtender>
</td>
<td></td>
</tr>
</table>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</div>
<div id="DivSuperior" class="modal fade" role="dialog">
<div class="modal-dialog">

View File

@@ -448,6 +448,7 @@ Partial Class Sistemas_UsuarioDetalle
If UsuarioActual.Empresa.Funcionalidad(531).ToString = "1" Then
TrDescuentoAutorizado.Visible = True
TrLimiteAutorizacion.Visible = True
DivDatosAutorizacion.Visible = True
End If
If UsuarioActual.Empresa.Funcionalidad(599) = "1" Then
@@ -589,6 +590,10 @@ Partial Class Sistemas_UsuarioDetalle
TxtDescuentoAutorizado.Text = ObjUsuario.DescuentoAutorizado.FormatoNumero
TxtLimiteAutorizado.Text = ObjUsuario.DtResultados.Rows(0)("LimiteCreditoAutorizado").ToString()
TxtPorcentajeMaximoAutorizacion.Text = ObjUsuario.DtResultados.Rows(0)("PorcentajeMaximoAutorizacion").ToString().ToDecimal().FormatoNumero(2)
TxtDiasVencidos.Text = ObjUsuario.DtResultados.Rows(0)("DiasMaximoAutorizacion").ToString()
Else
Alert("El Usuario Solicitado no existe, Revise su búsqueda.", TipoMensaje.MsgAdvertencia)
BtnGuardar.Enabled = False
@@ -832,7 +837,7 @@ Partial Class Sistemas_UsuarioDetalle
'REGISTRA O ACTUALIZA LOS DATOS GENERALES DEL USUARIO
If CveUsuario = -1 Then
CveUsuario = ObjUsuarios.AddUsuario(TxtUsuario.Text.Trim, Encripta(ContraseñaPredeterminada), TxtNombre.Text.Trim, DdlRol.SelectedValue.ToEntero, TxtCorreo.Text.Trim, DdlPersonal.SelectedValue.ToEntero, DdlVendedor.SelectedValue.ToEntero, ChkCambiarContraseña.Checked, UsuarioActual.CveUsuario, DdlEmpresa.SelectedValue.ToEntero, DdlSubProyectos.SelectedValue.ToEntero, CveAlmacenAsignado:=DdlAlmacenGeneral.SelectedValue.ToEntero, AsignarSubProyecto:=ChkAsignarSubProyecto.Checked, AsignarOC:=ChkAsignarOC.Checked, DescuentoAutorizado:=TxtDescuentoAutorizado.Text.ToDouble, CodigoAcceso:=CodigoAcceso, LimiteCreditoAutorizado:=TxtLimiteAutorizado.Text.ToDecimal())
CveUsuario = ObjUsuarios.AddUsuario(TxtUsuario.Text.Trim, Encripta(ContraseñaPredeterminada), TxtNombre.Text.Trim, DdlRol.SelectedValue.ToEntero, TxtCorreo.Text.Trim, DdlPersonal.SelectedValue.ToEntero, DdlVendedor.SelectedValue.ToEntero, ChkCambiarContraseña.Checked, UsuarioActual.CveUsuario, DdlEmpresa.SelectedValue.ToEntero, DdlSubProyectos.SelectedValue.ToEntero, CveAlmacenAsignado:=DdlAlmacenGeneral.SelectedValue.ToEntero, AsignarSubProyecto:=ChkAsignarSubProyecto.Checked, AsignarOC:=ChkAsignarOC.Checked, DescuentoAutorizado:=TxtDescuentoAutorizado.Text.ToDouble, CodigoAcceso:=CodigoAcceso, LimiteCreditoAutorizado:=TxtLimiteAutorizado.Text.ToDecimal(), PorcentajeMaximoAutorizacion:=TxtPorcentajeMaximoAutorizacion.Text.ToDecimal(), DiasMaximoAutorizacion:=TxtDiasVencidos.Text.ToEntero())
EsNuevoUsuario = True
If CveUsuario = -1 Then
TieneError = True
@@ -844,7 +849,7 @@ Partial Class Sistemas_UsuarioDetalle
End If
Next
Else
If Not ObjUsuarios.UpdateUsuario(TxtUsuario.Text.Trim, TxtNombre.Text.Trim, DdlRol.SelectedValue.ToEntero, TxtCorreo.Text.Trim, DdlPersonal.SelectedValue.ToEntero, DdlVendedor.SelectedValue.ToEntero, ChkCambiarContraseña.Checked, ChkEstatus.Checked, DdlEmpresa.SelectedValue.ToEntero, CveUsuario, DdlAlmacenGeneral.SelectedValue.ToEntero, DdlSubProyectos.SelectedValue.ToEntero, UsuarioActual.CveUsuario, AsignarSubProyecto:=ChkAsignarSubProyecto.Checked, AsignarOC:=ChkAsignarOC.Checked, DescuentoAutorizado:=TxtDescuentoAutorizado.Text.ToDouble, CodigoAcceso:=CodigoAcceso, LimiteCreditoAutorizado:=TxtLimiteAutorizado.Text.ToDecimal()) Then
If Not ObjUsuarios.UpdateUsuario(TxtUsuario.Text.Trim, TxtNombre.Text.Trim, DdlRol.SelectedValue.ToEntero, TxtCorreo.Text.Trim, DdlPersonal.SelectedValue.ToEntero, DdlVendedor.SelectedValue.ToEntero, ChkCambiarContraseña.Checked, ChkEstatus.Checked, DdlEmpresa.SelectedValue.ToEntero, CveUsuario, DdlAlmacenGeneral.SelectedValue.ToEntero, DdlSubProyectos.SelectedValue.ToEntero, UsuarioActual.CveUsuario, AsignarSubProyecto:=ChkAsignarSubProyecto.Checked, AsignarOC:=ChkAsignarOC.Checked, DescuentoAutorizado:=TxtDescuentoAutorizado.Text.ToDouble, CodigoAcceso:=CodigoAcceso, LimiteCreditoAutorizado:=TxtLimiteAutorizado.Text.ToDecimal(), PorcentajeMaximoAutorizacion:=TxtPorcentajeMaximoAutorizacion.Text.ToDecimal(), DiasMaximoAutorizacion:=TxtDiasVencidos.Text.ToEntero()) Then
TieneError = True
End If

View File

@@ -100,7 +100,7 @@
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpDatos" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:GridView ID="GvDatos" runat="server" AutoGenerateColumns="False" DataKeyNames="CveAutorizacion,CveCliente,CveVendedor,Importe"
<asp:GridView ID="GvDatos" runat="server" AutoGenerateColumns="False" DataKeyNames="CveAutorizacion,CveCliente,CveVendedor,Importe,TipoAutorizacion,Saldo,LimiteCredito,DiasVencidos,DiasVencidosAutorizacion"
EmptyDataText="No se encontraron autorizaciones" ToolTip=""
CssClass="table table-striped table-advance table-hover ScrollAD mysmallbtn" data-sort="true" Width="100%" GridLines="None">
<Columns>

View File

@@ -183,12 +183,57 @@ Partial Class Ventas_CatAutorizacionLimites
' e.Row.Cells(1).Font.Bold = True
' e.Row.Cells(1).Text = "Activo"
'Else
' e.Row.Cells(1).Text = "Inactivo"
' e.Row.Cells(1).ForeColor = Drawing.Color.Red
' e.Row.Cells(1).Font.Bold = True
'End If
'End If
End If
End Sub
#End Region
Protected Sub LnkAutorizar_Click(sender As Object, e As EventArgs)
Dim gvRow As GridViewRow = DirectCast((DirectCast(sender, LinkButton)).NamingContainer, GridViewRow)
Dim TipoAutorizacion = gvRow.DataKey("TipoAutorizacion").ToEntero()
Dim CveAutorizacion = gvRow.DataKey("CveAutorizacion").ToEntero()
Dim CveCliente = gvRow.DataKey("CveCliente").ToEntero()
Dim CveVendedor = gvRow.DataKey("CveVendedor").ToEntero()
Dim CveEstatusAutorizacion As Integer = 1
Dim Importe = gvRow.DataKey("Importe").ToDecimal().RoundSQL(2)
'AUTORIZACION DE IMPORTE,
'el cliente limite de 500, y saldo de 501. autorización que puede autorizar no puede ser mayor a 49 ( limite * 1.% - Saldo)
If TipoAutorizacion = 1 Then
Dim SaldoCliente = gvRow.DataKey("Saldo").ToDecimal()
Dim LimiteCredito = gvRow.DataKey("LimiteCredito").ToDecimal()
Dim PorcentajeMaximoAutorizar As Decimal = 0.1
If UsuarioActual.PorcentajeMaximoAutorizacion > 0 Then
PorcentajeMaximoAutorizar = (UsuarioActual.PorcentajeMaximoAutorizacion / 100)
End If
Dim ImporteMaximoAutorizar As Decimal = ((LimiteCredito * (1D + PorcentajeMaximoAutorizar)) - SaldoCliente).RoundSQL(2)
If Importe > ImporteMaximoAutorizar Then
Alert($"No se puede autorizar, el importe máximo a autorizar es de {ImporteMaximoAutorizar:N2}", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
'AUTORIZACION POR DIAS VENCIDOS
ElseIf TipoAutorizacion = 2 Then
Dim DiasVencidos = gvRow.DataKey("DiasVencidos").ToEntero()
If DiasVencidos > 0 Then
Dim DiasVencidosPermitidos As Integer = 5
Dim DiasVencidosAutorizacion = gvRow.DataKey("DiasVencidosAutorizacion").ToEntero()
If DiasVencidos > DiasVencidosAutorizacion Then
Alert($"No se puede autorizar, los días vencidos del cliente son mayores a la autorización. Dias Vencidos: {DiasVencidos:N0}", TipoMensaje.MsgAdvertencia)
Exit Sub
End If