From 2bd3eff8c4459b1d7835bd3159230f28726ff114 Mon Sep 17 00:00:00 2001 From: Antonio Gonzalez Date: Wed, 11 Nov 2020 18:59:37 -0700 Subject: [PATCH] ahora se sugiere el lote con prioridad a sacar del almacen basandose en la fecha de caducidad --- Inventarios/EntregaAlmacen.aspx | 2 +- Inventarios/EntregaAlmacen.aspx.vb | 81 ++++++++++++++++++++++++++++++ Inventarios/Kardex.aspx | 19 ++++--- Inventarios/Kardex.aspx.vb | 4 +- 4 files changed, 97 insertions(+), 9 deletions(-) diff --git a/Inventarios/EntregaAlmacen.aspx b/Inventarios/EntregaAlmacen.aspx index 7b0398fbb..2bbd9cffe 100644 --- a/Inventarios/EntregaAlmacen.aspx +++ b/Inventarios/EntregaAlmacen.aspx @@ -516,7 +516,7 @@ - + diff --git a/Inventarios/EntregaAlmacen.aspx.vb b/Inventarios/EntregaAlmacen.aspx.vb index e21187015..499598d68 100644 --- a/Inventarios/EntregaAlmacen.aspx.vb +++ b/Inventarios/EntregaAlmacen.aspx.vb @@ -851,6 +851,7 @@ Partial Class Inventarios_EntregaAlmacen If AplicaCaducidad Then GvDatos.Columns(9).Visible = True GvDatos.Columns(9).HeaderText = If(UsuarioActual.Empresa.Funcionalidad(147) = "Fecha Elaboración", "Fecha Elaboración", "Fecha Caducidad") + SugerirFechaLote() End If GvDatos.DataSource = DtDatos @@ -3819,5 +3820,85 @@ Partial Class Inventarios_EntregaAlmacen End Sub #End Region +#Region "sugerir caducidad" + Private Sub SugerirFechaLote() + Dim ObjInventarios As New ClsInventarios() + Dim FechasExcluidas As New List(Of String) + FechasExcluidas.Add(MinFecha.ToDate.ToString) + Dim MaxRows As Integer = DtDatos.Rows.Count - 1 + For contador As Integer = 0 To MaxRows + Dim DtRow As DataRow = DtDatos.Rows(contador) + Dim AplicaCaducidad As Boolean = DtRow.Item("AplicaCaducidad").ToString = "True" + Dim AplicaLote As Boolean = DtRow.Item("AplicaLote").ToString = "True" + Dim Cantidad As Integer = DtRow.Item("CantidadC").ToString.ToEntero + Dim FechasExcluidasFiltro As String = String.Format("FechaCaducidad NOT IN('{0}')", String.Join("','", FechasExcluidas)) + If AplicaCaducidad Or AplicaLote Then + Dim CvePS As Integer = DtRow.Item("CvePS").ToString.ToEntero + If ObjInventarios.GetExistenciasCaducidad(CvePS, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then + If ObjInventarios.DtResultados.Rows.Count > 0 Then + Dim MinimumRow As DataRow = ObjInventarios.DtResultados.FiltroPrimero(FechasExcluidasFiltro, "FechaCaducidad") + DtRow.Item("FechaCaducidad") = MinimumRow.Item("FechaCaducidad").ToString + DtRow.Item("Lote") = MinimumRow.Item("Lote").ToString + Dim CantidadDisponible As Integer = MinimumRow.Item("Cantidad").ToString.ToEntero + DtRow.Item("CantidadF") = CantidadDisponible + DtRow.Item("CantidadS") = CantidadDisponible + + If Cantidad > CantidadDisponible Then + Dim RowFaltante As DataRow = DtDatos.NewRow() + Dim CantidadFaltante As Integer = (Cantidad - CantidadDisponible) + RowFaltante.Item("CantidadC") = CantidadFaltante + RowFaltante.Item("CantidadF") = CantidadFaltante + RowFaltante.Item("CantidadS") = CantidadFaltante + DtRow.Item("CantidadC") = CantidadDisponible + For Each Column As DataColumn In DtDatos.Columns + If Not Column.ColumnName.Contiene("CantidadC", "CantidadF", "CantidadS") Then + RowFaltante.Item(Column.ColumnName) = DtRow.Item(Column.ColumnName) + End If + Next + FechasExcluidas.Add(MinimumRow.Item("FechaCaducidad").ToString) + DtDatos.Rows.Add(RowFaltante) + MaxRows += 1 + Else + DtRow.Item("CantidadF") = Cantidad + End If + End If + End If + End If + Next + + 'For Each DtRow As DataRow In DtDatos.Rows + ' Dim AplicaCaducidad As Boolean = DtRow.Item("AplicaCaducidad").ToString = "True" + ' Dim AplicaLote As Boolean = DtRow.Item("AplicaLote").ToString = "True" + ' Dim Cantidad As Integer = DtRow.Item("CantidadC").ToString.ToEntero + ' Dim FechasExcluidasFiltro As String = String.Format("FechaCaducidad NOT IN('{0}')", String.Join("','", FechasExcluidas)) + ' If AplicaCaducidad Or AplicaLote Then + ' Dim CvePS As Integer = DtRow.Item("CvePS").ToString.ToEntero + ' If ObjInventarios.GetExistenciasCaducidad(CvePS, -1, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then + ' Dim MinimumRow As DataRow = ObjInventarios.DtResultados.FiltroPrimero(FechasExcluidasFiltro, "FechaCaducidad") + ' DtRow.Item("FechaCaducidad") = MinimumRow.Item("FechaCaducidad").ToString + ' DtRow.Item("Lote") = MinimumRow.Item("Lote").ToString + ' Dim CantidadDisponible As Integer = MinimumRow.Item("Cantidad").ToString.ToEntero + ' DtRow.Item("CantidadF") = CantidadDisponible + + ' If Cantidad > CantidadDisponible Then + ' Dim RowFaltante As DataRow = DtDatos.NewRow() + ' RowFaltante.Item("CantidadC") = (Cantidad - CantidadDisponible) + ' RowFaltante.Item("CantidadF") = (Cantidad - CantidadDisponible) + ' RowFaltante.Item("CantidadS") = (Cantidad - CantidadDisponible) + ' For Each Column As DataColumn In DtDatos.Columns + ' If Not Column.ColumnName.Contiene("CantidadC", "CantidadF", "CantidadS") Then + ' RowFaltante.Item(Column.ColumnName) = DtRow.Item(Column.ColumnName) + ' End If + ' Next + + ' DtDatos.Rows.Add(RowFaltante) + ' End If + ' End If + ' End If + 'Next + ObjInventarios.Dispose() + End Sub + +#End Region End Class diff --git a/Inventarios/Kardex.aspx b/Inventarios/Kardex.aspx index 08c2ac128..8d89182cd 100644 --- a/Inventarios/Kardex.aspx +++ b/Inventarios/Kardex.aspx @@ -4,6 +4,11 @@