diff --git a/Ventas/PV.aspx b/Ventas/PV.aspx
index 07ff5a1dc..84ed1799d 100644
--- a/Ventas/PV.aspx
+++ b/Ventas/PV.aspx
@@ -1,4 +1,4 @@
-<%@ Page Title="Ventas - Facturación" Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="PV.aspx.vb" Inherits="PV" EnableEventValidation="false" %>
+<%@ Page Title="Ventas - Facturación" Language="VB" MasterPageFile="~/Site.master" AutoEventWireup="false" CodeFile="PV.aspx.vb" Inherits="PV" EnableEventValidation="false"%>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<%--Necesario para el modal que no se cierra--%>
@@ -2913,7 +2913,7 @@
-
+
@@ -3021,75 +3021,50 @@
function ValidarCodigoEnsamble(source, arguments) {
let CveMarca = HdnPSAjusteMarca.value;
let CveClasificacion = HdnPSAjusteClasificacion.value;
- let regex = "";
-
- //SI ES MOTOBATERIA
- if (CveClasificacion = "20517") {
- regex = "[1X]|"
- //regex = "[*]|"
- //SI ES OPTIMA
- } else if (CveClasificacion = "20511") {
- regex = "[1X]|"
- }
//MARCA OPTIMA
if (CveMarca == "1086") {
- let re = new RegExp("^" + regex + "[0-9]+$");
- arguments.IsValid = re.test(parseInt(arguments.Value));
+ let regex = new RegExp("^[0-9]+$");
+ arguments.IsValid = regex.test(arguments.Value);
return;
+ //MARCA MOTOBATERIAS
+ } else if ((CveMarca == "1090" || CveMarca == "1091") || CveClasificacion == "20517") {
+ let regex = new RegExp("^[1X]");
+ arguments.IsValid = regex.test(arguments.Value);
+ return;
+ //AUTOMOTRIZ-ACUMULADORES
} else {
- let re = new RegExp("^" + regex + "[0-9][A-HJ-M]([[0-2][0-9]|3[0-1])[0-9A-Z][ACEN][2-5]$");
- arguments.IsValid = re.test(arguments.Value);
+ let regex = new RegExp("^[1X]|^[0-9][A-HJ-M]([[0-2][0-9]|3[0-1])[0-9A-Z][ACEN][2-5]$");
+ arguments.IsValid = regex.test(arguments.Value);
return;
}
}
function ValidarCodigoLinea(source, arguments) {
- var CveMarca = HdnPSAjusteMarca.value;
- let CveClasificacion = HdnPSAjusteClasificacion.value;
- let regex = "";
-
- //SI ES MOTOBATERIA
- if (CveClasificacion = "20517") {
- regex = "[*]|";
- } else {
- regex = "";
- }
-
- if (CveMarca == "1086") {
- var re = new RegExp("^" + regex + "[0-9]+$");
- arguments.IsValid = re.test(parseInt(arguments.Value));
- } else {
- var re = new RegExp("^" + regex + "$");
- arguments.IsValid = re.test(arguments.Value);
- }
+ var regex = new RegExp("^[*]");
+ arguments.IsValid = regex.test(arguments.Value);
}
function ValidarCodigoInspeccion(source, arguments) {
+ let CveMarca = HdnPSAjusteMarca.value;
let CveClasificacion = HdnPSAjusteClasificacion.value;
- let clasificaciones = ["20517", "20511"]
-
- //SI ES MOTOBATERIA
- if (CveClasificacion = "20517") {
- var re = new RegExp("^[X]|[x]|[A-L][0-9][1-9A-Z][A-HJ-M]$");
- arguments.IsValid = re.test(arguments.Value);
+ //MARCA OPTIMA
+ if (CveMarca == "1086") {
+ var regex = new RegExp("^\d{4}$|^[A-L][0-9][1-9A-Z][A-HJ-M]$");
+ arguments.IsValid = regex.test(arguments.Value);
return;
+ //MARCA MOTOBATERIAS
+ } else if ((CveMarca == "1090" || CveMarca == "1091") || CveClasificacion == "20517") {
+ var regex = new RegExp("^[A-L][0-9][1-9A-Z][A-HJ-M]$");
+ arguments.IsValid = regex.test(arguments.Value);
+ return;
+ //AUTOMOTRIZ-ACUMULADORES
} else {
- var re = new RegExp("^[A-L][0-9][1-9A-Z][A-HJ-M]$");
- arguments.IsValid = re.test(arguments.Value);
+ var regex = new RegExp("^[X]|^[x]|[A-L][0-9][1-9A-Z][A-HJ-M]$");
+ arguments.IsValid = regex.test(arguments.Value);
return;
}
- //if (clasificaciones.includes(CveClasificacion)) {
- // //var re = new RegExp("^[*]|[A-L][0-9][1-9A-Z][A-HJ-M]$");
- // var re = new RegExp("^[X]|[A-L][0-9][1-9A-Z][A-HJ-M]$");
- // arguments.IsValid = re.test(parseInt(arguments.Value));
- // return;
- //} else {
- // var re = new RegExp("^[A-L][0-9][1-9A-Z][A-HJ-M]$");
- // arguments.IsValid = re.test(arguments.Value);
- // return;
- //}
}
function CalculaMesesUso() {
diff --git a/Ventas/PV.aspx.vb b/Ventas/PV.aspx.vb
index 1435bcd1a..ed5039389 100644
--- a/Ventas/PV.aspx.vb
+++ b/Ventas/PV.aspx.vb
@@ -568,7 +568,7 @@ Partial Class PV
End Property
Private Property CveVentaDetalle As Integer
Get
- Return ViewState("CveVentaDetalle").ToString.ToEntero
+ Return If(ViewState("CveVentaDetalle") Is Nothing, -1, ViewState("CveVentaDetalle").ToString.ToEntero)
End Get
Set(value As Integer)
ViewState("CveVentaDetalle") = value
@@ -682,6 +682,15 @@ Partial Class PV
ViewState("EnviarCorreoCliente") = value
End Set
End Property
+
+ Private ReadOnly Property ClasificacionesDescuentos As Dictionary(Of Integer, Decimal)
+ Get
+ Return New Dictionary(Of Integer, Decimal) From {
+ {20516, 0.23D}, 'Descuento para lubricantes LTH
+ {20515, 0.24D} 'Descuento para filtros LTH
+ }
+ End Get
+ End Property
#End Region
#Region "PROPIEDADES DE PUNTO DE VENTA"
@@ -3570,11 +3579,7 @@ Partial Class PV
End If
'Descuento por clasificación
If drPS("CveClasificacion").ToString.ToEntero.Contiene(20516, 20515) Then
- Dim clasificacionesDescuentos As New Dictionary(Of Integer, Double) From {
- {20516, 0.23}, 'Descuento para lubricantes LTH
- {20515, 0.24} 'Descuento para filtros LTH
- }
- TxtDescuento.Text = (PrecioSugerido * clasificacionesDescuentos(drPS("CveClasificacion").ToString.ToEntero)).ToString("F2")
+ TxtDescuento.Text = (PrecioSugerido * ClasificacionesDescuentos(drPS("CveClasificacion").ToString.ToEntero)).ToString("F2")
End If
If ChkAjuste.Checked Then
@@ -3935,6 +3940,7 @@ Partial Class PV
TxtObsPS.Text = ""
TxtPrecio.Text = ""
+ TxtDescuento.Text = ""
LblTotalPS.Text = "0.00"
HdnIVAPS.Value = "-1"
HdnIVARetAPS.Value = "-1"
@@ -4414,7 +4420,7 @@ Partial Class PV
ChkAgregar.Checked = True
divagregrarotrops.Visible = True
UpVenta.Update()
- RegistraScript(String.Format("$('#{0}').modal('show');", "DivAddVenta"))
+ RegistraScript("$('#DivAddVenta').modal({backdrop: 'static', keyboard: false});")
End Sub
Private Sub CargaBCI()
'Dim ObjGral As New ClsGenerales
@@ -4448,6 +4454,7 @@ Partial Class PV
TxtCantidad.Text = GvRow.DataKey("Cantidad")
TxtObsPS.Text = GvRow.DataKey("Obs")
TxtPrecio.Text = GvRow.DataKey("PU")
+ TxtDescuento.Text = GvRow.DataKey("Descuento")
LblTotalPS.Text = GvRow.DataKey("Total")
ChkAgregar.Checked = False
divagregrarotrops.Visible = False
@@ -4456,7 +4463,7 @@ Partial Class PV
End If
AddPolizaVirtual(DdlPS.SelectedValue.ToEntero())
UpVenta.Update()
- RegistraScript(String.Format("$('#{0}').modal('show');", "DivAddVenta"), "EdicionVenta")
+ RegistraScript("$('#DivAddVenta').modal({backdrop: 'static', keyboard: false});", "EdicionVenta")
End Sub
Protected Sub LnkAgregarPS_Click(sender As Object, e As EventArgs)
If AgregarPS() Then
@@ -4490,9 +4497,13 @@ Partial Class PV
'SELECCIONA EL PS DEPENDIENDO LA MODALIDAD (CODIGO BARRAS - DDL)
Dim CvePS = DdlPS.SelectedValue.ToEntero
+ Dim DrPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePS).FiltroPrimero("")
If ValidaAgregarPS(CvePS, DdlUnidadMedida.SelectedValue.ToEntero, TxtPrecio.Text.Trim.ToDouble, HdnTipoPS.Value.ToEntero, TxtCantidad.Text.ToDecimal) Then
+ Dim Cantidad As Decimal = TxtCantidad.Text.ToDecimal
+ Dim PU As Decimal = If(CvePSAmortizacion > 0, TxtPrecio.Text.Trim.ToDecimal * -1, TxtPrecio.Text.Trim.ToDecimal).RoundSQL(6)
+
If UsuarioActual.Empresa.Funcionalidad(507) = DdlPS.SelectedValue Then
CvePSAmortizacion = DdlPS.SelectedValue.ToEntero.ToEntero
End If
@@ -4502,11 +4513,15 @@ Partial Class PV
Descuento = HdnDescuento.Value.ToDecimal * TxtCantidad.Text.ToDecimal
End If
+ If DrPS("CveClasificacion").ToString.ToEntero.Contiene(20516, 20515) Then
+ Descuento = ((Cantidad * PU) * ClasificacionesDescuentos(DrPS("CveClasificacion").ToString.ToEntero))
+ End If
+
Dim CveProyecto As Integer = GlobalDTSubProyectos(-1, CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero, CveEmpresa:=UsuarioActual.CveEmpresa).Rows(0)("CveProyecto").ToString.ToEntero
Dim Proyecto As String = GlobalDTSubProyectos(-1, CveSubProyecto:=DdlSubProyectoDatos.SelectedValue.ToEntero, CveEmpresa:=UsuarioActual.CveEmpresa).Rows(0)("Proyecto").ToString
- Dim Consec = AgregarProductoServicio(TxtCantidad.Text.ToDecimal, DdlUnidadMedida.SelectedValue.ToEntero, DdlUnidadMedida.SelectedItem.Text, DdlClasificacion.SelectedValue.ToEntero, DdlClasificacion.SelectedItem.Text,
- CvePS, "", TxtObsPS.Text.Trim, If(CvePSAmortizacion > 0, TxtPrecio.Text.Trim.ToDecimal * -1, TxtPrecio.Text.Trim.ToDecimal), Descuento,
+ Dim Consec = AgregarProductoServicio(Cantidad, DdlUnidadMedida.SelectedValue.ToEntero, DdlUnidadMedida.SelectedItem.Text, DdlClasificacion.SelectedValue.ToEntero, DdlClasificacion.SelectedItem.Text,
+ CvePS, "", TxtObsPS.Text.Trim, PU, Descuento,
CveProyecto, Proyecto, DdlSubProyectoDatos.SelectedValue.ToEntero, DdlSubProyectoDatos.SelectedItem.Text,
SerieLote:="", TiempoEntrega:="", CuentaPredial:="", RegeneraIEPS:=ClienteDesglosaIEPS, CveVentaDetalle:=CveVentaDetalle, EsCargo:=EsCargo)
@@ -5856,7 +5871,7 @@ Partial Class PV
TxtCodEnsamble.Text = ""
DdlTipoUso.SelectedIndex = -1
TxtCodLinea.Text = ""
- TxtPrecio.Text = ""
+ 'TxtPrecio.Text = ""
TxtFechaAjuste.Text = Now.ToShortDateString
CEEFechaAjuste.EndDate = Now
TxtCodInspeccion.Text = ""
@@ -5910,22 +5925,27 @@ Partial Class PV
Dim FechaI As Date = TxtFechaAjuste.Text.ToDate.AddDays(1)
Dim FechaF As Date = Now
Dim Dia As Integer = FechaI.Day
- 'validación adicional, para saber si el mes tiene 31 días y el actua es menor.
- If FechaI.Day > Today.LastDayOfMonth.Day Then Dia = Today.LastDayOfMonth.Day
- Dim FechaT As Date = String.Format("{0}/{1}/{2}", Dia, FechaF.Month, FechaF.Year).ToDate 'armo la fecha con el día del mes actual
+ Try
+ 'validación adicional, para saber si el mes tiene 31 días y el actua es menor.
+ If FechaI.Day > Today.LastDayOfMonth.Day Then Dia = Today.LastDayOfMonth.Day
+ Dim FechaT As Date = String.Format("{0}/{1}/{2}", Dia, FechaF.Month, FechaF.Year).ToDate 'armo la fecha con el día del mes actual
- Dim MesesTrascurridos As Integer = Math.Round(DateDiff(DateInterval.Day, FechaI, FechaT) / 30.4, 2).ToEntero 'saco los meses y lo redondeo
+ Dim MesesTrascurridos As Integer = Math.Round(DateDiff(DateInterval.Day, FechaI, FechaT) / 30.4, 2).ToEntero 'saco los meses y lo redondeo
- If FechaT > FechaF Then
- 'todavía está en el mes actual.
- MesesTrascurridos = MesesTrascurridos
- Else
- MesesTrascurridos = MesesTrascurridos + 1
- End If
+ If FechaT > FechaF Then
+ 'todavía está en el mes actual.
+ MesesTrascurridos = MesesTrascurridos
+ Else
+ MesesTrascurridos = MesesTrascurridos + 1
+ End If
- TxtMesesUso.Text = MesesTrascurridos.ToString
+ TxtMesesUso.Text = MesesTrascurridos.ToString
+
+ CalculaPorcentajeAjuste()
+ Catch ex As Exception
+ OnError("Ocurrió un error al calcular los meses de uso", ex)
+ End Try
- CalculaPorcentajeAjuste()
End Sub
Protected Sub DdlPSAjuste_selectedindexchange(sender As Object, e As EventArgs)
@@ -5950,15 +5970,23 @@ Partial Class PV
Dim drPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSParametro).FiltroPrimero("")
Dim CveMarca As Integer = -1
Dim CveClasificacion As Integer = -1
+ Dim CveTamanio As Integer = -1
If drPS IsNot Nothing Then
PrecioSugerido = drPS("Precio").ToString.ToDecimal
CveMarca = drPS("CveMarca").ToString.ToEntero
CveClasificacion = drPS("CveClasificacion").ToString.ToEntero
+ CveTamanio = drPS("CveTamaño").ToString.ToEntero
End If
TxtPUFactura.Text = PrecioSugerido.FormatoNumero(2)
+ If DTBCIUsados IsNot Nothing AndAlso CveTamanio > 0 Then
+ DdlBCIAjuste.Items.Clear()
+ DdlBCIAjuste.DataSource = DTBCIUsados.FiltraParametros($"CveTamaño={CveTamanio}")
+ DdlBCIAjuste.DataBind()
+ End If
+
DdlTipoUso.Items.Clear()
DdlTipoUso.DataSource = GlobalDTAcumGarantiasMesesTipoUso(UsuarioActual.CveEmpresa, CveMarca)
DdlTipoUso.Items.Insert(0, New ListItem("Seleccione", "-1"))
@@ -5973,8 +6001,6 @@ Partial Class PV
TxtPUFactura.Text = ""
End If
-
-
CalculaPorcentajeAjuste()
End Sub
@@ -5991,6 +6017,10 @@ Partial Class PV
Alert("No se ha especificado producto a entregar")
Exit Sub
End If
+ If DdlPSAjuste.SelectedValue.ToEntero <= 0 Then
+ Alert("No se ha especificado producto de ajuste a entregar")
+ Exit Sub
+ End If
Try
TxtImporteAjuste.Text = "0.00"
If DdlTipoUso.SelectedValue.ToEntero > 0 AndAlso DdlPSAjuste.SelectedValue.ToEntero > 0 AndAlso TxtMesesUso.Text <> "" AndAlso DdlPS.SelectedValue.ToEntero > 0 Then
@@ -6207,7 +6237,7 @@ Partial Class PV
DivDatosVenta.Attributes.Add("class", "col-md-12")
End If
UpModalVenta.Update()
- RegistraScript(String.Format("$('#{0}').modal('show');", "DivAddVenta"))
+ RegistraScript("$('#DivAddVenta').modal({backdrop: 'static', keyboard: false});")
RegistraScript("Recalcula();", "Recalcula")
End Sub