From 1db50763218e0020f870292c7af69d058c430f6a Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Wed, 14 May 2025 18:55:05 -0700 Subject: [PATCH] --Descuento global para alatel --- Ventas/Ventas.aspx | 57 +++++++++++++++++++++++++++--- Ventas/Ventas.aspx.vb | 81 ++++++++++++++++++++++++++++++++++++++----- 2 files changed, 125 insertions(+), 13 deletions(-) diff --git a/Ventas/Ventas.aspx b/Ventas/Ventas.aspx index b060a909e..b6b2b0452 100644 --- a/Ventas/Ventas.aspx +++ b/Ventas/Ventas.aspx @@ -1127,8 +1127,8 @@ Predial - Ed. Med - + Ed. Med + IVA IEPS @@ -1262,8 +1262,7 @@ - - + @@ -4726,6 +4725,54 @@ + + +
- +
diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 87393a619..b519e3528 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -3667,11 +3667,22 @@ Partial Class Ventas InicializaDevolucionAlmacen() + HabilitarDescuentoGlobal() + End If + + End Sub + + Private Sub HabilitarDescuentoGlobal() + If UsuarioActual.CveRol = 1 AndAlso UsuarioActual.CveEmpresa.Contiene(181, 182, 183) AndAlso (CveVenta <= 0 OrElse EsCreaApartirDe) Then + ImgDescTotal.Visible = True + ImgDescTotal.Attributes.Add("onclick", "javascript:$('#ModalDescuentoGlobal').modal();") + End If End Sub #Region "Bloqueo Pantalla" + Private Sub ValidaUsuarioAcceso() 'VERIFICAR SI LA SESION SE ENCUENTRA BLOQUEADA If UsuarioActual.Empresa.Funcionalidad(599) = "1" Then @@ -17539,9 +17550,9 @@ Partial Class Ventas saldo = (e.Row.DataKey("Saldo").ToString().ToDecimal * tipoCambio).TruncateDecimal Else saldo = e.Row.DataKey("Saldo").ToDecimal - End If - Else - saldo = e.Row.DataKey("Saldo").ToString().ToDecimal + End If + Else + saldo = e.Row.DataKey("Saldo").ToString().ToDecimal If CveVenta <= 0 Then If DdlTipoAmortizacionAnticipo.SelectedValue.Contiene("2") Then 'cuando es por NC, debe de tomar el total de su saldo respectivo @@ -18592,6 +18603,25 @@ Partial Class Ventas RegistraScript("$('#ModalDescuento').modal('hide')", "hidemodal") UpPS.Update() End Sub + + Protected Sub BtnAplicarDescGlobal_Click(sender As Object, e As System.EventArgs) Handles BtnAplicarDescGlobal.Click + Dim DescuentoManual As Decimal = TxtMontoDescGlobal.Text.ToDecimal() + Dim PorcentajeDescuento As Decimal = TxtPorDescGlobal.Text.ToDecimal() + + If DescuentoManual <> 0 AndAlso PorcentajeDescuento <> 0 Then + Alert("Debe elegir un solo tipo de descuento", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + + If PorcentajeDescuento > 100 Then + Alert("El porcentaje no puede ser mayor a 100", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + + RecalculaPrecios(False, False, AplicarDescuentoGlobal:=True) + RegistraScript("$('#ModalDescuentoGlobal').modal('hide')", "hidemodal") + UpPS.Update() + End Sub Private Sub BtnAplicarOtrosConceptos_Click(sender As Object, e As EventArgs) Handles BtnAplicarOtrosConceptos.Click TotalOtrosConceptos = 0 @@ -40796,9 +40826,16 @@ Partial Class Ventas RegistraScript("MuestraAnticipos();", "AE") End Sub - Private Sub RecalculaPrecios(ByRef RecalculoPromociones As Boolean, Optional AplicarPromociones As Boolean = False) + Private Sub RecalculaPrecios(ByRef RecalculoPromociones As Boolean, Optional AplicarPromociones As Boolean = False, Optional AplicarDescuentoGlobal As Boolean = False) Dim PuedeRecalcular As Boolean = False + Dim DescuentoManual As Decimal = 0, DescuentoPorcentaje As Decimal = 0 + + If AplicarDescuentoGlobal Then + DescuentoManual = TxtMontoDescGlobal.Text.ToDecimal() + DescuentoPorcentaje = TxtPorDescGlobal.Text.ToDecimal() + End If + If CveVenta <= 0 OrElse EsCreaApartirDe OrElse (ModalidadEdicion AndAlso Not DdlTipoComprobante.SelectedValue = "Cot") Then PuedeRecalcular = True End If @@ -40812,19 +40849,25 @@ Partial Class Ventas PuedeRecalcular = True End If + If AplicarDescuentoGlobal Then + PuedeRecalcular = True + End If + If TmpDT IsNot Nothing AndAlso PuedeRecalcular Then For Each Row As DataRow In TmpDT.Rows Dim Cantidad As Decimal = Row("Cantidad").ToString().ToDecimal() Dim CveClasificacion As Integer = Row("CveClasificacion").ToString().ToEntero Dim CvePS As Integer = Row("CvePS").ToString().ToEntero + Dim CodigoPS As String = Row("CodigoPS").ToString() + Dim PUOriginal As Decimal = Row("PU").ToString().ToDecimal() Dim CvePrecioListaSugerido As Integer = -1 Dim ObjPrecioSugerido As Modelos.MPrecioSugerido = Nothing - If AplicarPromociones Then + If AplicarPromociones OrElse AplicarDescuentoGlobal Then ObjPrecioSugerido = New Modelos.MPrecioSugerido() - ObjPrecioSugerido.PrecioSugerido = Row("PU").ToString().ToDecimal() + ObjPrecioSugerido.PrecioSugerido = PUOriginal ObjPrecioSugerido.CvePrecioLista = Row("CvePrecioLista").ToString().ToEntero() Else ObjPrecioSugerido = CalculaPrecioSugerido(CvePS, CveClasificacion) @@ -40834,8 +40877,30 @@ Partial Class Ventas Dim PU As Decimal = ObjPrecioSugerido.PrecioSugerido.RoundSQL(6) Dim ObjDescuento As Modelos.VentaDescuentos = CalcularDescuentos(CvePS, Cantidad, PU) - If ObjDescuento.EsPUModificado Then - PU = ObjDescuento.PU + If AplicarDescuentoGlobal Then + + If DescuentoManual > 0 Then + ObjDescuento.EsPUModificado = False + ObjDescuento.ImporteDescuento = DescuentoManual + ObjDescuento.ImporteProntoPago = 0 + + If ObjDescuento.ImporteDescuento > (Cantidad * PU) Then + Alert($"El producto y/o servicio '{CodigoPS}' no puede tener un descuento mayor al total", TipoMensaje.MsgAdvertencia) + Continue For + End If + + End If + + If DescuentoPorcentaje > 0 Then + ObjDescuento.EsPUModificado = False + ObjDescuento.ImporteDescuento = (Cantidad * PU) * (DescuentoPorcentaje / 100D) + ObjDescuento.ImporteProntoPago = 0 + End If + + Else + If ObjDescuento.EsPUModificado Then + PU = ObjDescuento.PU + End If End If 'SI NO TIENE PROMOCION, NO MODIFICAR NADA