From b7b1ec6b7be6329515152bf468f5295e8663879d Mon Sep 17 00:00:00 2001 From: HECTOR RODRIGUEZ Date: Fri, 12 Mar 2021 18:03:16 -0700 Subject: [PATCH 1/6] Cambios para aplicar lote y caducidad en la solicitud de traspaso --- App_Code/ClsInventarios.vb | 5 +- Inventarios/TrasladoSolicitud.aspx | 27 ++++-- Inventarios/TrasladoSolicitud.aspx.vb | 118 +++++++++++++++++++++----- 3 files changed, 124 insertions(+), 26 deletions(-) diff --git a/App_Code/ClsInventarios.vb b/App_Code/ClsInventarios.vb index 691661c88..da84ed30d 100644 --- a/App_Code/ClsInventarios.vb +++ b/App_Code/ClsInventarios.vb @@ -4048,7 +4048,7 @@ Public Class ClsInventarios End Function Public Function AddTrasladoSolicitudDetalle(CveTrasladoSolicitud As Integer, Cantidad As Integer, CveUM As Integer, CvePS As Integer, Precio As Double, Observaciones As String, - CveContratoDetalle As Integer, Optional Serie As String = "-1") As Boolean + CveContratoDetalle As Integer, Optional Serie As String = "-1", Optional Lote As String = "-1", Optional FechaCaducidad As Date = MinFecha) As Boolean Dim Retorno As Boolean = False Dim CveTraspasoSolicitud As Integer = 0 DataAdapter("PA_Inv_TraspasoSolicitudDetalleAdd") @@ -4062,6 +4062,9 @@ Public Class ClsInventarios .Add("@Observaciones", SqlDbType.VarChar).Value = Observaciones .Add("@CveContratoDetalle", SqlDbType.Int).Value = CveContratoDetalle .Add("@Serie", SqlDbType.NVarChar).Value = Serie + .Add("@Lote", SqlDbType.NVarChar).Value = Lote + .Add("@FechaCaducidad", SqlDbType.Date).Value = FechaCaducidad + End With Try diff --git a/Inventarios/TrasladoSolicitud.aspx b/Inventarios/TrasladoSolicitud.aspx index d3b5085d7..8ab72fdb3 100644 --- a/Inventarios/TrasladoSolicitud.aspx +++ b/Inventarios/TrasladoSolicitud.aspx @@ -303,7 +303,7 @@
- + @@ -311,9 +311,21 @@ <%----%> - - - + + + + + + + + + + + + + + + @@ -492,6 +504,9 @@
+ + +
@@ -501,11 +516,11 @@
- + - +
diff --git a/Inventarios/TrasladoSolicitud.aspx.vb b/Inventarios/TrasladoSolicitud.aspx.vb index bd4b1384c..ae6200ef3 100644 --- a/Inventarios/TrasladoSolicitud.aspx.vb +++ b/Inventarios/TrasladoSolicitud.aspx.vb @@ -50,6 +50,48 @@ Partial Class Inventarios_TrasladoSolicitud End Set End Property + Private Property AplicaSerie As Boolean + Get + If ViewState("AplicaSerie") Is Nothing Then + Return False + Else + Return CType(ViewState("AplicaSerie"), Boolean) + End If + + End Get + Set(value As Boolean) + ViewState("AplicaSerie") = value + End Set + End Property + + Private Property AplicaLote As Boolean + Get + If ViewState("AplicaLote") Is Nothing Then + Return False + Else + Return CType(ViewState("AplicaLote"), Boolean) + End If + + End Get + Set(value As Boolean) + ViewState("AplicaLote") = value + End Set + End Property + + Private Property AplicaCaducidad As Boolean + Get + If ViewState("AplicaCaducidad") Is Nothing Then + Return False + Else + Return CType(ViewState("AplicaCaducidad"), Boolean) + End If + + End Get + Set(value As Boolean) + ViewState("AplicaCaducidad") = value + End Set + End Property + #End Region Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load @@ -152,10 +194,27 @@ Partial Class Inventarios_TrasladoSolicitud Dim ObjClientes As New ClsClientes If ObjInventarios.AddTrasladoSolicitudGet(CveTraspasoSolicitud, UsuarioActual.CveEmpresa) Then - If ObjInventarios.DtResultados.Rows.Count > 0 Then + If ObjInventarios.DtResultados.Rows.Count > 0 Then + For Each rowtp As DataRow In ObjInventarios.DtResultados.Rows + If Not AplicaSerie Then + AplicaSerie = rowtp("Serie").ToString <> "" + End If + If Not AplicaLote Then + AplicaLote = rowtp("Lote").ToString <> "" + End If + If Not AplicaCaducidad Then + AplicaCaducidad = rowtp("FechaCaducidad").ToString <> "" + End If + Next + + Dim drPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=DdlProductoServicio.SelectedValue.ToEntero).FiltroPrimero("") + + + GvDatos.Columns(4).Visible = False + GvDatos.Columns(5).Visible = AplicaSerie + GvDatos.Columns(6).Visible = AplicaLote + GvDatos.Columns(7).Visible = AplicaCaducidad - GvDatos.Columns(4).Visible = False - GvDatos.Columns(5).Visible = True DivFolio.Visible = True LbFolio.Text = ObjInventarios.DtResultados.Rows(0)("FolioTraspaso").ToString TxtObservaciones.Text = ObjInventarios.DtResultados.Rows(0)("ObservacionesTraspaso").ToString @@ -369,14 +428,14 @@ Partial Class Inventarios_TrasladoSolicitud Row("CveUM") = DdlUM.SelectedValue.ToEntero Row("UnidadMedida") = DdlUM.SelectedItem.Text Row("Observaciones") = "" + Row("Lote") = "-1" + Row("Serie") = "-1" + Row("FechaCaducidad") = MinFecha If divLote.Visible Then Row("Lote") = TxtLote.Text GvDatos.Columns(6).Visible = True Lote = TxtLote.Text.ToString - Else - Row("Lote") = "-1" - Lote = "-1" End If @@ -384,8 +443,9 @@ Partial Class Inventarios_TrasladoSolicitud Row("FechaCaducidad") = TxtCaducidad.Text GvDatos.Columns(7).Visible = True FechaCaducidad = TxtCaducidad.Text.ToDate + RFVFechaCad.Enabled = True + Else - Row("FechaCaducidad") = MinFecha FechaCaducidad = MinFecha End If @@ -393,8 +453,6 @@ Partial Class Inventarios_TrasladoSolicitud If Div4.Visible Then Row("Serie") = TxtSerie.Text GvDatos.Columns(5).Visible = True - Else - Row("Serie") = "-1" End If @@ -621,7 +679,7 @@ Partial Class Inventarios_TrasladoSolicitud For Each row As GridViewRow In GvDatos.Rows CodigoPS = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=row.DataKey("CvePS").ToEntero).FiltroPrimeroValor("PSCodigo", "") - Existencia = ObjInventarios.GetExistenciasPS(row.DataKey("CvePS").ToEntero, row.DataKey("CveUM").ToEntero, UsuarioActual.CveEmpresa, DdlAlmacenOrigen.SelectedValue.ToEntero, FechaMovto:=TxtFecha.Text.ToDate.ToString("yyyy/MM/dd 23:59")) + Existencia = ObjInventarios.GetExistenciasPS(row.DataKey("CvePS").ToEntero, row.DataKey("CveUM").ToEntero, UsuarioActual.CveEmpresa, DdlAlmacenOrigen.SelectedValue.ToEntero, FechaMovto:=TxtFecha.Text.ToDate.ToString("yyyy/MM/dd 23:59"), Lote:=row.DataKey("Lote").ToString, FechaCaducidad:=row.DataKey("FechaCaducidad").ToString.ToDate) If Existencia - TempDT.SUM("Cantidad", $"CvePS = {row.DataKey("CvePS").ToEntero} AND CveUM = {row.DataKey("CveUM").ToEntero}") < 0 Then MensajeExistencia.AppendFormat("
- {0}. Existencia: {1}", CodigoPS, Existencia) TieneErrorExistencia = True @@ -666,9 +724,11 @@ Partial Class Inventarios_TrasladoSolicitud Dim Precio As Double = Row.DataKey("Precio").ToEntero Dim Observaciones As String = Row.DataKey("Observaciones") Dim CveContratoDetalle As Integer = Row.DataKey("CveContratoDetalle").ToEntero - Dim Serie As String = Row.DataKey("Serie") + Dim Serie As String = Row.DataKey("Serie") + Dim Lote As String = Row.DataKey("Lote") + Dim FechaCaducidad As Date = Row.DataKey("FechaCaducidad").ToDate - If Not ObjInventarios.AddTrasladoSolicitudDetalle(CveTraspasoSolicitud, Cantidad, CveUM, CvePS, Precio, Observaciones, CveContratoDetalle, Serie) Then + If Not ObjInventarios.AddTrasladoSolicitudDetalle(CveTraspasoSolicitud, Cantidad, CveUM, CvePS, Precio, Observaciones, CveContratoDetalle, Serie, Lote, FechaCaducidad) Then TieneError = True Exit For End If @@ -1019,15 +1079,17 @@ Partial Class Inventarios_TrasladoSolicitud DdlUM.SelectedValue = "-1" DdlUM.DataBind() DdlUM.SelectedValueExist(drPS("CveUnidadMedida").ToString) - Dim AplicaSerie As Boolean = drPS("AplicaSerie").ToString = "True" - Div4.Visible = AplicaSerie + AplicaSerie = drPS("AplicaSerie").ToString = "True" + Div4.Visible = AplicaSerie + + AplicaLote = drPS("AplicaLote").ToString = "True" + divLote.Visible = AplicaLote + RFVLote.Enabled = AplicaLote - Dim AplicaLote As Boolean = drPS("AplicaLote").ToString = "True" - divLote.Visible = AplicaLote - - Dim AplicaCaducidad As Boolean = drPS("AplicaCaducidad").ToString = "True" + AplicaCaducidad = drPS("AplicaCaducidad").ToString = "True" divCaducidad.Visible = AplicaCaducidad - divCaducidad2.Visible = AplicaCaducidad + divCaducidad2.Visible = AplicaCaducidad + RFVFechaCad.Enabled = AplicaCaducidad End If UpPS.Update() @@ -1180,5 +1242,23 @@ Partial Class Inventarios_TrasladoSolicitud GvDatos.Columns(5).Visible = Mostrar End Sub + Protected Sub GvDatos_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvDatos.RowDataBound + If e.Row.RowType = DataControlRowType.DataRow Then + If e.Row.FCLiteral("LtlSerie").ToString = "-1" Then + e.Row.FCLiteral("LtlSerie").Text = "" + End If + + If e.Row.FCLiteral("LtlLote").ToString = "-1" Then + e.Row.FCLiteral("LtlLote").Text = "" + End If + + If e.Row.FCLiteral("LtlFechaCaducidad").ToString.ToDate = MinFecha Then + e.Row.FCLiteral("LtlFechaCaducidad").Text = "" + End If + + End If + + + End Sub End Class From 73d59cf01b3539e3c20d688e2f260c8b856bee0b Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Tue, 16 Mar 2021 11:15:53 -0700 Subject: [PATCH 2/6] BDH: Revision de servicio a domicilio --- App_Code/Modelos.vb | 140 +++++++++++++++++++++++++++- Inventarios/RecepcionUsados.aspx.vb | 15 ++- Ventas/PV.aspx | 27 +++--- Ventas/PV.aspx.vb | 13 ++- Ventas/Ventas.aspx | 6 ++ Ventas/Ventas.aspx.vb | 20 +++- 6 files changed, 196 insertions(+), 25 deletions(-) diff --git a/App_Code/Modelos.vb b/App_Code/Modelos.vb index d9dd46a07..a2f021adc 100644 --- a/App_Code/Modelos.vb +++ b/App_Code/Modelos.vb @@ -2203,8 +2203,8 @@ Namespace Modelos CveCuentaIVATrasladado = GlobalDTClasificacionPorcentaje(UsuarioActual.CveEmpresa, PorcentajeIVA:=DtDetalle.MAX("PorcentajeIVA").ToDouble).Rows(0)("CveCuentaIVATrasladado").ToString.ToEntero End If - Dim UsaComplementariaClientes As Boolean = False - If UsuarioActual.CveEmpresa.Contiene(1, 119) Then UsaComplementariaClientes = True + Dim UsaComplementariaClientes As Boolean = True + 'If UsuarioActual.CveEmpresa.Contiene(1, 119) Then UsaComplementariaClientes = True If ObjConta.GetPlantillaConceptos(ObjFactura.CveEmpresa, CvePlantilaPoliza) Then Dim dtt As DataTable = ObjConta.DtResultados @@ -3798,6 +3798,18 @@ Namespace Modelos End If End If + If factura.TipoDocto = "Rem" AndAlso factura.ServicioDomicilio Then + Dim CveMovimientoSalida As Integer = GenerarMovimientoAlmacenServicioDomicilio(ObjInventario, factura, DtInventario, factura.CveAlmacenServicioDomicilio, 8, factura.CveMoneda, factura.CveVenta, "Modelos/SD1") + If CveMovimientoSalida > 0 Then + + If Not (GenerarMovimientoAlmacenServicioDomicilio(ObjInventario, factura, DtInventario, factura.CveAlmacenTraspasoDestino, 9, factura.CveMoneda, factura.CveVenta, "Modelos/SD1", CveMovimientoRelacionado:=CveMovimientoSalida) > 0) Then + OcurrioError = True + End If + Else + OcurrioError = True + End If + End If + End If Return OcurrioError @@ -4059,6 +4071,129 @@ Namespace Modelos 'Return Not OcurrioError End Function + + Private Function GenerarMovimientoAlmacenServicioDomicilio(ByRef ObjInventario As ClsInventarios, factura As Modelos.Factura, DtInventario As DataTable, CveAlmacen As Integer, CveConcepto As Integer, CveMoneda As Integer, CveVenta As Integer, Modulo As String, Optional MovimientoPrePoliza As Boolean = False, Optional ByRef ObjConta As ClsContabilidad = Nothing, Optional CveMovimientoRelacionado As Integer = -1) As Integer + Dim OcurrioError As Boolean = False + + Dim CveMovimientoInventario As Integer = ObjInventario.AddMovimiento(CveAlmacen, CveConcepto, factura.CveMoneda, factura.Fecha, -1, factura.CveUsuario, factura.CveEmpresa, -1, factura.CveVenta, -1, -1, Modulo:=Modulo, CveMovimientoRelacionado:=CveMovimientoRelacionado) + + If CveMovimientoInventario <= 0 Then + OcurrioError = True + ErrorList.Add("Ocurrió un error al agregar los Movimientos de salida al Inventario.
Revise su factura y cualquier detalle comuníquese a Soporte Técnico") + Else + Dim Mensaje As String = "" + Dim i As Integer = 0 + Dim Cantidad As Double + Dim CveUnidad As Integer + Dim CveProducto As Integer + Dim Existencia As Double + 'Dim Pu As Double + 'DtInv.Clone() + + Dim DtEquivalencias As DataTable + For Each Dr As DataRow In DtInventario.Rows + CveProducto = Dr("CvePS").ToString.ToEntero + CveUnidad = Dr("CveUM").ToString.ToEntero + Cantidad = Dr("Cantidad").ToString.ToDouble + + If Dr("CveTipoInvPS").ToString.ToEntero = 5 And Dr("Serie").ToString = "" Then + OcurrioError = True + ErrorList.Add("Se deben especificar las Series de los productos de almacén") + Exit For + End If + + If UsuarioActual.CveEmpresa.Contiene({72, 80, 119}) AndAlso factura.TipoDocto.Contiene("Rem", "Ing") Then + Existencia = ObjInventario.GetExistenciasPS(CveProducto, CveUnidad, UsuarioActual.CveEmpresa, CveAlmacen, FechaMovto:=DateTime.Today.AddDays(1).ToString("yyyy/MM/dd HH:mm"), CveSubProyecto:=factura.CveSubProyecto, CveVendedor:=factura.CveVendedor, CveCliente:=If(UsuarioActual.Empresa.Funcionalidad(146) = "1", -1, CveCliente), ExcluyeAdelantado:=1, RestringirAlmacenes:=1, ExcluyeApartados:=1) + If Existencia < Cantidad Then + OcurrioError = True + ErrorList.Add($"No cuenta con la cantidad suficiente en inventario del producto {Dr("CodigoPS")} .Cuenta con {Existencia.FormatoNumero(2)}.") + Exit For + End If + End If + + If UsuarioActual.CveEmpresa = 1 Then + DtEquivalencias = New DataTable + DtEquivalencias = GlobalDTProductosServiciosEquivalencias(CveProducto, -1, UsuarioActual.CveEmpresa) + Dim CveUnidadBase As Integer = DtEquivalencias.FiltroPrimeroValor("CveUM", "UnidadBase = 'True'").ToEntero + Dim drUMBase As DataRow = DtEquivalencias.FiltroPrimero("UnidadBase = 'True'") + + 'SI LA UNIDAD ACTUAL NO ES LA BASE SACA PROPORCION (EQUIVALENTE) + If CveUnidadBase <> CveUnidad Then + ' LO QUE PUSE LO QUE VALE UNIDAD BASE LO QUE VALE UNIDAD SELECCIONADA + Cantidad = Dr("Cantidad").ToString.ToDouble * drUMBase("Cantidad").ToString.ToDouble / DtEquivalencias.FiltraParametros(String.Format("CveUM = {0}", CveUnidad)).Rows(0)("Cantidad").ToString.ToDouble + CveUnidad = CveUnidadBase + End If + End If + + If CveProducto > 0 Then + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoInventario, Cantidad, CveUnidad, CveProducto, 0, CveSeccionAlmacen:=-3, Serie:=Dr("Serie").ToString, CveVentaDetalle:=Dr("CveVentaDetalle").ToString.ToEntero) Then + OcurrioError = True + ErrorList.Add("Ocurrió un error al agregar los Movimientos de salida al Inventario.
") + Exit For + End If + Else + OcurrioError = True + ErrorList.Add("Ocurrió un error al agregar los Movimientos de salida al Inventario.
") + Exit For + End If + + + i = i + 1 + Next + + 'REGISTRO LA PREPOLIZA DE COSTO VS ALMACEN + If MovimientoPrePoliza AndAlso Not OcurrioError Then + Dim DtCostos As DataTable = Nothing + Dim ValorInventario As Decimal = 0 + Dim TotalCosto As Decimal = 0 + If ObjInventario.GetMovimientosDetalle(CveMovimientoInventario, UsuarioActual.CveEmpresa) Then + DtCostos = ObjInventario.DtResultados + TotalCosto = DtCostos.SUMD("Total").RoundSQL() + Dim tmpCostos As DataTable = DtCostos.FiltraParametros("", "", {"CveClasificacion"}) + Dim IdCtaContable As Integer = 0 + Dim CveCuenta As Integer = 0 + If tmpCostos.Rows.Count > 0 Then + Dim TotalCostoAcumulado As Decimal = 0 + Dim cont As Integer = 1 + 'Se agrega movimiento separado por la cuenta de ventas (ER) + For Each RowInv As DataRow In tmpCostos.Rows + ValorInventario = DtCostos.SUMD("Total", $"CveClasificacion = {RowInv("CveClasificacion")}").RoundSQL() + TotalCostoAcumulado += ValorInventario + + 'cuando es el último movimiento y hay diferencias en los importes + If cont = DtCostos.Rows.Count AndAlso TotalCosto <> TotalCostoAcumulado Then + ValorInventario = ValorInventario + (TotalCosto - TotalCostoAcumulado) + End If + + 'Concepto = String.Format("{0} - {1}", Row2("Clasificacion").ToString, Row2("SubProyecto").ToString) + IdCtaContable = GlobalDTClasificaciones(factura.CveEmpresa).FiltroPrimeroValor("IdCuentaCostos", $"CveClasificacion = {RowInv("CveClasificacion")}").ToEntero + CveCuenta = GlobalDTClasificaciones(factura.CveEmpresa).FiltroPrimeroValor("IdCuentaGastoSIG", $"CveClasificacion = {RowInv("CveClasificacion")}").ToEntero + If ValorInventario <> 0 Then + + If Not ObjConta.AddPrePolizasDetalle(factura.CvePrePoliza, False, ValorInventario, factura.SerieFolio, 69, factura.SerieFolio, factura.Fecha, IdCtaContable, -1, CveVenta:=factura.CveVenta, CveCliente:=factura.CveCliente, CveSubProyecto:=factura.CveSubProyecto, CveClasificacion:=RowInv("CveClasificacion").ToString.ToEntero, CveMovimientoAlmacen:=CveMovimientoInventario, ImporteMX:=ValorInventario, CveCuenta:=CveCuenta) Then + OcurrioError = True + End If + End If + cont += 1 + Next + End If + IdCtaContable = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", String.Format("CveAlmacen = {0}", CveAlmacen)).ToEntero + + If TotalCosto <> 0 Then + If Not ObjConta.AddPrePolizasDetalle(factura.CvePrePoliza, True, TotalCosto, factura.SerieFolio, 68, factura.SerieFolio, factura.Fecha, IdCtaContable, -1, CveVenta:=factura.CveVenta, CveCliente:=factura.CveCliente, CveMovimientoAlmacen:=CveMovimientoInventario, ImporteMX:=TotalCosto, CveCuenta:=CveCuenta, CveSubProyecto:=factura.CveSubProyecto) Then + OcurrioError = True + End If + End If + + factura.Inv_CveMovimiento = CveMovimientoInventario + factura.Inv_ValorInventario = ValorInventario + + End If + End If + End If + + Return CveMovimientoInventario + End Function Private Sub GuardarVentaEstimaciones(ByRef factura As Modelos.Factura, ObjContr As ClsContratos) 'debe de ser por contrato el movimiento If factura.CveContratoSecciones.Length > 0 Then @@ -5786,6 +5921,7 @@ Namespace Modelos Public Property CvePedido2 As Integer = -1 Public Property CveAlmacenTraspasoOrigen As Integer = -1 Public Property CveAlmacenTraspasoDestino As Integer = -1 + Public Property CveAlmacenServicioDomicilio As Integer = -1 Public Property EsDevolucionVenta As Integer = -1 Public Property EsInterno As Integer = -1 Public Property CveEmpresaCRM As Integer = -1 diff --git a/Inventarios/RecepcionUsados.aspx.vb b/Inventarios/RecepcionUsados.aspx.vb index 0b862b866..d15ad71e3 100644 --- a/Inventarios/RecepcionUsados.aspx.vb +++ b/Inventarios/RecepcionUsados.aspx.vb @@ -326,6 +326,7 @@ Partial Class Inventarios_RecepcionUsados End Sub Private Sub CargaInicial() + ConsecutivoVenta = 0 CveMovimiento = -1 CveMovimientoRelacionado = -1 TieneRelacionado = -1 @@ -2255,7 +2256,7 @@ Partial Class Inventarios_RecepcionUsados 'VALIDA PROMOCIONES Y EXISTENCIAS Dim ObjVentas As New ClsVentas - If ObjVentas.GetPromocionesPS(-1, Now, CveSubProyecto, Me.ObjRemisionNC.CveCliente, Me.ObjRemisionNC.CveVendedor, UsuarioActual.CveEmpresa) Then + If ObjVentas.GetPromocionesPS(-1, Now, CveSubProyecto, Me.ObjRemisionNC.CveCliente, Me.ObjRemisionNC.CveVendedor, 1, UsuarioActual.CveEmpresa) Then Me.ObjRemisionNC.DtPromociones = ObjVentas.DtResultados.Copy() End If ObjVentas.Dispose() @@ -2573,8 +2574,11 @@ Partial Class Inventarios_RecepcionUsados Dim Obs As String = SbBCI.ToString() - AddPSRNC(ObjRemisionNC.DtDetalle, 1, CveUnidadMedida, "", CveClasificacion, "", CvePS, "", Obs, PU, 0, -1, "", - ObjRemisionNC.CveSubProyecto, ObjRemisionNC.SubProyecto.SubProyecto, PorcentajeIVA:=PorcentajeIVA) + If AddPSRNC(ObjRemisionNC.DtDetalle, 1, CveUnidadMedida, "", CveClasificacion, "", CvePS, "", Obs, PU, 0, -1, "", + ObjRemisionNC.CveSubProyecto, ObjRemisionNC.SubProyecto.SubProyecto, PorcentajeIVA:=PorcentajeIVA) Then + ConsecutivoVenta += 1 + End If + Else End If @@ -2966,6 +2970,9 @@ Partial Class Inventarios_RecepcionUsados Dim CargoActual As Double = 0 Dim Row As DataRow = Nothing + + ConsecutivoVenta += 1 + Row = TmpDTAjustes.NewRow Row("CveFolioGarantia") = DdlFolioGarantia.SelectedValue.ToEntero Row("CveTipoUso") = DdlTipoUso.SelectedValue.ToEntero @@ -2981,7 +2988,7 @@ Partial Class Inventarios_RecepcionUsados Row("TipoComprobante") = 1 Row("Comprobante") = TxtPoliza.Text Row("Importe") = TxtImporteAjuste.Text.ToDouble - Row("ConsecutivoVenta") = TxtConsecutivoAjuste.Text.ToEntero() + Row("ConsecutivoVenta") = ConsecutivoVenta Row("CvePS") = DdlPSAjuste.SelectedValue Row("PS") = DdlPSAjuste.SelectedText Row("CveVenta") = -1 diff --git a/Ventas/PV.aspx b/Ventas/PV.aspx index 4de796386..6f6ec5d8b 100644 --- a/Ventas/PV.aspx +++ b/Ventas/PV.aspx @@ -1938,8 +1938,9 @@
diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 2d2138eab..e679d6317 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -4012,6 +4012,10 @@ Partial Class Ventas End If End If + If UsuarioActual.Empresa.Funcionalidad(531) = "1" AndAlso CBool(DbRowVenta("ServicioDomicilio")) Then + TrServicioDomicilio.Visible = True + End If + 'CargaDetalle If ObjVentas.GetVentaDetalle(CveVenta) Then TmpDT = ObjVentas.DtResultados @@ -12976,8 +12980,10 @@ Partial Class Ventas Dim tmpCostos As DataTable = DtCostos.FiltraParametros("", "", {"CveClasificacion"}) Dim IdCtaContable As Integer = 0 Dim CveCuenta As Integer = 0 + Dim TotalCostoAcumulado As Decimal = 0 + If tmpCostos.Rows.Count > 0 Then - Dim TotalCostoAcumulado As Decimal = 0 + Dim cont As Integer = 1 'Se agrega movimiento separado por la cuenta de ventas (ER) For Each RowInv As DataRow In tmpCostos.Rows @@ -12995,12 +13001,18 @@ Partial Class Ventas 'If ValorInventario <> 0 Then If Not ObjConta.AddPrePolizasDetalle(factura.CvePrePoliza, TipoMovto69, ValorInventario, factura.SerieFolio, 69, factura.SerieFolio, factura.Fecha, IdCtaContable, -1, CveVenta:=factura.CveVenta, CveCliente:=factura.CveCliente, CveSubProyecto:=factura.CveSubProyecto, CveClasificacion:=RowInv("CveClasificacion").ToString().ToEntero(), CveMovimientoAlmacen:=CveMovimientoInventario, ImporteMX:=ValorInventario, CveCuenta:=CveCuenta) Then - OcurrioError = True - End If + OcurrioError = True + End If 'End If cont += 1 Next End If + + 'AJUSTA EL TOTAL + If Math.Abs(TotalCostoAcumulado - TotalCosto) = 0.01 Then + TotalCosto = TotalCostoAcumulado + End If + IdCtaContable = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", String.Format("CveAlmacen = {0}", CveAlmacen)).ToEntero() 'If TotalCosto <> 0 Then @@ -23186,7 +23198,7 @@ Partial Class Ventas Dim ObjBancos As New ClsBancos If UsuarioActual.CveRol = 1 Then - GvComplementoPagos.Columns(8).Visible = True + GvComplementoPagos.Columns(7).Visible = True End If From 91090a5c1dac40bc4fda27aa182503197571ddba Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Tue, 16 Mar 2021 11:16:12 -0700 Subject: [PATCH 3/6] Correcion de asignacion de poliza al cancelar --- Bancos/IE.aspx.vb | 332 ++++++++++++++++++++++++---------------------- 1 file changed, 172 insertions(+), 160 deletions(-) diff --git a/Bancos/IE.aspx.vb b/Bancos/IE.aspx.vb index cc93a3b98..e499d1db6 100644 --- a/Bancos/IE.aspx.vb +++ b/Bancos/IE.aspx.vb @@ -4382,186 +4382,185 @@ Partial Class Bancos_IE Exit Sub End If - Dim Banc As New ClsBancos - Dim ObjConta As New ClsContabilidad(Banc.IniciaTransacSQL()) - - Dim ObjAC As ClsContPAQi = Nothing - If UsuarioActual.Empresa.UsaAC Or UsuarioActual.Empresa.Funcionalidad(200).ToString = "1" Then - ObjAC = New ClsContPAQi(UsuarioActual.Empresa) - ObjAC.IniciaTransacSQL() - End If - - Dim ErrorCancelar = False Dim MensajeError = "" Dim IdPolizaNueva = -1 Dim FolioPolizaNueva = -1 - If (IDPoliza > 0 AndAlso (UsuarioActual.Empresa.UsaAC)) Then + Dim Banc As New ClsBancos + Dim ObjConta As New ClsContabilidad(Banc.IniciaTransacSQL()) - If ObjAC Is Nothing Then + Dim ObjAC As ClsContPAQi = Nothing + If UsuarioActual.Empresa.UsaAC Or UsuarioActual.Empresa.Funcionalidad(200).ToString = "1" Then + Try + ObjAC = New ClsContPAQi(UsuarioActual.Empresa) + ObjAC.IniciaTransacSQL() + Catch ex As Exception + OnError("Ocurrió un error al iniciar la contabilización", ex) ErrorCancelar = True - End If + End Try - If Not ErrorCancelar Then - Dim dt As DataTable - If ObjAC.GetPoliza(IDPoliza, -1, -1, -1, -1) AndAlso ObjAC.DtResultados.Rows.Count > 0 Then - dt = ObjAC.DtResultados + End If - ' MES ANTERIOR, MOVIMIENTOS CONTRARIOS (NEGATIVOS) - If dt.Rows(0)("FechaPol").ToString.ToDate < TxtFechaCancelacion.Text.ToDate.FirstDayOfMonth Then 'dt.Rows(0)("FechaPol").ToString.ToDate.Month < TxtFechaCancelacion.Text.ToDate.Month Or dt.Rows(0)("FechaPol").ToString.ToDate.Year < TxtFechaCancelacion.Text.ToDate.Year Then - IdPolizaNueva = ObjAC.AddPoliza(dt.Rows(0)("CodigoTipoPoliza").ToString.ToEntero, String.Format("Cancelacion: {0}", dt.Rows(0)("Concepto").ToString), 0, 0, UsuarioActual.CveUsuario, TxtFechaCancelacion.Text.ToDate) - If IdPolizaNueva > 0 Then - FolioPolizaNueva = ObjAC.Folio + Try + If (IDPoliza > 0 AndAlso (UsuarioActual.Empresa.UsaAC)) Then - 'CREA POLIZA NEGATIVA - For Each dr As DataRow In dt.Rows - If Not ObjAC.AddMovimiento(IdPolizaNueva, dr("IdCuenta").ToString.ToEntero, dr("TipoMovto").ToString = "True", dr("Importe").ToString.ToDecimal * -1, dr("Referencia").ToString, String.Format("Cancelacion: {0}", dt.Rows(0)("Concepto").ToString), dr("IdSegNeg").ToString.ToEntero, TxtFechaCancelacion.Text.ToDate, "") Then - ErrorCancelar = True - MensajeError = "Error al crear poliza negativa" - Exit For + If ObjAC Is Nothing Then + ErrorCancelar = True + End If + + If Not ErrorCancelar Then + Dim dt As DataTable + If ObjAC.GetPoliza(IDPoliza, -1, -1, -1, -1) AndAlso ObjAC.DtResultados.Rows.Count > 0 Then + dt = ObjAC.DtResultados + + ' MES ANTERIOR, MOVIMIENTOS CONTRARIOS (NEGATIVOS) + If dt.Rows(0)("FechaPol").ToString.ToDate < TxtFechaCancelacion.Text.ToDate.FirstDayOfMonth Then 'dt.Rows(0)("FechaPol").ToString.ToDate.Month < TxtFechaCancelacion.Text.ToDate.Month Or dt.Rows(0)("FechaPol").ToString.ToDate.Year < TxtFechaCancelacion.Text.ToDate.Year Then + IdPolizaNueva = ObjAC.AddPoliza(dt.Rows(0)("CodigoTipoPoliza").ToString.ToEntero, String.Format("Cancelacion: {0}", dt.Rows(0)("Concepto").ToString), 0, 0, UsuarioActual.CveUsuario, TxtFechaCancelacion.Text.ToDate) + If IdPolizaNueva > 0 Then + FolioPolizaNueva = ObjAC.Folio + + 'CREA POLIZA NEGATIVA + For Each dr As DataRow In dt.Rows + If Not ObjAC.AddMovimiento(IdPolizaNueva, dr("IdCuenta").ToString.ToEntero, dr("TipoMovto").ToString = "True", dr("Importe").ToString.ToDecimal * -1, dr("Referencia").ToString, String.Format("Cancelacion: {0}", dt.Rows(0)("Concepto").ToString), dr("IdSegNeg").ToString.ToEntero, TxtFechaCancelacion.Text.ToDate, "") Then + ErrorCancelar = True + MensajeError = "Error al crear poliza negativa" + Exit For + End If + Next + + 'AJUSTA POLIZA + If Not ErrorCancelar Then + If Not ObjAC.AjustaPoliza(IdPolizaNueva) Then + ErrorCancelar = True + MensajeError = "Error al ajustar poliza negativa" + End If End If - Next - 'AJUSTA POLIZA - If Not ErrorCancelar Then - If Not ObjAC.AjustaPoliza(IdPolizaNueva) Then + 'CANCELA IE + If Not ErrorCancelar Then + If Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, True, IdPolizaNueva, FolioPolizaNueva, TxtFechaCancelacion.Text.ToDate, CveTipoTransaccionCancelacion:=DdlTipoTransaccionCancelacion.SelectedValue.ToEntero) <= 0 Then + ErrorCancelar = True + MensajeError = "Error al cancelar IE" + End If + End If + + Else + ErrorCancelar = True + End If + + Else + + If ObjAC.RemovePoliza(IDPoliza) Then + If Not ObjConta.DesvincularPrePolizaContabilizada(IDPoliza, UsuarioActual.CveEmpresa) Then ErrorCancelar = True - MensajeError = "Error al ajustar poliza negativa" + MensajeError = "Error al desvincular poliza." + End If + Else + ErrorCancelar = True + MensajeError = "Error al eliminar poliza." + End If + + If Not ErrorCancelar Then + If Not ObjConta.UpdatePrePolizasDetalleBloquear(CvePrePoliza, False) Then + ErrorCancelar = True + MensajeError = "Error al desbloquear prepoliza." End If End If 'CANCELA IE If Not ErrorCancelar Then - If Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, True, IdPolizaNueva, FolioPolizaNueva, TxtFechaCancelacion.Text.ToDate, CveTipoTransaccionCancelacion:=DdlTipoTransaccionCancelacion.SelectedValue.ToEntero) <= 0 Then + If Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, False, IdPolizaNueva, FolioPolizaNueva, TxtFechaCancelacion.Text.ToDate, CveTipoTransaccionCancelacion:=DdlTipoTransaccionCancelacion.SelectedValue.ToEntero) <= 0 Then ErrorCancelar = True MensajeError = "Error al cancelar IE" End If End If - Else - ErrorCancelar = True - End If + If Not ObjConta.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa, ObjConta:=ObjAC) Then + ErrorCancelar = True + MensajeError = "Error al contabilizar poliza" + End If + End If Else + ErrorCancelar = True + MensajeError = "Error al obtener la poliza" + End If + End If - If ObjAC.RemovePoliza(IDPoliza) Then - If Not ObjConta.DesvincularPrePolizaContabilizada(IDPoliza, UsuarioActual.CveEmpresa) Then - ErrorCancelar = True - MensajeError = "Error al desvincular poliza." - End If - Else - ErrorCancelar = True - MensajeError = "Error al eliminar poliza." - End If + Else - If Not ErrorCancelar Then - If Not ObjConta.UpdatePrePolizasDetalleBloquear(CvePrePoliza, False) Then - ErrorCancelar = True - MensajeError = "Error al desbloquear prepoliza." - End If - End If + ' If TxtFechaDocumento.Text.ToDate.Month < TxtFechaCancelacion.Text.ToDate.Month Or TxtFechaDocumento.Text.ToDate.Year < TxtFechaCancelacion.Text.ToDate.Year Then + Dim GeneraCancelacionEnCero As Boolean = False + If TxtFechaCancelacion.Text.ToDate <= TxtFechaDocumento.Text.ToDate.LastDayOfMonth Then 'si es del mismo mes, se genra cancelacion en cero + GeneraCancelacionEnCero = True + End If - 'CANCELA IE - If Not ErrorCancelar Then - If Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, False, IdPolizaNueva, FolioPolizaNueva, TxtFechaCancelacion.Text.ToDate, CveTipoTransaccionCancelacion:=DdlTipoTransaccionCancelacion.SelectedValue.ToEntero) <= 0 Then - ErrorCancelar = True - MensajeError = "Error al cancelar IE" - End If - End If + Dim TipoMovimiento As Integer = 1 - If Not ObjConta.ContabilizarPrePoliza(CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.Empresa, ObjConta:=ObjAC) Then - ErrorCancelar = True - MensajeError = "Error al contabilizar poliza" - End If + If ChkGeneraCancelacion.Checked AndAlso GeneraCancelacionEnCero Then + GeneraCancelacionEnCero = False + TipoMovimiento = 2 + End If + Dim CvePrePolizaCancelacion As Integer = 0 + If Not GeneraCancelacionEnCero Then + 'CANCELA IE MES ANTERIOR + CvePrePolizaCancelacion = Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, True, IdPolizaNueva, FolioPolizaNueva, TxtFechaCancelacion.Text.ToDate, TipoMovimiento:=TipoMovimiento, CveTipoTransaccionCancelacion:=DdlTipoTransaccionCancelacion.SelectedValue.ToEntero) + If CvePrePolizaCancelacion <= 0 Then + ErrorCancelar = True + MensajeError = "Error al cancelar IE MES ANTERIOR" + Else + 'DEBE GENERAR UNA NUEVA POLIZA + IDPoliza = -1 End If Else - ErrorCancelar = True - MensajeError = "Error al obtener la poliza" + 'CANCELA IE MES ACTUAL + CvePrePolizaCancelacion = Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, False, IdPolizaNueva, FolioPolizaNueva, TxtFechaCancelacion.Text.ToDate, CveTipoTransaccionCancelacion:=DdlTipoTransaccionCancelacion.SelectedValue.ToEntero) + If CvePrePolizaCancelacion <= 0 Then + ErrorCancelar = True + MensajeError = "Error al cancelar IE MES ACTUAL" + End If End If - End If - Else + If UsuarioActual.Empresa.Funcionalidad(200).ToString = "1" Then - ' If TxtFechaDocumento.Text.ToDate.Month < TxtFechaCancelacion.Text.ToDate.Month Or TxtFechaDocumento.Text.ToDate.Year < TxtFechaCancelacion.Text.ToDate.Year Then - Dim GeneraCancelacionEnCero As Boolean = False - If TxtFechaCancelacion.Text.ToDate <= TxtFechaDocumento.Text.ToDate.LastDayOfMonth Then 'si es del mismo mes, se genra cancelacion en cero - GeneraCancelacionEnCero = True - End If - - Dim TipoMovimiento As Integer = 1 - - If ChkGeneraCancelacion.Checked AndAlso GeneraCancelacionEnCero Then - GeneraCancelacionEnCero = False - TipoMovimiento = 2 - End If - Dim CvePrePolizaCancelacion As Integer = 0 - - If Not GeneraCancelacionEnCero Then - 'CANCELA IE MES ANTERIOR - CvePrePolizaCancelacion = Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, True, IdPolizaNueva, FolioPolizaNueva, TxtFechaCancelacion.Text.ToDate, TipoMovimiento:=TipoMovimiento, CveTipoTransaccionCancelacion:=DdlTipoTransaccionCancelacion.SelectedValue.ToEntero) - If CvePrePolizaCancelacion <= 0 Then - ErrorCancelar = True - MensajeError = "Error al cancelar IE MES ANTERIOR" - End If - Else - 'CANCELA IE MES ACTUAL - CvePrePolizaCancelacion = Banc.CancelarBancos_IE(UsuarioActual.CveUsuario, CveIE, False, IdPolizaNueva, FolioPolizaNueva, TxtFechaCancelacion.Text.ToDate, CveTipoTransaccionCancelacion:=DdlTipoTransaccionCancelacion.SelectedValue.ToEntero) - If CvePrePolizaCancelacion <= 0 Then - ErrorCancelar = True - MensajeError = "Error al cancelar IE MES ACTUAL" + If Not ObjConta.ContabilizarPrePoliza(CvePrePolizaCancelacion, UsuarioActual.CveUsuario, UsuarioActual.Empresa, pIDPoliza:=If(IDPoliza > 0, IDPoliza, -1), ObjConta:=ObjAC) Then + ErrorCancelar = True + MensajeError = "Error al contabilizar poliza" + End If End If + End If - If UsuarioActual.Empresa.Funcionalidad(200).ToString = "1" Then - - If Not ObjConta.ContabilizarPrePoliza(CvePrePolizaCancelacion, UsuarioActual.CveUsuario, UsuarioActual.Empresa, pIDPoliza:=If(IDPoliza > 0, IDPoliza, -1), ObjConta:=ObjAC) Then - ErrorCancelar = True - MensajeError = "Error al contabilizar poliza" - End If - End If - - End If - If Not ErrorCancelar Then - If Banc.GetComplementoPagos(-1, CveIE, -1, UsuarioActual.CveEmpresa) Then - If Banc.DtResultados.FiltraParametros("", DistinctColumns:={"CveComplementoPago", "SerieFolio", "Fecha", "CveIE"}).Rows.Count > 0 Then - If Not Banc.GetFoliosCancelados(UsuarioActual.CveEmpresa) Then - ErrorCancelar = True - MensajeError = "Error al cancelar complemento de pago" - Else - Dim FolioCancelado = $"{TxtFolio.Text}_C_{Banc.DtResultados(0)("Cantidad").ToString().ToEntero + 1}" - If Not Banc.UpdateFolioCancelado(CveIE.ToEntero, Folio:=FolioCancelado) Then + If Banc.GetComplementoPagos(-1, CveIE, -1, UsuarioActual.CveEmpresa) Then + If Banc.DtResultados.FiltraParametros("", DistinctColumns:={"CveComplementoPago", "SerieFolio", "Fecha", "CveIE"}).Rows.Count > 0 Then + If Not Banc.GetFoliosCancelados(UsuarioActual.CveEmpresa) Then ErrorCancelar = True - MensajeError = "Error al actualizar complemento de pago" + MensajeError = "Error al cancelar complemento de pago" + Else + Dim FolioCancelado = $"{TxtFolio.Text}_C_{Banc.DtResultados(0)("Cantidad").ToString().ToEntero + 1}" + If Not Banc.UpdateFolioCancelado(CveIE.ToEntero, Folio:=FolioCancelado) Then + ErrorCancelar = True + MensajeError = "Error al actualizar complemento de pago" + End If End If End If End If End If - End If - If Not ErrorCancelar Then + If Not ErrorCancelar Then - Dim ErrorCancelarComplemento As Boolean = True + Dim ErrorCancelarComplemento As Boolean = True - If CancelarComplemento Then - Dim ObjCancelacion As New Timbrado - 'Dim ObjBanco As New ClsBancos + If CancelarComplemento Then + Dim ObjCancelacion As New Timbrado + 'Dim ObjBanco As New ClsBancos - If EstatusSATCancelado(FolioFiscalCancelar, UsuarioActual.Empresa.RFC, RFCReceptorCancelar) Then + If EstatusSATCancelado(FolioFiscalCancelar, UsuarioActual.Empresa.RFC, RFCReceptorCancelar) Then - If Banc.UpdateComplementoPago(CveComplementoPagoCancelar, "-1", -1, UsuarioActual.CveEmpresa, 2, CvePACCancelacion, FechaCancelacion:=Date.Now, SelloCancelacion:="") Then - CargaComplementosPago() - RegistraScript("$('#ModalCancelarComplemetno').modal('hide');") - ErrorCancelarComplemento = False - Alert("El complemento se cancelo correctamente.") - End If - - Else - If ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscalCancelar, 0, RFCReceptorCancelar, UsuarioActual.Empresa.RFC, CvePACCancelacion) Then - - If Banc.UpdateComplementoPago(CveComplementoPagoCancelar, "-1", -1, UsuarioActual.CveEmpresa, 2, CvePACCancelacion, FechaCancelacion:=ObjCancelacion.CancelacionFecha, SelloCancelacion:=ObjCancelacion.CancelacionAcuse) Then + If Banc.UpdateComplementoPago(CveComplementoPagoCancelar, "-1", -1, UsuarioActual.CveEmpresa, 2, CvePACCancelacion, FechaCancelacion:=Date.Now, SelloCancelacion:="") Then CargaComplementosPago() RegistraScript("$('#ModalCancelarComplemetno').modal('hide');") ErrorCancelarComplemento = False @@ -4569,49 +4568,62 @@ Partial Class Bancos_IE End If Else - Alert("Se presento un error al cancelar el complemento.", TipoMensaje.MsgAdvertencia) + If ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, FolioFiscalCancelar, 0, RFCReceptorCancelar, UsuarioActual.Empresa.RFC, CvePACCancelacion) Then + + If Banc.UpdateComplementoPago(CveComplementoPagoCancelar, "-1", -1, UsuarioActual.CveEmpresa, 2, CvePACCancelacion, FechaCancelacion:=ObjCancelacion.CancelacionFecha, SelloCancelacion:=ObjCancelacion.CancelacionAcuse) Then + CargaComplementosPago() + RegistraScript("$('#ModalCancelarComplemetno').modal('hide');") + ErrorCancelarComplemento = False + Alert("El complemento se cancelo correctamente.") + End If + + Else + Alert("Se presento un error al cancelar el complemento.", TipoMensaje.MsgAdvertencia) + End If + End If - End If - - Else - ErrorCancelarComplemento = False - End If - - - If Not ErrorCancelarComplemento Then - - If ObjAC IsNot Nothing Then ObjAC.Commit() - Banc.Commit() - Dim Msg As New StringBuilder - - If CancelarComplemento Then - Msg.Append("El movimiento bancario y su complemento quedaron cancelados exitosamente.") Else - Msg.Append("El movimiento bancario quedó cancelado exitosamente.") + ErrorCancelarComplemento = False End If - If IdPolizaNueva > 0 Then Msg.AppendFormat("

Ver Póliza de cancelación", IdPolizaNueva) - Alert(Msg.ToString, TipoMensaje.MsgInformacion, "document.location.href=""/Bancos/RepIE.aspx""") + If Not ErrorCancelarComplemento Then + + If ObjAC IsNot Nothing Then ObjAC.Commit() + Banc.Commit() + Dim Msg As New StringBuilder + + If CancelarComplemento Then + Msg.Append("El movimiento bancario y su complemento quedaron cancelados exitosamente.") + Else + Msg.Append("El movimiento bancario quedó cancelado exitosamente.") + End If + + + If IdPolizaNueva > 0 Then Msg.AppendFormat("

Ver Póliza de cancelación", IdPolizaNueva) + Alert(Msg.ToString, TipoMensaje.MsgInformacion, "document.location.href=""/Bancos/RepIE.aspx""") + + Else + + If ObjAC IsNot Nothing Then ObjAC.RollBack() + Banc.RollBack() + Alert("El movimiento bancario no se pudo cancelar. Por favor vuelva a intentar.", TipoMensaje.MsgError) + GuardaLog(MensajeError + " | CANCELAR IE") + + End If + Else - If ObjAC IsNot Nothing Then ObjAC.RollBack() Banc.RollBack() Alert("El movimiento bancario no se pudo cancelar. Por favor vuelva a intentar.", TipoMensaje.MsgError) GuardaLog(MensajeError + " | CANCELAR IE") - End If - - - Else - If ObjAC IsNot Nothing Then ObjAC.RollBack() - Banc.RollBack() - Alert("El movimiento bancario no se pudo cancelar. Por favor vuelva a intentar.", TipoMensaje.MsgError) - GuardaLog(MensajeError + " | CANCELAR IE") - End If + Catch ex As Exception + OnError("Ocurrio un error al cancelar", ex) + End Try If ObjAC IsNot Nothing Then ObjAC.Dispose() Banc.Dispose() From 165d3a321b6543f6a1b7e9a9364c26d30dec88e3 Mon Sep 17 00:00:00 2001 From: Jonathan Alexis Perez Morales Date: Tue, 16 Mar 2021 11:22:48 -0700 Subject: [PATCH 4/6] BDH: Validacion servicio a domicilio --- Ventas/PV.aspx.vb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Ventas/PV.aspx.vb b/Ventas/PV.aspx.vb index 3900a78d9..4ddb7a3de 100644 --- a/Ventas/PV.aspx.vb +++ b/Ventas/PV.aspx.vb @@ -3541,6 +3541,12 @@ Partial Class PV If ObjFactura.CveAlmacenTraspasoDestino <= 0 And ObjFactura.TipoDocto = "Rem" Then ObjFactura.ErrorList.Add("Ocurrió un error al seleccionar el almacen de entrega por adelantado de la sucursal.") End If + + 'SI LA SUCURSAL NO TIENE SERVICIO A DOMICILIO + If ObjFactura.ServicioDomicilio AndAlso ObjFactura.CveAlmacenServicioDomicilio <= 0 And ObjFactura.TipoDocto = "Rem" Then + ObjFactura.ErrorList.Add("No existe un almacen configurado como 'Servicio a Domicilio' en esta sucursal.") + End If + End If End Sub From 2a3de0c64de9faced204decb05c2fde2833cab6b Mon Sep 17 00:00:00 2001 From: HECTOR RODRIGUEZ Date: Wed, 17 Mar 2021 13:29:19 -0700 Subject: [PATCH 5/6] Cambios en reportes --- .../ReportesProgramados/RPTHistorico.rpt | Bin 16384 -> 76800 bytes .../ReportesProgramados/RPVelocidad.rdlc | 1283 +++++++++-------- GPS/Rastreo.aspx.vb | 37 +- 3 files changed, 720 insertions(+), 600 deletions(-) diff --git a/Empresas/Grales/ReportesProgramados/RPTHistorico.rpt b/Empresas/Grales/ReportesProgramados/RPTHistorico.rpt index d9d902a8742cd785d75681bb0083443b406dae2a..8a14ebb09efd11e03fa52d0c12c6b6ee47dd05b1 100644 GIT binary patch literal 76800 zcmeFa2UJx_(=JR<%%Z4>f{KU%BPJ9TMG?#>K@kx%iV7l%0dqo(m=yzrxJewoMYh9beA5DiIZnvydRj;bXo0sMCtiEnh;<||O3%qT2y^egc z*4HdFTa#*)7xirYY{<)nZms_qT;|e>ZRU&G<;+@odzTRV=JsKQoIDOy+T^{s?z(Kj zn}SA^Tw5|v52Hc{axL-*J9+m>?UXE6vz%|5HRSM;$~(?iIp@$h-xV)Ux3=Cnl090Q zBt>4h(KasGtM{Y8Aj4r%dEVbC9WbS74g-%^yFX|5-+Fw$zukxr%H;glL)+%cZ{|C9 z)i~eaoTYEOUogJtq>?Obcd2YV`cHr%@zaq{Wel0U?(c>|`K~2JyknU#!8-6x?9p5*4 zX5K&6tlA%bZ%T*CpGx+uY(KSfVB;KPTn?T0sPs1R?&d!aH2kt@c1zbIM<+CUvg3Q{ z7V{R|toJyZuM&89_4>n`dtc4gcErzWrjbJ@?$XWEN<^KR}lh%+8Bz0duxm$sXg zaU68(X8oJDZD-6LQDlOun>nYT@sP zdLDfp)wI#)QT3MJOPsy9=EeJ`^EjTlmUJ_@_}npDd^Znr3jE^n-M`70+MaLU_Oq&D ze9X0~WAEZOa%C|yIT_Qu`Klq4eQy~Vj14RLrD<@8^Sd1fvdytSe!cbAz#zAYA(vJ~ zpASr}`{nAOLuahF)(99}HtCFa*rDo?1;0L9Q#&f`U25csPjMUGRrsr$(dw3MEpDH% zh$w%SEZ_Q584h|=QzK3sR#9p&L_L1j6QIy#N$(` z(bEraGBC|sXxW{~@2XXOcXo-(eXwQ z{X^V$r|lD+7g-qQ-Wy)+K*FR}!K?hv^t#vFYINfTRxWp}o_=c1Va z^zG-?f%!Jh%5G4h?2apjBBg6(_ChvYG?)pF_Gm%a|Cb3e7PLuF7D2lOWfk;?Ae=v> z3c?<7T@dz-$AWSQf{~npxdpEwcwWJs1veGEso>(Y!=R1e@S(ln z_!}cQ{J1X$$N5K^_MrW)Z+5SZ?_8hQg?VqUR-f_*ZY~ae^q-q)V5`e zQCPsY#KWDQCXJpOzc2f$QI%bWJ^dcn_;|;Lr#D5p_A#t*c$Sgho{@8#SiQC~x=|pc ze{jjoSv$PF+2xjD)+)tJPtKn=(66eAg<0GOi-)T#6g&_b^w2D-;fgF1M$JBVX3Lc9 z6?;B^SO5Of*$pob^sU;!-+5laOXu%i{G!-}d^~-A>cIt%ZWx+Y-{b93c3)`7?$$Y1 zr_8j?vFYyt^BwvQ4exPh$o641EIU;i_T^Q{(5R1p&#=6H=;h1GSsX8Quv_u$NrLa` z_7&>YsN&*P@4=1x4g9Y}Zu@@CEc9;q#D*2~-HUs<=atvlfqo%X8&>_JNYY8u`H6jO zt88)Yke@hjp6U(C9F$jg>V7vHz*X)`FM-yP78^;n?}Bsn17;?za5s*1Jgq|95|y?Ehwc?B=sBsd3A? zMRzRYv*Gl)jh$|N`drJ|)qBXE5g%IRtuv&3o%zeVzT8$}M}w<3W_iatjOdlE;Kbp* zF9#1Q{i@-D`&kCY7d%n+beTmbN@uexStz*q^WOXaxKn+kyG6mhO=V(JdzS+z@+a?EME_d(5#|<^JVq{Yy_AH++n@-{T%KY4GF1 zb4q>+E$w6e`DK;xO@GyH?Nf2sxP!jsUR!kd+B|U3fZA=B&AB^s{mw<>ufAStx5ht9 zbK`{<-rf5#D72+xwMI=_=IrsY;bPlENk`i?uh^jXp&DD9My}}CXMy>|OB1W*w)uG4 zU{1Rh2FXhXhnv5@^7MWFK3hj#@W|q7wD!ZwCFh2(u`krrJ8nz`pTwIr=6-oKGcj;c z$$8ETClvFYxhMFTOm+{aZRM@n|7?~N89Qdn-`&bu&a{|xJt@KO zeb11(Q{o<9`Pk3NZsl>KfrdsEmlc~kX7<*DNo{%!80@&e;e#L5Dn%LR8!+2uliiu7 z6>pu{F=&Zt)4|b`D|#G0{kW!uOOZdj&zv=8M9ac${u(lSU)3u$6Nozc?7Qq@t2{ObBF3Lz+MrJ-L#OI)eLX=ObyeDLzVkIlS?7+f$@DIR@blIz_g6%{w!7Z zuP|TJy7tIUuOs89ud*|>81gW2&D5gF z^m{VcJ;9}Mo0Mkje*`~2*7umv-N}cG)$~5uDQM`CZa2>#s^#-|$ciJEj^r3L?)3Wd zx7R%~v#Wc=0vRcuZ`uq~rI_jB@p#`nFl! zl=}xJk7~B4OmML$*?+Xjv(CoK`AfOCE8IW52wHWP^@j=KOr@`qg`bqiq)~{dC!=Z;XI{ zQ0IzHrDizy8Sc;{XMslBo}YKiZ|mN*Qnt5kR^|a_I8l{h&_2$cs=L-m}?sz zc5^-XqW5v1zgBtmyyp90L5z2=*+&~jhZQwi~_=WX$L^mSP5vzVACQDf(p8ol;d0kfhu*WScTESLR! zk9qCio&V$gN zv&ypVF;jY*ocDQeZ~k~#+xw?3m|UAN`^SRY*NY!?cJp197;&upwHnW|IGjHHu$_IO zEcVIQr!`+VZqoTrTR)cwm_Dwu_ZpM0{yi&Ri&)dsuzXy#BM!cO=haEAWpZ_Dxl`j; zw_H%ux%=4Kc8SXmoSa$kRMyH5emDgDk^Fa~I;Six3Upik%J@SO7x#OmJr-YoKX`AR z!q=NE{2to2o@%lxMVz1M z`8(LGm(PN>QJu#5zex#t;c41+{h0^(vV0%WuT;AedCTW^d0=wrVT@B7ms4f#FJIiX zPch|DX&=XBI|j`#+iz39cA?raM~l3gH~)I-!j+#lB#+MjAh4y1yQ>_SVow zS))y!EH=q=szY$M(Z`D#j@*;#+WSEdw;ctC^`6pq?oGcd>!y9|zRfZ@e$Kb^d7~Qz z*L8|nyMEobPIh-!M4Gz<-pF2K*!Jk@TlQ2x89-xoQytTW8%)!58#$ZS=IKo37=kxaoNOil9i-YrCh;@9lRrXyB`c)uyeQ z8C-1a)vu;^Qya~j+4ryGRreN)^GdJ^?d-I=(30oLCl61q`EiiPiQ6L$yBF{|W@hvK z^3l5&rk3B4yH)LoIcHth+^9Zuc&Cp?^B0Oa+PHTAdH1>o&U-p<`GG&qjO$%5*S>xa z%7#^H?@+PSyO3r|L(XZBV4jkzs54e{1*gX)~Kgr6NY3G%nCAvmgw1cZ_7ff|27H_9iI|5BG>8okCi;@{r&Ptz|b(-y4puwDD4 z(BQ4xlf$B{mO4hbW&NXkp7?>j+Z{p&4|p{9`J6jbTVJ`lr9)p&$BPMOhGm|_jytj_ zDbf7i$rsaXivBoLqt`mGy73{o78RZSSL=pv{E9@3@|#=!M<+I|+?!lcs2TrSc=IsNw*`@!u z7OE)9-Z081 z`ny&BD3conXHGx+ctkswhtEYmZ#%2^k;>z&-Z&4f+$BqJr5z97MIF0d$+OYM*rAt> z+2^g&>B7h-ep~N7z2JB9`I}zH+t)hM*eLIf)WH=Z_kFSM-Sm3a3C*m+tj&)3o~Y-s zV1-jk+$+6r{J_~Fw=WM%u#n}EED?OOyXW*30snO*^ zCvG3g|2gZ}R?)YOQ$HM@SpCD`RXfJox-6@CBcRlaNq?O=v9ZmJaitcov`l6=(!OqOKzKPTIB46Mg89FTkSlrXz?}<)w`cqa(7YdR!W;~=WBLM ziLZUqH*#E!m!UI@B#c+~-UvtyaqgVUvc<|4=U0w9U-xUjxvh5CY|egp+xP)JraC>_ z5&K%H7T0`x{VQ81ya>N{VO0yiIR_F4CjVKx)x9&5MwRQiyYledGdZtqGu)?#~qoTZ2zp> zl1r0*R1W=?P^0$l<)4@OdfV^Zv8MN;yUL|K=bqd=_N->R{?kiaEQ_8|ecJ`+9F>cd zepn#Zr&QAqYZg_zdHwaR;?F*RHhtfI*Qxi{ha8#w{ZTKoTNbq(g3H$#U=|iRw!m?p z+s|IKUNg@x?%k&;E0)}>k@N79N?rfR->${Y2F?BNeOmbNN6-%6rEaB4xNiRQV8H$t z`IC-)%T?xW(NDuWjNMWoZ-D{Z_C!4W{-o8JLFE!>t$hD|af_7aW$(VM_vX#hA*HLH z+>`Ic5|hjyu)kL#4AX zuG-iQII(s0a+Avu`|P70#ZRr;qw&irlfIO7sNyoBrLjkDmripcvO4^5cG=UR|AB0U z9$B64`aIZjO4os=w@ufF=I`TKf7%284P#0@e0KU}(*_$#l&|^h{PjKeb``1qZO54- zb1!ClUvkH=J(Es4kG?&6c=wCO1scq6{w>>63mfaUrBh1XellWhf$4K9^{MKXR48|| zziYYFOB(HPuJnV%?lDK-=I`t?c)*aad(WDM9x6Yf*(<-bXN&i<-sm5YZ%tIYlF!VC z+q<5K9dtJ-ceLrQPX{j>P5n0IO;AYq!g;=r^Dtp#Lx9k=BXT6)xjvCy5@ndt;@YeauyEXpn)1zT`?|ryhZ1(E~WmY_CQfq2R z_i`p9e1y{pUZJ(9hViOBerLVMFSCocZxsX!imquC)9RU2@=` zN5k{h3~Uv>tCC+EyZ*KN=bf`+K-DIfDs)=B@GkrDQe)c{ z{}!3!$Dig^{i~grXY#`%*0n~vwD>w< zKufbEug{e&U!Ixp?Bq(5LbXa9d^}_S*BY&MrTn#JXL8=$71vlaxbUn%&6b=m4jiubEMN3t*Nm*sw;Ql|c?Qx|>CpZX)H;L79m6HeOr+7`2qboz3%;A!tu zUEW4k%hO|(P5UxWA570ODu0Pj>kL{gys-Gy#M2#@707aA>ycp#3x8@G8r~$j_Uh54 zW`-4yZ)!bw^00A7Uw$m--6|nl%%|?X>c>Y8%4-pSX4^q!%;{L8h3!8XJ`XR^V%H&? zg9h)Np5+)mqQcUv>$eYEH}3Bi4n11U+4J{>XH^zfuuQh>`K*2NpNp1;=Si8cChw;i zVRl1??)%owEGnV+>I3DEf4)`pc}gSW3Nur}ZA-RyHU83lv`by*sLi##^L#ff`Q7~L z`7RTdHlAF*|ICsb5C3t)$$8FZqhPBe>l}Rd<@>y$T#sg{-v>|HneyOlk2QAh?p#0O zJl7|3VQ4=8=H<^;cKu=a_tz0kV&{Bz9QWCzS(P7`FUB025MHkM(Zn@56-&>E?i-iq zzp=D%>86Xuv@yu#U4Nd@#dp~s#@BtBrF`v4)3)A!zA>im!J1RaTp-j4fxwzloqus=GESbx;1K(Xs>OAfIaej(Sa9A1O0 zYSx^dqibBj3X^Z%^ffr$HL&RBsg?WZX=vGKMA^9~SG!%QpE5Szf?-uZE#B&}@#+}2 zLhq*(uhnJUV2cLXz0K^xYJb_)(>AGx`Cqr)0-tO;w`%1Clahb`*G4>V z2r&p2<iCT8U>4{RH(A&m445JO0_8m3Z=kXFYiSf`{Dy+{3`2vQTP)2R!1>RgB$D zjMqc_*ISIVp+^Rx#lDZ1WnVAk);>Yl?iDyMQ?lkWe9 z2Cc<&mH=7wugWk52e6{%Eyz(&9YJ*k)f40-sJ@^Ef}9046x2wNi=f7WTm=C% zO$0R+)J#xwK`jKe6x2$PyP(#B+6eLxWs`~-CrU11(^uK z+GH0T$8}CYxdi1Flt)lrK{$N!3Cb_XOi%$q1qBrnWG<+%APYf71QiuzDacAtF+s%z zAqQ9sDk;cDP$@ySf=UZ2Bj{K8AHG!)I`)F93aTckx}X|@Y6@}?R7+58L5_lOtko4% zPtgBO`5*J>Dt!8%%>O_e*BUf<~ky>inY4(Sbu9FvsU+cl$-_O?G^Pejp-^G z|A!^<2RFsvYc}Yr%4BwZ8}q;E@BipT zgpZloPXo~Z0uz@1WB(WN`%ip+5ggIwoZ*9v=~k zfBTo-_jd}yxUBYz(}r|6Wc`0E%l3cAxUBz=#)U$<{%;yj*Z&>k>Gpr$_|c%EtCw8jeh)+-1FwKy zApzEHo1q-N+b-t&Xq0q+<#OaS#g$|wp$VIn4RN`Mdj{2V+KOv-6ZOgwcRxK0ngw_5 z70^$o1;e<50KbYGxYX(B)4N}fkRby*dW8=R3ka@Wtz$?~K=o>sdjtikcPOA|B<$hp zRo|a`L-%H|2~6Qm2L4zFKWj9<83>;J_x}vVof2aaPK=^`_JI2tZF+YP8#Exmx?JOc z!M(c&SU2m}BcOkP_+P&;>qfo9g1h#&OZO0~;uY34tatauy}KE_cZ|c$-GBHKGf}Uz z|3NL&W>0ayGeq1uwib7Q`w5O;pZuFYbFs#lJN`0TiFA9DDyq+4pyympC&kkbj2oc- ze_*=m?-qFfS?7W7=D755_i>u#hrM}o%etTsFE;o{~i8i{#P#T z{`bEbAJ&rKg!uCiaraX1d=LD`v2;Ct{(nI+K1}i6&Cjj+Yq-C&0XO!<-&jH81dSIo zK~RLCiGm^pO%gO&&=f)P{a@U-%Iy9x+WzzR|4sxNwc?W)+%?5PxlB-dL52p_;{Uq8 zKSYuQ@vn2|&WgXkzvAcTr&7m`9o2fLPMs8#A@}w5Rob_2ulV@*DDB#{Q@p*s6)!I@ z#naPMY15{S(yCP}rFrw_N)xvximR)u;^N|>I5%vl)Njy0sb9aoT6SsNSZUg{snSB| zdWrt9+ogMVrC0CXN>EUc64X~mef#!R?CtH9Drr=?a%IKV)>g5wuu#m*%#?x!3o7R3 z=1PqkHI%MhyDB|;^iU>Dn4nCYI8lj+h)~Pp$B$R}xN+l@v17+7qeqWUryVZ@bcCE5* z-8yCc`t_eQ*CZMHIR-aKXg{Q1g)1q)RDg$oy|JSJwb5;Y}KnKxsq5hKlAN5ZQc6mS0y=o`ph^c097r!y_A~#vUDiKz=#YXsZL$qxK_<6R2b}G@cI{F^ zLPC_@0s~k_U=BC~zS_2JtCoQi$h&muqIB!lO(kL$xRmke?d7f3VWUHb4(a%%&DO13 zD=k{I5IA*HG1@@jvre5lN}alO6=!E>Ro0}5n~LR9rAjF_Ha3d2wY5^BLWIaB_<}SdMZxE8u2*TxN(Du=T)m# zDXUknPA6b@oxm_K4ot6Du|kQ7S)y#%uwM0l&z{}tngb770@jEdav6V_$z(aP1sO=j zo?K@;@CVwzf4?$l&>$r&EKCUv4ON1JgOy&rdZ~GZcTUP_(n6_sk`td;5&N-9ahXr zhldXpIc|&+897mzG-;ADS>%Ul)24}>F0dK&XTt*%8{b_iV*9hyR!zlVBrsEd<6BG9c z+dGwQTem1%x9IXQ@Vb8eIu-Z3#n{k;J+42vjIqqhKkMnRMP0VhW(Ec`@*dhUyGGxFe+QEs{e*OBXSOf;Kcl(N5haBhY z3-VRkdV4D6txOf?8g@!km%55;gIY?PmQ9sOaUkJ6#Nw~FPi zUAw4w_7T{%v&gMDJ5*2#n-@^b3*=WU3Y&}kS5V2FE2m0z9BYXj?WGi#75C~#nc7?8`50Vlwij6swkM?3U^Ef8~*j1{c!Ua3uo3!T2&hIT>d zi4}AYOt z7UxQH=gv{*fO8?tWx;~^3d+n`%um3S7Kg+qaj4=?U=VufM=TKoNlCh#rD8D+SHy)b zU+M57w*zY+t_AteGMx@}$z_}H1>?)UpbQ;wv=iqTL&ZqiIUg|wu1`*x%vt_bALx)c zran#?=7r-Pe#&uUoN>J4+#)6>M$ISK+kiVzKS6!OxfjnJJ9pOY#kgi^>(xf7P~1%M zXyK;jw9aCm21b3_dMdRlml6AMDWytjOU2GApW@!CrFtIc)80otXY}@PS1J|HuXwa- zqTg-l4rx)uw>rt}JUh;x8(!pZ72 z;^M`Nb-6Bjf$%jWw=stie`-B#&jr>{-zm6^JCqR@^kLp4-he}v!F3o&J9iTpkYk3p z>Dn`5N*p2H#GkgzwUBjD=K7GsHqIB>CUe>(_T+U(`Ii{djMApHySmT!?bBNsF?^VcLF78@y)w>-DfQe=;7P@lz#DW_>}l}F zJP18ptMd8-y3CuzALF3K80*@YvaVed87FAdS4UsSxi++w8HX;2IAbn?{d5dzF!s;# zjNC=c$@XQLj5Cy3Cx;)ZTyWrs{$@5m^*BpA{;0$FCnSh<73aF~@jH}l;`%FItQ%zW zX3tQTiad$?F#etV#eUgY}7(mCh=me zQHLDokhouk`>VJ&h5M_Z<;$0=1bNuNF!h>y;D8XNNxdqHr)wRhgL`Aet9b*Zntf%( z(a}+9Ebd_=M*@?$C)BN5SEYad{_4GD-0#ErDe%EuMU3d<@ROL6%hZJpl)N^!003D{EG-RC)*YQgb14C9ZdHj|k5^kn=#m9daM`VBkgGBY^?bWsIOqjH+#E zeW*iya4l(dSO!!pML*WyTD zo%(G1RX;ork@cXF>}F5zCt z{S7h@@(cRl85VOW^C+GHz<1nt!80o056`TSSBV31_yCgEjO(T4+E}nJ*BbcJ+SS@% zowgVgEtg}*XIWe`aOks-HvXt{J{*VZ2abNQp~VBoq+I6u^wCZ^x!gxvmUU3p=Qm~W zal?iU>Bp2T=e%XkIl=Bf5p)?3<_6{pU<%j*-ngf6uR|Nl(8qcMpLmwV=S##RFepEZ zMHzV%Hh>Xghkj`1g1SDE^|_Xm5nHU20|PP+V3&OnSCYQ<)R#B7j*K(=YwNNcW6JF^ zHYnG}>66^XzLaHFr<`1S9Kk>MMUFBF@nQZ$>?o%$=cbj*b?T6#4P|*nKE*; z!3Wr*FY>yw{BJqdTx*XuhzHiewKCQ-<8oiQe`flWQy0D=2AsPbPso{DsKH*my{#|p5AGUWPjDEq_p(XJQ$W4m03zj7UASq58jJ8hG*jdfX{Wpe7uoNX8r zW!9;~IyvOfMcfb%dH$3U3uuF`tiv)m^uZBZa9Njakh9D+!nnG;l<_Q{`!4VXB8G@7 z?78euj&%htnLCLwaM+_w=1<7!qs$pAnWJ5<%Vo5IFfS1O0ms}(#G#Bu>as7mb}X(V zxx5d{>nQv5Pi5MYIr~tCI?GzFPnR;S|FRr*XqR$u!~t;uK0t^W>R4~=W5599h>w;t zcA3f1&Nzdk4xHfm131P3zKAuMb04J-@CP`euds#r!Y!8jn=1}AZxf2vdOSDZF7G}EEYo*6R&qb+ zp-w%-0BeEuV!q&7Vx4iH1J@one`37kc(P0`>p&(G?2>q`K}-O1z?O_Xlz~fPkUGd; zu*0#)F(=qVJLbdd7>-2@(g)g*ayKHzdY%Ir&heRZ}`pLKHN zK5hPE8^`1L@PPyw=K_7`YHhKjL za0fZKj6wE+pK^RqPf0-xb#Y{Dp|72jYy)kwef@Sb#*)`nUQd?EGs7F(Wv=sGHwI$F zIdlGy!Dr4_?u#`Hf84u3uEYHb+$ZCEe0Yxq zI#^HGq8-{Lr|rzzp+~%f>tZ8tA#88owpHM6o9YKJ#_LpYViRTH3Ui|GD3dTQeB}8Z zI57zSIX3lS1AXX!1{X5O)izDLIL;Y=@QgmX{DSc?FW6=~Id$d!TtmuO*T=Q_N}mqL zAcr3rvDTe~V9p$mT%RrKv5mU=IL3oMiMR*ndchYGWLOidCvpt1hn%-`=~DInEPgux z+~FA(-XG;UYRA!6hYUV~>&m)w8I%zVuD{AfedkWG?`{|ON8&)hV8*-Z%*(_heEzAw zgg@AZ9&$M51(Gqym_Uzl&~Y7}laql*aXy)jJ014qcylelwQ|&9n^q2!aGv@jR*A67e2`26YrFvjxv2E$DHURW0AB^q#034pvDP5s5oOGc$BK+M>TqoOsq>q;PWTPq)wN5L zrOih>C(MU)<30`C^1XMAEsudR>+HvMW*wX|a2aPT{}Y${%XZ;^X5+&q$CG_Pth6>z z=Q_e3;|b0>VvRh2eT(=52PQ$x5x^bxT0GZB?!&ur_#H%KWTbdE-dn-%e(?JpJkQ6P zVtu&|`#mnI27-?CJNdo?hz-6_in`8 zFgDkeHo#fN{CRvqm!!oVmcBaU@6V zF=yZedk*pi&(#qR$ar1_4#Kliyj!AsPjr_08$|pz2frn9aBxr>i{D2Adw8dvYfFDP zKY3odHPx*h{ne+h!%ULE7V@9S$GgOFvL`|0KoIg^ypob6?#-##OH@+!iyVhsDKJKR zv=3V(`pCF3CNdWB+X%dmz8@sYAmB!|n-*Uk4%0B0h7pb{&sY5oLmK{6x$tGzPLa1o z>@ha|LSMNo$BsCFjQEF)BxCKL%ES=+ava8roO0@A#^Ez{!8r$TtOeqXGC1bT_!ED~ zb-*Jy@P>TI`x&^VM83msAMid1e*cPdJ%90Dyo*aCrBS0s>Th%_RH&dB8XBtOVNCc6 zU$`FRl*x73cg`LDqKq{M29gD~c8mRX-(I}mD)v;t_X#ZS-?vM&?@6OXoo-s+|7uGY z55@p^!#EsY=d;Mqz}o)3g6|c1OO%BVq@Vm2{^{x&Ih|wv6Ib_Nu@;yM#|O`BjWd%o z56SJsA7m_N#-W38_0KEAA9);Y8S5?2f%agN_yZ>ahs<@@V~Imv+wwUmu!r+L{0;)Y zf0#RWuKN2nobx$3)l-ZN4b;82diCl`mMmFR!WhY7P33rSj+D_?%30TPT}*&Mk>7#C zed2zK*oQd}6_;v`0`5S_lVa~zF_nP{_(NjuCkDYGgUu9moP8?h4yGX2iMWb;D+dpN za6OQ*9vQx8bW36XU}V*=M;P1d1Hedy8-IOC2o>xehc|HyG~1=kk1hYZ}I4m{%h zIPAapb_1?A@SDko;#(NNo)&)v3KU3RSBwQ;WWVUIzIkzuv6<+WaLAv)6d6R zhEB#jWSMN2Ye`N$;s$k=$*H5SO{>GYmeU5~tgTZH4u9FM<+_;bVozOJCYOOn<^bkC zoc959z#nrU@*nYsbH5qldKd2q<6fVgon0FCGV&kxUwli2>x=c~afC8`pno#gmQkk+ z{gQ>xx@+K!YYW*X%Cf$i|I{&c$EAv2Q3swdcjjpIx7NsiY7WG;i<|>>KGPR+#9l6I z*MjYoQ(oH-JT)0|I~QGdA%)I_|fO7TSxB;FEh?K z$UZ<9b+&0aVyQ3g%mK(%@^uFA2h8yt5Z59rmM<5-iI^eq7pZ2z^F{r0aj23_S9m zSeCKGGCAk2;!qreDo=|C%fvAH$Rx*;WyD?^cX_>JJ^Db5qs}p*$A0WXF3VXarw;o= z4$|k-@5pG6b~58yTdZsSpgqoAo-@}A>x=bA4g}_aH(-%DUxWFysI3LCH7vK@UIo~DTdjSUbi1!S1 z7}VXf;~J84j-0dZ9*XY13+GI(!&=6*j23&0pEj;o7q;nJBUzt%@CRj?(+|jKhx+-~xFF zYY$xD-ZP&00)L}NjS}C!byBZ)am{O-mj8^!wJ@%Ki-_;4fPgXJ2Iqn3FJln76=Ps5 zgI zzlx_;SMGyxQHKuvB;FtgF~6f71R3W*9huX%%-NS5ZCZa(M?3q;?I=?&_a**_GwOj; z_B&ke$8q2b=Zd)CybKt`w@Hu-5f?rOMjir&@azrWLk9lv-DDGy?|?s07Gopz-V5aT zwk^Jg!Dq-QcbTJ&#Cgm8v}M%g{)`{TKulR?U+R#vUB(i0Nr*Yh z^b4GA#2e~ZA7YWZkVA(gufOa!^<^2$Xp{S~jCPi_{8w$%rF|`j&lnSOa?TeV@!)>U z^FrhyU4QG6#5g2SH-Zgb=?4mf-sIFLxyq7z7ZlzeUV(K^N@vIo{%YXxK zAmly#P6W?UP{z3-@*naZ^DV|??jsiIi(E%p^;`I=T??)WxI9F~_ypgG4bF-4WSw(n9JHJ+^f5>^bzk+=ic@@|u#=vEgF^Bae_Hex+`^++Y=locfW5F_G%UD5|`sA>g zoR(V|2f2=RVh?>}A1GICNU=qo{-xVYlTj{@PygsIb+mG}lS5A~%NT;3SkcGjzSN~2 zZOUA08~tU1F6x*U=ayNSF=X7xvF^Yh@Dm#wtA3Xo-^Rl`&;$C1D4uOvD@~iYDJ{i0 zA->;@_o8ubhkGu-8ab|gfkR*u*TlF62L6CE<~x>kd#&#N9`MHX;@W~^9`sS36X(zQ zW>#k$86Vg}S+K$dDoGwF&CD=HUH1 z;0pKffHU+5E`dYHcB}VObiZ|i9{#-_{2n4n;Ey>EK7ioUPxzDMY}e`{2Am5xV?xe2 zF@}_rvyW_pW6&40aeS>F>}cC5lXW?sK2G20D|BScun*d0tZ2*ZL%FstkHa?FWSxB} zXCGNk8T{fLS*EX)BZeqL&bYD;8QMX>1~3B*0#`VP0|xOfG_Es%L*NnDw%l8ZSKtf; z?4d9AV&p`~aNPlH<9ECGrUvfo;oVQ%(*psAx;pY+M((5kW4nOIab`Hs+jWT&2^1Ly3#)q6S zqMkl3$6sGNZIIJ8{D6%9u$^+$_1TlxpJj6B(;qF@*QU=t^|YM!dZ4d{{xw|am%?xDaK@*OY;PK+VX5qspwbNIJgc8K>_@b6OLH$Q6L zOT!(oNBq%GaQZ>tO4?NMK!UG|Z=tVbJ^WflXpvyGfoIC3N{TRN(hxbQy?+)NQYP{d9dygdpM;M<2xT!L{SdGWwvE$^F?T+hIHVYuoh6WgWSlWsW1;W?7z-90#ry zIOSL)t`qu0F3VV!`=SgS5_7;A@R*U`GTvJu4)I+R+*1Kpzq2FuS#_^f-(S(aYXF&fl3 zrIl&>>1(GB+cM+w*xEA32j`qAlk3D1Wm=B4giN0v+8~$PA;UfijG+wdX!}A=%;~;~ zrptjS1CM-fO2!>+pfAUyubd-w=nuK9FPGUa+hL6KajuKprcWlfv#cG1b#UtZcey@% z(3ac=ne4B&OkMVsebc8)J=v~48``wQa0}%VqYV40TzD z?edyarsMj3;M$Y_+~?zuK2P%_jQMCdwqpQ05#d$G9y2inBj- zSf(xd4o(^3OF3ke%QBYracv)c{i%cBu(ABR9R88yKE#DSP8sxBhVP6C?{_dhkh7h0 zqzpD7aH<#-v9?5<+-xV-;-Tioqm!tmW(asTF!QIZM(j@)+cRW)PIMF8|b1;Vqa~Ya_Y-_`Ay;6XxOZvG#3uSNj1GarBW1_Cf3? zw-J9FhdSW!gY%#sIOjqcavsOP`Jj&Q&A^|JOW5Stv@grhMmutuGU)2lr><<9y5RC! zu}+RQ^rJq@TARALW}I)JUABudZR+E+53bE`a$O(BI1V}OQotsPEU|``+{C&sX2u#B&Ge;aLOj?_!OS zCoxBifp~Il$&qtd1_wcpu>nUN{TV~l>8IRA9kzjEUf^g0v5q;RF9|yGnC!!L)sM9G zLYaQbIg)+A(T^Nu^uhS5owRXT28XV!&$7&^0}fmA7?hE7zMQjmeK978F~{$xuom@xFqPnF2|rf$Yp<^0|I_PcqY%^cjKK-yiT7MVo#U}T;=r6nY^bpja$o>5zK4V|-V@=z zi~I(>0e^Up6Zk{^j)eE@fGw;s#{lLKchqJ40jqdMOI>+w5C_D79CJmT zYk)F{a&1f)3vfA3{9PsN%6(y1jz8^J z3*qk%ktcv9;7iVVIOju7+FZVD9gnCi@J<8-cMz` zIUn?+U2?e};zD204t=EbgAVp$$gl^aKXMz! zA=YIKVy=)w2RH;CP=*Y?%DRXVW6k)m4$gVY@j)4Kw#yuI!W@AMl8ghCIgY$eup!5s zYeyU8w8eI<4cJB-{bM`FBEM9mwUj%<8nK&i9doaNYH?wB_?k5zD47j3NbcfPO>A3zv`Yk|7l#&-As z8(c@!i8<)gciLn>ywgDY90NAcpSEPK%F%}LB%E>Gxz_MSE~Cyk@cSHSr)}AH%4C0N z3mm#2lo?a)_|&JI9CF5n_`*5^1H>fcYy;Mqe~1%uU=i;;*RSmuO0LmJI04GXPhv9=unP2by0@DcrTj1 zVg7P_Fdls%r!VsO#1CY6Z%`LoU5qoZi1UdIjC0Q5T9R$UfA|c}aX1gog&cC3hy%7W zUgR8?b?RyDqaAIur;l@7xsCSFpKC|Xbwuo;!N4Bs zXv4mWeHPauyxstp@u=@TFSVEKJzlxnz&_Ot`+0Sn1gF$gSwm#WnFwD zALkR83;dUlKVp#QAcz5v3w^%vxMqyuE8gXz|MFZhU+59P?1MT8eRcMDE}+9I^t5va zHYmf~SSAJ-Bh*#hv}1&N#2Dg){xa4WD_KT-G0v<*SMD#{<9y`#0e3jo!GSBppVzKf z51tzl7tntC}9{KWxwDb^E&-U zo%6O4?~YQfey-;w^~lCtLutS8~x)kL=2)%e1Zdy@C~_-*kkVFe2G!63)V@UhgciV z2V6HlA%k3MgFe2oO3cgHMjsGtV;m611((l1sRLVx2{`>=nQdq%F}89%(T2HVOq8Jm z;v67HnRZbIE|{Be?1OL(K@4FnWc&dKSR;H(1>cs!zwt7D{CJh)`vSNo#$E=DA~(X8 zwmtOgQ{W%hGr%ARl-OaPz27chtK_e4ZQDA>R7jWc{>3g1`3cU6!} zaE}mc3VY}W+aO>Xwtz!o6S#v9%r97b=yERyj^PvU<)EFpNsb?nE#i>zAr2WA#t(HI zLpYY;GjcjG$nyvIh4?W4F}KMW1m1`}w1c*9$Gt0Y4_&ljz2PI)1~?!QBj6dB!EXRE z^neN6(8 zvW|B8&oR*kIdBHwQ3hweB_5$q3^K;pXMqpk2J4Qs02Uxa9cu)v0e3ie$2T5%4#ixE ze8TTKVt>Z@BJa=8ChU=5AJ_vPF+TQQv=M{w1w>px4|xf3V(hrSoUa@M%%2z}_HaD{ zg0J{iFU~1&%pivY=iK{=LEwtV2=EVo88f*K+2&2i(KwgD`K#_bMp##11b$*2KwK}b z4eB6u-%iVAy1K3p=Z1CF?d`hvieQuTr)`;_Z$TFa7@5Q`VWqIVouEU#4zJV z&bX4x*uyxeqc4t0o-dlvHydDk;3R3#^?W=@_hAM*w4N}L#`7F*e=sV_(_2FKOc%lp$=7e}LMjJMWd!6fX zttGx0E!J4&z@#8xnCr`Yh4q5ZARUgde`eelpd1{S(#;9qU&nciz;hZ-i9ebDf9;)l zSWes9$B9yCQc@ww5JgTA6-}B)4W~h)B63vvC5@&G8In#?G^Z$1G@6yEfueGf=@c?g zQ9_jVyT3d4InVK)_rLeA_j+B|eXafMz4qE`_^j`Jul?j%C>zf~-$0K`ON*Hk?7S!} zVD~yXlFP<21HWyZ_ajC}TQD{l6SN;ZV(wDEA>}&w})Wy`n}zZtz|%^L1E z+VFg|3D3fOL4Cm*G@4ihQ|K3(OGvX1W-@t)+4u0d?7R0PfA0|sUP&u4-)S5$Mi>KX z3-5Ri=-fZQr^4?toP=LLiMIY7!{I*ghZGtFL%A?K<5+$klY5BuX9wBu30T7z(>S9I z=yS|Hj4%2fhW6oJu!8=Bp+89IfFW7{w0MKS(i_ z9Ea&COlnFJlaa>y@yr2jr#VL{@{(?%uaB_zA3b`6)1(tW*eoq&*U>C%#1z^^a}7+D zvSSFtIHKLeFXh8$;u>oX=rS10%4EN*XX}`rKF}6u0P2FiM;kH6(eLPgluL#_C4D7b z#%DYac_==?n1DOtkW%82Qsk$6Xamhj%uyKTInJRxXfZy671Rs$gy9(VMG6C-U=aMk zaE;g`4v9Im7cAi(1K-eD^6e-a`Qam=$*3ph5ZaG^;O!&u$LoLT?;(jj zq+VWL3>bvr*u}+#;}Cw?-`}76&D5~4FpfitZ!tD#8`{HbXisV?JFYBu*;(v&;p{kP zWnhdmx%t9r;}6Zp@xXcZZ#FX7IGfFreGuBozCVSAX2VZpb2$aP4I+Lp7GM!$LB5LS63&4q zTt_~zGcZo6Tz<3}?ZlYE$e-grI)^?XoduUD2YrWjqE29s<~imim?OUn?E`19t5>i7 zxBnZ1-y+BF@sbWg3!R;vxxEYFo1ueX5x=94_%J*?oMRDl1$9SXpiR7%u$P^4ajaj6 z2d4vb6@BoxvHpPloRY$xJFx#ROG$>G7>Iq*N7TQ#565UT#Y7mZq9XRUf!VgB{TP3Y zWntlu?-SU$2^KJx(A>j^*?5X&JA<7M2ea6}&rBcqdl4E7^eg5$;vCF%98;M;bA#v5 zT!+Tu`9B+-C;v)i5pPIwj?RNKw28PShH-A7twmg0s87Hd%^UE5`eQ6`350LDPAVu3D&UQ9?-kL z{Z(%6z}g55W@NBB$Lezu`%Kgebw#}}4tS@F_ZmnMZ$Rsb4N9Ry=x@Y5q{pOBU=+t> z_>BC-7-=YJ1s6a3&<$b~_kcChKRk;J<-%v6uHXu~jroXk=nwP{n4x|GBlH>liTiMl z<}%$w3?cSM4DL)pYK`V;j;JK%FE9)Vv#jQnr09{8)SuKtIqsHiZ?%E}B< zJ3Bir76gBY2f-s!Xd=$7Sh3=-^$PI_77-`n9Vo_Z8)C(+>^u4G+n8PK9@sIv@J=9x z)s!8qrm(ugrZKx%i(%jU;93m(zLb0a6U)stVio!d9m4x@yjwv03BzYvk0C{wxCi~R zpY4B)4VWD8ebB%o%waax#8{=Lv9UHcR;*sL{Y`!aJ_qm6V3#)h!7B3n71RH?ANSxK+KjegKJl&>Y0dF7gNXg0cf?;!O$~R9 z{n4jSpU&+^Gk5M>ZqGRI2G+nFVnS#k49Bo7nwdH!>U6 zN3#2Hu4guF+`t*mZQjhTXSU$`qpi$NmQU~#8@ro}d!eIX3i<;r0t4Uye8b@T@tNND zgLjVkA8hVm*+dzbztFg3)}KRb6FGmx>g#^irzGuT`y2jbAdW$Qe zB?ji)z~B0zY&-+!&<^-ZTJM1$+yhQg26!aB#B*?t7)FZv(mlA3<{IjVID}#m#KIK! zfj=0vV`^&3F^3osd?7}}US6)QuAIR)Q`|^e ziO<+;$<57$S?TM;1P1sq!9juSJNjTIWNi@pUWYwiyM_r53uWJ%Msj-;W8CSxOz0hH z9(0cUAXxmL4DVl|SKtMV;yotf1fQke>>TlCR{ge;S0T;0ugUed&H;nCebijl4J}L0O(l=P3+ z2jh6klqn1tgb&8Cl9CcLXU-f(U0t2?$=cf5jJ>`6Us_1~VQ+P;m0@5JYccpmbDS1?C08Q8%w%0ZbZn^>f0(ml{};+6D_$^m!a5h*c-I1itpdEk%U2k^dc zq3_tBdEk$iJ?I~7+_-VvUYOVuZqlSl+%fjXgipr0gyKUS8yFZcPEJnTIDOWcL^|Weg4U**!qDnT7f~jJc^1Ge>PE zBR^i2+XqioRh8R|%+Sz~v9`A6>I5diI=z3Q_!c}uD-nl5j}SW{rUD0uy}%}TBLknj z{9(+&3F#oQ1~$mR0O=m?ht45B!?VENzwrkKp@WzMC?AG$V7zf9Jr~acTf`aILOxta zeTh4qCvBsY-mhSdi(@kIN4}TV9^en`!H7NLuC}(8fk{b8aV94x$LSv!#4!wOV|*qy zv1c&Y#F$~cFwVpfm;zhyzxKA)%pxlb#>U!`H49FMzy>%$erOa@Ue3S|uJalgBz>j) z$OjIwR7388VMeMHpHH^MucX8PsCGT6nygP53z`G2Xjd2 z7>wXP-n9Vf9$4o!Xe7mVq|e|8&q6tfS-}#;XJ7{GLG$Puu7g+HhjXNPxQ7_SG4zi( z19PN%i1olE#eAfFq?b@}!Z0y*vjI69IBO@cj8P+54$MD5C27gGwAPi%K zy;~I&6gXcET|~TSY;4SFmAktuv)K7pPXC-79XLNo+687vpD?bLmX;ht=H}+yUWmjI z_C@^Ja1GA@Q{ZbM%hZAe3%F%3`R{&je8cJk9I(_p^xz0h&{1xL5xbVB&Fb! zVpkjwtc?c#E`WR|u>u~!3mAl+fn($+t)(>w?gM{d4!lA4PzF+p3BWV>0#{&(H~~8_ zFa@2%^KdWj!!hmwXUI>y5obt=J>rtC;XK%bLH~$9(m?PBy#s$YZrorR8yh)8|AH@Y z1+3V%j0~Cw%_3HbSF{B@fiE#JmNk(Pj0npi zj=>&uP*PHoyAJ+fIEQN@A|i~iurPOwJm??v73L@W0OkSa7vfK_2-d(E_`~}mtgUE$ zg>^Rly(Ln5p9G%@t;G74zH`7jp31*BrQy-Z%65UijVX*RONzH8eCZw{G2Hnwy)M zLI3~n|40vnIyYS&JCDhWd#-D$Q?|3saCuN?w~|WDes9Nfo7Rf^Tg5JE*Zw5xD^T~W zrY-+;=lfTIb+snNi4SE9j-5ZUQ1|-D^F~JUbx(Jdo_LkXcfqkE_0Acoi^t}TDO)gq zmGtq(10!S0zuD|h^fJr-Gr`|FTh-09cs!qL=+<9H(k0FC)TB2+mhY-rR4(aS^oB%D<0 zGfgVfU1Xkge*djkQ)Y7SxGeRP<(-*dU*7f9u~bWKo3$?Suyj%OEz?OytY4j-tp1>{ zXKIYwspL!zhs}x*sne@t^#jm})iGtnLV13H{vpr}cHFiM8pubxj>U@`{UL z(euP3hQ{CHiW_tfp7XgdzwBnnf}JTPAB1Oq41MBovs64`OCSIE9ev{pYCgm-n5ZHA z%O`ck_Hoj`824HWZW=s6RXOrO)`CYZ!P13?j~2(a`f3-hZa(_1N_y^5v%5mkFaNOj zEbmhK=4)K68a8B3Mxd3AQJhgz)28R8w;xXW=;F7y=TEhWU3#ZxtU4vW@ZFVUy}rC2 z7p-qOe|%OjyZlQ1<VHOB7B>J@!moi7fL{!nwtzV>2&w^I8Z%ZJ}3 zn#>BS{;W{@xHc^`)v9arysWXeo#*(P*#>O=*1UMI_O7oH1!vm*Yn)>|U0+D)2j=FL z&Rel6S9p1O{Gi}_r(%b^y;E^!XHBE%%#Gy+=I&0f?qwGjM8sUuUwn9)!j#Q+XHUtX{{K zT^bg|lwLekQSdd><5jJd;jD&9Pfv)o&Dmvbyy|(S=G>gyhJ&~BX_z-%_7NJon_nQ# zzNA3DOS?sOOKD_FLd$U1r3*yQ%GEQvUFZDISzSLmKR8OTWcEkd1x?O-8avL%4A+$U z#%G?XmoVW-TXo}~fq4LklzXmEyu`wKa>_gNN3GuK;k}?LaO&GJpVl-QxgXu>JwH+7i}JL_@oQ|B zMumSAxf8cpJw-A+?3Hejmw9h-z1qcr?BLry zS$hSdoI_OYnvA;_-ia#+j*xC~Z{Tn2@9@;oc8dGl^!|Hn^FD{G&gR}3x|_NqmtHm> zb6h9yRidjgGo>=kAafgYXj_hTdgmFN>n$3FVozxv96{G6vt1#H{jx4zk*>iK*A?$66=W?a~u zb1SDlqgR}!e{LO1y?_e8QcAyC zp#J^3OI=eRsW&Q2Y^zGQuI`;)vSV@5Yz^0)SFajQyC*d4ik`N^CC?0xXD$alc5I&a zU29&yr%{P&dcj0h!$sE>^pNst~DzpvwxLDk$Nrr7<;fAw4W{WAA}kAq*N^0yx9i5%gjpCx6vYvsJzVZ!3G1W)X$WF9;3ZrAD9 zbCl2U#_;1Oh2Lw{D_Okr-&v|vrF?C=@svTPv)9kv)_N#LDyG)c!bHX}-YiG0u{iAt zf0tR!U(mN+#r2J@OY4RChSo=v>(+Jj zD!Ghxb1QEc-}uHvHU7wskT)HQ=Y!t;@%#ABulrX!3-)yT>7`sUIc57x)afdn*vW%X>5q->PWi3mkc4 zSnuym*@s369@LUI&C+`u@87pBux8jN|H3uaS&uWiZ(7ZmvSR*o{$DF?a1 zOZ|&)RwDwW-_KR`9A#pw>?oyqzgyVUMPGVI;f1em8%LcU_q^wxfcA(9Ni+EyeXHFc zhbZp8dg|?#UmBFpBu=i?xEJ#3UHHnJCx;&>E}EHdIq%wm*N>JAJEuy+@AYPUfBD1)5`I5&4 zGJj6jw+MFk4^{DA>=U4n%2ycQED+Y4dgAr^kr`8sCO0=Dvpz2{ILZ1!0ZH9cJ7<{Uo~R+PUoN#6ISdA^-EfQ1jJko6UW^ zvXqAj3_et@vqBjh_5`~zecot^1jQu_fMyfd$8`{`4OKw;;T{~cYY6k>*?$|)9yyl zjikB!Q?%lC`L{@w7roT*RQ$4cgD2Kk4 z&koF8Hr@Q<)V|WovobyeD0Qq_ZV}UF)8G>!*W_|?OvkHT_N^vsl;@=Oca=Pf((TYU zsXysHdSgo0yF`l#{eCxIf6&q0B`+7Mve`;p^T}Ji>LInlx%x7T>XvWPE%vt^)|Ovr zxu{^yTW4jn{&j0FE#Y%h(+a+@#Nb<9(2!Lnaie|52R&WZSP^vmKuU6}@J-ou3wDN9 zxbDlZDze#~xVcArd5b`A&-nZOb(5O!2#?on1f0_;{=mU(hAVHzBo4Oh2?uy|?Ysrtj85wr{$g z{&s(y`te4UyOOW2=T&~Nk!y``k1X!LnDR)N-%itZfzPw^ekS(8Ut--Ja)W}g!|L4XgNiz`K7khD(T}(2w|QqQ z8Rs17J*db1kJ2wYUZ}SPWGOp*wzcsRe>%uOAbfU6fc0(34O`3JEqL-CK)ae53f(PMk?F|Lyy*Id4kp`fZx`To-;T$#1>IuJDZ&Ju!u={XKfE PrWY#gQylicum=4v(4M#( delta 10672 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 F{|89-2i*Vw diff --git a/Empresas/Grales/ReportesProgramados/RPVelocidad.rdlc b/Empresas/Grales/ReportesProgramados/RPVelocidad.rdlc index 3b940abe0..80455533f 100644 --- a/Empresas/Grales/ReportesProgramados/RPVelocidad.rdlc +++ b/Empresas/Grales/ReportesProgramados/RPVelocidad.rdlc @@ -1,593 +1,5 @@ - - - - - true - true - - - - - Reporte de Excesos de Velocidad - - - - - - - - - - - - - - - - - - - - - - - - - Textbox4 - 0.05159in - 0.29332cm - 0.96167in - 8.30729in - - - Middle - 2pt - 2pt - 2pt - 2pt - - - - - - - 3.8335cm - - - 5.14583cm - - - 7.47417cm - - - 4.36267cm - - - - - 0.6cm - - - - - true - true - - - - - Unidad - - - - - - - Textbox2 - - - LightGrey - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - Fecha - - - - - - - Textbox4 - - - LightGrey - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - Dirección - - - - - - - Textbox6 - - - LightGrey - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - Velocidad - - - - - - - Textbox10 - - - LightGrey - 2pt - 2pt - 2pt - 2pt - - - - - - - - 0.6cm - - - - - true - true - - - - - =Fields!Unidad.Value - - - =iif(RowNumber("DsOC") Mod 2 = 0,"WhiteSmoke","White") - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - =Fields!Fecha.Value - - - =iif(RowNumber("DsOC") Mod 2 = 0,"WhiteSmoke","White") - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - =Fields!Direccion.Value - - - =iif(RowNumber("DsOC") Mod 2 = 0,"WhiteSmoke","White") - 2pt - 2pt - 2pt - 2pt - - - - - - - - true - true - - - - - =Fields!Velocidad.Value - - - - Velocidad - - - =iif(RowNumber("DsOC") Mod 2 = 0,"WhiteSmoke","White") - 2pt - 2pt - 2pt - 2pt - - - - - - - - - - - - - - - - - - - - - - - - - DsOC - 5.11387cm - 0.29332cm - 1.2cm - 20.81617cm - 1 - - - - - - Embedded - LogoSinFondo - FitProportional - 0.13104cm - 1.07649cm - 2.44264cm - 2.74883cm - 2 - - - - - - true - true - - - - - Fecha Inicio: - - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - Fecha Fin: - - - - - - - 2pt - 2pt - 2pt - 2pt - - - - 15.1387cm - - - - =Parameters!UsuarioImprimio.Value - - - - - - 2pt - 2pt - 2pt - 2pt - - - - true - true - - - - - Fecha Impresión: - - - - =Parameters!FechaImpresion.Value - - - - - - 2pt - 2pt - 2pt - 2pt - - - - - - - - 27.94cm - 21.59cm - 0cm - 0cm - 0.5cm - 0.5cm - 1.27cm - + + + + + + + + + + + + + + + + + + + + + + + + Textbox4 + 0.05159in + 0.29332cm + 0.96167in + 8.30729in + + + Middle + 2pt + 2pt + 2pt + 2pt + + + + + + + 3.8335cm + + + 5.14583cm + + + 7.47417cm + + + 4.36267cm + + + + + 0.6cm + + + + + true + true + + + + + Unidad + + + + + + + Textbox2 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Fecha + + + + + + + Textbox4 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Dirección + + + + + + + Textbox6 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + Velocidad + + + + + + + Textbox10 + + + LightGrey + 2pt + 2pt + 2pt + 2pt + + + + + + + + 0.6cm + + + + + true + true + + + + + =Fields!Unidad.Value + + + =iif(RowNumber("DsOC") Mod 2 = 0,"WhiteSmoke","White") + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Fecha.Value + + + =iif(RowNumber("DsOC") Mod 2 = 0,"WhiteSmoke","White") + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Direccion.Value + + + =iif(RowNumber("DsOC") Mod 2 = 0,"WhiteSmoke","White") + 2pt + 2pt + 2pt + 2pt + + + + + + + + true + true + + + + + =Fields!Velocidad.Value + + + + Velocidad + + + =iif(RowNumber("DsOC") Mod 2 = 0,"WhiteSmoke","White") + 2pt + 2pt + 2pt + 2pt + + + + + + + + + + + + + + + + + + + + + + + + + DsOC + 5.11387cm + 0.29332cm + 1.2cm + 20.81617cm + 1 + + + + + + true + true + + + + + Fecha Inicio: + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Fecha Fin: + + + + + + + 2pt + 2pt + 2pt + 2pt + + + + External + =Parameters!LogoPath.Value + FitProportional + 0.05159in + 0.29332cm + 2.09585cm + 21.10052cm + 4 + + + + + + true + true + + + + + =Parameters!NombreEmpresa.Value + + + + + + + Textbox1 + 1.97368cm + 0.29332cm + 0.6cm + 21.10052cm + 5 + + + 2pt + 2pt + 2pt + 2pt + + + + 15.1387cm + + + + =Parameters!UsuarioImprimio.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + Fecha Impresión: + + + + =Parameters!FechaImpresion.Value + + + + + + 2pt + 2pt + 2pt + 2pt + + + + true + true + + + + + + + + + =Globals!PageNumber + + + + de + + + + =Globals!TotalPages + + + + + + 2pt + 2pt + 2pt + 2pt + + + + + + + + 27.94cm + 21.59cm + 0cm + 0cm + 0.5cm + 0.5cm + 1.27cm +