-
-
-
+
+
+
-
+
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