Beispiel #1
0
        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) { }
        }