Exemplo n.º 1
0
        protected void dgTransferencias_CustomButtonCallback(object sender, ASPxGridViewCustomButtonCallbackEventArgs e)
        {
            switch (e.ButtonID)
            {
            case "Detail":
                TransferenciaStock ts = new TransferenciaStock();
                using (var db = new UnidadDeTrabajo())
                {
                    ts = db.TransferenciaStock.ObtenerPorId(int.Parse(dgTransferencias.GetRowValues(e.VisibleIndex, "Id").ToString()));

                    almacenOrigen.DataSource = db.Almacen.ObtenerAlmacenes();
                    almacenOrigen.ValueField = "Id";
                    almacenOrigen.TextField  = "Descripcion";
                    almacenOrigen.DataBind();

                    almacenDestino.DataSource = db.Almacen.ObtenerAlmacenes();
                    almacenDestino.ValueField = "Id";
                    almacenDestino.TextField  = "Descripcion";
                    almacenDestino.DataBind();

                    productosTransferidos.DataSource = db.TransferenciaStockDetalle.ObtenerListaTransferenciaDetalle_x_IdTransf(ts.Id);
                    productosTransferidos.DataBind();
                }
                mensaje.Text                      = "";
                nroTransferencia.Text             = ts.Id.ToString();
                fecha.Value                       = ts.FechaCreacion;
                almacenOrigen.Value               = ts.IdAlmacenOrigen;
                almacenOrigen.Enabled             = false;
                almacenDestino.Value              = ts.IdAlmacenDestino;
                almacenDestino.Enabled            = false;
                txtMotivo.Text                    = ts.Motivo;
                txtMotivo.Enabled                 = false;
                producto.Value                    = null;
                producto.Enabled                  = false;
                transferir.Value                  = null;
                transferir.Enabled                = false;
                btnAgregarMaterial.ClientVisible  = false;
                ASPxTransferencias.ShowOnPageLoad = true;
                break;
            }
        }
Exemplo n.º 2
0
        protected void btnAgregarMaterial_Click(object sender, EventArgs e)
        {
            int      idStock          = 0;
            int      cantTransferir   = 0;
            Stock    stkOrigen        = new Stock();
            Stock    stkDestino       = new Stock();
            int      idAlmacenOrigen  = 0;
            int      idAlmacenDestino = 0;
            DateTime fecTransferencia = DateTime.Now;

            //' validaciones:

            mensaje.Text = "";
            if (int.Parse(producto.Value.ToString()) <= 0)
            {
                mensaje.Text = "Error: No seleccionó almacen o producto"; return;
            }


            idAlmacenOrigen  = Convert.ToInt32(almacenOrigen.Value);
            idAlmacenDestino = Convert.ToInt32(almacenDestino.Value);

            ObtenerMaterialesPorAlmacen();

            if (idAlmacenOrigen == idAlmacenDestino)
            {
                mensaje.Text = "Error: los almacenes no deben ser iguales"; return;
            }

            if (idAlmacenOrigen == -1)
            {
                mensaje.Text = "Error: Debe seleccionar almacen origen"; return;
            }

            if (idAlmacenDestino == -1)
            {
                mensaje.Text = "Error: Debe seleccionar almacen destino"; return;
            }

            if (!int.TryParse(transferir.Text, out cantTransferir))
            {
                mensaje.Text = "Error: Cantidad inválida"; return;
            }


            //' controlando la cantidad en origen versus lo que se quiere transferir:

            using (var db = new UnidadDeTrabajo())
            {
                idStock    = db.Stock.Stock_leerId(int.Parse(producto.Value.ToString()), idAlmacenOrigen);
                stkOrigen  = db.Stock.Stock_leer_x_Id(idStock);
                stkDestino = db.Stock.Stock_leer(stkOrigen.IdMaterial, idAlmacenDestino);
            }

            if (stkOrigen.Stock1 < cantTransferir)
            {
                mensaje.Text = "Error: Cantidad mayor al stock";
                return;
            }
            else
            {
                stkOrigen.Stock1 -= cantTransferir;
                using (var db = new UnidadDeTrabajo())
                {
                    db.Stock.Actualizar(stkOrigen);
                    db.Grabar();
                }
                if (stkDestino != null)
                {
                    stkDestino.Stock1 += cantTransferir;
                    using (var db = new UnidadDeTrabajo())
                    {
                        db.Stock.Actualizar(stkDestino);
                        db.Grabar();
                    }
                }
                else
                {
                    stkDestino = new Stock
                    {
                        IdMaterial = stkOrigen.IdMaterial,
                        IdAlmacen  = idAlmacenDestino,
                        Stock1     = cantTransferir
                    };

                    using (var db = new UnidadDeTrabajo())
                    {
                        db.Stock.Insertar(stkDestino);
                        db.Grabar();
                    }
                }
            }

            //' agregando cabecera de transferencia:

            if (nroTransferencia.Text == "")
            {
                //    ' es la 1ra vez q agrega un item
                TransferenciaStock cabecera = new TransferenciaStock
                {
                    IdAlmacenOrigen  = idAlmacenOrigen,
                    IdAlmacenDestino = idAlmacenDestino,
                    Fecha            = fecTransferencia,
                    IdUsuario        = Session["IdUserActive"] != null?int.Parse(Session["IdUserActive"].ToString()) : 1,
                                           FechaCreacion = DateTime.Now,
                                           Motivo        = txtMotivo.Text
                };

                using (var db = new UnidadDeTrabajo())
                {
                    db.TransferenciaStock.Insertar(cabecera);
                    db.Grabar();
                }

                nroTransferencia.Text  = cabecera.Id.ToString();
                almacenOrigen.Enabled  = false;
                almacenDestino.Enabled = false;
                fecha.Enabled          = false;
                txtMotivo.Enabled      = false;

                CargarTransferencias_Lista();
            }

            //' agregando detalle de transferencia:

            TransferenciaStockDetalle detalle = new TransferenciaStockDetalle
            {
                IdTransferenciaStock = Convert.ToInt32(nroTransferencia.Text),
                IdMaterial           = stkOrigen.IdMaterial,
                Cantidad             = cantTransferir,
                FechaCreacion        = DateTime.Now
            };

            using (var db = new UnidadDeTrabajo())
            {
                db.TransferenciaStockDetalle.Insertar(detalle);
                db.Grabar();
            }


            transferir.Text      = "";
            StockDisponible.Text = "";
            ObtenerMaterialesPorAlmacen();
            producto.Value = null;
            //' actualizando lista de productos agregados
            MaterialesTransferidos_actualizar();
        }