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; } }
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(); }