From e2578fd836c34fa0869541490ccac9a2ad7c2fec Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Tue, 27 Jul 2021 16:13:16 -0700 Subject: [PATCH 1/5] Bonificaciones por productos al aplicar NC. pt2 --- Ventas/Ventas.aspx | 104 +++++++++++++- Ventas/Ventas.aspx.vb | 325 ++++++++++++++++++++++++++++++++---------- 2 files changed, 352 insertions(+), 77 deletions(-) diff --git a/Ventas/Ventas.aspx b/Ventas/Ventas.aspx index 02584370f..c54c6f784 100644 --- a/Ventas/Ventas.aspx +++ b/Ventas/Ventas.aspx @@ -6680,11 +6680,16 @@
+
+
+ +
+
" style="display: inline-block; margin-right: -20px; width: 150px;" /> " style="margin-top: -3px;" class="btn btn-circle btn-sm label-info">
-
+
@@ -6716,6 +6721,35 @@
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+
@@ -7769,7 +7803,6 @@ } - function CalculaSaldoRNCChkDetalleBonificacion(TxtCantidad, CantidadPendiente, ImporteTotal, Chk) { //ImportesRNCCargo let Importe = 0; @@ -7836,6 +7869,73 @@ } + } + function CalculaSaldoRNCChkDetalleBon(TxtCantidad, CantidadPendiente, ImporteTotal, Chk) { + //ImportesRNCCargo + let Importe = 0; + if (Chk.checked) { + let SaldoMaximoUtilizable = ToDouble(HdnSMUBon.value); + let ImportesAsignados = 0; + + $('.ImportesRNCDetalleBonificacion').each(function () { + + if (Chk.id != $(this).find("td").eq(0).find(":checkbox").attr('id')) { + let seleccionado = $(this).find("td").eq(0).find(":checkbox").is(':checked'); + + if (seleccionado) { + let cantidad = ToDouble($(this).find("td").eq(1).find(":text").val()); + let porcentajeIVA = ToDouble($(this).find("td").eq(0).find(":hidden").val()); + let precio = ToDouble($(this).find("td").eq(5).find(":hidden").val()); + + let totalcalculableImpuestos = (cantidad * precio); + let iva = ToDouble((totalcalculableImpuestos * porcentajeIVA).toFixed(2)); + + ImportesAsignados += totalcalculableImpuestos + iva; + } + } + + }); + + Importe = SaldoMaximoUtilizable - ImportesAsignados; + + if (Importe > 0) { + + } else { + if (SaldoMaximoUtilizable > 0) { + Importe = 0; + Chk.checked = false; + } else { + Importe = 0; + } + } + + } else { + Importe = 0; + } + + Importe = ToDouble(Importe.toFixed(2)); + + if (Importe > 0) { + + let pu = (ImporteTotal / CantidadPendiente); + + if (pu > 0) { + const cantidadSugerida = (Importe / pu); + if (cantidadSugerida > CantidadPendiente) { + TxtCantidad.value = CantidadPendiente.toString(); + }else { + TxtCantidad.value = cantidadSugerida.toString(); + } + + }else { + TxtCantidad.value = "0"; + } + + }else { + TxtCantidad.value = "0"; + } + + } function LimitaSaldoRNCChk(TxtImporte, Saldo) { diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 04e5da7ab..39549059b 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -2150,7 +2150,7 @@ Partial Class Ventas DdlTipoComprobante.Items.Insert(DdlTipoComprobante.Items.Count, New ListItem("Autorización", "PA")) End If - If Not UsuarioActual.CveEmpresa.Contiene(141, 152, 159, 160, 161, 162, 163) Then + If Not UsuarioActual.Empresa.Funcionalidad(558) = "1" Then LnkAgregarCliente.Visible = False End If @@ -25124,6 +25124,18 @@ Partial Class Ventas End If UpModalRemisionesNC.Update() End Sub + Protected Sub ChkMostarProductosRNCBon_CheckedChanged(sender As Object, e As EventArgs) + If ChkMostarProductosRNCBon.Checked Then + DivRNCBonificaciones.Visible = False + DivRNCBonificacionesDetalle.Visible = True + CargaRNCDetalleBonificacion(DdlVentaUsado.SelectedValue.ToEntero()) + Else + DivRNCBonificaciones.Visible = True + DivRNCBonificacionesDetalle.Visible = False + RblRNCTipo_SelectedIndexChanged(RblRNCTipo, EventArgs.Empty) + End If + UpModalRemisionesNC.Update() + End Sub Protected Sub ChkMostarProductosRNCDesc_CheckedChanged(sender As Object, e As EventArgs) RblRNCTipoDesc_SelectedIndexChanged(RblRNCTipo, EventArgs.Empty) @@ -25336,7 +25348,63 @@ Partial Class Ventas UpDescNC.Update() End Sub + Private Sub CargaRNCDetalleBonificacion(Optional CveVentaUsado As Integer = -1) + 'Dim ObjMovtos As New ClsMovimientos() + 'If ObjMovtos.GetRemisionesNCCliente(CveCliente, True, CveMoneda:=-1, CveClienteSucursal:=DdlSucursalCliente.SelectedValue.ToEntero()) Then + ' Me.TmpDTRNCBonificacionDetalle = ObjMovtos.DtResultados.Copy() + 'End If + 'ObjMovtos.Dispose() + + 'Me.TmpDTRNCBonificacionDetalle.Columns.Add(New DataColumn("CveVentaDetalleNCGenerada", GetType(Integer))) + + 'Me.TmpDTRNCBonificacionDetalleSeleccionadas = Nothing + 'Me.TmpDTRNCBonificacionDetalleSeleccionadas = TmpDTRNCBonificacionDetalle.Clone() + 'Me.TmpDTRNCBonificacionDetalleSeleccionadas.Clear() + + 'GvRemisionesNCBonDetalle.DataSource = TmpDTRNCBonificacionDetalle.FiltraParametros("TipoRNC = 2") + 'GvRemisionesNCBonDetalle.DataBind() + + Dim ObjMovtos As New ClsMovimientos() + If ObjMovtos.GetRemisionesNCCliente(CveCliente, True, CveMoneda:=-1, CveClienteSucursal:=DdlSucursalCliente.SelectedValue.ToEntero()) Then + Me.TmpDTRNCDetalle = ObjMovtos.DtResultados.Copy() + End If + ObjMovtos.Dispose() + + Me.TmpDTRNCDetalle.Columns.Add(New DataColumn("CveVentaDetalleNCGenerada", GetType(Integer))) + + Me.TmpDTRNCDetalleSelecciondas = Nothing + Me.TmpDTRNCDetalleSelecciondas = TmpDTRNCDetalle.Clone() + Me.TmpDTRNCDetalleSelecciondas.Clear() + + GvRemisionesNCBonDetalle.DataSource = TmpDTRNCDetalle.FiltraParametros("TipoRNC = 2") + GvRemisionesNCBonDetalle.DataBind() + + Dim ObjAcum As New ClsAcumuladores + If ObjAcum.GetMovimientosDistribuidorResumen(CveCliente, UsuarioActual.CveEmpresa) Then + Dim RowUsadosNC As DataRow = ObjAcum.DtResultados.Rows(5) + DivSMU.Visible = True + HdnSMUBon.Value = RowUsadosNC("ValorConImpuestos").ToString() + LtlSMUBon.Text = RowUsadosNC("ValorConImpuestos").ToString().ToDecimal().FormatoNumero(2) + Else + 'DivSMU.Visible = False + HdnSMUBon.Value = "0" + LtlSMUBon.Text = "0" + End If + ObjAcum.Dispose() + + 'Dim SaldoMaximoUsados As Decimal = Me.TmpDT.SUM("Total", "EsCargo = True").ToDecimal() + Me.TmpDT.SUM("ImporteIVA", "EsCargo = True").ToDecimal() + + 'If SaldoMaximoUsados > 0 Then + ' HdnSaldoMaximoUsados.Value = SaldoMaximoUsados.ToString() + ' LblSaldoMaximoUsados.Text = String.Format("{0:N2}", SaldoMaximoUsados) + 'Else + ' HdnSaldoMaximoUsados.Value = "0" + ' LblSaldoMaximoUsados.Text = "0" + 'End If + + UpModalRemisionesNC.Update() + End Sub Private Sub CargaRNCDetalleDescBonificacion() Dim DtNC As DataTable = Nothing @@ -25372,74 +25440,95 @@ Partial Class Ventas If TmpDTRNCBonificacionesSeleccionadas Is Nothing Then TmpDTRNCBonificacionesSeleccionadas = Me.TmpDTRNCBonificacionesCliente.Clone() End If + If ChkMostarProductosRNCBon.Checked Then + DivRNCBonificaciones.Visible = False + DivRNCBonificacionesDetalle.Visible = True - Dim ListaBon As New List(Of VentasBonificaciones) - Dim DtBon As DataTable = Nothing - Dim SbFiltro As New StringBuilder() - SbFiltro.Append("CveVenta IN(") - Using ObjAcum As New ClsAcumuladores - If ObjAcum.DistribuidorMovtosGet(CveCliente, UsuarioActual.CveEmpresa, CveVentaRNCCargo:=CveVentaRNCCargo) Then - DtBon = ObjAcum.DtResultados.Copy() - End If - End Using - - If DtBon IsNot Nothing Then - Dim queryBonificacion = From dr In DtBon - Where dr("CveVentaBonificacion").ToString().ToEntero > 0 - Group By CveVentaBonificacion = dr("CveVentaBonificacion").ToString().ToEntero, CveVenta = dr("CveVenta").ToString().ToEntero - Into x = Group - Select New With { - .CveVentaRNCCargo = CveVenta, - .CveVentaBonificacion = CveVentaBonificacion, - .ImporteBonificacion = x.Sum(Function(s) s("ImporteBonificacion").ToString().ToDecimal), - .IVABonificacion = x.Sum(Function(s) s("IVABonificacion").ToString().ToDecimal) - } - - For Each bon In queryBonificacion - SbFiltro.AppendFormat("'{0}',", bon.CveVentaBonificacion) - ListaBon.Add(New VentasBonificaciones() With {.CveVentaRNCCargo = bon.CveVentaRNCCargo, .CveVentaBonificacion = bon.CveVentaBonificacion, .ImporteBonificacion = bon.ImporteBonificacion, .IVABonificacion = bon.IVABonificacion}) - Next - SbFiltro.Remove(SbFiltro.Length - 1, 1) - SbFiltro.Append(")") - End If - - If ListaBon.Count > 0 Then - Dim Bonificaciones = Me.TmpDTRNCBonificacionesCliente.Select(SbFiltro.ToString()) - - For Each RowBonificacion As DataRow In Bonificaciones - Dim RNCBonificacion = ListaBon.Where(Function(x) x.CveVentaBonificacion = RowBonificacion("CveVenta").ToString().ToEntero()) - - RowBonificacion("ImporteBonificacion") = RNCBonificacion.Sum(Function(x) x.ImporteBonificacion) - RowBonificacion("IVABonificacion") = RNCBonificacion.Sum(Function(x) x.IVABonificacion) - RowBonificacion("CveVentaRNCCargo") = CveVentaRNCCargo - - If AplicarRNC Then - TmpDTRNCBonificacionesSeleccionadas.Rows.Add(RowBonificacion.ItemArray) - Else - For Each RowEliminar In Me.TmpDTRNCBonificacionesSeleccionadas.Select(SbFiltro.ToString()) - RowEliminar.Delete() - Next - End If - Next - - End If - - 'VERIFICA SI TIENE BONIFICACIONES PARA AGREGARLAS - If TmpDTRNCBonificacionesSeleccionadas IsNot Nothing AndAlso TmpDTRNCBonificacionesSeleccionadas.Rows.Count > 0 Then - DivRNCBon.Visible = True + CargaRNCDetalleBonificacion() Else - DivRNCBon.Visible = False + DivRNCBonificaciones.Visible = True + DivRNCBonificacionesDetalle.Visible = False + + Dim ListaBon As New List(Of VentasBonificaciones) + Dim DtBon As DataTable = Nothing + Dim SbFiltro As New StringBuilder() + SbFiltro.Append("CveVenta IN(") + Using ObjAcum As New ClsAcumuladores + If ObjAcum.DistribuidorMovtosGet(CveCliente, UsuarioActual.CveEmpresa, CveVentaRNCCargo:=CveVentaRNCCargo) Then + DtBon = ObjAcum.DtResultados.Copy() + End If + End Using + + If DtBon IsNot Nothing Then + Dim queryBonificacion = From dr In DtBon + Where dr("CveVentaBonificacion").ToString().ToEntero > 0 + Group By CveVentaBonificacion = dr("CveVentaBonificacion").ToString().ToEntero, CveVenta = dr("CveVenta").ToString().ToEntero + Into x = Group + Select New With { + .CveVentaRNCCargo = CveVenta, + .CveVentaBonificacion = CveVentaBonificacion, + .ImporteBonificacion = x.Sum(Function(s) s("ImporteBonificacion").ToString().ToDecimal), + .IVABonificacion = x.Sum(Function(s) s("IVABonificacion").ToString().ToDecimal) + } + + For Each bon In queryBonificacion + SbFiltro.AppendFormat("'{0}',", bon.CveVentaBonificacion) + ListaBon.Add(New VentasBonificaciones() With {.CveVentaRNCCargo = bon.CveVentaRNCCargo, .CveVentaBonificacion = bon.CveVentaBonificacion, .ImporteBonificacion = bon.ImporteBonificacion, .IVABonificacion = bon.IVABonificacion}) + Next + SbFiltro.Remove(SbFiltro.Length - 1, 1) + SbFiltro.Append(")") + End If + + If ListaBon.Count > 0 Then + Dim Bonificaciones = Me.TmpDTRNCBonificacionesCliente.Select(SbFiltro.ToString()) + + For Each RowBonificacion As DataRow In Bonificaciones + Dim RNCBonificacion = ListaBon.Where(Function(x) x.CveVentaBonificacion = RowBonificacion("CveVenta").ToString().ToEntero()) + + RowBonificacion("ImporteBonificacion") = RNCBonificacion.Sum(Function(x) x.ImporteBonificacion) + RowBonificacion("IVABonificacion") = RNCBonificacion.Sum(Function(x) x.IVABonificacion) + RowBonificacion("CveVentaRNCCargo") = CveVentaRNCCargo + + If AplicarRNC Then + TmpDTRNCBonificacionesSeleccionadas.Rows.Add(RowBonificacion.ItemArray) + Else + For Each RowEliminar In Me.TmpDTRNCBonificacionesSeleccionadas.Select(SbFiltro.ToString()) + RowEliminar.Delete() + Next + End If + Next + + End If + + 'VERIFICA SI TIENE BONIFICACIONES PARA AGREGARLAS + If TmpDTRNCBonificacionesSeleccionadas IsNot Nothing AndAlso TmpDTRNCBonificacionesSeleccionadas.Rows.Count > 0 Then + DivRNCBon.Visible = True + Else + DivRNCBon.Visible = False + End If + + GvRemisionesNCBon.DataSource = TmpDTRNCBonificacionesSeleccionadas + GvRemisionesNCBon.DataBind() + + 'Dim SMUBon As Decimal = Me.TmpDTRNCBonificacionesSeleccionadas.SUM("ImporteBonificacion").ToDecimal() + Me.TmpDTRNCBonificacionesSeleccionadas.SUM("IVABonificacion").ToDecimal() + + 'LtlSMUBon.Text = String.Format("{0:N2}", SMUBon) + 'HdnSMUBon.Value = SMUBon.ToString() + + Dim ObjAcum2 As New ClsAcumuladores + If ObjAcum2.GetMovimientosDistribuidorResumen(CveCliente, UsuarioActual.CveEmpresa) Then + Dim RowUsadosNC As DataRow = ObjAcum2.DtResultados.Rows(5) + HdnSMUBon.Value = RowUsadosNC("ValorConImpuestos").ToString() + LtlSMUBon.Text = RowUsadosNC("ValorConImpuestos").ToString().ToDecimal().FormatoNumero(2) + Else + HdnSMUBon.Value = "0" + LtlSMUBon.Text = "0" + End If + ObjAcum2.Dispose() + + UpModalRemisionesNC.Update() End If - GvRemisionesNCBon.DataSource = TmpDTRNCBonificacionesSeleccionadas - GvRemisionesNCBon.DataBind() - - Dim SMUBon As Decimal = Me.TmpDTRNCBonificacionesSeleccionadas.SUM("ImporteBonificacion").ToDecimal() + Me.TmpDTRNCBonificacionesSeleccionadas.SUM("IVABonificacion").ToDecimal() - - LtlSMUBon.Text = String.Format("{0:N2}", SMUBon) - HdnSMUBon.Value = SMUBon.ToString() - - UpModalRemisionesNC.Update() End Sub 'Protected Sub ChkAplicarRNC_CheckedChanged(sender As Object, e As EventArgs) @@ -25620,6 +25709,22 @@ Partial Class Ventas End If End If End Sub + + Protected Sub GvRemisionesNCBonDetalle_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvRemisionesNCBonDetalle.RowDataBound + If e.Row.RowType = DataControlRowType.DataRow Then + + If e.Row.DBCampo("CveVentaDetalleRNC").ToEntero() = 0 Then + e.Row.CssClass = "Totales" + e.Row.FCCheckBox("ChkAplicar").Visible = False + e.Row.FCTextBox("TxtCantidadRNC").Visible = False + Else + e.Row.CssClass = "ImportesRNCDetalle" + e.Row.FCCheckBox("ChkAplicar").Attributes.Add("onclick", $"CalculaSaldoRNCChkDetalleBon({e.Row.FCTextBox("TxtCantidadRNC").ClientID},{e.Row.DBCampo("CantidadPendiente").ToDouble},{e.Row.DBCampo("Total").ToDouble}, this);") + 'e.Row.FCTextBox("TxtImporte").Attributes.Add("onkeyup", $"LimitaSaldoRNCChk({e.Row.FCTextBox("TxtImporte").ClientID},{e.Row.DBCampo("Saldo").ToDouble});") + + End If + End If + End Sub Protected Sub GvRNCDevoluciones_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvRNCDevoluciones.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then e.Row.FCCheckBox("ChkAplicar").Attributes.Add("onclick", $"CalculaSaldoRNCBonChkDesc({e.Row.FCTextBox("TxtImporte").ClientID},{e.Row.DBCampo("Saldo").ToDouble}, this);") @@ -30034,7 +30139,8 @@ Partial Class Ventas NCConcepto = ArrayNC(1).ToEntero() End Select - If ChkMostarProductosRNC.Checked Then + 'CARGOS/AJUSTES POR GARANTIA POR PRODUCTO + If RblRNCTipo.SelectedValue.Contiene("1", "3") AndAlso ChkMostarProductosRNC.Checked Then Dim TotalAcumulado As Decimal = 0 Me.AplicaRNCXDetalle = True @@ -30102,8 +30208,8 @@ Partial Class Ventas Exit For End If Next - - Else + 'CARGOS/AJUSTES POR GARANTIA POR TOTAL + ElseIf RblRNCTipo.SelectedValue.Contiene("1", "3") AndAlso Not ChkMostarProductosRNC.Checked Then For Each GvRow As GridViewRow In GvRemisionesNC.Rows If GvRow.RowType = DataControlRowType.DataRow Then @@ -30153,7 +30259,77 @@ Partial Class Ventas Else DdlNCPS.Enabled = True End If + 'BONIFICACIONES POR PRODUCTO + ElseIf RblRNCTipo.SelectedValue.Contiene("2") AndAlso ChkMostarProductosRNCBon.Checked Then + Dim TotalAcumulado As Decimal = 0 + Me.AplicaRNCXDetalle = True + For Each GvRow As GridViewRow In GvRemisionesNCBonDetalle.Rows + If GvRow.RowType = DataControlRowType.DataRow Then + If GvRow.FCCheckBox("ChkAplicar").Checked Then + Dim Rows = TmpDTRNCDetalle.Select($"CveVentaDetalleRNC = {GvRow.DataKey("CveVentaDetalleRNC").ToEntero()}") + For Each row In Rows + row("Cantidad") = GvRow.FCTextBox("TxtCantidadRNC").Text.ToDecimal() + TmpDTRNCDetalleSelecciondas.Rows.Add(row.ItemArray) + Next + End If + End If + Next + Dim TerminarCiclo As Boolean = False + + For Each Dr As DataRow In TmpDTRNCDetalleSelecciondas.FiltraParametros("", DistinctColumns:={"CveVenta"}).Rows + Dim RemNC As New Modelos.Factura(UsuarioActual, Dr("CveVenta").ToString().ToEntero(), UsuarioActual.CveEmpresa) + + Dim TotalRNC As Decimal = 0 + For Each GvRow As GridViewRow In GvRemisionesNCBonDetalle.Rows + If GvRow.RowType = DataControlRowType.DataRow Then + + If GvRow.FCCheckBox("ChkAplicar").Checked AndAlso GvRow.DataKey("CveVenta").ToEntero() = Dr("CveVenta").ToString().ToEntero() Then + + Dim Cantidad As Decimal = GvRow.FCTextBox("TxtCantidadRNC").Text.ToDecimal() + Dim PU = GvRow.DataKey("PU").ToDecimal() + Dim PorcentajeIVA As Decimal = GvRow.DataKey("PorcentajeIVA").ToDecimal() + + Dim TotalCalculableImpuestos As Decimal = (Cantidad * PU) + Dim ImporteIVA As Decimal = (TotalCalculableImpuestos * PorcentajeIVA).RoundSQL(2) + + Dim TotalRNCDetalle As Decimal = (TotalCalculableImpuestos + ImporteIVA) + + TotalRNC += TotalRNCDetalle + + + End If + + End If + Next + TotalAcumulado += TotalRNC + + 'SI SE EXECE RESTA AL ULTIMO + If TotalAcumulado > LtlSMUBon.Text.ToDecimal() Then + TerminarCiclo = True + TotalAcumulado -= TotalRNC + TotalRNC = LtlSMUBon.Text.ToDecimal() - TotalAcumulado + End If + + RemNC.TotalRemNCAplicado = TotalRNC + 'MARCA LA VENTA QUE FUE USADA PARA EL FILTRO + RemNC.Num3 = DdlVentaUsado.SelectedValue.ToEntero() + TotalRemNCAplicado += RemNC.TotalRemNCAplicado + + If RemNC.TotalRemNCAplicado <= 0 Then + Alert($"Debe asignar un importe en la siguiente remisión: {RemNC.SerieFolio}", TipoMensaje.MsgAdvertencia) + ListaRemisionesNC.Clear() + Exit Sub + End If + + ListaRemisionesNC.Add(RemNC) + + If TerminarCiclo Then + Exit For + End If + Next + 'BONIFICACIONES POR TOTAL + ElseIf RblRNCTipo.SelectedValue.Contiene("2") AndAlso Not ChkMostarProductosRNCBon.Checked Then For Each GvRow As GridViewRow In GvRemisionesNCBon.Rows If GvRow.RowType = DataControlRowType.DataRow Then If GvRow.FCCheckBox("ChkAplicar").Checked Then @@ -30164,21 +30340,20 @@ Partial Class Ventas If RemNC.TotalRemNCAplicado <= 0 Then Alert($"Debe asignar un importe en la siguiente remisión: {RemNC.SerieFolio}", TipoMensaje.MsgAdvertencia) - ListaNCBonificacion.Clear() + ListaRemisionesNC.Clear() Exit Sub End If - ListaNCBonificacion.Add(RemNC) + ListaRemisionesNC.Add(RemNC) End If End If Next 'SI SON SOLO BONIFICACIONES GENERA LA NC PRINCIPAL EN BASE A ESAS - If RblRNCTipo.SelectedValue.ToString() = "2" AndAlso ListaRemisionesNC.Count = 0 Then - ListaRemisionesNC.AddRange(ListaNCBonificacion) - ListaNCBonificacion.Clear() - End If - + 'If RblRNCTipo.SelectedValue.ToString() = "2" AndAlso ListaRemisionesNC.Count = 0 Then + ' ListaRemisionesNC.AddRange(ListaNCBonificacion) + ' ListaNCBonificacion.Clear() + 'End If End If Dim DrPSSeleccionado As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=NCConcepto).FiltroPrimero("") From 71d8953cf75d2236a898e588f274249086add6e7 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Tue, 27 Jul 2021 16:28:42 -0700 Subject: [PATCH 2/5] Descuento definido por el porcentaje maximo autorizado --- Ventas/PV.aspx | 22 ++++++++++++ Ventas/PV.aspx.vb | 85 ++++++++++++++++++++++++----------------------- 2 files changed, 65 insertions(+), 42 deletions(-) diff --git a/Ventas/PV.aspx b/Ventas/PV.aspx index fc06bd5a1..a36f25ad3 100644 --- a/Ventas/PV.aspx +++ b/Ventas/PV.aspx @@ -1571,6 +1571,7 @@