diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index 63b5f9f9f..e71e7f447 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -1559,8 +1559,8 @@ Namespace Modelos End If If DtPolizasVirtuales IsNot Nothing Then - If DtPolizasVirtuales.Select($"CvePS={Row("CvePS").ToString.ToEntero}").Length > 0 Then - Dim RowPoliza As DataRow = DtPolizasVirtuales.Select($"CvePS={Row("CvePS").ToString.ToEntero}")(0) + If DtPolizasVirtuales.Select($"Consec = {Row("Consec").ToString()} AND CvePS={Row("CvePS").ToString.ToEntero}").Length > 0 Then + Dim RowPoliza As DataRow = DtPolizasVirtuales.Select($"Consec = {Row("Consec").ToString()} AND CvePS={Row("CvePS").ToString.ToEntero}")(0) RowPoliza("CveVentaDetalle") = ObjVentas.CveVentaDetalle End If End If @@ -1620,7 +1620,7 @@ Namespace Modelos 'POLIZA VIRTUAL If factura.DtPolizasVirtuales IsNot Nothing AndAlso factura.DtPolizasVirtuales.Rows.Count > 0 Then - If Not GuardarPolizasVirtuales(ObjVentas.IniciaTransacSQL(), ObjFactura:=factura) Then + If Not GuardarPolizasVirtuales(ObjAcum, ObjFactura:=factura) Then ErrorList.Add("Ocurrió un error al actualizar el distribuidor.") End If End If @@ -2220,13 +2220,11 @@ Namespace Modelos Return CveMovimiento End Function - Private Function GuardarPolizasVirtuales(SqlTransaccion As SqlClient.SqlTransaction, ObjFactura As Modelos.Factura) As Boolean + Private Function GuardarPolizasVirtuales(ByRef ObjAcum As ClsAcumuladores, ObjFactura As Modelos.Factura) As Boolean Dim Resultado As Boolean = True If UsuarioActual.Empresa.Funcionalidad(531).ToEntero > 0 AndAlso ObjFactura.TipoDocto.Contiene("Rem") Then - Dim ObjAcum As New ClsAcumuladores(SqlTransaccion) - For Each drow As DataRow In ObjFactura.DtPolizasVirtuales.Rows If ObjAcum.AddPolizaVirtual(ObjFactura.CveVenta, drow("CveVentaDetalle").ToString().ToEntero(), drow("CvePS").ToString.ToEntero, drow("Cantidad").ToString.ToDecimal, drow("PU").ToString.ToDecimal, drow("Descuento").ToString.ToDecimal, drow("Total").ToString.ToDecimal, drow("TipoServicio").ToString.ToEntero, drow("TipoPoliza").ToString.ToEntero, drow("CveModeloAuto").ToString.ToEntero, drow("AnioVehiculo").ToString.ToEntero, CBool(drow("TieneUsado").ToString), diff --git a/Ventas/PV.aspx b/Ventas/PV.aspx index 0b3fd9d00..654463864 100644 --- a/Ventas/PV.aspx +++ b/Ventas/PV.aspx @@ -2872,7 +2872,7 @@
- +
@@ -3281,7 +3281,19 @@ //VALIDA SOLO SI SE SELECCIONO UN USADO var cveUsado = ToDouble($get("C_DdlRecepcionUsados").value); if (cveUsado > 0) { - args.IsValid = (ToDouble(args.Value) > 0); + var anio = ToDouble(args.Value); + if (anio > 0) { + var valido = true; + if (anio < 1900) { + valido = false; + } + if (anio.toString().length != 4) { + valido = false; + } + args.IsValid = valido; + } else { + args.IsValid = false; + } } else { args.IsValid = true; } diff --git a/Ventas/PV.aspx.vb b/Ventas/PV.aspx.vb index ed0629450..a818111b8 100644 --- a/Ventas/PV.aspx.vb +++ b/Ventas/PV.aspx.vb @@ -3430,27 +3430,27 @@ Partial Class PV If Retorno IsNot Nothing AndAlso Retorno.CveVenta > 0 Then - If ObjFactura.TipoDocto = "Rem" Then - If ObjAcum.GetPolizasVirtuales(Retorno.CveVenta) Then - Dim DtPoliza As DataTable = ObjAcum.DtResultados.Copy() + 'If ObjFactura.TipoDocto = "Rem" Then + ' If ObjAcum.GetPolizasVirtuales(Retorno.CveVenta) Then + ' Dim DtPoliza As DataTable = ObjAcum.DtResultados.Copy() - For Each Row As DataRow In ObjFactura.DtPolizasVirtuales.Rows - Dim CvePolizaVirtual As Integer = DtPoliza.FiltroPrimeroValor("CvePolizaVirtual", $"CveVentaDetalle={Row("CveVentaDetalle")}").ToEntero() + ' For Each Row As DataRow In ObjFactura.DtPolizasVirtuales.Rows + ' Dim CvePolizaVirtual As Integer = DtPoliza.FiltroPrimeroValor("CvePolizaVirtual", $"CveVentaDetalle={Row("CveVentaDetalle")}").ToEntero() - If Not ObjAcum.UpdatePolizaVirtual(CvePolizaVirtual, Row("CveMarcaUsado").ToString().ToEntero(), Row("FechaUsado").ToString().ToDateTime()) Then - SbAlert.Append("Error al guardar la póliza virtual") - TieneError = True - Exit For - End If - Next + ' If Not ObjAcum.UpdatePolizaVirtual(CvePolizaVirtual, Row("CveMarcaUsado").ToString().ToEntero(), Row("FechaUsado").ToString().ToDateTime()) Then + ' SbAlert.Append("Error al guardar la póliza virtual") + ' TieneError = True + ' Exit For + ' End If + ' Next - DtPoliza.Dispose() - Else - SbAlert.Append("Error al obtener la póliza virtual") - TieneError = True - End If + ' DtPoliza.Dispose() + ' Else + ' SbAlert.Append("Error al obtener la póliza virtual") + ' TieneError = True + ' End If - End If + 'End If If ObjAcum.GetGarantiasDetalle(Retorno.CveVenta) Then Dim RowGarantia As DataRow = ObjAcum.DtResultados.FiltroPrimero("") @@ -4790,6 +4790,9 @@ Partial Class PV DdlRecepcionUsados.SelectedValueExist("-1") DivRecepcionUsados.Visible = False + DdlMarca.SelectedValueExist("-1") + TxtFechaVigencia.Text = Now.ToString("dd/MM/yyyy") + LimpiaAjuste() UPPDescuento.Update() @@ -5295,7 +5298,7 @@ Partial Class PV divagregrarotrops.Visible = False Ajuste() - AddPolizaVirtual(DdlPS.SelectedValue.ToEntero()) + 'AddPolizaVirtual(DdlPS.SelectedValue.ToEntero()) 'BUSCA EN TMPDT LOS DATOS DE USADOS If TmpDT.Rows.Count > 0 AndAlso TmpDTRecepcionUsados IsNot Nothing AndAlso TmpDTRecepcionUsados.Rows.Count > 0 Then @@ -5334,11 +5337,29 @@ Partial Class PV Exit Sub End If + If String.IsNullOrEmpty(TxtAnioVehiculo.Text.Trim()) Then + Alert("El campo año esta vacío.", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + + If TxtAnioVehiculo.Text.ToDecimal() < 1900 Then + Alert("El campo año debe ser mayor a 1900.", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + + Else + If Not String.IsNullOrEmpty(TxtAnioVehiculo.Text.Trim()) Then + If TxtAnioVehiculo.Text.ToDecimal() < 1900 Then + Alert("El año del vehiculo del vehículo no tiene el formato correcto.", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + End If End If + + If AgregarPS() Then If ChkAjuste.Checked Then GuardaAjuste() - AddPolizaVirtual(DdlPS.SelectedValue.ToEntero()) CalculaTotalesVenta() If ChkAgregar.Checked = True And Modalidad = "A" Then @@ -5404,17 +5425,19 @@ Partial Class PV CveProyecto, Proyecto, DdlSubProyectoDatos.SelectedValue.ToEntero, DdlSubProyectoDatos.SelectedItem.Text, Serie:="", TiempoEntrega:="", CuentaPredial:="", RegeneraIEPS:=ClienteDesglosaIEPS, CveVentaDetalle:=CveVentaDetalle, EsCargo:=EsCargo) + Dim ListaPSCargo As List(Of MConceptoUsado) = Nothing If CveVentaDetalle <= 0 AndAlso Not EsCargo Then - Dim ListaPSCargo = CalculaUsados(Consec) - If ListaPSCargo.Count > 0 Then - CalculaRecepcionUsados(CvePS, ListaPSCargo, Cantidad, Consec) - End If + ListaPSCargo = CalculaUsados(Consec) ElseIf CveVentaDetalle > 0 AndAlso Not EsCargo Then EliminarUsados() - Dim ListaPSCargo = CalculaUsados(Consec, LimpiarUsados:=False) - If ListaPSCargo.Count > 0 Then - CalculaRecepcionUsados(CvePS, ListaPSCargo, Cantidad, Consec) - End If + ListaPSCargo = CalculaUsados(Consec, LimpiarUsados:=False) + End If + + If ListaPSCargo IsNot Nothing AndAlso ListaPSCargo.Count > 0 Then + CalculaRecepcionUsados(CvePS, ListaPSCargo, Cantidad, Consec) + For Each Usado As MConceptoUsado In ListaPSCargo + AddPolizaVirtual(DdlPS.SelectedValue.ToEntero(), Usado.Consecutivo) + Next End If Return True @@ -7386,6 +7409,7 @@ Partial Class PV #Region "P O L I Z A - V I R T U A L" Private Sub CreaDTmpDTPolizaVirtual() TmpDTPolizaVirtual = New DataTable + TmpDTPolizaVirtual.Columns.Add("Consec", GetType(Integer)) TmpDTPolizaVirtual.Columns.Add("CvePS", GetType(Integer)) TmpDTPolizaVirtual.Columns.Add("Cantidad", GetType(Decimal)) TmpDTPolizaVirtual.Columns.Add("PU", GetType(Decimal)) @@ -7402,14 +7426,14 @@ Partial Class PV TmpDTPolizaVirtual.Columns.Add("CveBCIUsado", GetType(Integer)) TmpDTPolizaVirtual.Columns.Add("CveMarcaUsado", GetType(Integer)) End Sub - Private Function AddPolizaVirtual(CvePS As Integer) As Boolean + Private Function AddPolizaVirtual(CvePS As Integer, Consec As Integer) As Boolean Dim Retorno As Boolean = True If Modalidad = "U" Then If TmpDTPolizaVirtual.Rows.Count > 0 Then Dim Elimino As Boolean = False For Each RowPoliza As DataRow In TmpDTPolizaVirtual.Rows - If RowPoliza("CvePS").ToString().ToEntero() = CvePS Then + If RowPoliza("Consec").ToString().ToEntero() = Consec AndAlso RowPoliza("CvePS").ToString().ToEntero() = CvePS Then RowPoliza.Delete() Elimino = True Exit For @@ -7475,6 +7499,8 @@ Partial Class PV End If Dim Row As DataRow = TmpDTPolizaVirtual.NewRow() + + Row("Consec") = Consec Row("CvePS") = CvePS Row("Cantidad") = Cantidad Row("PU") = PU @@ -7524,7 +7550,7 @@ Partial Class PV EmitirImprimirNew() End Sub - Private Sub CalculaRecepcionUsados(CvePS As Integer, ListaPSCargo As List(Of Integer), CantidadUsado As Decimal, ConsecPSPadre As Integer) + Private Sub CalculaRecepcionUsados(CvePS As Integer, ListaPSCargo As List(Of MConceptoUsado), CantidadUsado As Decimal, ConsecPSPadre As Integer) If Modalidad = "U" Then If TmpDTRecepcionUsados.Rows.Count > 0 Then @@ -7600,8 +7626,8 @@ Partial Class PV End If Dim StrCargos As New StringBuilder - For Each CvePSCargo As Integer In ListaPSCargo - StrCargos.AppendFormat(" {0},", CvePSCargo) + For Each Usado As MConceptoUsado In ListaPSCargo + StrCargos.AppendFormat(" {0},", Usado.CvePS) Next StrCargos.Remove(StrCargos.Length - 1, 1) @@ -7718,12 +7744,16 @@ Partial Class PV CalculaTotalesVenta() End Sub - Private Function CalculaUsados(Consec As Integer, Optional LimpiarUsados As Boolean = True) As List(Of Integer) + Public Class MConceptoUsado + Public Property Consecutivo As Integer + Public Property CvePS As Integer + End Class + Private Function CalculaUsados(Consec As Integer, Optional LimpiarUsados As Boolean = True) As List(Of MConceptoUsado) If Modalidad = "U" AndAlso LimpiarUsados Then EliminarUsados(Consec) End If - Dim ListaPScargo As New List(Of Integer) + Dim ListaPScargo As New List(Of MConceptoUsado) Dim DTTamanios As DataTable = GlobalDTAcumTamaños() Dim DTCvePSCostos = DTTamanios.FiltraParametros("", "", {"CvePSCargo"}) @@ -7828,7 +7858,7 @@ Partial Class PV drowPsTamaños("PS").ToString, "", drowPsTamaños("PU").ToString.ToDecimal, 0, -1, "", drowPsTamaños("CveSubProyecto").ToString.ToEntero, drowPsTamaños("SubProyecto").ToString, EsCargo:=True, ConsecPSPadre:=drowPsTamaños("ConsecPSPadre").ToString.ToEntero, EliminarDB:=CBool(drowPsTamaños("EliminarDB").ToString())) If Consec > 0 Then - ListaPScargo.Add(drowPsTamaños("CvePS").ToString.ToEntero) + ListaPScargo.Add(New MConceptoUsado() With {.Consecutivo = Consec, .CvePS = drowPsTamaños("CvePS").ToString.ToEntero}) End If End If Next