From 81bbd187667779cab85f0b5a6ca92f906dbbd831 Mon Sep 17 00:00:00 2001 From: rrene Date: Wed, 18 Nov 2020 22:46:57 -0700 Subject: [PATCH] - sugiere la fecha de caducidad y lote --- Inventarios/EntregaAlmacen.aspx.vb | 76 +++++++++++++++++++++++++++--- 1 file changed, 70 insertions(+), 6 deletions(-) diff --git a/Inventarios/EntregaAlmacen.aspx.vb b/Inventarios/EntregaAlmacen.aspx.vb index 2f141f651..d788b98e2 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,13 +3825,74 @@ Partial Class Inventarios_EntregaAlmacen #Region "sugerir caducidad" + Private Sub SugiereLoteCaducidad(CveAlmacen As Integer) + Dim TempDT As New DataTable + Dim DtLotesCaducidad As New DataTable + TempDT = DtDatos.Clone + Dim CvePSAnterior As Integer = 0 + Dim ObjInventarios As New ClsInventarios() + + 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() + + For Each dr As DataRow In DtDatos.Rows + If CBool(dr("AplicaLote")) Then + + Dim dtta As DataTable = DtLotesCaducidad.FiltraParametros(String.Format("CvePS = {0}", dr("CvePS"))) + + If dtta IsNot Nothing AndAlso dtta.Rows.Count > 0 Then + + '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) + 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 + Next + + Else + 'error, no hay lote sugerido + End If + Else + TempDT.ImportRow(dr) + End If + + Next + + + DtDatos = TempDT + End Sub + Private Sub SugerirFecha() Dim ObjInventarios As New ClsInventarios() Dim FechasExcluidas As New List(Of String) Dim TempDT As New DataTable - TempDT = DtDatos.Clone + TempDT = DtDatos.Copy Dim DtAux As New DataTable DtAux = DtDatos.Clone