diff --git a/Inventarios/EntregaAlmacen.aspx b/Inventarios/EntregaAlmacen.aspx index 2bbd9cffe..021f659dd 100644 --- a/Inventarios/EntregaAlmacen.aspx +++ b/Inventarios/EntregaAlmacen.aspx @@ -516,18 +516,18 @@ - +
- - - + + + - + diff --git a/Inventarios/EntregaAlmacen.aspx.vb b/Inventarios/EntregaAlmacen.aspx.vb index 5eef2c037..2f141f651 100644 --- a/Inventarios/EntregaAlmacen.aspx.vb +++ b/Inventarios/EntregaAlmacen.aspx.vb @@ -851,7 +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() + SugerirFecha() End If GvDatos.DataSource = DtDatos @@ -3821,83 +3821,73 @@ Partial Class Inventarios_EntregaAlmacen #End Region #Region "sugerir caducidad" - Private Sub SugerirFechaLote() + + Private Sub SugerirFecha() + 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 + Dim TempDT As New DataTable + TempDT = DtDatos.Clone + Dim DtAux As New DataTable + DtAux = DtDatos.Clone - 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 + For Each DtRow As DataRow In DtDatos.Rows + Dim Row As DataRow = DtAux.NewRow() + For Each Column As DataColumn In DtDatos.Columns + Row.Item(Column.ColumnName) = DtRow.Item(Column.ColumnName) + Next + DtAux.Rows.Add(Row) + SugerirFechaLote(0, MinFecha, FechasExcluidas, ObjInventarios, DtAux) + TempDT.Merge(DtAux) + DtAux.Clear() + Next + + ObjInventarios.Dispose() + + DtDatos = TempDT + End Sub + + Private Sub SugerirFechaLote(contador As Integer, FechaExcluida As Date, FechasExcluidas As List(Of String), ObjInventarios As ClsInventarios, DataTableAux As DataTable) + FechasExcluidas.Add(FechaExcluida.ToDate.ToString) + + Dim DtRow As DataRow = DataTableAux.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 = DataTableAux.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 DataTableAux.Columns + If Not Column.ColumnName.Contiene("CantidadC", "CantidadF", "CantidadS") Then + RowFaltante.Item(Column.ColumnName) = DtRow.Item(Column.ColumnName) + End If + Next + DataTableAux.Rows.Add(RowFaltante) + SugerirFechaLote(contador + 1, MinimumRow.Item("FechaCaducidad").ToString.ToDate, FechasExcluidas, ObjInventarios, DataTableAux) + Else + DtRow.Item("CantidadF") = Cantidad + Exit Sub 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 If End Sub #End Region