From 6fb9bc307f2b10d02ed1f58f10332f7d00f94546 Mon Sep 17 00:00:00 2001 From: rrene Date: Mon, 14 Apr 2025 07:23:37 -0700 Subject: [PATCH 1/3] - --- Ventas/RepVentasResumen.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Ventas/RepVentasResumen.aspx.vb b/Ventas/RepVentasResumen.aspx.vb index 70a217f03..84a2b1c2f 100644 --- a/Ventas/RepVentasResumen.aspx.vb +++ b/Ventas/RepVentasResumen.aspx.vb @@ -103,7 +103,7 @@ Partial Class Ventas_RepVentasResumen VxC = Nothing End If - If ObjMovtos.GetRepRecuperacion(TxtFechaI.Text.ToDate, TxtFechaF.Text.ToDate, -1, DdlSubProyecto.SelectedValue.ToEntero, -1, -1, -1, "-1", UsuarioActual.CveEmpresa, 5, -1, "-1", CveUsuarioConsulta:=UsuarioActual.CveUsuario) Then + If ObjMovtos.GetRepRecuperacion(TxtFechaI.Text.ToDate, TxtFechaF.Text.ToDate, MinFecha, MaxFecha, -1, DdlSubProyecto.SelectedValue.ToEntero, -1, -1, -1, "-1", UsuarioActual.CveEmpresa, 5, -1, "-1", CveUsuarioConsulta:=UsuarioActual.CveUsuario) Then Datos = ObjVentas.DtResultados GvPxC.DataSource = Datos Else From 120463815147dea8e321386dc45feec59656e936 Mon Sep 17 00:00:00 2001 From: rrene Date: Mon, 14 Apr 2025 10:07:55 -0700 Subject: [PATCH 2/3] -- --- OP/OP.aspx.vb | 94 ++++++++++++++++++++++++--------------------------- 1 file changed, 45 insertions(+), 49 deletions(-) diff --git a/OP/OP.aspx.vb b/OP/OP.aspx.vb index 6db555ecf..e6e71cb64 100644 --- a/OP/OP.aspx.vb +++ b/OP/OP.aspx.vb @@ -670,16 +670,11 @@ Partial Class OP_OP Dim CveMP As Integer = GvMPAgregados.DataKeys(row.RowIndex)("CvePSMateriaPrima").ToString().ToEntero() Dim CveUMMP As Integer = GvMPAgregados.DataKeys(row.RowIndex)("CveUMMateriaPrima").ToString().ToEntero() Dim CantidadSolicitada As Decimal = DtMP.Rows(row.RowIndex)("Cantidad").ToString().ToDecimal() - - - - Dim Existencia As Decimal = ObjInventario.GetExistenciasPS( CvePS:=CveMP, CveUnidadMedida:=CveUMMP, CveEmpresa:=UsuarioActual.CveEmpresa, - CveAlmacen:=DdlAlmacenOrigenMP.SelectedValue.ToEntero() - ) + CveAlmacen:=DdlAlmacenOrigenMP.SelectedValue.ToEntero()) If Existencia < CantidadSolicitada Then Dim NombreProducto As String = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CveMP).FiltroPrimeroValor("Producto", "") @@ -705,16 +700,16 @@ Partial Class OP_OP Dim TieneError As Boolean = False Dim FolioSolicitud As Integer = ObjInventario.AddTrasladoSolicitud( - TxtObservacionesMP.Text.Trim(), - DdlAlmacenOrigenMP.SelectedValue.ToEntero(), - DdlAlmacenDestinoMP.SelectedValue.ToEntero(), - Estatus, - -1, - NowADS, - CveUsuario:=UsuarioActual.CveUsuario, - CveEmpresa:=UsuarioActual.CveEmpresa, - EstatusAlmacen:=EstatusAlmacen - ) + TxtObservacionesMP.Text.Trim(), + DdlAlmacenOrigenMP.SelectedValue.ToEntero(), + DdlAlmacenDestinoMP.SelectedValue.ToEntero(), + Estatus, + -1, + NowADS, + CveUsuario:=UsuarioActual.CveUsuario, + CveEmpresa:=UsuarioActual.CveEmpresa, + EstatusAlmacen:=EstatusAlmacen + ) If FolioSolicitud > 0 Then CveTraspasoSolicitud = ObjInventario.CveTraspasoSolicitud @@ -743,7 +738,6 @@ Partial Class OP_OP Next End If - If Not TieneError Then ObjInventario.Commit() Alert($"Solicitud de Traspaso guardada. Folio: {FolioSolicitud}", TipoMensaje.MsgInformacion) @@ -775,8 +769,6 @@ Partial Class OP_OP Try - - If Me.CveOP = -1 Then ' Modo CREACIÓN Dim xmlProductos As String = DataTableToXML(DtPS) @@ -925,18 +917,14 @@ Partial Class OP_OP ' 1. Cargar almacén de salida (Tipo 28) DdlAlmacenOrigenSalidaMP.DataSource = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros("CveTipoAlmacen = 28") DdlAlmacenOrigenSalidaMP.DataBind() - - ' 2. Cargar almacén de producto terminado DdlAlmacenTerminado.DataSource = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros("CveTipoAlmacen = 1") DdlAlmacenTerminado.DataBind() DdlAlmacenTerminado.Items.Insert(0, New ListItem("Seleccionar almacén", "-1")) - ' Almacén de Devoluciones (Tipo 1) DdlAlmacenDevolucion.DataSource = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltraParametros("CveTipoAlmacen = 1") DdlAlmacenDevolucion.DataBind() DdlAlmacenDevolucion.Items.Insert(0, New ListItem("Seleccionar almacén", "-1")) - ' 3. Cargar GridViews GvProductoTerminado.DataSource = DtPS.FiltraParametros("Tipo = 'Producto'") GvProductoTerminado.DataBind() @@ -1010,8 +998,12 @@ Partial Class OP_OP ObjInventario.IniciaTransacSQL() Dim ObjConta As New ClsContabilidad(ObjInventario.IniciaTransacSQL()) Dim ObjOP As New ClsOP(ObjInventario.IniciaTransacSQL()) - Try + Dim TotalMPProducto As Decimal = 0 + Dim TotalMOProducto As Decimal = 0 + Dim TotalCIProducto As Decimal = 0 + Try + 'Salida de MP CveMovimientoSalida = ObjInventario.AddMovimiento(DdlAlmacenOrigenSalidaMP.SelectedValue.ToEntero(), TipoMovimientoSalida, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:="Finalización OP #" & LblFolio.Text, Modulo:="OP/FinalizarOPSalida") FolioEntrada = ObjInventario.Folio Dim DtMPAlmacen As DataTable = Nothing @@ -1037,15 +1029,10 @@ Partial Class OP_OP ' 5. Calcular TotalCostoMP (ya está actualizado) TotalCostoMP = ObjInventario.DtResultados.SUMD("Total") - Dim CostosPorProducto As New Dictionary(Of Integer, Decimal) - ' 1. Recorrer cada Producto Terminado en la OP For Each rowProducto As DataRow In DtPS.Select("Tipo = 'Producto'") Dim CvePSProducto As Integer = rowProducto("Clave").ToString.ToEntero() Dim CantidadProducto As Decimal = rowProducto("Cantidad").ToString.ToDecimal() - Dim TotalMPProducto As Decimal = 0 - Dim TotalMOProducto As Decimal = 0 - Dim TotalCIProducto As Decimal = 0 ' 2. Calcular Costo de Materias Primas por Producto For Each rowMP As DataRow In DtMP.Select($"Clave = {CvePSProducto}") @@ -1064,10 +1051,13 @@ Partial Class OP_OP For Each rowCI As DataRow In DtCI.Select($"Clave = {CvePSProducto}") TotalCIProducto += rowCI("Total").ToString.ToDecimal() Next + ' 5. Determinar las devoluciones del Producto + Dim TotalDevPT As Decimal = GvMPUtilizada.Rows.Cast(Of GridViewRow)().Where($"datakey.cvepspt = {CvePSProducto}").Sum(Function(row) DirectCast(row.FindControl("TxtDevolucionMP"), TextBox).Text.ToDecimal()) - ' 5. Sumar Total por Producto (MP + MO + CI) - Dim TotalProducto As Decimal = TotalMPProducto + TotalMOProducto + TotalCIProducto - CostosPorProducto.Add(CvePSProducto, TotalProducto) + ' 6. Sumar Total por Producto (MP + MO + CI) + Dim TotalProducto As Decimal = TotalMPProducto + TotalMOProducto + TotalCIProducto - TotalDevPT + + rowProducto("Costo") = TotalProducto Next ' 2. PROCESAR DEVOLUCIONES SI EXISTEN @@ -1082,7 +1072,6 @@ Partial Class OP_OP CveMovimientoDev = ObjInventario.AddMovimiento(DdlAlmacenDevolucion.SelectedValue.ToEntero(), TipoMovimientoDev, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:=$"Devolución OP #{LblFolio.Text}", Modulo:="OP/Devoluciones", CveMovimientoRelacionado:=CveMovimientoSalida) - If CveMovimientoDev > 0 Then For Each row As GridViewRow In GvMPUtilizada.Rows Dim Devolucion As Decimal = row.FCTextBox("TxtDevolucionMP").Text.ToDecimal() @@ -1108,9 +1097,9 @@ Partial Class OP_OP Next End If End If - End If + 'ENTRADA DE PRODUCTO TERMINADO If Not ErrorMovInv Then CveMovimientoEntrada = ObjInventario.AddMovimiento(DdlAlmacenTerminado.SelectedValue.ToEntero(), CveConceptoEntrada, 1, Fecha, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, Observaciones:="Finalización OP #" & LblFolio.Text, Modulo:="OP/FinalizarOPEntrada", CveMovimientoRelacionado:=CveMovimientoSalida) End If @@ -1121,7 +1110,7 @@ Partial Class OP_OP Dim PU_PT As Decimal = If(CantidadPT > 0, CostoPTAjustado / CantidadPT, 0) For Each rowPT As DataRow In DtPS.Select("Tipo = 'Producto'") - If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, rowPT("Cantidad").ToString.ToDecimal(), rowPT("CveUM").ToString.ToEntero(), rowPT("Clave").ToString.ToEntero(), PU_PT) Then + If Not ObjInventario.AddMovimientoDetalle(CveMovimientoEntrada, rowPT("Cantidad").ToString.ToDecimal(), rowPT("CveUM").ToString.ToEntero(), rowPT("Clave").ToString.ToEntero(), rowPT("Costo").ToString.ToDecimal()) Then ErrorMovInv = True : TextoError = "x" : Exit For End If Next @@ -1130,22 +1119,29 @@ Partial Class OP_OP Dim CvePrePoliza As Integer = ObjConta.AddPrePolizas("Inventario/OPFinalizada", 53, 0, 0, 1, Fecha, "Producción OP #" & LblFolio.Text, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) - If CvePrePoliza > 0 AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TotalCostoMP, TotalCostoMP, 68, "Consumo MP OP #" & LblFolio.Text, "Consumo MP OP #" & LblFolio.Text, CveMovimientoAlmacen:=CveMovimientoSalida) Then - ErrorMovInv = True + If CvePrePoliza > 0 Then + 'salida MP + If CvePrePoliza > 0 AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, TotalCostoMP, TotalCostoMP, 68, "Consumo MP OP #" & LblFolio.Text, "Consumo MP OP #" & LblFolio.Text, CveMovimientoAlmacen:=CveMovimientoSalida) Then + ErrorMovInv = True + End If + ' entrada PT + If Not ErrorMovInv AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, CostoPTAjustado, CostoPTAjustado, 68, "Producción PT OP #" & LblFolio.Text, "Producción PT OP #" & LblFolio.Text, CveMovimientoAlmacen:=CveMovimientoEntrada) Then + ErrorMovInv = True + End If + 'dev MP + If Not ErrorMovInv AndAlso CostoDevoluciones <> 0 AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, CostoDevoluciones, CostoDevoluciones, 95, "", $"OP #{LblFolio.Text}", CveMovimientoAlmacen:=CveMovimientoDev) Then + ErrorMovInv = True + End If + 'costo indirecto + If Not ErrorMovInv AndAlso TotalCIProducto <> 0 AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TotalCIProducto, TotalCIProducto, 95, "Producción PT OP #" & LblFolio.Text, "Producción PT OP #" & LblFolio.Text) Then + ErrorMovInv = True + End If + 'mano de obra + If Not ErrorMovInv AndAlso TotalCIProducto <> 0 AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, TotalMOProducto, TotalCIProducto, 95, "Producción PT OP #" & LblFolio.Text, "Producción PT OP #" & LblFolio.Text) Then + ErrorMovInv = True + End If End If - If Not ErrorMovInv AndAlso Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, CostoPTAjustado, CostoPTAjustado, 68, "Producción PT OP #" & LblFolio.Text, "Producción PT OP #" & LblFolio.Text, CveMovimientoAlmacen:=CveMovimientoEntrada) Then - ErrorMovInv = True - End If - - - - - ObjConta.AddPrePolizasDetalle(CvePrePoliza, False, CostoDevoluciones, CostoDevoluciones, 95, "", $"OP #{LblFolio.Text}", CveMovimientoAlmacen:=CveMovimientoDev) - - - - 'If Not ErrorMovInv Then 'If Not ObjConta.ValidacionesPrePoliza(CvePrePoliza, UsuarioActual) Then 'ErrorMovInv = True : TextoError = "Error en validación de póliza" From 11e904446074b6d9a5dab5b839a3aeadbe98c4c9 Mon Sep 17 00:00:00 2001 From: Luis Quijada Date: Mon, 14 Apr 2025 11:16:53 -0700 Subject: [PATCH 3/3] Finalizar OP --- OP/OP.aspx.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OP/OP.aspx.vb b/OP/OP.aspx.vb index 6db555ecf..83005f474 100644 --- a/OP/OP.aspx.vb +++ b/OP/OP.aspx.vb @@ -1034,7 +1034,7 @@ Partial Class OP_OP End If DtMPAlmacen = ObjInventario.DtResultados.Copy() - ' 5. Calcular TotalCostoMP (ya está actualizado) + ' 5. Calcular TotalCostoMP TotalCostoMP = ObjInventario.DtResultados.SUMD("Total") Dim CostosPorProducto As New Dictionary(Of Integer, Decimal)