From a3c9df42436fb7026f2776c63f7719bfefd3939d Mon Sep 17 00:00:00 2001 From: rrene Date: Wed, 18 Aug 2021 21:53:05 -0700 Subject: [PATCH 01/17] -- filtro de tipoalmacen de traspasoalmacen --- App_Code/ClsInventarios.vb | 3 ++- Inventarios/RepTraspasoAlmacen.aspx | 5 +++++ Inventarios/RepTraspasoAlmacen.aspx.vb | 8 +++++++- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/App_Code/ClsInventarios.vb b/App_Code/ClsInventarios.vb index 3ac1bbd5b..a15ada6c8 100644 --- a/App_Code/ClsInventarios.vb +++ b/App_Code/ClsInventarios.vb @@ -1905,7 +1905,7 @@ Public Class ClsInventarios Return Retorno End Function - Public Function RepTraspasoAlmacen(FechaI As Date, FechaF As Date, CveAlmacenOrigen As Integer, CveAlmacenDestino As Integer, Recibido As Boolean, CveEmpresa As Integer) As Boolean + Public Function RepTraspasoAlmacen(FechaI As Date, FechaF As Date, CveAlmacenOrigen As Integer, CveAlmacenDestino As Integer, Recibido As Boolean, CveTipoAlmacen As Integer, CveEmpresa As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Inv_RepTraspasoAlmacen") @@ -1915,6 +1915,7 @@ Public Class ClsInventarios .Add("@CveAlmacenOrigen", SqlDbType.Int).Value = CveAlmacenOrigen .Add("@CveAlmacenDestino", SqlDbType.Int).Value = CveAlmacenDestino .Add("@Recibido", SqlDbType.Bit).Value = Recibido + .Add("@CveTipoAlmacen", SqlDbType.Int).Value = CveTipoAlmacen .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa End With Try diff --git a/Inventarios/RepTraspasoAlmacen.aspx b/Inventarios/RepTraspasoAlmacen.aspx index b211ab7f2..e8c40b88c 100644 --- a/Inventarios/RepTraspasoAlmacen.aspx +++ b/Inventarios/RepTraspasoAlmacen.aspx @@ -187,6 +187,11 @@
+
Tipo Almacen:
+
+ +
+ diff --git a/Inventarios/RepTraspasoAlmacen.aspx.vb b/Inventarios/RepTraspasoAlmacen.aspx.vb index 221fb1c6e..d6294bd23 100644 --- a/Inventarios/RepTraspasoAlmacen.aspx.vb +++ b/Inventarios/RepTraspasoAlmacen.aspx.vb @@ -74,7 +74,7 @@ Partial Class RepTraspasoAlmacen 'Sucursales = IIf(DdlSubProyectos.GetSelectedValuesM = "", "-1", DdlSubProyectos.GetSelectedValuesM).ToString - If ObjInventarios.RepTraspasoAlmacen(FechaI.ToDate, FechaF.ToDate, DdlAlmacenOrigen.SelectedValue.ToEntero, DdlAlmacenDestino.SelectedValue.ToEntero, ChkRecibido.Checked, UsuarioActual.CveEmpresa) Then + If ObjInventarios.RepTraspasoAlmacen(FechaI.ToDate, FechaF.ToDate, DdlAlmacenOrigen.SelectedValue.ToEntero, DdlAlmacenDestino.SelectedValue.ToEntero, ChkRecibido.Checked, UsuarioActual.CveEmpresa, DdlTipoAlmacen.SelectedValue.ToEntero) Then GvDatos.DataSource = ObjInventarios.DtResultados DtInventarios = ObjInventarios.DtResultados GvDatos.Columns(5).Visible = DtInventarios.MAX("Serie") <> "" @@ -119,6 +119,12 @@ Partial Class RepTraspasoAlmacen DdlAlmacenOrigen.SelectedValue = "-1" DdlAlmacenOrigen.DataBind() DdlAlmacenOrigen.SelectedValueExist(UsuarioActual.CveAlmacen) + + DdlTipoAlmacen.DataSource = GlobalDTTipoAlmacen(1).FiltraParametros("CveTipoAlmacen NOT IN (3,4,9,10,11,21)") + DdlTipoAlmacen.DataBind() + DdlTipoAlmacen.Items.Insert(0, New ListItem("Todos", "-1")) + + End Sub Private Sub CargaAlmacenDestino() DdlAlmacenDestino.DataSource = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros("CveTipoAlmacen NOT IN (3,4,9,10,11,21)") From c8120a5eaa107a9284c253032d5c08916a979a14 Mon Sep 17 00:00:00 2001 From: rrene Date: Wed, 18 Aug 2021 21:55:22 -0700 Subject: [PATCH 02/17] - ddlps, filtra todos los subproyectos, para empresa acumuladores -- salida virtual --- Ventas/Ventas.aspx.vb | 44 +++++++------------------------------------ 1 file changed, 7 insertions(+), 37 deletions(-) diff --git a/Ventas/Ventas.aspx.vb b/Ventas/Ventas.aspx.vb index 2603fbd6c..98631e72a 100644 --- a/Ventas/Ventas.aspx.vb +++ b/Ventas/Ventas.aspx.vb @@ -6594,7 +6594,8 @@ Partial Class Ventas End If Dim cvesubproyecto As String = DdlSubProyectoDatos.SelectedValue - If UsuarioActual.Empresa.Funcionalidad(558) = "1" Then + If UsuarioActual.Empresa.Funcionalidad(558) = "1" OrElse UsuarioActual.Empresa.Funcionalidad(531) = "1" Then + 'cuando es empresa llantera (558) o cuando es empresa acumuladores cvesubproyecto = "-1" End If @@ -19179,41 +19180,7 @@ Partial Class Ventas Dim CveAlmacenVirtual As Integer = -1 Dim CveConceptoMovimientoVirtual As Integer = 37 Dim DtPSVirtual As DataTable = Nothing - 'Dim DtTamanios As DataTable = Nothing - ' Dim CveMovimientoReferencia As Integer = -1 - ''SI LA REMISION SE SURTIO CON USADOS UTILIZAR ESTE MOVIMIENTO - 'If ObjInventario.GetInv_Mov(CveRemision, UsuarioActual.CveEmpresa) Then - ' Dim RowMovimiento As DataRow = ObjInventario.DtResultados.FiltroPrimero("CvePS IS NULL AND (CveTipoAlmacen = 1 AND CveConcepto IN (3,8)) AND CveVenta > 0") - - ' If RowMovimiento IsNot Nothing Then - ' CveMovimientoReferencia = RowMovimiento("CveMovimiento").ToString().ToEntero() - ' Dim tCveAlmacen = RowMovimiento("CveAlmacen").ToString().ToEntero() - ' CveAlmacenVirtual = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=tCveAlmacen).FiltroPrimeroValor("CveAlmacenVirtual").ToEntero() - ' End If - - 'Else - ' OcurrioError = True - 'End If - - ''SI NO SE SURTIO LA REMSION CON USADOS, UTILIZAR EL MOVIMIENTO DE SALIDA DEL INGRESO - 'If CveMovimientoReferencia <= 0 Then - ' If ObjInventario.GetInv_Mov(ObjFactura.CveVenta, UsuarioActual.CveEmpresa) Then - ' Dim RowMovimiento As DataRow = ObjInventario.DtResultados.FiltroPrimero("CvePS IS NULL AND ( (CveTipoAlmacen = 1 AND CveConcepto IN (3,8)) OR (CveTipoAlmacen = 10 AND CveConcepto = 40) ) AND CveVenta > 0") - - ' If RowMovimiento IsNot Nothing Then - ' CveMovimientoReferencia = RowMovimiento("CveMovimiento").ToString().ToEntero() - ' Dim tCveAlmacen = RowMovimiento("CveAlmacen").ToString().ToEntero() - ' CveAlmacenVirtual = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=tCveAlmacen).FiltroPrimeroValor("CveAlmacenVirtual").ToEntero() - - ' Else - ' OcurrioError = True - ' End If - - ' Else - ' OcurrioError = True - ' End If - 'End If CveAlmacenVirtual = GlobalDTAlmacen(UsuarioActual.CveEmpresa, CveAlmacen:=CveAlmacen).FiltroPrimeroValor("CveAlmacenVirtual").ToEntero() 'SI TIENE ALMACEN VIRTUAL ASIGNADO GENERA EL MOVIMIENTO VIRTUAL @@ -19225,9 +19192,9 @@ Partial Class Ventas OcurrioError = True End If - If Not OcurrioError AndAlso DtPSVirtual.Rows.Count > 0 Then + If Not OcurrioError AndAlso DtPSVirtual IsNot Nothing AndAlso DtPSVirtual.Rows.Count > 0 Then - CveMovimientoVirtual = ObjInventario.AddMovimiento(CveAlmacenVirtual, CveConceptoMovimientoVirtual, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, ObjFactura.CveVenta, -1, -1, Modulo:="Vta/VV", CveMovimientoRelacionado:=CveMovimientoSalidaAlmacen) + CveMovimientoVirtual = ObjInventario.AddMovimiento(CveAlmacenVirtual, CveConceptoMovimientoVirtual, 1, TxtFecha.Text.ToDate, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, ObjFactura.CveVenta, -1, -1, Modulo:="Vta/VV2", CveMovimientoRelacionado:=CveMovimientoSalidaAlmacen) If CveMovimientoVirtual > 0 Then For Each RowUsado As DataRow In DtPSVirtual.Rows @@ -19297,6 +19264,9 @@ Partial Class Ventas End If End If + Else + Alert("No se tiene definido el almacen virtual.") + OcurrioError = True End If Catch ex As Exception From c0597d599d9b6879b2c347648bedbe2b5cead00c Mon Sep 17 00:00:00 2001 From: rakcsle Date: Thu, 19 Aug 2021 10:44:37 -0700 Subject: [PATCH 03/17] Correcion calculo de Descuento al vincular OC --- Compras/Compras.aspx.vb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 0de0ae587..91183d941 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -15471,7 +15471,7 @@ Partial Class Compras_Compras Dim Cont As Integer = 0 For Each gvr As GridViewRow In GvOC1.Rows - RegistraScript($"CalculaTotalOCEdit('{gvr.DataKey("PS").Replace("'", "")}', {gvr.DataKey("CantidadPendienteVincular").ToString.ToDouble}, {gvr.FCTextBox("TxtCantidad").ClientID}, {gvr.FCTextBox("TxtPU").ClientID}, {gvr.FCTextBox("TxtTotalOC1").ClientID}, {gvr.DataKey("IEPSPS").ToString.ToDouble},{gvr.FCHiddenField("HdnOC1IEPSImporte").ClientID}, {gvr.DataKey("IVA").ToString.ToDouble},{gvr.FCHiddenField("HdnOC1IVA").ClientID},{gvr.DataKey("RetIVA").ToString.ToDouble},{gvr.FCHiddenField("HdnOC1RetIVA").ClientID},{gvr.DataKey("RetISR").ToString.ToDouble},{gvr.FCHiddenField("HdnOC1RetISR").ClientID},{gvr.DataKey("IEPSPS").ToString.ToDouble},{gvr.FCHiddenField("HdnOC1IEPSIVA").ClientID},{gvr.DataKey("Descuento")},{gvr.FCHiddenField("HdnOC1Descuento").ClientID},{gvr.DataKey("IVAPorcentaje").ToString.ToDouble},{gvr.DataKey("RetIVAPorcentaje").ToString.ToDouble},{gvr.DataKey("RetISRPorcentaje").ToString.ToDouble},{gvr.DataKey("IEPSPSPorcentaje").ToString.ToDouble},{gvr.DataKey("IEPSPSIVAPorcentaje").ToString.ToDouble});", $"Gv{Cont}") + RegistraScript($"CalculaTotalOCEdit('{gvr.DataKey("PS").Replace("'", "")}', {gvr.DataKey("Cantidad").ToString.ToDouble}, {gvr.FCTextBox("TxtCantidad").ClientID}, {gvr.FCTextBox("TxtPU").ClientID}, {gvr.FCTextBox("TxtTotalOC1").ClientID}, {gvr.DataKey("IEPSPS").ToString.ToDouble},{gvr.FCHiddenField("HdnOC1IEPSImporte").ClientID}, {gvr.DataKey("IVA").ToString.ToDouble},{gvr.FCHiddenField("HdnOC1IVA").ClientID},{gvr.DataKey("RetIVA").ToString.ToDouble},{gvr.FCHiddenField("HdnOC1RetIVA").ClientID},{gvr.DataKey("RetISR").ToString.ToDouble},{gvr.FCHiddenField("HdnOC1RetISR").ClientID},{gvr.DataKey("IEPSPS").ToString.ToDouble},{gvr.FCHiddenField("HdnOC1IEPSIVA").ClientID},{gvr.DataKey("Descuento")},{gvr.FCHiddenField("HdnOC1Descuento").ClientID},{gvr.DataKey("IVAPorcentaje").ToString.ToDouble},{gvr.DataKey("RetIVAPorcentaje").ToString.ToDouble},{gvr.DataKey("RetISRPorcentaje").ToString.ToDouble},{gvr.DataKey("IEPSPSPorcentaje").ToString.ToDouble},{gvr.DataKey("IEPSPSIVAPorcentaje").ToString.ToDouble});", $"Gv{Cont}") Cont += 1 Next @@ -15487,7 +15487,7 @@ Partial Class Compras_Compras Protected Sub GvOC1_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvOC1.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then - Dim JSCambiaScript = $"CalculaTotalOCEdit('{e.Row.DBCampo("PS").Replace("'", "")}', {e.Row.DBCampo("CantidadPendienteVincular").ToString.ToDouble}, {e.Row.FCTextBox("TxtCantidad").ClientID}, {e.Row.FCTextBox("TxtPU").ClientID}, {e.Row.FCTextBox("TxtTotalOC1").ClientID}, {e.Row.DBCampo("IEPSPS").ToString.ToDouble},{e.Row.FCHiddenField("HdnOC1IEPSImporte").ClientID}, {e.Row.DBCampo("IVA").ToString.ToDouble},{e.Row.FCHiddenField("HdnOC1IVA").ClientID},{e.Row.DBCampo("RetIVA").ToString.ToDouble},{e.Row.FCHiddenField("HdnOC1RetIVA").ClientID},{e.Row.DBCampo("RetISR").ToString.ToDouble},{e.Row.FCHiddenField("HdnOC1RetISR").ClientID},{e.Row.DBCampo("IEPSPS").ToString.ToDouble},{e.Row.FCHiddenField("HdnOC1IEPSIVA").ClientID},{e.Row.DBCampo("Descuento")},{e.Row.FCHiddenField("HdnOC1Descuento").ClientID},{e.Row.DBCampo("IVAPorcentaje").ToString.ToDouble},{e.Row.DBCampo("RetIVAPorcentaje").ToString.ToDouble},{e.Row.DBCampo("RetISRPorcentaje").ToString.ToDouble},{e.Row.DBCampo("IEPSPSPorcentaje").ToString.ToDouble},{e.Row.DBCampo("IEPSPSIVAPorcentaje").ToString.ToDouble});" + Dim JSCambiaScript = $"CalculaTotalOCEdit('{e.Row.DBCampo("PS").Replace("'", "")}', {e.Row.DBCampo("Cantidad").ToString.ToDouble}, {e.Row.FCTextBox("TxtCantidad").ClientID}, {e.Row.FCTextBox("TxtPU").ClientID}, {e.Row.FCTextBox("TxtTotalOC1").ClientID}, {e.Row.DBCampo("IEPSPS").ToString.ToDouble},{e.Row.FCHiddenField("HdnOC1IEPSImporte").ClientID}, {e.Row.DBCampo("IVA").ToString.ToDouble},{e.Row.FCHiddenField("HdnOC1IVA").ClientID},{e.Row.DBCampo("RetIVA").ToString.ToDouble},{e.Row.FCHiddenField("HdnOC1RetIVA").ClientID},{e.Row.DBCampo("RetISR").ToString.ToDouble},{e.Row.FCHiddenField("HdnOC1RetISR").ClientID},{e.Row.DBCampo("IEPSPS").ToString.ToDouble},{e.Row.FCHiddenField("HdnOC1IEPSIVA").ClientID},{e.Row.DBCampo("Descuento")},{e.Row.FCHiddenField("HdnOC1Descuento").ClientID},{e.Row.DBCampo("IVAPorcentaje").ToString.ToDouble},{e.Row.DBCampo("RetIVAPorcentaje").ToString.ToDouble},{e.Row.DBCampo("RetISRPorcentaje").ToString.ToDouble},{e.Row.DBCampo("IEPSPSPorcentaje").ToString.ToDouble},{e.Row.DBCampo("IEPSPSIVAPorcentaje").ToString.ToDouble});" e.Row.FCTextBox("TxtCantidad").Attributes.Add("onkeyup", $"LimitaCantidadOC({e.Row.DBCampo("CantidadPendienteVincular")}, this);{JSCambiaScript}") e.Row.FCTextBox("TxtPU").Attributes.Add("onkeyup", JSCambiaScript) From bbc43d9dee5b8b12a77fd12c1b9c7f34ea8900cb Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 19 Aug 2021 12:48:07 -0700 Subject: [PATCH 04/17] =?UTF-8?q?correcci=C3=B3n=20de=20texto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Contratos/RepContratosObraAvancesPartida.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contratos/RepContratosObraAvancesPartida.aspx.vb b/Contratos/RepContratosObraAvancesPartida.aspx.vb index e81971e0a..cc749280b 100644 --- a/Contratos/RepContratosObraAvancesPartida.aspx.vb +++ b/Contratos/RepContratosObraAvancesPartida.aspx.vb @@ -59,7 +59,7 @@ Partial Class RepContratosObraAvancesPartida CveContrato = If(Request("CveContrato") IsNot Nothing AndAlso Request("CveContrato").ToString.ToEntero > 0, Request("CveContrato").ToString.ToEntero, -1) NumeroContrato = If(Request("NumeroContrato") IsNot Nothing AndAlso Request("NumeroContrato").ToString.Length > 0, $"{Request("NumeroContrato").ToString}", "") - LblEstimacion.Text = If(Request("NumeroEstimacion") IsNot Nothing AndAlso Request("NumeroEstimacion").ToString.Length > 0, $"Contgrato { NumeroContrato } Estimacion {Request("NumeroEstimacion").ToString}", "") + LblEstimacion.Text = If(Request("NumeroEstimacion") IsNot Nothing AndAlso Request("NumeroEstimacion").ToString.Length > 0, $"Contrato { NumeroContrato } Estimación {Request("NumeroEstimacion").ToString}", "") If CveEstimacion > 0 Then From e5a92ab9fc0f41e43b87e96723a17da011b5b566 Mon Sep 17 00:00:00 2001 From: rrene Date: Thu, 19 Aug 2021 12:48:19 -0700 Subject: [PATCH 05/17] =?UTF-8?q?-=20correcci=C3=B3n=20de=20traspaso?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Inventarios/RepTraspasoAlmacen.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Inventarios/RepTraspasoAlmacen.aspx.vb b/Inventarios/RepTraspasoAlmacen.aspx.vb index d6294bd23..6b3ca229e 100644 --- a/Inventarios/RepTraspasoAlmacen.aspx.vb +++ b/Inventarios/RepTraspasoAlmacen.aspx.vb @@ -74,7 +74,7 @@ Partial Class RepTraspasoAlmacen 'Sucursales = IIf(DdlSubProyectos.GetSelectedValuesM = "", "-1", DdlSubProyectos.GetSelectedValuesM).ToString - If ObjInventarios.RepTraspasoAlmacen(FechaI.ToDate, FechaF.ToDate, DdlAlmacenOrigen.SelectedValue.ToEntero, DdlAlmacenDestino.SelectedValue.ToEntero, ChkRecibido.Checked, UsuarioActual.CveEmpresa, DdlTipoAlmacen.SelectedValue.ToEntero) Then + If ObjInventarios.RepTraspasoAlmacen(FechaI.ToDate, FechaF.ToDate, DdlAlmacenOrigen.SelectedValue.ToEntero, DdlAlmacenDestino.SelectedValue.ToEntero, ChkRecibido.Checked, DdlTipoAlmacen.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Then GvDatos.DataSource = ObjInventarios.DtResultados DtInventarios = ObjInventarios.DtResultados GvDatos.Columns(5).Visible = DtInventarios.MAX("Serie") <> "" From f7629177773d25f3e9921d6cb545389edf2422a6 Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 20 Aug 2021 07:48:41 -0700 Subject: [PATCH 06/17] Alias Flexible --- Compras/Compras.aspx | 5 ++- Compras/Compras.aspx.vb | 79 +++++++++++++++------------------- Ventas/ProductosServicios.aspx | 8 +++- 3 files changed, 46 insertions(+), 46 deletions(-) diff --git a/Compras/Compras.aspx b/Compras/Compras.aspx index 74bee1337..19f9b146a 100644 --- a/Compras/Compras.aspx +++ b/Compras/Compras.aspx @@ -4587,8 +4587,11 @@
-
+
+
+
+
diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 0de0ae587..6cbf1dc99 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -1617,6 +1617,11 @@ Partial Class Compras_Compras DdlTipoGastoAsignar.DataSource = GlobalDTTiposGastos(UsuarioActual.CveEmpresa) DdlTipoGastoAsignar.DataBind() UpParametros.Update() + + If UsuarioActual.CveRol = 1 Then + ChkAliasFlexible.Visible = True + End If + End Sub Private Sub CargaGvAcarreos(tCveProveedor As Integer) @@ -5962,10 +5967,6 @@ Partial Class Compras_Compras End If End If - - - - End If If TipoCambioCompra > 1 AndAlso DdlMoneda.SelectedValue.ToEntero <> 1 Then Concepto += $" TC{TipoCambioCompra} ${importeMovimiento.FormatoNumero(2)}" @@ -6062,7 +6063,7 @@ Partial Class Compras_Compras If tipoCambioActual > 1 Then Concepto += $" TC{tipoCambioActual} ${importeMovimiento.FormatoNumero(2)}" Case 14 'IVA X Acreditar importeMovimiento = importeIVAxAcreditar - importeMN = Math.Round(importeMovimiento, 2) * tipoCambioActual * Multiplicador + importeMN = (importeMovimiento * tipoCambioActual * Multiplicador).RoundSQL If tipoCambioActual > 1 Then Concepto += $" TC{tipoCambioActual} ${importeMovimiento.FormatoNumero(2)}" PorcentajeImpuesto = PorcentajeIVA IdCtaContable = If(IdCtaIVAXAcreditar > 0, IdCtaIVAXAcreditar, 0) @@ -6382,30 +6383,30 @@ Partial Class Compras_Compras Else importeMovimiento = 0 End If - Case 285 'Ret IVA 6% Servicios + 'Case 285 'Ret IVA 6% Servicios - IdCtaContable = UsuarioActual.Empresa.Funcionalidad(578).ToEntero + ' IdCtaContable = UsuarioActual.Empresa.Funcionalidad(578).ToEntero - 'If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) And Not IdCtaContable > 0 Then - ' If ObjConta.DtResultados.Rows.Count > 0 Then - ' IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero - ' End If - 'End If + ' 'If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) And Not IdCtaContable > 0 Then + ' ' If ObjConta.DtResultados.Rows.Count > 0 Then + ' ' IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero + ' ' End If + ' 'End If - If DdlRetIVAConcepto.SelectedValue.ToEntero = 5 Then + ' If DdlRetIVAConcepto.SelectedValue.ToEntero = 5 Then - If CveMoneda = 2 Then - importeMN = TxtRetIVA.Text.ToDecimal * TxtTC.Text.ToDecimal - Else - importeMN = TxtRetIVA.Text.ToDecimal - importeMovimiento = TxtRetIVA.Text.ToDecimal + ' If CveMoneda = 2 Then + ' importeMN = TxtRetIVA.Text.ToDecimal * TxtTC.Text.ToDecimal + ' Else + ' importeMN = TxtRetIVA.Text.ToDecimal + ' importeMovimiento = TxtRetIVA.Text.ToDecimal - End If + ' End If - Else - importeMovimiento = 0 - End If + ' Else + ' importeMovimiento = 0 + ' End If Case 6 'Compra Dim AgregaMercanciaInventario As Boolean = UsuarioActual.CveEmpresa.Contiene(1, 72, 80, 119, 140, 141, 152, 153, 154, 159, 160, 161, 162, 163) AndAlso UsuarioActual.Empresa.UsaInventarios AndAlso Not UsuarioActual.Empresa.Funcionalidad(126) = "1" @@ -8446,7 +8447,7 @@ Partial Class Compras_Compras Dim Respuesta As Boolean = False - Dim IVADetalles As Decimal = TmpDT.SUM("IVA", " IVA > 0 ").ToDecimal + Dim IVADetalles As Decimal = TmpDT.SUMD("IVA", " IVA > 0 ") Dim DiferenciaIVas As Decimal = TxtIVA.Text.ToDecimal - IVADetalles @@ -8459,8 +8460,9 @@ Partial Class Compras_Compras End If For Each dRow As DataRow In TmpDT.Rows - If GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=dRow("CvePS").ToString.ToEntero).Rows.Count > 0 Then - Dim DrPS As DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=dRow("CvePS").ToString.ToEntero).Rows(0) + Dim DttPS As DataTable = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=dRow("CvePS").ToString.ToEntero) + If DttPS.Rows.Count > 0 Then + Dim DrPS As DataRow = DttPS.Rows(0) dRow("AplicaIEPS") = Boolean.Parse(DrPS("AplicaIEPS").ToString) dRow("IEPSGrabaIVA") = Boolean.Parse(DrPS("IEPSGrabaIVA").ToString) Else @@ -8486,7 +8488,7 @@ Partial Class Compras_Compras IndiceContador = IndiceContador + 1 Next - IVADetalles = TmpDT.SUM("IVA", " IVA > 0 ").ToDecimal + IVADetalles = TmpDT.SUMD("IVA", " IVA > 0 ") DiferenciaIVas = TxtIVA.Text.ToDecimal - IVADetalles If Math.Abs(DiferenciaIVas) > 0.01D Then @@ -8506,21 +8508,16 @@ Partial Class Compras_Compras TmpDT.Rows(IndiceUltimo)("IVA") = TmpDT.Rows(IndiceUltimo)("IVA").ToString.ToDecimal + DiferenciaIVas End If - - TmpDT.AcceptChanges() End If End If - 'Revalidacion de ajuste - IVADetalles = TmpDT.SUM("IVA", " IVA > 0 ").ToDecimal + IVADetalles = TmpDT.SUMD("IVA", " IVA > 0 ") DiferenciaIVas = TxtIVA.Text.ToDecimal - IVADetalles - - If Math.Abs(DiferenciaIVas) > 0.01D Then Respuesta = False If IVADetalles > 0 Then @@ -8542,8 +8539,6 @@ Partial Class Compras_Compras Respuesta = True End If - - If Respuesta Then Dim IEPSPSDetalles As Decimal = TmpDT.SUMD("IEPSPS", " IEPSPS > 0 ") @@ -8552,11 +8547,9 @@ Partial Class Compras_Compras Dim DTConsultaIEPSPS As New DataTable DTConsultaIEPSPS = TmpDT.FiltraParametros(" AplicaIEPS = 'True'") - Dim IndiceContador As Integer = 0 Dim IndicePrimero As Integer = 0 - For Each dRow As DataRow In TmpDT.Rows If Boolean.Parse(dRow("AplicaIEPS").ToString) Then IndicePrimero = IndiceContador @@ -8590,12 +8583,6 @@ Partial Class Compras_Compras End If - - - - - - Return Respuesta End Function @@ -18686,8 +18673,8 @@ Partial Class Compras_Compras End If - If PS.AddPSAlias(System.Web.HttpUtility.HtmlDecode(TxtPSAlias.Text.Trim), CvePS, UsuarioActual.CveUsuario) Then - GlobalDTProductosServiciosAlias(-1) = PS.DtResultados + If PS.AddPSAlias(System.Web.HttpUtility.HtmlDecode(TxtPSAlias.Text.Trim), CvePS, UsuarioActual.CveUsuario, ChkAliasFlexible.Checked) Then + GlobalDTProductosServiciosAlias(UsuarioActual.CveEmpresa) = PS.DtResultados TmpDT.Rows(HdnAliasInd.Value.ToEntero)("CvePS") = CvePS TmpDT.Rows(HdnAliasInd.Value.ToEntero)("PS") = tPS @@ -20954,6 +20941,10 @@ Partial Class Compras_Compras UpFacturaNC.Update() UpMostrarTodos.Update() End Sub + + Private Sub ChkAliasFlexible_CheckedChanged(sender As Object, e As EventArgs) Handles ChkAliasFlexible.CheckedChanged + TxtPSAlias.Enabled = ChkAliasFlexible.Checked + End Sub End Class Public Class MMensajeDevolucion diff --git a/Ventas/ProductosServicios.aspx b/Ventas/ProductosServicios.aspx index da6216dcc..bae47738f 100644 --- a/Ventas/ProductosServicios.aspx +++ b/Ventas/ProductosServicios.aspx @@ -1403,7 +1403,7 @@ - + @@ -1411,6 +1411,12 @@ + + + + + + From 634929721d9e8ce714edf3e3f39ef41d878675b9 Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 20 Aug 2021 10:06:07 -0700 Subject: [PATCH 07/17] columna de "CondicionesPago" --- Ventas/RepComisionesServecDetalle.aspx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Ventas/RepComisionesServecDetalle.aspx b/Ventas/RepComisionesServecDetalle.aspx index 11d57435d..a46f8fd72 100644 --- a/Ventas/RepComisionesServecDetalle.aspx +++ b/Ventas/RepComisionesServecDetalle.aspx @@ -85,11 +85,12 @@ - + + From 39ebc429f6e625d4c976a35f7ea8aa570657ec5a Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 20 Aug 2021 10:06:21 -0700 Subject: [PATCH 08/17] alias flexible --- Compras/Compras.aspx.vb | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 741d40466..106f36421 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -18653,12 +18653,18 @@ Partial Class Compras_Compras UpPSAlias.Update() End Sub Protected Sub BtnAddPSAlias_Click(sender As Object, e As EventArgs) Handles BtnAddPSAlias.Click - Dim PS As New ClsProductosServicios - Dim CvePS = -1 - Dim tPS = "" - Dim CveSubProyecto As Integer = TmpDT.Rows(HdnAliasInd.Value.ToEntero)("CveSubProyecto").ToString.ToEntero + + Dim CvePS As Integer = -1 + Dim tPS As String = "" + CvePS = DdlPSAlias2.SelectedValue.ToEntero tPS = DdlPSAlias2.SelectedText + If CvePS <= 0 Then + Alert("No se ha seleccionado el producto.", TipoMensaje.MsgAdvertencia) + Exit Sub + End If + Dim CveSubProyecto As Integer = TmpDT.Rows(HdnAliasInd.Value.ToEntero)("CveSubProyecto").ToString.ToEntero + Dim DtpsTemp As DataTable = Nothing Dim CveContrato As Integer = GlobalDTContratos(UsuarioActual.CveEmpresa, -1, CveSubProyecto).FiltroPrimeroValor("CveContrato").ToEntero If CveContrato > 0 Then @@ -18672,7 +18678,7 @@ Partial Class Compras_Compras DtpsTemp = GetPSContratoDetalle(CveContrato, dttemp) End If - + Dim PS As New ClsProductosServicios If PS.AddPSAlias(System.Web.HttpUtility.HtmlDecode(TxtPSAlias.Text.Trim), CvePS, UsuarioActual.CveUsuario, ChkAliasFlexible.Checked) Then GlobalDTProductosServiciosAlias(UsuarioActual.CveEmpresa) = PS.DtResultados From 661c0126c7dc4ac7dbc63ae5fc1043a0c06bcc9f Mon Sep 17 00:00:00 2001 From: rrene Date: Fri, 20 Aug 2021 20:34:04 -0700 Subject: [PATCH 09/17] Marcas en Reportes de utilidad - globaldtmarcas --- App_Code/ClsPaginas.vb | 27 +++++++++++++++++++++++++++ App_Code/ClsVentas.vb | 9 ++++++--- Ventas/ProductosServicios.aspx.vb | 7 ++----- Ventas/RepVentasUtilidad.aspx | 6 ++++++ Ventas/RepVentasUtilidad.aspx.vb | 9 ++++++++- Ventas/RepVentasUtilidadPadre.aspx | 9 ++++++++- Ventas/RepVentasUtilidadPadre.aspx.vb | 14 ++++++++++---- 7 files changed, 67 insertions(+), 14 deletions(-) diff --git a/App_Code/ClsPaginas.vb b/App_Code/ClsPaginas.vb index 0813cc12b..6f614ab00 100644 --- a/App_Code/ClsPaginas.vb +++ b/App_Code/ClsPaginas.vb @@ -2356,6 +2356,33 @@ Public Class ClsPaginas End Set End Property + Property GlobalDTGralMarcas(CveEmpresa As Integer, Optional CveMarca As Integer = -1) As DataTable + Get + Dim AppNombre As String = String.Format("GlobalDTGralMarcas-{0}", CveEmpresa) + 'sino existe, recarga los datos + If DirectCast(Application(AppNombre), DataTable) Is Nothing Then + Dim ObjMarcas As New ClsProductosServicios + If ObjMarcas.GetMarcas(CveEmpresa) Then Application(AppNombre) = ObjMarcas.DtResultados Else Application(AppNombre) = Nothing + ObjMarcas.Dispose() + End If + + Dim filtro As New StringBuilder + If CveMarca > 0 Then + filtro.AppendFormat(" CveMarca={0} ", CveMarca) + End If + + Dim Dv As New DataView(DirectCast(Application(AppNombre), DataTable), filtro.ToString, "", DataViewRowState.CurrentRows) + GlobalDTGralMarcas = Dv.ToTable + Dv.Dispose() + + + End Get + Set(value As DataTable) + Dim AppNombre As String = String.Format("GlobalDTGralMarcas-{0}", CveEmpresa) + Application(AppNombre) = value + End Set + End Property + #End Region #Region "***********************************************************************DT PROSPECTOS*************************************************************************************" diff --git a/App_Code/ClsVentas.vb b/App_Code/ClsVentas.vb index cc953d4a8..c0ca015c2 100644 --- a/App_Code/ClsVentas.vb +++ b/App_Code/ClsVentas.vb @@ -2826,7 +2826,7 @@ Public Class ClsVentas Return Retorno End Function - Public Function GetReporteVentasUtilidad(CveVendedor As String, CveCliente As Integer, CveSubProyecto As String, FechaInicio As Date, FechaFin As Date, CveEmpresa As Integer, CvePS As Integer, CveClasificacion As Double) As Boolean + Public Function GetReporteVentasUtilidad(CveVendedor As String, CveCliente As Integer, CveSubProyecto As String, FechaInicio As Date, FechaFin As Date, CveEmpresa As Integer, CvePS As Integer, CveClasificacion As Integer, CveMarca As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Vta_VentasUtilidadGet") @@ -2839,6 +2839,7 @@ Public Class ClsVentas .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa .Add("@CvePS", SqlDbType.Int).Value = CvePS .Add("@CveClasificacion", SqlDbType.Int).Value = CveClasificacion + .Add("@CveMarca", SqlDbType.Int).Value = CveMarca End With Try @@ -2853,7 +2854,7 @@ Public Class ClsVentas Return Retorno End Function - Public Function GetReporteVentasUtilidadDetalle(CveVendedor As String, CveVenta As Integer, CveCliente As Integer, CveSubProyecto As String, FechaInicio As Date, FechaFin As Date, CveEmpresa As Integer, CvePS As Integer, CveClasificacion As Double) As Boolean + Public Function GetReporteVentasUtilidadDetalle(CveVendedor As String, CveVenta As Integer, CveCliente As Integer, CveSubProyecto As String, FechaInicio As Date, FechaFin As Date, CveEmpresa As Integer, CvePS As Integer, CveClasificacion As Integer, CveMarca As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Vta_VentasUtilidadDetalleGet") With SqlAdapter.SelectCommand.Parameters @@ -2866,6 +2867,7 @@ Public Class ClsVentas .Add("@CveEmpresa", SqlDbType.Int).Value = CveEmpresa .Add("@CvePS", SqlDbType.Int).Value = CvePS .Add("@CveClasificacion", SqlDbType.Int).Value = CveClasificacion + .Add("@CveMarca", SqlDbType.Int).Value = CveMarca End With Try @@ -2883,7 +2885,7 @@ Public Class ClsVentas Return Retorno End Function - Public Function GetReportePadreVentasUtilidad(CveVendedor As String, CveCliente As Integer, CveSubProyecto As String, FechaInicio As Date, FechaFin As Date, CveEmpresa As Integer, Gpo As Integer, CvePS As Integer, CveClasificacion As Double) As Boolean + Public Function GetReportePadreVentasUtilidad(CveVendedor As String, CveCliente As Integer, CveSubProyecto As String, FechaInicio As Date, FechaFin As Date, CveEmpresa As Integer, Gpo As Integer, CvePS As Integer, CveClasificacion As Integer, CveMarca As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Vta_RepVentasUtilidadGet") @@ -2897,6 +2899,7 @@ Public Class ClsVentas .Add("@Gpo", SqlDbType.Int).Value = Gpo .Add("@CvePS", SqlDbType.Int).Value = CvePS .Add("@CveClasificacion", SqlDbType.Int).Value = CveClasificacion + .Add("@CveMarca", SqlDbType.Int).Value = CveMarca End With Try SqlAdapter.Fill(Data) diff --git a/Ventas/ProductosServicios.aspx.vb b/Ventas/ProductosServicios.aspx.vb index c35cc0d46..b6aa92a44 100644 --- a/Ventas/ProductosServicios.aspx.vb +++ b/Ventas/ProductosServicios.aspx.vb @@ -1801,11 +1801,8 @@ Partial Class ProductosyServicios DivMarca.Visible = True End If - Dim ObjMarcas As New ClsProductosServicios - ObjMarcas.GetMarcas(UsuarioActual.CveEmpresa) - DdlMarca.DataSource = ObjMarcas.DtResultados - DdlMarcaPSDes.DataSource = ObjMarcas.DtResultados - ObjMarcas.Dispose() + DdlMarca.DataSource = GlobalDTGralMarcas(UsuarioActual.CveEmpresa) + DdlMarcaPSDes.DataSource = GlobalDTGralMarcas(UsuarioActual.CveEmpresa) DdlMarca.DataBind() DdlMarcaPSDes.DataBind() End If diff --git a/Ventas/RepVentasUtilidad.aspx b/Ventas/RepVentasUtilidad.aspx index ce157c38a..fe815a36f 100644 --- a/Ventas/RepVentasUtilidad.aspx +++ b/Ventas/RepVentasUtilidad.aspx @@ -191,6 +191,12 @@
+
+ Marca: +
+
+ +
diff --git a/Ventas/RepVentasUtilidad.aspx.vb b/Ventas/RepVentasUtilidad.aspx.vb index cfd0678b8..3368636b7 100644 --- a/Ventas/RepVentasUtilidad.aspx.vb +++ b/Ventas/RepVentasUtilidad.aspx.vb @@ -81,6 +81,10 @@ Partial Class Ventas_RepVentasUtilidad DdlPS.ddl.Items.Insert(0, New ListItem("Todos", "-1")) End If + DdlMarcas.DataSource = GlobalDTGralMarcas(UsuarioActual.CveEmpresa) + DdlMarcas.DataBind() + DdlMarcas.Items.Insert(0, New ListItem("Todas", "-1")) + Dim CveSubProyecto = If(Request("CveSubProyecto") IsNot Nothing, Request("CveSubProyecto").ToString, "-1").ToString Dim CveVendedor = If(Request("CveVendedor") IsNot Nothing AndAlso Request("CveVendedor") <> "", Request("CveVendedor"), "-1").ToString Dim CveCliente = If(Request("CveCliente") IsNot Nothing AndAlso Request("CveCliente") <> "", Request("CveCliente"), "-1").ToString @@ -90,6 +94,7 @@ Partial Class Ventas_RepVentasUtilidad Dim FechaF = If(Request("FechaF") IsNot Nothing, Request("FechaF").ToString, "-1").ToString Dim CveClasificacion = If(Request("CveClasificacion") IsNot Nothing AndAlso Request("CveClasificacion") <> "", Request("CveClasificacion"), "-1").ToString Dim CvePS = If(Request("CvePS") IsNot Nothing AndAlso Request("CvePS") <> "", Request("CvePS"), "-1").ToString + Dim CveMarca = If(Request("CveMarca") IsNot Nothing AndAlso Request("CveMarca") <> "", Request("CveMarca"), "-1").ToString DdlSubProyecto.SelectedValuesIfExistM(CveSubProyecto) DdlVendedor.SelectedValuesIfExistM(CveVendedor) @@ -105,6 +110,8 @@ Partial Class Ventas_RepVentasUtilidad DdlPS.SelectedText = "Todos" End If + DdlMarcas.SelectedValueExist(CveMarca) + txtFechaI.Text = FechaI txtFechaF.Text = FechaF @@ -144,7 +151,7 @@ Partial Class Ventas_RepVentasUtilidad Dim Sucursales As String = IIf(DdlSubProyecto.GetSelectedValuesM = "", "-1", DdlSubProyecto.GetSelectedValuesM).ToString Dim Vendedores As String = IIf(DdlVendedor.GetSelectedValuesM = "", "-1", DdlVendedor.GetSelectedValuesM).ToString - If ObjVentas.GetReporteVentasUtilidad(Vendedores, DdlClientes.SelectedValue.ToEntero, Sucursales, FechaI, FechaF, UsuarioActual.CveEmpresa, DdlPS.SelectedValue.ToEntero, DdlClasificacion.SelectedValue.ToEntero) Then + If ObjVentas.GetReporteVentasUtilidad(Vendedores, DdlClientes.SelectedValue.ToEntero, Sucursales, FechaI, FechaF, UsuarioActual.CveEmpresa, DdlPS.SelectedValue.ToEntero, DdlClasificacion.SelectedValue.ToEntero,) Then DtVentas = ObjVentas.DtResultados GvDatos.DataSource = ObjVentas.DtResultados GvDatos.DataBind() diff --git a/Ventas/RepVentasUtilidadPadre.aspx b/Ventas/RepVentasUtilidadPadre.aspx index 35a9fc4e5..63723e3ea 100644 --- a/Ventas/RepVentasUtilidadPadre.aspx +++ b/Ventas/RepVentasUtilidadPadre.aspx @@ -90,6 +90,7 @@ +
@@ -165,6 +166,12 @@
+
+ Marca: +
+
+ +
@@ -207,7 +214,7 @@ - + diff --git a/Ventas/RepVentasUtilidadPadre.aspx.vb b/Ventas/RepVentasUtilidadPadre.aspx.vb index b4d764d2a..1efac4dcc 100644 --- a/Ventas/RepVentasUtilidadPadre.aspx.vb +++ b/Ventas/RepVentasUtilidadPadre.aspx.vb @@ -86,6 +86,10 @@ Partial Class Ventas_RepVentasUtilidadPadre DdlPS.ddl.Items.Insert(0, New ListItem("Todos", "-1")) End If + DdlMarcas.DataSource = GlobalDTGralMarcas(UsuarioActual.CveEmpresa) + DdlMarcas.DataBind() + DdlMarcas.Items.Insert(0, New ListItem("Todas", "-1")) + LblNeto.Text = "0" LblPorNeto.Text = "0" End Sub @@ -110,7 +114,8 @@ Partial Class Ventas_RepVentasUtilidadPadre Dim ObjVentas As New ClsVentas If ObjVentas.GetReportePadreVentasUtilidad(If(DdlVendedor.GetSelectedValuesM = "", "-1", DdlVendedor.GetSelectedValuesM), DdlClientesWS.SelectedValue.ToEntero, If(DdlSubProyecto.GetSelectedValuesM = "", "-1", DdlSubProyecto.GetSelectedValuesM), txtFechaI.Text.ToDate, txtFechaF.Text.ToDate, - UsuarioActual.CveEmpresa, DdlGrupo.SelectedValue.ToEntero, DdlPS.SelectedValue.ToEntero, DdlClasificacion.SelectedValue.ToEntero) Then + UsuarioActual.CveEmpresa, DdlGrupo.SelectedValue.ToEntero, DdlPS.SelectedValue.ToEntero, DdlClasificacion.SelectedValue.ToEntero, + DdlMarcas.SelectedValue.ToEntero) Then GvDatos.DataSource = ObjVentas.DtResultados DtDatos = ObjVentas.DtResultados End If @@ -225,10 +230,10 @@ Partial Class Ventas_RepVentasUtilidadPadre e.Row.CssClass = "Totales" e.Row.Cells(0).Text = "Total" Dim Css As String = "Texto" - Dim Liga As String = String.Format("/Ventas/RepVentasUtilidad.aspx?FechaI={0}&FechaF={1}&CveSubProyecto={2}&CveCliente={3}&CveVendedor={4}&Gpo={5}&CveGpo={6}&CvePS={7}&CveClasificacion={8}", + Dim Liga As String = String.Format("/Ventas/RepVentasUtilidad.aspx?FechaI={0}&FechaF={1}&CveSubProyecto={2}&CveCliente={3}&CveVendedor={4}&Gpo={5}&CveGpo={6}&CvePS={7}&CveClasificacion={8}&CveMarca={9}", e.Row.DBCampo("FechaI"), e.Row.DBCampo("FechaF"), e.Row.DBCampo("CveSubProyecto"), e.Row.DBCampo("CveCliente"), e.Row.DBCampo("CveVendedor"), - e.Row.DBCampo("Grupo"), e.Row.DBCampo("GPO"), e.Row.DBCampo("CvePS"), e.Row.DBCampo("CveClasificacion")) - e.Row.Cells(0).Text = "" & e.Row.Cells(0).Text & "" + e.Row.DBCampo("Grupo"), e.Row.DBCampo("GPO"), e.Row.DBCampo("CvePS"), e.Row.DBCampo("CveClasificacion"), e.Row.DBCampo("CveMarca")) + e.Row.Cells(0).Text = String.Format("{2}", Css, Liga, e.Row.Cells(0).Text) Else e.Row.Cells(9).BackColor = Drawing.Color.LightGray End If @@ -261,6 +266,7 @@ Partial Class Ventas_RepVentasUtilidadPadre If DdlClasificacion.SelectedValue <> "-1" Then StrFiltro.AppendFormat(" Clasificación: {0}", DdlClasificacion.SelectedItem.Text) If DdlClientesWS.SelectedValue <> "-1" Then StrFiltro.AppendFormat(" Cliente: {0}", DdlClientesWS.SelectedText) If DdlVendedor.GetSelectedText <> "" Then StrFiltro.AppendFormat(" Vendedor: {0}", DdlVendedor.GetSelectedText) + If DdlMarcas.SelectedValue <> "-1" Then StrFiltro.AppendFormat(" Marcas: {0}", DdlMarcas.SelectedItem.Text) Dim params As List(Of ReportParameter) = New List(Of ReportParameter)() Dim Imagen As System.IO.FileInfo = New System.IO.FileInfo(String.Format("{0}/Logo.png", UsuarioActual.Empresa.Ruta)) Dim logouri = String.Format("{0}://{1}:{2}/Empresas/{3}/Logo.png", Request.Url.Scheme, Request.Url.Host, Request.Url.Port, UsuarioActual.CveEmpresa) From 054a1c93b690a61636b595f4c5d94d3f528cc136 Mon Sep 17 00:00:00 2001 From: rrene Date: Sun, 22 Aug 2021 13:41:11 -0700 Subject: [PATCH 10/17] -- filtro y grupo por marca --- Ventas/RepVentasUtilidad.aspx.vb | 5 +++-- Ventas/RepVentasUtilidadDetalle.aspx | 6 ++++++ Ventas/RepVentasUtilidadDetalle.aspx.vb | 7 ++++--- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/Ventas/RepVentasUtilidad.aspx.vb b/Ventas/RepVentasUtilidad.aspx.vb index 3368636b7..966302f92 100644 --- a/Ventas/RepVentasUtilidad.aspx.vb +++ b/Ventas/RepVentasUtilidad.aspx.vb @@ -151,7 +151,7 @@ Partial Class Ventas_RepVentasUtilidad Dim Sucursales As String = IIf(DdlSubProyecto.GetSelectedValuesM = "", "-1", DdlSubProyecto.GetSelectedValuesM).ToString Dim Vendedores As String = IIf(DdlVendedor.GetSelectedValuesM = "", "-1", DdlVendedor.GetSelectedValuesM).ToString - If ObjVentas.GetReporteVentasUtilidad(Vendedores, DdlClientes.SelectedValue.ToEntero, Sucursales, FechaI, FechaF, UsuarioActual.CveEmpresa, DdlPS.SelectedValue.ToEntero, DdlClasificacion.SelectedValue.ToEntero,) Then + If ObjVentas.GetReporteVentasUtilidad(Vendedores, DdlClientes.SelectedValue.ToEntero, Sucursales, FechaI, FechaF, UsuarioActual.CveEmpresa, DdlPS.SelectedValue.ToEntero, DdlClasificacion.SelectedValue.ToEntero, DdlMarcas.SelectedValue.ToEntero) Then DtVentas = ObjVentas.DtResultados GvDatos.DataSource = ObjVentas.DtResultados GvDatos.DataBind() @@ -289,6 +289,7 @@ Partial Class Ventas_RepVentasUtilidad Dim Vendedor = If(DdlVendedor.GetSelectedText = "", "", $" Vendedor: {DdlVendedor.GetSelectedText}") Dim PS = If(DdlPS.SelectedValue = "-1", "", $" P.S.: {DdlPS.SelectedText}") Dim Clasificacion = If(DdlClasificacion.SelectedValue = "-1", "", $" Clasificacion: {DdlClasificacion.SelectedItem.Text}") + Dim Marca = If(DdlMarcas.SelectedValue = "-1", "", $" Marcas: {DdlMarcas.SelectedItem.Text}") ' Dim Grupo = DdlGrupo.SelectedItem.Text Dim FechaIn As String = $" Fecha Inicio: {txtFechaI.Text}" @@ -301,7 +302,7 @@ Partial Class Ventas_RepVentasUtilidad Dim Sucursales As String = IIf(DdlSubProyecto.GetSelectedValuesM = "", "-1", DdlSubProyecto.GetSelectedValuesM).ToString Dim Vendedores As String = IIf(DdlVendedor.GetSelectedValuesM = "", "-1", DdlVendedor.GetSelectedValuesM).ToString - If ObjVentas.GetReporteVentasUtilidad(Vendedores, DdlClientes.SelectedValue.ToEntero, Sucursales, FechaI, FechaF, UsuarioActual.CveEmpresa, DdlPS.SelectedValue.ToEntero, DdlClasificacion.SelectedValue.ToEntero) Then + If ObjVentas.GetReporteVentasUtilidad(Vendedores, DdlClientes.SelectedValue.ToEntero, Sucursales, FechaI, FechaF, UsuarioActual.CveEmpresa, DdlPS.SelectedValue.ToEntero, DdlClasificacion.SelectedValue.ToEntero, DdlMarcas.SelectedValue.ToEntero) Then Dim FechaInicio As String = txtFechaI.Text Dim FechaFin As String = txtFechaF.Text diff --git a/Ventas/RepVentasUtilidadDetalle.aspx b/Ventas/RepVentasUtilidadDetalle.aspx index cdaae3089..056168369 100644 --- a/Ventas/RepVentasUtilidadDetalle.aspx +++ b/Ventas/RepVentasUtilidadDetalle.aspx @@ -210,6 +210,12 @@
+
+ Marca: +
+
+ +
diff --git a/Ventas/RepVentasUtilidadDetalle.aspx.vb b/Ventas/RepVentasUtilidadDetalle.aspx.vb index 0b72e1c81..e09ed1d94 100644 --- a/Ventas/RepVentasUtilidadDetalle.aspx.vb +++ b/Ventas/RepVentasUtilidadDetalle.aspx.vb @@ -174,7 +174,7 @@ Partial Class Ventas_RepVentasUtilidadDetalle Dim Vendedores As String = IIf(DdlVendedor.GetSelectedValuesM = "", "-1", DdlVendedor.GetSelectedValuesM).ToString If ObjVentas.GetReporteVentasUtilidadDetalle(Vendedores, If(CveVenta = -1, Orden, CveVenta), DdlClientes.SelectedValue.ToEntero, Sucursales, - FechaI, FechaF, UsuarioActual.CveEmpresa, DdlPS.SelectedValue.ToEntero, DdlClasificacion.SelectedValue.ToEntero) Then + FechaI, FechaF, UsuarioActual.CveEmpresa, DdlPS.SelectedValue.ToEntero, DdlClasificacion.SelectedValue.ToEntero, DdlMarcas.SelectedValue.ToEntero) Then DtVentas = ObjVentas.DtResultados GvDatos.DataSource = ObjVentas.DtResultados GvDatos.DataBind() @@ -286,6 +286,7 @@ Partial Class Ventas_RepVentasUtilidadDetalle Dim Vendedor = If(DdlVendedor.GetSelectedText = "", "", $" Vendedor: {DdlVendedor.GetSelectedText}") Dim PS = If(DdlPS.SelectedValue = "-1", "", $" P.S.: {DdlPS.SelectedText}") Dim Clasificacion = If(DdlClasificacion.SelectedValue = "-1", "", $" Clasificacion: {DdlClasificacion.SelectedItem.Text}") + Dim Marcas = If(DdlMarcas.SelectedValue = "-1", "", $" Marcas: {DdlMarcas.SelectedItem.Text}") Dim FechaIn As String = $" Fecha Inicio: {txtFechaI.Text}" Dim FechaFn As String = $" Fecha Fin: {txtFechaF.Text}" If txtFechaI.Text = "" Then FechaIn = "" @@ -294,7 +295,7 @@ Partial Class Ventas_RepVentasUtilidadDetalle Dim Sucursales As String = IIf(DdlSubProyecto.GetSelectedValuesM = "", "-1", DdlSubProyecto.GetSelectedValuesM).ToString Dim Vendedores As String = IIf(DdlVendedor.GetSelectedValuesM = "", "-1", DdlVendedor.GetSelectedValuesM).ToString If ObjVentas.GetReporteVentasUtilidadDetalle(Vendedores, CveVenta, DdlClientes.SelectedValue.ToEntero, Sucursales, - FechaI, FechaF, UsuarioActual.CveEmpresa, DdlPS.SelectedValue.ToEntero, DdlClasificacion.SelectedValue.ToEntero) Then + FechaI, FechaF, UsuarioActual.CveEmpresa, DdlPS.SelectedValue.ToEntero, DdlClasificacion.SelectedValue.ToEntero, ddlmarcas.selectedvalue.toentero) Then Dim FechaInicio As String = txtFechaI.Text Dim FechaFin As String = txtFechaF.Text @@ -356,7 +357,7 @@ Partial Class Ventas_RepVentasUtilidadDetalle Dim Sucursales As String = IIf(DdlSubProyecto.GetSelectedValuesM = "", "-1", DdlSubProyecto.GetSelectedValuesM).ToString Dim Vendedores As String = IIf(DdlVendedor.GetSelectedValuesM = "", "-1", DdlVendedor.GetSelectedValuesM).ToString If ObjVentas.GetReporteVentasUtilidadDetalle(Vendedores, CveVenta, DdlClientes.SelectedValue.ToEntero, Sucursales, - FechaI, FechaF, UsuarioActual.CveEmpresa, DdlPS.SelectedValue.ToEntero, DdlClasificacion.SelectedValue.ToEntero) Then + FechaI, FechaF, UsuarioActual.CveEmpresa, DdlPS.SelectedValue.ToEntero, DdlClasificacion.SelectedValue.ToEntero, DdlMarcas.SelectedValue.ToEntero) Then Dim FechaInicio As String = txtFechaI.Text Dim FechaFin As String = txtFechaF.Text From c0456f0f9ebaf7264fdf379ea2f5862fc08be30d Mon Sep 17 00:00:00 2001 From: rrene Date: Sun, 22 Aug 2021 13:41:19 -0700 Subject: [PATCH 11/17] globaldtmarcas --- General/CatMarcas.aspx.vb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/General/CatMarcas.aspx.vb b/General/CatMarcas.aspx.vb index 8bdf09f8e..1042c6b7a 100644 --- a/General/CatMarcas.aspx.vb +++ b/General/CatMarcas.aspx.vb @@ -68,12 +68,14 @@ Partial Class General_CatMarcas RegistraScript("$('#DModalMarca').modal('hide')") Alert("La Marca se agregó correctamente.", TipoMensaje.MsgInformacion) CargaDatos() + GlobalDTGralMarcas(UsuarioActual.CveEmpresa) = Nothing End If ElseIf Modalidad = "U" Then If ObjPS.UpdateMarca(TxtMarca.Text, CveMarca, ChkEstatus.Checked) Then RegistraScript("$('#DModalMarca').modal('hide')") Alert("La Marca se actualizo correctamente.", TipoMensaje.MsgInformacion) CargaDatos() + GlobalDTGralMarcas(UsuarioActual.CveEmpresa) = Nothing End If End If ObjPS.Dispose() From 1e626a3c567b4e9649d46c0d941e61e0ca1d6e28 Mon Sep 17 00:00:00 2001 From: rrene Date: Sun, 22 Aug 2021 13:41:53 -0700 Subject: [PATCH 12/17] =?UTF-8?q?cancelaci=C3=B3n=20de=20traspaso.=20agreg?= =?UTF-8?q?ar=20el=20movimiento=20transitorio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Inventarios/TraspasoAlmacen.aspx.vb | 38 +++++++++++++++++++---------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/Inventarios/TraspasoAlmacen.aspx.vb b/Inventarios/TraspasoAlmacen.aspx.vb index 03c961d25..6ee6e3b93 100644 --- a/Inventarios/TraspasoAlmacen.aspx.vb +++ b/Inventarios/TraspasoAlmacen.aspx.vb @@ -1722,12 +1722,6 @@ Partial Class Inventarios_TraspasoAlmacen End If - - - - - - 'FUNCIONALIDAD PISTOLA DE CODIGOS If UsuarioActual.Empresa.Funcionalidad(132) = "1" And e.Row.DBCampo("CodigoBarras").Trim <> "" Then e.Row.FCTextBox("TxtCantidad").Enabled = False @@ -1748,6 +1742,7 @@ Partial Class Inventarios_TraspasoAlmacen Dim TextoError As String = "" Dim Fecha As Date = TxtFechaRecepcion.Text.ToDate Dim CveMovimientoVirtualEntrada As Integer = 0 + Dim CveMovimientoSalidaTransitorio As Integer = 0 Dim FolioVirtualEntrada As Integer = 0 Dim ObjInventario As New ClsInventarios @@ -1762,6 +1757,13 @@ Partial Class Inventarios_TraspasoAlmacen ErrorMovInv = True End If + + 'AGREGAMOS LA SALIDA + CveMovimientoSalidaTransitorio = ObjInventario.AddMovimiento(CveAlmacenTransitorio, 8, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, + Observaciones:=TxtObservacionesRecepcion.Text.Trim, CveAlmacenDestino:=GvDatosRecepcion.Rows(0).DataKey("CveAlmacenSalida").ToEntero, + CveMovimientoRelacionado:=CveMovimientoEntrada, Modulo:="TA/G12") + + Dim CvePrePoliza As Integer = -1 Dim Concepto As String = TxtObservacionesRecepcion.Text If Concepto = "" Then Concepto = "Cancelación Traspaso" @@ -1797,11 +1799,21 @@ Partial Class Inventarios_TraspasoAlmacen Exit For End If - If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, Cantidad, GvRow.DataKey("CveUM").ToEntero, CvePS, PrecioUnitario, GvRow.DataKey("CveAF").ToEntero, -1, Serie:=GvRow.DataKey("Serie").ToString, Lote:=GvRow.DataKey("Lote"), FechaCaducidad:=GvRow.DataKey("FechaCaducidad").ToDate, CveMovimientoDetalleEntrada:=CveMovimientoDetalleSalida) Then + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, Cantidad, GvRow.DataKey("CveUM").ToEntero, CvePS, PrecioUnitario, -1, -1, Serie:=GvRow.DataKey("Serie").ToString, Lote:=GvRow.DataKey("Lote"), FechaCaducidad:=GvRow.DataKey("FechaCaducidad").ToDate, CveMovimientoDetalleEntrada:=CveMovimientoDetalleSalida) Then ErrorMovInv = True TextoError = "Ocurrió un error al guardar los movimientos de entrada" Exit For End If + 'MOV, Alm, Transito + If GvRow.DataKey("CveMovimientoDetalleTransitorio").ToString.ToEntero > 0 Then + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoSalidaTransitorio, Cantidad, GvRow.DataKey("CveUM").ToString.ToEntero, CvePS, PrecioUnitario, CveSeccionAlmacen:=-3, Serie:=GvRow.DataKey("Serie").ToString, Lote:=GvRow.DataKey("Lote").ToString, FechaCaducidad:=GvRow.DataKey("FechaCaducidad").ToDate, CveMovimientoDetalleEntrada:=GvRow.DataKey("CveMovimientoDetalleTransitorio").ToString.ToEntero) Then + ErrorMovInv = True + TextoError = "Ocurrió un error al guardar los movimientos de salida" + Exit For + End If + Else + CveMovimientoSalidaTransitorio = 0 + End If importe += Cantidad * PrecioUnitario End If End If @@ -1861,16 +1873,16 @@ Partial Class Inventarios_TraspasoAlmacen Dim IdCtaContable As Integer = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimeroValor("IdCtaContable", String.Format("CveAlmacen = {0}", DdlAlmacenTransitorioRecepcion.SelectedValue.ToEntero)).ToEntero If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, ImporteDecimal, TxtObservaciones.Text, 68, TxtObservaciones.Text, Fecha, IdCtaContable, -1, - CveMovimientoAlmacen:=CveMovimientoEntrada, ImporteMX:=ImporteDecimal) Then + CveMovimientoAlmacen:=CveMovimientoEntrada, ImporteMX:=ImporteDecimal, Contabilizable:=False) Then ErrorMovInv = True TextoError = "Ocurrió un error al cancelar el traspaso" End If - 'If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImporteDecimal, TxtObservaciones.Text, 68, TxtObservaciones.Text, Fecha, IdCtaContable, -1, - ' CveMovimientoAlmacen:=CveMovimientoSalida, ImporteMX:=ImporteDecimal) Then - ' ErrorMovInv = True - ' TextoError = "Ocurrió un erro al cancelar el traspaso" - 'End If + If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, ImporteDecimal, TxtObservaciones.Text, 68, TxtObservaciones.Text, Fecha, IdCtaContable, -1, + CveMovimientoAlmacen:=CveMovimientoSalidaTransitorio, ImporteMX:=ImporteDecimal, Contabilizable:=False) Then + ErrorMovInv = True + TextoError = "Ocurrió un erro al cancelar el traspaso" + End If End If End If From c723f3c0b6b61f91a498f18eaac1c7ca865805b4 Mon Sep 17 00:00:00 2001 From: rrene Date: Sun, 22 Aug 2021 13:42:07 -0700 Subject: [PATCH 13/17] que restringa los almacenes. para la E119 --- Inventarios/PopUpExistenciasAlmacen.aspx.vb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Inventarios/PopUpExistenciasAlmacen.aspx.vb b/Inventarios/PopUpExistenciasAlmacen.aspx.vb index d00f0f716..01f56bb74 100644 --- a/Inventarios/PopUpExistenciasAlmacen.aspx.vb +++ b/Inventarios/PopUpExistenciasAlmacen.aspx.vb @@ -98,9 +98,15 @@ Partial Class Inventarios_Default Private Sub CargaDatos(CvePS As Integer, Tipo As Integer) If ValidarFiltrosSeleccionados() OrElse CvePS > 0 Then + Dim RestringirAlmacenes As Integer = -1 + If UsuarioActual.CveEmpresa = 119 Then + RestringirAlmacenes = 1 'restringue los almacenes:Consignación,Productos Financieros Asignados,,roductos Financieros,Consumo Interno,Activo Fijo,Merma,Consignación de Contrato,Devolucion proveedor, + End If + Dim ObjInventarios As New ClsInventarios() If ObjInventarios.GetExistenciasProducto(CvePS, -1, UsuarioActual.CveEmpresa, -1, FechaMovto:=DateTime.Today.AddDays(1).ToString("yyyy/MM/dd HH:mm"), - ExcluyeApartados:=-1, ExcluyeAdelantado:=1, CveSubProyecto:=DdlSubProyecto.SelectedValue.ToEntero, ExcluyeTransitorios:=1, TopSelect:=100) Then + ExcluyeApartados:=-1, ExcluyeAdelantado:=1, CveSubProyecto:=DdlSubProyecto.SelectedValue.ToEntero, + ExcluyeTransitorios:=1, RestringirAlmacenes:=RestringirAlmacenes, TopSelect:=100) Then Dim dr As Data.DataRow = GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePS).FiltroPrimero("") If dr IsNot Nothing Then From dc9f40bd62567ef4d350281399cb5877ce28becb Mon Sep 17 00:00:00 2001 From: rrene Date: Sun, 22 Aug 2021 13:42:29 -0700 Subject: [PATCH 14/17] cambio de letra --- Inventarios/EntradasSalidas.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Inventarios/EntradasSalidas.aspx.vb b/Inventarios/EntradasSalidas.aspx.vb index 9a71020a2..f63a300ea 100644 --- a/Inventarios/EntradasSalidas.aspx.vb +++ b/Inventarios/EntradasSalidas.aspx.vb @@ -3856,7 +3856,7 @@ Partial Class Inventarios_EntradasSalidas Dim Lote As String = If(TxtLoteSalida.Text = "", "", TxtLoteSalida.Text) Dim FechaCaducidad As Date = If(TxtCaducidadSalida.Text = "", MinFecha.ToShortDateString, TxtCaducidadSalida.Text).ToDate - If ObjInventario.GetExistenciasPS(DdlPSSalida.SelectedValue.ToEntero, CveUM, UsuarioActual.CveEmpresa, DdlAlmacenInventarioFisico.SelectedValue.ToEntero, PendientePorSurtir:=1, Lote:=lote, FechaCaducidad:=FechaCaducidad) >= TxtCantidadSalidaInv.Text.ToDouble Then + If ObjInventario.GetExistenciasPS(DdlPSSalida.SelectedValue.ToEntero, CveUM, UsuarioActual.CveEmpresa, DdlAlmacenInventarioFisico.SelectedValue.ToEntero, PendientePorSurtir:=1, Lote:=Lote, FechaCaducidad:=FechaCaducidad) >= TxtCantidadSalidaInv.Text.ToDouble Then If Not DdlPSSalida.SelectedValue.ToEntero > 0 Then RegistraScript("playsonidito('142608__autistic-lucario__error.wav')") Alert("Es necesario especificar el producto.", TipoMensaje.MsgAdvertencia) From 50d93e6548221ab8cb6cfc19111ba0bf86152d25 Mon Sep 17 00:00:00 2001 From: rakcsle Date: Mon, 23 Aug 2021 11:00:35 -0700 Subject: [PATCH 15/17] Logotipo emrpesa 72 Invitacion curso --- Empresas/72/Formatos/CursoInvitacion.docx | Bin 19006 -> 25300 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Empresas/72/Formatos/CursoInvitacion.docx b/Empresas/72/Formatos/CursoInvitacion.docx index 272b365c880297b1afaaff2d4c2c511ba531d7a7..7c26b33c07606271eeccf75d357f4ee1c09df7a8 100644 GIT binary patch delta 19994 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 NAXi|-YB2sm`41-mOIiQ` delta 13815 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 pq7nt4YhwPdEdLr5o9}ad{ax(*{&MTTIb?Bg Date: Mon, 23 Aug 2021 11:55:07 -0700 Subject: [PATCH 16/17] Agregar Alias, parametros, mensaje de error al retorno al insertar. --- App_Code/ClsProductosServicios.vb | 11 ++++++++--- Compras/Compras.aspx.vb | 4 ++-- Ventas/ProductosServicios.aspx.vb | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/App_Code/ClsProductosServicios.vb b/App_Code/ClsProductosServicios.vb index 93d62aea8..4af16b530 100644 --- a/App_Code/ClsProductosServicios.vb +++ b/App_Code/ClsProductosServicios.vb @@ -1342,15 +1342,15 @@ Public Class ClsProductosServicios Return Retorno End Function - Public Function AddPSAlias(PS As String, CvePS As Integer, Optional CveUsuarioModifico As Integer = -1, Optional Flexible As Boolean = False) As Boolean + Public Function AddPSAlias(PS As String, CvePS As Integer, Flexible As Boolean, CveUsuarioModifico As Integer) As Boolean Dim Retorno As Boolean = False DataAdapter("PA_Gral_ProductosServiciosAliasAdd") With SqlAdapter.SelectCommand.Parameters .Add("@PSAlias", SqlDbType.VarChar).Value = If(PS.Length > 845, PS.Substring(0, 845), PS) .Add("@CvePS", SqlDbType.Int).Value = CvePS - .Add("@CveUsuarioModifico", SqlDbType.Int).Value = CveUsuarioModifico .Add("@Flexible", SqlDbType.Bit).Value = If(Flexible, 1, 0) + .Add("@CveUsuarioModifico", SqlDbType.Int).Value = CveUsuarioModifico End With Try @@ -1361,7 +1361,12 @@ Public Class ClsProductosServicios If Ex1.Message.Contains("Número: 2627;") Then OnError("El Nuevo Producto o Servicio no se guardo debido a que actualmente se encuentra registrado", Ex1, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) Else - Me.OnError("Ocurrió un error al guardar el nuevo Producto o Servicio.", Ex1, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + If Ex1.Message.Contains("Número: 5555;") Then + Dim Str As String = Ex1.Message.Substring(14) 'toma el valor posterior + OnError("No se puede registrar un alias porque ya existe la siguiente:" + Str, Ex1, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + Else + Me.OnError("Ocurrió un error al guardar el nuevo Producto o Servicio.", Ex1, SqlAdapter.SelectCommand.Parameters.ParametrosInfo()) + End If End If Catch ex As Exception OnError("Ocurrió un error al guardar el nuevo Producto o Servicio.", ex, SqlAdapter.SelectCommand.Parameters.ParametrosInfo) diff --git a/Compras/Compras.aspx.vb b/Compras/Compras.aspx.vb index 106f36421..8f680c62e 100644 --- a/Compras/Compras.aspx.vb +++ b/Compras/Compras.aspx.vb @@ -1618,7 +1618,7 @@ Partial Class Compras_Compras DdlTipoGastoAsignar.DataBind() UpParametros.Update() - If UsuarioActual.CveRol = 1 Then + If UsuarioActual.CveRol = 1 OrElse UsuarioActual.CveEmpresa = 119 Then ChkAliasFlexible.Visible = True End If @@ -18679,7 +18679,7 @@ Partial Class Compras_Compras End If Dim PS As New ClsProductosServicios - If PS.AddPSAlias(System.Web.HttpUtility.HtmlDecode(TxtPSAlias.Text.Trim), CvePS, UsuarioActual.CveUsuario, ChkAliasFlexible.Checked) Then + If PS.AddPSAlias(System.Web.HttpUtility.HtmlDecode(TxtPSAlias.Text.Trim), CvePS, ChkAliasFlexible.Checked, UsuarioActual.CveUsuario) Then GlobalDTProductosServiciosAlias(UsuarioActual.CveEmpresa) = PS.DtResultados TmpDT.Rows(HdnAliasInd.Value.ToEntero)("CvePS") = CvePS diff --git a/Ventas/ProductosServicios.aspx.vb b/Ventas/ProductosServicios.aspx.vb index b6aa92a44..db1b20474 100644 --- a/Ventas/ProductosServicios.aspx.vb +++ b/Ventas/ProductosServicios.aspx.vb @@ -1455,7 +1455,7 @@ Partial Class ProductosyServicios Dim ObjAliasAdd As New ClsProductosServicios Dim TieneError = False - If ObjAliasAdd.AddPSAlias(TxtAlias.Text.ToString, CvePS, UsuarioActual.CveUsuario) Then + If ObjAliasAdd.AddPSAlias(TxtAlias.Text.ToString, CvePS, False, UsuarioActual.CveUsuario) Then CargarAlias() UPGVAlias.Update() Alert("Alias " + TxtAlias.Text + " agregado.", TipoMensaje.MsgInformacion) From 13b62b7bda007af3615f19fddf2ff79b1fce2263 Mon Sep 17 00:00:00 2001 From: rrene Date: Mon, 23 Aug 2021 11:55:19 -0700 Subject: [PATCH 17/17] - columna de costo promedio. solo visible E153 --- Ventas/ActualizarPrecios.aspx | 7 ++++--- Ventas/ActualizarPrecios.aspx.vb | 5 ++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Ventas/ActualizarPrecios.aspx b/Ventas/ActualizarPrecios.aspx index c3a985ea4..d24a76714 100644 --- a/Ventas/ActualizarPrecios.aspx +++ b/Ventas/ActualizarPrecios.aspx @@ -154,7 +154,7 @@ " style="margin-top: -3px;" class="btn btn-circle btn-sm label-info"> + CssClass="table table-striped table-advance table-hover Widthall ScrollAD" AutoGenerateColumns="False" data-sort="true" EmptyDataText="No se encontraron registros" > @@ -188,8 +188,9 @@ - + + @@ -238,7 +239,7 @@ Aplicar - diff --git a/Ventas/ActualizarPrecios.aspx.vb b/Ventas/ActualizarPrecios.aspx.vb index eee8c3a09..f7565db1e 100644 --- a/Ventas/ActualizarPrecios.aspx.vb +++ b/Ventas/ActualizarPrecios.aspx.vb @@ -179,9 +179,12 @@ Partial Class Ventas_ActualizarPrecios If UsuarioActual.Empresa.Funcionalidad(531) = "1" Then 'Empresa Acumuladores GVPrecios.Columns(2).Visible = True + End If + + If UsuarioActual.CveEmpresa = 153 Then 'Empresa servec + GVPrecios.Columns(11).Visible = True End If - dvDatos.Visible = True GVPrecios.DataBind()