//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();
        }
Example #2
0
        //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          = "";
        }
Example #3
0
 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();
 }
Example #4
0
     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);
        }
    
    }
Example #5
0
        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) { }
        }
Example #6
0
        //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   = "";
        }
Example #7
0
        //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) { }
        }
Example #8
0
        //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 = "";
        }
Example #9
0
        //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 = "";
        }
Example #10
0
        //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) { }
        }
Example #11
0
        //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) { }
        }