Imports System.Data Imports Extensiones Partial Class Inventarios_ConsignacionesMaterial Inherits ClsPaginas #Region "P R O P I E D A D E S" Public Property DTmp() As DataTable Get Return CType(ViewState("DTmp"), DataTable) End Get Set(value As DataTable) ViewState("DTmp") = value End Set End Property Public Property CveConcepto() As Integer Get Return CType(ViewState("CveConcepto"), Integer) End Get Set(value As Integer) ViewState("CveConcepto") = value End Set End Property #End Region Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load If Not IsPostBack Then CreaDTCons() InicializarListas() TxtFecha.Text = NowADS().ToString("dd/MM/yyyy") End If End Sub Private Sub CreaDTCons() DTmp = New DataTable DTmp.Columns.Add("No", GetType(Integer)) DTmp.Columns.Add("Cantidad", GetType(Double)) DTmp.Columns.Add("CveUnidadMedida", GetType(Integer)) DTmp.Columns.Add("UnidadMedida", GetType(String)) DTmp.Columns.Add("CveAlmacen", GetType(Integer)) DTmp.Columns.Add("Almacen", GetType(String)) DTmp.Columns.Add("CvePS", GetType(Integer)) DTmp.Columns.Add("PU", GetType(Double)) DTmp.Columns.Add("PS", GetType(String)) DTmp.Columns.Add("Nuevo", GetType(Integer)) DTmp.Columns.Add("CveSeccionAlmacen", GetType(Integer)) End Sub Private Sub AddDTmp(Cantidad As Integer, CveUnidadMedida As Integer, UnidadMedida As String, CvePS As Integer, PS As String, Almacen As String, CveAlmacen As Integer, CveSeccion As Integer) Dim Row As DataRow = Nothing Row = DTmp.NewRow() Row("Cantidad") = Cantidad Row("CveUnidadMedida") = CveUnidadMedida Row("CveAlmacen") = CveAlmacen Row("CveSeccionAlmacen") = If(CveSeccion = 0, -1, CveSeccion) Row("Almacen") = If(CveAlmacen <> -1, Almacen, "Sin Sección") Row("UnidadMedida") = UnidadMedida Row("CvePS") = CvePS Row("PS") = PS Row("Nuevo") = 1 DTmp.Rows.Add(Row) UPGV.Update() End Sub Private Sub InicializarListas() Dim ObjPersonal As New ClsRH Dim productos As New ClsProductosServicios DdlAlmacen.DataSource = GlobalDTAlmacen(UsuarioActual.CveEmpresa) DdlAlmacen.DataBind() DdlAlmacen.Items.Insert(0, New ListItem("Seleccione Almacen.", "-1")) CveConcepto = 7 'Llenar el dropdownlist de Secciones DdlClasificacion.DataSource = GlobalDTClasificaciones(UsuarioActual.CveEmpresa) DdlClasificacion.DataBind() ddlProducto.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa) ddlProducto.DataBind() ddlProducto.Items.Insert(0, New ListItem("Seleccione Producto.", "-1")) If ObjPersonal.GetPersonal(-1, UsuarioActual.CveEmpresa) Then DdlPersonal.DataSource = ObjPersonal.DtResultados DdlPersonal.DataBind() DdlPersonal.Items.Insert(0, New ListItem("Seleccione Personal.", "-1")) End If ObjPersonal.Dispose() productos.Dispose() End Sub Protected Sub btnGuardar_Click(sender As Object, e As EventArgs) Handles btnGuardar.Click If Not DdlPersonal.SelectedValue.ToEntero = -1 Then If GvConsignacion.Rows.Count > 0 Then Dim CveMovimiento As Integer Dim CveMovimientoC As Integer Dim Mov As New ClsInventarios Mov.IniciaTransacSQL() 'Inicia la transacción Dim CvePersonal As Integer = -1 Dim Mensaje As String = "" CvePersonal = DdlPersonal.SelectedValue.ToEntero For Each dr As DataRow In DTmp.FiltraParametros("", DistinctColumns:={"CveAlmacen"}).Rows CveMovimientoC = Mov.AddMovimiento(dr("CveAlmacen").ToString.ToEntero, 6, 1, TxtFecha.Text.ToDate, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, -1, CvePersonal) If CveMovimientoC <= 0 Then Alert("No se pudo almacenar el movimiento correctamente", TipoMensaje.MsgError) Mov.RollBack() 'deshace lo insertado Else For Each gr As GridViewRow In GvConsignacion.Rows If Not gr.FCTextBox("tbCantR").Text.ToString = "" Then If Not Mov.AddMovimientoDetalle(CveMovimientoC, gr.FCTextBox("tbCantR").Text.ToString.ToDecimal, DTmp.Rows(gr.RowIndex)("CveUnidadMedida").ToString.ToEntero, DTmp.Rows(gr.RowIndex)("CvePS").ToString.ToEntero, DTmp.Rows(gr.RowIndex)("PU").ToString.ToEntero, DTmp.Rows(gr.RowIndex)("CveSeccionAlmacen").ToString.ToEntero) Then Mensaje = "Error al guardar los movimientos" Exit For End If End If Next CveMovimiento = Mov.AddMovimiento(dr("CveAlmacen").ToString.ToEntero, 3, 1, TxtFecha.Text.ToDate, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, -1, CvePersonal) If CveMovimiento <= 0 Then Alert("No se pudo almacenar el movimiento correctamente", TipoMensaje.MsgError) Mov.RollBack() 'deshace lo insertado Else For Each gr As GridViewRow In GvConsignacion.Rows If Not gr.FCTextBox("tbCantR").Text.ToString = "" Then If Not Mov.AddMovimientoDetalle(CveMovimiento, gr.FCTextBox("tbCantR").Text.ToString.ToDecimal, DTmp.Rows(gr.RowIndex)("CveUnidadMedida").ToString.ToEntero, DTmp.Rows(gr.RowIndex)("CvePS").ToString.ToEntero, DTmp.Rows(gr.RowIndex)("PU").ToString.ToEntero, DTmp.Rows(gr.RowIndex)("CveSeccionAlmacen").ToString.ToEntero) Then Mensaje = "Error al guardar los movimientos" Exit For End If End If Next End If End If Next If Mensaje = "" Then Mov.Commit() ' aplica los movimientos insertados Alert("Movimientos Registrado", TipoMensaje.MsgInformacion) Else Mov.RollBack() 'deshace lo insertado Alert(Mensaje, TipoMensaje.MsgError) End If If Mov.GetConsignaciones(UsuarioActual.CveEmpresa, DdlPersonal.SelectedValue.ToEntero) Then GvConsignacion.DataSource = Mov.DtResultados GvConsignacion.DataBind() DTmp = Mov.DtResultados End If Mov.Dispose() 'elimino la instancia End If End If End Sub Protected Sub lbAdd_Click(sender As Object, e As EventArgs) Handles lbAdd.Click Dim ObjInventario As New ClsInventarios Dim Existencia As Double = ObjInventario.GetExistenciasPS(ddlProducto.SelectedValue.ToEntero, ddlUnidad.SelectedValue.ToEntero, UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero) ObjInventario.GetConsignaciones(UsuarioActual.CveEmpresa, -1) Dim DTmpC As DataTable = ObjInventario.DtResultados Dim Total As Double = Existencia - If(DTmpC.FiltraParametros("CvePS=" & ddlProducto.SelectedValue).Rows.Count > 0, DTmpC.FiltraParametros("CvePS=" & ddlProducto.SelectedValue).SUM("Cantidad"), 0) - If(DTmp.FiltraParametros("Nuevo=1").Rows.Count > 0, DTmp.FiltraParametros("Nuevo=1").SUM("Cantidad"), 0) If CveConcepto = 7 Then If tbCant.Text.ToDouble >= Total Then Alert("No hay existencia suficiente en el Inventario.", TipoMensaje.MsgInformacion) ObjInventario.Dispose() Return End If 'ElseIf CveConcepto = 6 Then ' If Not DdlPersonal.SelectedValue.ToEntero = -1 Then ' If DTmp.FiltraParametros("CvePS=" & ddlProducto.SelectedValue).SUM("Cantidad") < tbCant.Text.ToDouble Then ' Alert("No hay suficiente material consignado.") ' ObjInventario.Dispose() ' Return ' End If ' Else ' Alert("Seleccione Personal.") ' Return ' End If End If AddDTmp(tbCant.Text.ToEntero, ddlUnidad.SelectedValue.ToEntero, ddlUnidad.SelectedItem.ToString, ddlProducto.SelectedValue.ToEntero, ddlProducto.SelectedItem.ToString, DdlAlmacen.SelectedItem.ToString, DdlAlmacen.SelectedValue.ToEntero, DdlSeccion.SelectedValue.ToEntero) tbCant.Text = "" GvConsignacion.DataSource = DTmp GvConsignacion.DataBind() ObjInventario.Dispose() End Sub Protected Sub DdlClasificacion_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlClasificacion.SelectedIndexChanged ddlProducto.DataSource = GlobalDTPSSimplificado(UsuarioActual.CveEmpresa, CveClasificacion:=DdlClasificacion.SelectedValue.ToEntero) ddlProducto.DataBind() ddlProducto.Items.Insert(0, New ListItem("----", "-1")) End Sub Protected Sub ddlProducto_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ddlProducto.SelectedIndexChanged Dim ObjProducto As New ClsProductosServicios If ObjProducto.GetPSEquivalencias(ddlProducto.SelectedValue.ToEntero, UsuarioActual.CveEmpresa) Then ddlUnidad.DataSource = ObjProducto.DtResultados ddlUnidad.DataBind() End If ObjProducto.Dispose() UPGV.Update() End Sub Protected Sub DdlAlmacen_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlAlmacen.SelectedIndexChanged DdlSeccion.DataSource = GlobalDTSeccionAlmacen(UsuarioActual.CveEmpresa, DdlAlmacen.SelectedValue.ToEntero) DdlSeccion.DataBind() DdlSeccion.Items.Insert(0, New ListItem("Seleccione Sección.", "-1")) UPEncabezado.Update() End Sub Protected Sub DdlPersonal_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlPersonal.SelectedIndexChanged Dim ObjInventario As New ClsInventarios If ObjInventario.GetConsignaciones(UsuarioActual.CveEmpresa, DdlPersonal.SelectedValue.ToEntero) Then GvConsignacion.DataSource = ObjInventario.DtResultados DTmp = ObjInventario.DtResultados GvConsignacion.DataBind() End If ObjInventario.Dispose() UPGV.Update() End Sub Protected Sub btnGuardarMa_Click(sender As Object, e As EventArgs) Handles btnGuardarMa.Click Dim Mov As New ClsInventarios If Not DdlAlmacen.SelectedValue.ToEntero = -1 Then If Not DdlPersonal.SelectedValue.ToEntero = -1 Then If GvConsignacion.Rows.Count > 0 Then Dim CveMovimiento As Integer Dim Mensaje As String = "" Mov.IniciaTransacSQL() 'Inicia la transacción Dim CvePersonal As Integer = -1 CvePersonal = DdlPersonal.SelectedValue.ToEntero For Each dr As DataRow In DTmp.FiltraParametros("", DistinctColumns:={"CveAlmacen"}).Rows CveMovimiento = Mov.AddMovimiento(dr("CveAlmacen").ToString.ToEntero, 6, 1, TxtFecha.Text.ToDate, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, -1, CvePersonal) If CveMovimiento <= 0 Then Alert("No se pudo almacenar el movimiento correctamente", TipoMensaje.MsgError) Mov.RollBack() 'deshace lo insertado Else For Each gr As GridViewRow In GvConsignacion.Rows If Not gr.FCTextBox("tbCantR").Text.ToString = "" Then If Not Mov.AddMovimientoDetalle(CveMovimiento, gr.FCTextBox("tbCantR").Text.ToString.ToDecimal, DTmp.Rows(gr.RowIndex)("CveUnidadMedida").ToString.ToEntero, DTmp.Rows(gr.RowIndex)("CvePS").ToString.ToEntero, DTmp.Rows(gr.RowIndex)("PU").ToString.ToEntero, DTmp.Rows(gr.RowIndex)("CveSeccionAlmacen").ToString.ToEntero) Then Mensaje = "Error al guardar los movimientos" Exit For End If End If Next End If Next If Mensaje = "" Then Mov.Commit() ' aplica los movimientos insertados Alert("Movimientos Registrado", TipoMensaje.MsgInformacion) Else Mov.RollBack() 'deshace lo insertado Alert(Mensaje, TipoMensaje.MsgError) End If ' inicializarTablas() If Mov.GetConsignaciones(UsuarioActual.CveEmpresa, DdlPersonal.SelectedValue.ToEntero) Then GvConsignacion.DataSource = Mov.DtResultados GvConsignacion.DataBind() DTmp = Mov.DtResultados End If End If Else Alert("No hay registros por guardar.", TipoMensaje.MsgInformacion) End If Else Alert("Seleccione un Almacén.", TipoMensaje.MsgAdvertencia) End If Mov.Dispose() 'elimino la instancia UPGV.Update() End Sub Protected Sub cbEC_CheckedChanged(sender As Object, e As EventArgs) Handles cbEC.CheckedChanged If Not DdlPersonal.SelectedValue.ToEntero = -1 Then Dim ObjInventario As New ClsInventarios If ObjInventario.GetConsignaciones(UsuarioActual.CveEmpresa, DdlPersonal.SelectedValue.ToEntero) Then GvConsignacion.DataSource = ObjInventario.DtResultados DTmp = ObjInventario.DtResultados GvConsignacion.DataBind() End If ObjInventario.Dispose() UPGV.Update() End If CveConcepto = 6 GvConsignacion.Columns(0).Visible = True btnGuardar.Visible = True btnGuardarMa.Visible = True btnGuardarC.Visible = False AddControls.Visible = False ColR.Visible = True UPEncabezado.Update() End Sub Protected Sub cbSC_CheckedChanged(sender As Object, e As EventArgs) Handles cbSC.CheckedChanged CveConcepto = 7 btnGuardar.Visible = False btnGuardarMa.Visible = False btnGuardarC.Visible = True GvConsignacion.Columns(0).Visible = False UPGV.Update() AddControls.Visible = True ColR.Visible = False UPEncabezado.Update() End Sub Protected Sub btnGuardarC_Click(sender As Object, e As EventArgs) Handles btnGuardarC.Click Dim Mov As New ClsInventarios If Not DdlPersonal.SelectedValue.ToEntero = -1 AndAlso DTmp.FiltraParametros("Nuevo=1").Rows.Count > 0 Then If GvConsignacion.Rows.Count > 0 Then Dim CveMovimiento As Integer Dim CvePersonal As Integer = -1 Mov.IniciaTransacSQL() 'Inicia la transacción CvePersonal = DdlPersonal.SelectedValue.ToEntero For Each dr As DataRow In DTmp.FiltraParametros("Nuevo=1", DistinctColumns:={"CveAlmacen"}).Rows CveMovimiento = Mov.AddMovimiento(dr("CveAlmacen").ToString.ToEntero, 7, 1, TxtFecha.Text.ToDate, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, -1, -1, -1, -1, -1, CvePersonal) If CveMovimiento <= 0 Then Alert("No se pudo almacenar el movimiento correctamente", TipoMensaje.MsgError) Mov.RollBack() 'deshace lo insertado Else Dim Mensaje As String = "" For Each row As DataRow In DTmp.FiltraParametros("Nuevo=1").Rows If Not Mov.AddMovimientoDetalle(CveMovimiento, row("Cantidad").ToString.ToDecimal, row("CveUnidadMedida").ToString.ToEntero, row("CvePS").ToString.ToEntero, row("PU").ToString.ToDecimal, row("CveSeccionAlmacen").ToString.ToEntero) Then Mensaje = "Error al guardar los movimientos" Exit For End If Next If Mensaje = "" Then Mov.Commit() ' aplica los movimientos insertados Alert("Movimientos Registrado", TipoMensaje.MsgInformacion) Else Mov.RollBack() 'deshace lo insertado Alert(Mensaje, TipoMensaje.MsgError) End If End If Next If Mov.GetConsignaciones(UsuarioActual.CveEmpresa, DdlPersonal.SelectedValue.ToEntero) Then GvConsignacion.DataSource = Mov.DtResultados GvConsignacion.DataBind() DTmp = Mov.DtResultados End If End If Else Alert("No hay registros por guardar.", TipoMensaje.MsgInformacion) End If Mov.Dispose() 'elimino la instancia End Sub Protected Sub GvConsignacion_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GvConsignacion.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then If e.Row.DBCampo("Nuevo").ToEntero = 0 Then e.Row.FCImageButton("imgD").Visible = False e.Row.FCTextBox("tbCantR").Attributes.Add("onchange", String.Format("ValidarCantidad(this,{0})", e.Row.DBCampo("Cantidad"))) End If End If End Sub Protected Sub GvConsignacion_RowDeleting(sender As Object, e As GridViewDeleteEventArgs) Handles GvConsignacion.RowDeleting DTmp.Rows.RemoveAt(e.RowIndex) GvConsignacion.DataSource = DTmp GvConsignacion.DataBind() End Sub End Class