diff --git a/Inventarios/AjustesSeccionAlmacen.aspx b/Inventarios/AjustesSeccionAlmacen.aspx
index 24c9ea186..d4c87aba2 100644
--- a/Inventarios/AjustesSeccionAlmacen.aspx
+++ b/Inventarios/AjustesSeccionAlmacen.aspx
@@ -121,7 +121,7 @@
-
+
<%----%>
diff --git a/Inventarios/EntregaAlmacen.aspx.vb b/Inventarios/EntregaAlmacen.aspx.vb
index 2f141f651..4c4de437a 100644
--- a/Inventarios/EntregaAlmacen.aspx.vb
+++ b/Inventarios/EntregaAlmacen.aspx.vb
@@ -270,7 +270,7 @@ Partial Class Inventarios_EntregaAlmacen
InicializaValores()
CargaParametrosAD()
- If UsuarioActual.CveEmpresa.Contiene(72, 80) Then DdlAlmacen.AutoPostBack = True
+ If UsuarioActual.CveEmpresa.Contiene(72, 80, 146, 119) Then DdlAlmacen.AutoPostBack = True
If UsuarioActual.Empresa.Funcionalidad(281).ToEntero() = 1 Then
@@ -833,7 +833,7 @@ Partial Class Inventarios_EntregaAlmacen
CargaGvDatos()
End Sub
- Private Sub CargaGvDatos()
+ Private Sub CargaGvDatos(Optional CveAlmacen As Integer = -1)
If DtDatos IsNot Nothing Then
@@ -849,9 +849,12 @@ Partial Class Inventarios_EntregaAlmacen
If AplicaSeccion Then GvDatos.Columns(7).Visible = True
If AplicaLote Then GvDatos.Columns(8).Visible = True
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")
+ GvDatos.Columns(9).HeaderText = If(UsuarioActual.Empresa.Funcionalidad(147) <> "", UsuarioActual.Empresa.Funcionalidad(147), "")
- SugerirFecha()
+ 'SugerirFecha()
+ If DdlAlmacen.SelectedValue.ToEntero > 0 Then
+ SugiereLoteCaducidad(DdlAlmacen.SelectedValue.ToEntero)
+ End If
End If
GvDatos.DataSource = DtDatos
@@ -3749,7 +3752,7 @@ Partial Class Inventarios_EntregaAlmacen
Protected Sub DdlAlmacen_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlAlmacen.SelectedIndexChanged
If DdlAlmacen.SelectedValue <> "-1" Then
- CargaGvDatos()
+ CargaGvDatos(DdlAlmacen.SelectedValue.ToEntero)
End If
End Sub
@@ -3822,72 +3825,67 @@ Partial Class Inventarios_EntregaAlmacen
#Region "sugerir caducidad"
- Private Sub SugerirFecha()
-
- Dim ObjInventarios As New ClsInventarios()
- Dim FechasExcluidas As New List(Of String)
-
+ Private Sub SugiereLoteCaducidad(CveAlmacen As Integer)
Dim TempDT As New DataTable
+ Dim DtLotesCaducidad As New DataTable
TempDT = DtDatos.Clone
- Dim DtAux As New DataTable
- DtAux = DtDatos.Clone
+ Dim CvePSAnterior As Integer = 0
+ Dim ObjInventarios As New ClsInventarios()
- 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()
+ For Each dr As DataRow In DtDatos.Rows
+ If CBool(dr("AplicaLote")) Then
+ If CvePSAnterior <> dr("CvePS").ToString.ToEntero Then
+ CvePSAnterior = dr("CvePS").ToString.ToEntero
+
+ If ObjInventarios.GetExistenciasCaducidad(dr("CvePS").ToString.ToEntero, CveAlmacen, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa) Then
+ DtLotesCaducidad.Merge(ObjInventarios.DtResultados)
+
+ End If
+ End If
+ End If
Next
ObjInventarios.Dispose()
- DtDatos = TempDT
- End Sub
+ For Each dr As DataRow In DtDatos.Rows
+ If CBool(dr("AplicaLote")) Then
- 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 dtta As DataTable = DtLotesCaducidad.FiltraParametros(String.Format("CvePS = {0}", dr("CvePS")))
- 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 dtta IsNot Nothing AndAlso dtta.Rows.Count > 0 Then
- 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
+ 'recorre que cumplan con la cantidad total a llenar
+ Dim CantidadSurtir As Decimal = dr("CantidadF").ToString.ToDecimal
+ For Each drl As DataRow In dtta.Rows
+ If CantidadSurtir < drl("Cantidad").ToString.ToDecimal Then
+ dr("CantidadF") = CantidadSurtir
+ dr("CantidadC") = CantidadSurtir
+ dr("Lote") = drl("Lote")
+ dr("FechaCaducidad") = drl("FechaCaducidad")
+ TempDT.ImportRow(dr)
+ CantidadSurtir = 0
+ Else
+ CantidadSurtir -= drl("Cantidad").ToString.ToDecimal
+ dr("CantidadF") = drl("Cantidad").ToString.ToDecimal
+ dr("CantidadC") = drl("Cantidad").ToString.ToDecimal
+ dr("Lote") = drl("Lote")
+ dr("FechaCaducidad") = drl("FechaCaducidad")
+ TempDT.ImportRow(dr)
+ End If
+ If CantidadSurtir <= 0 Then Exit For
+ Next
+
+ Else
+ 'error, no hay lote sugerido
End If
+ Else
+ TempDT.ImportRow(dr)
End If
- End If
+
+ Next
+
+
+ DtDatos = TempDT
End Sub
#End Region