public override void save <T>(T entity) { try { DetalleMovimientoStock detmovstk = entity as DetalleMovimientoStock; dao.DetalleMovimientoStocks.InsertOnSubmit(detmovstk); } catch (Exception ex) { throw new Exception("Error al guardar" + ex.Message); } }
//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) { } }
protected void Page_Load(object sender, EventArgs e) { listaMedicamentos = iStockMed.getAll <StockMedicamento>(); tipito = iTipo.getPorCriterio <TipoMovimiento>("Vencimiento").First <TipoMovimiento>(); vencidos.nroMovimiento = generarCodigo(); vencidos.fechaMovimiento = DateTime.Today; vencidos.nroComprobante = 0; vencidos.tipoMovimiento = tipito.codigoTipoMov; iMovStk.save <MovimientoStock>(vencidos); mensajes.Columns.Add("codigo"); mensajes.Columns.Add("descripcion"); mensajes.Columns.Add("mensaje"); mensajes.Columns.Add("fecha"); mensajes.Columns.Add("lote"); // int det = generarCodigoDetalles(); foreach (StockMedicamento m in listaMedicamentos) { Lote lote = iLote.getCriterioById <Lote>("", "", Convert.ToInt32(m.lote)).First <Lote>(); Medicamento remedio = iMedicamento.getCriterioById <Medicamento>("", "", Convert.ToInt32(m.codigoMedicamento)).First <Medicamento>(); DataRow fila = mensajes.NewRow(); dif = DateTime.Today.Subtract(Convert.ToDateTime(lote.fechaVto)); if (m.fechaBaja == null) { //VERIFICAR CUANDO EL MEDICAMENTO YA ESTÉ VENCIDO if (-(dif.Days) <= remedio.diasAlertas) { //Agregar el mensaje a un dto mensaje //msj=new DtoMensaje(); //Si la fecha es igual o menor a la fecha de hoy le doy de baja if (lote.fechaVto <= DateTime.Today) { m.fechaBaja = DateTime.Today; iStockMed.Update <StockMedicamento>(m); fila["codigo"] = m.codigoMedicamento; fila["descripcion"] = remedio.descripcion; fila["fecha"] = lote.fechaVto.ToString(); fila["mensaje"] = "El medicamento con cód: " + m.codigoMedicamento + " está vencido. Fue dado de baja."; fila["lote"] = "Pertenece al lote: " + lote.nroLote; detalle = new DetalleMovimientoStock(); detalle.codDetalle = generarCodigoDetalles(); detalle.cantidad = Convert.ToInt32(m.stockActual); detalle.codigoMedicamento = m.codigoMedicamento; detalle.nroMovimiento = vencidos.nroMovimiento; detalle.nroLote = m.lote; iDetMovStk.save <DetalleMovimientoStock>(detalle); } else { fila["codigo"] = m.codigoMedicamento; fila["descripcion"] = remedio.descripcion; fila["fecha"] = lote.fechaVto.ToString(); fila["mensaje"] = "Faltan " + Convert.ToInt32(-dif.Days) + " días para que el medicamento se venza"; fila["lote"] = "Pertenece al lote: " + lote.nroLote; } mensajes.Rows.Add(fila); } } } Intermediario.confirmarCambios(); if (mensajes.Rows.Count > 0) { panelMensajes.Visible = true; grillaMsjs.DataSource = mensajes; grillaMsjs.DataBind(); grillaMsjs.Visible = true; } }
//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) { } }
protected void Page_Load(object sender, EventArgs e) { listaMedicamentos = iStockMed.getAll<StockMedicamento>(); tipito=iTipo.getPorCriterio<TipoMovimiento>("Vencimiento").First<TipoMovimiento>(); vencidos.nroMovimiento = generarCodigo(); vencidos.fechaMovimiento = DateTime.Today; vencidos.nroComprobante = 0; vencidos.tipoMovimiento = tipito.codigoTipoMov; iMovStk.save<MovimientoStock>(vencidos); mensajes.Columns.Add("codigo"); mensajes.Columns.Add("descripcion"); mensajes.Columns.Add("mensaje"); mensajes.Columns.Add("fecha"); mensajes.Columns.Add("lote"); // int det = generarCodigoDetalles(); foreach (StockMedicamento m in listaMedicamentos) { Lote lote = iLote.getCriterioById<Lote>("", "", Convert.ToInt32(m.lote)).First<Lote>(); Medicamento remedio = iMedicamento.getCriterioById<Medicamento>("", "", Convert.ToInt32(m.codigoMedicamento)).First<Medicamento>(); DataRow fila = mensajes.NewRow(); dif = DateTime.Today.Subtract(Convert.ToDateTime(lote.fechaVto)); if (m.fechaBaja == null) { //VERIFICAR CUANDO EL MEDICAMENTO YA ESTÉ VENCIDO if (-(dif.Days) <= remedio.diasAlertas) { //Agregar el mensaje a un dto mensaje //msj=new DtoMensaje(); //Si la fecha es igual o menor a la fecha de hoy le doy de baja if (lote.fechaVto <= DateTime.Today) { m.fechaBaja = DateTime.Today; iStockMed.Update<StockMedicamento>(m); fila["codigo"] = m.codigoMedicamento; fila["descripcion"] = remedio.descripcion; fila["fecha"] = lote.fechaVto.ToString(); fila["mensaje"] = "El medicamento con cód: " + m.codigoMedicamento + " está vencido. Fue dado de baja."; fila["lote"] = "Pertenece al lote: " + lote.nroLote; detalle = new DetalleMovimientoStock(); detalle.codDetalle = generarCodigoDetalles(); detalle.cantidad = Convert.ToInt32(m.stockActual); detalle.codigoMedicamento = m.codigoMedicamento; detalle.nroMovimiento = vencidos.nroMovimiento; detalle.nroLote = m.lote; iDetMovStk.save<DetalleMovimientoStock>(detalle); } else { fila["codigo"] = m.codigoMedicamento; fila["descripcion"] = remedio.descripcion; fila["fecha"] = lote.fechaVto.ToString(); fila["mensaje"] = "Faltan " + Convert.ToInt32(-dif.Days) + " días para que el medicamento se venza"; fila["lote"] = "Pertenece al lote: " + lote.nroLote; } mensajes.Rows.Add(fila); } } } Intermediario.confirmarCambios(); if (mensajes.Rows.Count > 0) { panelMensajes.Visible = true; grillaMsjs.DataSource = mensajes; grillaMsjs.DataBind(); grillaMsjs.Visible = true; } }
//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) { } }