public override void save <T>(T entity) { try { MovimientoStock movstk = entity as MovimientoStock; dao.MovimientoStocks.InsertOnSubmit(movstk); //dao.DetalleMovimientoStocks.InsertOnSubmit(movstk); } catch (Exception ex) { throw new Exception("Error al guardar" + ex.Message); } }
public void Test_MovimientoStock_Salidad() { MovimientoStock movIngreso = new MovimientoStock ( TipoMovimientoStock.SalidaStock , stock2 , 20 , "Factura1" , DateTime.Now , 1 ); Assert.AreEqual(0, stock2.Cantidad); Assert.AreEqual(100, stock1.Articulo.CantidadStock); }
public void Test_MovimientoStock_Ingreso() { MovimientoStock movIngreso = new MovimientoStock ( TipoMovimientoStock.IngresoStock , stock1 , 10 , "Remito1" , DateTime.Now , 1 ); Assert.AreEqual(110, stock1.Cantidad); Assert.AreEqual(130, stock1.Articulo.CantidadStock); }
//Busca los stockMovimientos asociados a ese lote //Si existen stockMedicamentos-->Actualizar ese stock existente //Si no existe stockMedicamento-->Crear un nuevo stockMedicamento e indicarle el stock //Guarda el movimiento generado con todos sus detalles protected void bt_guardar_Click(object sender, EventArgs e) { try { numerogenerado = generarCodigo(); String tipoM = ddl_tipoMovE.SelectedValue; //Busca el tipo de movimiento seleccionado tipoMov = iTM.getPorCriterio <TipoMovimiento>(tipoM).First <TipoMovimiento>(); //Crea el movimiento DetalleMovimientoStock f; MovimientoStock movimiento = new MovimientoStock(); IList <StockMedicamento> stockM; //Generaciòn del movimiento movimiento.fechaMovimiento = DateTime.Now.Date; movimiento.nroMovimiento = numerogenerado; // generarCodigo(); //Este tipo=1 indica que son movimienots de tipo entrada movimiento.tipoMovimiento = tipoMov.codigoTipoMov; movimiento.nroComprobante = int.Parse(txt_comprobante.Text); //Guarda el movimiento de stock iMovStk.save <MovimientoStock>(movimiento); Intermediario.confirmarCambios(); DataTable dt = Session["DataTableMovimientosE"] as DataTable; //Guarda los elementos de la grilla--crea un detalle para cada uno foreach (DataRow row in dt.Rows) { f = new DetalleMovimientoStock(); f.codigoMedicamento = Convert.ToInt32(row["codigo"]); f.cantidad = Convert.ToInt32(row["cantidad"]); f.nroLote = Convert.ToInt32(row["lote"]); f.codDetalle = generarCodigoDetalles(); f.nroMovimiento = movimiento.nroMovimiento; iDetMovStk.save <DetalleMovimientoStock>(f); Intermediario.confirmarCambios(); //Busca el stock actual para el codigo seleccionado stockM = iStockM.getCriterioById <StockMedicamento>("", "", Convert.ToInt32(Convert.ToInt32(row["codigo"]))); //Verifica si tiene creado stock para ese lote bool existe = false; foreach (StockMedicamento stk in stockM) { if (stk.lote == Convert.ToInt32(row["lote"])) { existe = true; } } if (stockM.Count == 0 || existe == false) { stockNuevo = new StockMedicamento(); stockNuevo.codigoMedicamento = Convert.ToInt32(row["codigo"]); stockNuevo.codigoStock = generarCodigoStock(); stockNuevo.stockActual = Convert.ToInt32(row["cantidad"]); stockNuevo.lote = Convert.ToInt32(row["lote"]); iStockM.save <StockMedicamento>(stockNuevo); } else { StockMedicamento stockMed = stockM.First <StockMedicamento>(); // = iStockM.getCriterioById<StockMedicamento>("", "", Convert.ToInt32(Convert.ToInt32(row["codigo"]))).First<StockMedicamento>(); stockMed.stockActual = stockMed.stockActual + Convert.ToInt32(row["cantidad"]); iStockM.Update <StockMedicamento>(stockMed); } Intermediario.confirmarCambios(); } msj = "El Movimiento ha sido creado correctamente, con el nro: " + numerogenerado; Session["DataTableMovimientosE"] = null; txt_comprobante.Text = ""; txt_cantidad.Text = ""; txt_descripcionMed.Text = ""; txt_codigoMed.Text = ""; txt_lote1.Text = ""; panelMedicamento.Visible = false; panel_grilla.Visible = false; gv_Movimientos.Visible = false; bt_Nuevo.Visible = false; bt_cancel.Visible = false; bt_guardar.Visible = false; bt_cancelar.Visible = false; ddl_lotes.Items.Clear(); ddl_medicamentos.Items.Clear(); //ddl_tipoMovE.Items.Clear(); mostrarMensaje(msj); } catch (Exception) { } }
//Guarda el movimiento generado con todos sus detalles. Actualiza el stock protected void bt_guardar_Click(object sender, EventArgs e) { try { numerogenerado = generarCodigo(); String tipoM = ddl_tipMov.SelectedValue; tipoMov = iTM.getPorCriterio<TipoMovimiento>(tipoM).First<TipoMovimiento>(); DetalleMovimientoStock f; MovimientoStock movimiento = new MovimientoStock(); StockMedicamento stockM; stockM = new StockMedicamento(); //guarda la cabecera el movimiento movimiento.fechaMovimiento = DateTime.Now.Date; movimiento.nroMovimiento = numerogenerado; movimiento.tipoMovimiento = tipoMov.codigoTipoMov; movimiento.nroComprobante = int.Parse(txt_comprobante.Text); iMovStk.save<MovimientoStock>(movimiento); Intermediario.confirmarCambios(); // guarda los detalles del movimiento DataTable dt = Session["DataTableMovimientos"] as DataTable; foreach (DataRow row in dt.Rows) { f= new DetalleMovimientoStock(); f.codigoMedicamento = Convert.ToInt32(row["codigo"]); f.cantidad = Convert.ToInt32(row["cantidad"]); f.nroLote = Convert.ToInt32(row["lote"]); f.codDetalle = generarCodigoDetalles(); f.nroMovimiento = movimiento.nroMovimiento; iDetMovStk.save<DetalleMovimientoStock>(f); Intermediario.confirmarCambios(); stockM = iStockM.getCriterioById<StockMedicamento>("", "", Convert.ToInt32(Convert.ToInt32(row["codigo"]))).First<StockMedicamento>(); listaStkM1 = iStockM.getCriterioById<StockMedicamento>("", "", Convert.ToInt32(Convert.ToInt32(row["codigo"]))); //actualiza el stock del medicamento foreach (StockMedicamento stk in listaStkM1) { if (stk.lote == Convert.ToInt32(Convert.ToInt32(row["lote"]))) { stk.stockActual = stk.stockActual - Convert.ToInt32(row["cantidad"]); if (stk.stockActual == 0) msj = "Algunos Medicamentos quedaron con stock en cero. "; iStockM.Update<StockMedicamento>(stk); Intermediario.confirmarCambios(); mostrarMensaje(msj); } } } msj = "El Movimiento ha sido creado correctamente, con el nro: " + numerogenerado ; mostrarMensaje(msj); //limpia variables y pantalla txt_comprobante.Text = ""; txt_cantidad.Text = ""; txt_descripcionMed.Text = ""; txt_codigoMed.Text = ""; txt_lote1.Text = ""; panelMedicamento.Visible = false; panel_grilla.Visible = false; gv_Movimientos.Visible = false; bt_guardar.Visible = false; bt_cancelar.Visible = false; } catch (Exception) { } }
//Guarda el movimiento generado con todos sus detalles. Actualiza el stock protected void bt_guardar_Click(object sender, EventArgs e) { try { numerogenerado = generarCodigo(); String tipoM = ddl_tipMov.SelectedValue; tipoMov = iTM.getPorCriterio <TipoMovimiento>(tipoM).First <TipoMovimiento>(); DetalleMovimientoStock f; MovimientoStock movimiento = new MovimientoStock(); StockMedicamento stockM; stockM = new StockMedicamento(); //guarda la cabecera el movimiento movimiento.fechaMovimiento = DateTime.Now.Date; movimiento.nroMovimiento = numerogenerado; movimiento.tipoMovimiento = tipoMov.codigoTipoMov; movimiento.nroComprobante = int.Parse(txt_comprobante.Text); iMovStk.save <MovimientoStock>(movimiento); Intermediario.confirmarCambios(); // guarda los detalles del movimiento DataTable dt = Session["DataTableMovimientos"] as DataTable; foreach (DataRow row in dt.Rows) { f = new DetalleMovimientoStock(); f.codigoMedicamento = Convert.ToInt32(row["codigo"]); f.cantidad = Convert.ToInt32(row["cantidad"]); f.nroLote = Convert.ToInt32(row["lote"]); f.codDetalle = generarCodigoDetalles(); f.nroMovimiento = movimiento.nroMovimiento; iDetMovStk.save <DetalleMovimientoStock>(f); Intermediario.confirmarCambios(); stockM = iStockM.getCriterioById <StockMedicamento>("", "", Convert.ToInt32(Convert.ToInt32(row["codigo"]))).First <StockMedicamento>(); listaStkM1 = iStockM.getCriterioById <StockMedicamento>("", "", Convert.ToInt32(Convert.ToInt32(row["codigo"]))); //actualiza el stock del medicamento foreach (StockMedicamento stk in listaStkM1) { if (stk.lote == Convert.ToInt32(Convert.ToInt32(row["lote"]))) { stk.stockActual = stk.stockActual - Convert.ToInt32(row["cantidad"]); if (stk.stockActual == 0) { msj = "Algunos Medicamentos quedaron con stock en cero. "; } iStockM.Update <StockMedicamento>(stk); Intermediario.confirmarCambios(); mostrarMensaje(msj); } } } msj = "El Movimiento ha sido creado correctamente, con el nro: " + numerogenerado; mostrarMensaje(msj); //limpia variables y pantalla txt_comprobante.Text = ""; txt_cantidad.Text = ""; txt_descripcionMed.Text = ""; txt_codigoMed.Text = ""; txt_lote1.Text = ""; panelMedicamento.Visible = false; panel_grilla.Visible = false; gv_Movimientos.Visible = false; bt_guardar.Visible = false; bt_cancelar.Visible = false; } catch (Exception) { } }
//Busca los stockMovimientos asociados a ese lote //Si existen stockMedicamentos-->Actualizar ese stock existente //Si no existe stockMedicamento-->Crear un nuevo stockMedicamento e indicarle el stock //Guarda el movimiento generado con todos sus detalles protected void bt_guardar_Click(object sender, EventArgs e) { try { numerogenerado = generarCodigo(); String tipoM = ddl_tipoMovE.SelectedValue; //Busca el tipo de movimiento seleccionado tipoMov = iTM.getPorCriterio<TipoMovimiento>(tipoM).First<TipoMovimiento>(); //Crea el movimiento DetalleMovimientoStock f; MovimientoStock movimiento = new MovimientoStock(); IList<StockMedicamento> stockM; //Generaciòn del movimiento movimiento.fechaMovimiento = DateTime.Now.Date; movimiento.nroMovimiento = numerogenerado; // generarCodigo(); //Este tipo=1 indica que son movimienots de tipo entrada movimiento.tipoMovimiento = tipoMov.codigoTipoMov; movimiento.nroComprobante = int.Parse(txt_comprobante.Text); //Guarda el movimiento de stock iMovStk.save<MovimientoStock>(movimiento); Intermediario.confirmarCambios(); DataTable dt = Session["DataTableMovimientosE"] as DataTable; //Guarda los elementos de la grilla--crea un detalle para cada uno foreach (DataRow row in dt.Rows) { f = new DetalleMovimientoStock(); f.codigoMedicamento = Convert.ToInt32(row["codigo"]); f.cantidad = Convert.ToInt32(row["cantidad"]); f.nroLote = Convert.ToInt32(row["lote"]); f.codDetalle = generarCodigoDetalles(); f.nroMovimiento = movimiento.nroMovimiento; iDetMovStk.save<DetalleMovimientoStock>(f); Intermediario.confirmarCambios(); //Busca el stock actual para el codigo seleccionado stockM = iStockM.getCriterioById<StockMedicamento>("", "", Convert.ToInt32(Convert.ToInt32(row["codigo"]))); //Verifica si tiene creado stock para ese lote if (stockM.Count == 0) { stockNuevo = new StockMedicamento(); stockNuevo.codigoMedicamento = Convert.ToInt32(row["codigo"]); stockNuevo.codigoStock = generarCodigoStock(); stockNuevo.stockActual = Convert.ToInt32(row["cantidad"]); stockNuevo.lote = Convert.ToInt32(row["lote"]); iStockM.save<StockMedicamento>(stockNuevo); } else { StockMedicamento stockMed = stockM.First<StockMedicamento>(); // = iStockM.getCriterioById<StockMedicamento>("", "", Convert.ToInt32(Convert.ToInt32(row["codigo"]))).First<StockMedicamento>(); stockMed.stockActual = stockMed.stockActual + Convert.ToInt32(row["cantidad"]); iStockM.Update<StockMedicamento>(stockMed); } Intermediario.confirmarCambios(); } msj = "El Movimiento ha sido creado correctamente, con el nro: " + numerogenerado; Session["DataTableMovimientosE"] = null; txt_comprobante.Text = ""; txt_cantidad.Text = ""; txt_descripcionMed.Text = ""; txt_codigoMed.Text = ""; txt_lote1.Text = ""; panelMedicamento.Visible = false; panel_grilla.Visible = false; gv_Movimientos.Visible = false; bt_Nuevo.Visible = false; bt_cancel.Visible = false; bt_guardar.Visible = false; bt_cancelar.Visible = false; ddl_lotes.Items.Clear(); ddl_medicamentos.Items.Clear(); //ddl_tipoMovE.Items.Clear(); mostrarMensaje(msj); } catch (Exception) { } }