//Este método le coloca una fecha de baja a la Enfermedad, y se deja de mostrar en la grilla protected void gvEnfermedad_Eliminar(object sender, GridViewDeleteEventArgs e) { String msj1; int codigo = Convert.ToInt32(gv_Enfermedad.Rows[e.RowIndex].Cells[1].Text); String nombre = gv_Enfermedad.Rows[e.RowIndex].Cells[2].Text; stock = new StockMedicamento(); stock = iStock.getCriterioById <StockMedicamento>("", "", codigo).First(); if (stock.stockActual <= 0) { iMed.Delete(codigo); txt_nombreMed.Text = ""; guardado = true; } else { msj1 = "El medicamento tiene stock disponible, no se puede dar de baja"; this.Page.Response.Write("<script language='JavaScript'>window.alert('" + msj1 + "');</script>"); } //En caso que elimine un solo elemento IList <Medicamento> sp = iMed.getPorCriterio <Medicamento>(nombre); gv_Enfermedad.DataSource = sp; gv_Enfermedad.DataBind(); }
//Al seleccionar el medicamento, el lote y la cantidad lo agrega a una grilla //Esta grilla se actualiza cada vez que se agrega un nuevo medicamento //Luego estos datos de la grilla se van a guardar en un movimiento cuando el usuario presione guardar protected void bt_Nuevo_Click(object sender, ImageClickEventArgs e) { //busca el stock del medicamento y verifica disponibilidad StockMedicamento stockDisp = new StockMedicamento(); stockDisp = iStockM.getCriterioById <StockMedicamento>("", "", Convert.ToInt32(txt_codigoMed.Text)).First <StockMedicamento>(); if (Convert.ToInt32(txt_cantidad.Text) <= Convert.ToInt32(txt_stockLote.Text)) { llenar(valor); } else { msj = " Stock Insuficiente en el lote seleccionado "; mostrarMensaje(msj); } //activa como visible la grilla panel_grilla.Visible = true; gv_Movimientos.Visible = true; bt_guardar.Visible = true; bt_cancelar.Visible = true; //Limpia variables txt_cantidad.Text = ""; txt_codigoMed.Text = ""; txt_descripcionMed.Text = ""; txt_disponible.Text = ""; txt_FechaVto.Text = ""; txt_FechElab.Text = ""; txt_stockLote.Text = ""; txt_lote1.Text = ""; }
public override void Update<T>(T entity) { try { StockMedicamento stock = entity as StockMedicamento; dao.SubmitChanges(); } catch (Exception ex) { throw new Exception("Error al guardar" + ex.Message); } // throw new NotImplementedException(); }
public override void save<T>(T entity){ try { StockMedicamento stock = entity as StockMedicamento; dao.StockMedicamentos.InsertOnSubmit(stock); } catch (Exception ex) { throw new Exception("Error al guardar" + ex.Message); } }
protected void bt_guardar_Click(object sender, EventArgs e) { try { remedio = new Medicamento(); stock = new StockMedicamento(); remedio.descripcion = txtName.Text.ToString(); remedio.monoDroga = txtName0.Text.ToString(); remedio.codigo = generarCodigo(); remedio.descripcionAmpliada = txt_ampliada.Text; //Guarda el stock necesario y de alerta para este tipo de medicamento que está creando remedio.stockInicioMes = Convert.ToInt32(txt_stockInicial.Text); remedio.stockMinimo = Convert.ToInt32(txt_stockMinimo.Text); remedio.stockAlerta = Convert.ToInt32(txt_stockAlerta.Text); remedio.stockMaximo = Convert.ToInt32(txt_stockMax.Text); remedio.diasAlertas = Convert.ToInt32(txt_diasAlerta.Text); stock.codigoMedicamento = remedio.codigo; stock.codigoStock = generarCodigoStock(); stock.stockActual = Convert.ToInt32(txt_stockInicial.Text); stock.lote = 4; UnidadMedida um = iUniMed.getPorCriterio <UnidadMedida>(ddl_unidadMed.SelectedValue.ToString()).First <UnidadMedida>(); remedio.unidadMedida = um.codigoUnidadMed; Formato form = iformato.getPorCriterio <Formato>(ddl_Formato.SelectedValue.ToString()).First <Formato>(); remedio.formato = form.codigoPresentacion; iMed.save <Medicamento>(remedio); iStock.save <StockMedicamento>(stock); txtName.Text = ""; txtName0.Text = ""; txt_ampliada.Text = ""; txt_stockInicial.Text = ""; txt_stockInicial.Text = ""; txt_stockMinimo.Text = ""; txt_stockMax.Text = ""; txt_diasAlerta.Text = ""; String msj = "El medicamento ha sido creado correctamente, con el nro: " + remedio.codigo; Intermediario.confirmarCambios(); this.Page.Response.Write("<script language='JavaScript'>window.alert('" + msj + "');</script>"); } catch (Exception) { } }
//Cuando selecciona un medicamento, completa los datos del medicamento protected void completarDatos(object sender, EventArgs e) { int totalActual = 0; String usar = ddl_medicamentos.SelectedValue; remedio = iMed.getPorCriterio <Medicamento>(usar).First <Medicamento>(); txt_descripcionMed.Text = remedio.descripcion; txt_codigoMed.Text = Convert.ToString(remedio.codigo); stockMed = iStockM.getCriterioById <StockMedicamento>("", "", remedio.codigo).First <StockMedicamento>(); listaStkM = iStockM.getCriterioById <StockMedicamento>("", "", remedio.codigo); //calcula la cantidad total de stock foreach (StockMedicamento stk in listaStkM) { if (stk.fechaBaja == null) { totalActual = totalActual + Convert.ToInt32(stk.stockActual); } } txt_disponible.Text = Convert.ToString(totalActual); txt_cantidad.Text = ""; }
//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) { } }
//Cuando selecciona un medicamento, completa los datos del medicamento protected void completarDatos(object sender, EventArgs e) { int totalActual = 0; String usar = ddl_medicamentos.SelectedValue; remedio = iMed.getPorCriterio<Medicamento>(usar).First<Medicamento>(); txt_descripcionMed.Text = remedio.descripcion; txt_codigoMed.Text = Convert.ToString(remedio.codigo); stockMed = iStockM.getCriterioById<StockMedicamento>("","", remedio.codigo).First<StockMedicamento>(); listaStkM = iStockM.getCriterioById<StockMedicamento>("", "", remedio.codigo); //calcula la cantidad total de stock foreach (StockMedicamento stk in listaStkM) { if (stk.fechaBaja == null) totalActual = totalActual + Convert.ToInt32(stk.stockActual); } txt_disponible.Text = Convert.ToString(totalActual); txt_cantidad.Text = ""; }
//Al seleccionar el medicamento, el lote y la cantidad lo agrega a una grilla //Esta grilla se actualiza cada vez que se agrega un nuevo medicamento //Luego estos datos de la grilla se van a guardar en un movimiento cuando el usuario presione guardar protected void bt_Nuevo_Click(object sender, ImageClickEventArgs e) { //busca el stock del medicamento y verifica disponibilidad StockMedicamento stockDisp = new StockMedicamento(); stockDisp = iStockM.getCriterioById<StockMedicamento>("", "",Convert.ToInt32(txt_codigoMed.Text) ).First<StockMedicamento>(); if (Convert.ToInt32(txt_cantidad.Text) <= Convert.ToInt32(txt_stockLote.Text)) { llenar(valor); } else { msj = " Stock Insuficiente en el lote seleccionado "; mostrarMensaje(msj); } //activa como visible la grilla panel_grilla.Visible = true; gv_Movimientos.Visible = true; bt_guardar.Visible = true; bt_cancelar.Visible = true; //Limpia variables txt_cantidad.Text = ""; txt_codigoMed.Text = ""; txt_descripcionMed.Text = ""; txt_disponible.Text = ""; txt_FechaVto.Text = ""; txt_FechElab.Text = ""; txt_stockLote.Text = ""; txt_lote1.Text = ""; }
//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) { } }