public void FinalizaEntradaSalida()
        {
            if (grvEntSalArticulos.Rows.Count > 0)
            {
                decimal costoTotal = 0M;
                foreach (Producto p in ((List<MedNeg.Inventarios.Producto>)Session["invEntSalLsProductos"]))
                {
                    costoTotal += p.costo;
                }
                if (costoTotal <= blInventarios.BuscarCantCreditoLineaCredito(int.Parse(ddlEntSalLineasDeCredito.SelectedValue)))
                {
                    try
                    {
                        int idAlmacen = int.Parse(ddlEntSalAlmacenes.SelectedValue);
                        foreach (Producto p in ((List<MedNeg.Inventarios.Producto>)Session["invEntSalLsProductos"]))
                        {
                            blInventarios.GestionarExistenciaProducto(idAlmacen, p.dbProducto.idProducto, p.lote, p.serie, p.fechaCaducidad, p.cantidad, ddlEntSalConceptoMov.SelectedValue, Convert.ToInt32(ddlEntSalLineasDeCredito.SelectedValue.ToString()));
                        }

                        MedDAL.DAL.inventario inventario = new MedDAL.DAL.inventario();
                        inventario.idLineaCredito = int.Parse(ddlEntSalLineasDeCredito.SelectedValue);
                        inventario.idTipoMovimiento = int.Parse(ddlEntSalTiposMovimiento.SelectedValue);
                        inventario.idAlmacen = idAlmacen;
                        inventario.Observaciones = txtEntSalComentarios.Text;
                        inventario.Fecha = DateTime.Now;
                        inventario.Concepto = ddlEntSalConceptoMov.SelectedValue;
                        inventario.Pedimento = txbPedimento.Text;
                        if (inventario.Concepto == "Salida")
                        {
                            inventario.idAlmacenSalida = int.Parse(ddlEntSalAlmacenSalida.SelectedValue);
                        }

                        List<MedDAL.DAL.inventario_partida> lpartida = new List<MedDAL.DAL.inventario_partida>(); ;
                        MedDAL.DAL.inventario_partida partida;
                        costoTotal = 0M;
                        foreach (Producto p in ((List<MedNeg.Inventarios.Producto>)Session["invEntSalLsProductos"]))
                        {
                            partida = new MedDAL.DAL.inventario_partida();
                            partida.idProducto = p.dbProducto.idProducto;
                            partida.Cantidad = p.cantidad.ToString();
                            partida.Precio = p.costo;
                            partida.Lote = p.lote;
                            partida.NoSerie = p.serie;

                            costoTotal += p.costo;
                            lpartida.Add(partida);
                        }

                        blInventarios.agregarRegistroInventario(inventario, lpartida);
                        
                        foreach (MedDAL.DAL.inventario_partida oInventarioPartida in lpartida)
                        {
                            if (!blInventarios.BuscarAlmacenProductoStocks(idAlmacen, oInventarioPartida.idProducto))
                            {
                                MedDAL.DAL.productos_almacen_stocks oProductoAlmacenStock = new MedDAL.DAL.productos_almacen_stocks();
                                oProductoAlmacenStock.idAlmacen = idAlmacen;
                                oProductoAlmacenStock.idProducto = oInventarioPartida.idProducto;
                                oProductoAlmacenStock.StockMax = 0;
                                oProductoAlmacenStock.StockMin = 0;
                                blInventarios.NuevoProductosAlmacenStock(oProductoAlmacenStock);
                            }

                            List<MedDAL.DAL.recetas_partida_faltantes> lstRetecasPartidaFaltantes = oblRecetasPartidaFaltantes.BuscarPorProductoAlmacen(oInventarioPartida.idProducto, idAlmacen);

                            if (lstRetecasPartidaFaltantes.Count > 0)
                            {
                                foreach (MedDAL.DAL.recetas_partida_faltantes oRecetaPartidaFaltante in lstRetecasPartidaFaltantes)
                                {
                                    oblRecetasPartidaFaltantes.EliminarRegistro(oRecetaPartidaFaltante);
                                }
                            }
                        }

                        if (ddlEntSalConceptoMov.SelectedValue.Equals("Entrada"))
                            blInventarios.DescontarCreditoALinea(int.Parse(ddlEntSalLineasDeCredito.SelectedValue), costoTotal);

                        lbEntSalAvisos.Text = "Proceso finalizado con éxito";

                        Session["invEntSalLsProductos"] = new List<MedNeg.Inventarios.Producto>();

                        LimpiarPantallaEntradaSalida();                        
                    }
                    catch (Exception ex)
                    {
                        lbEntSalAvisos.Text = ex.Message;
                    }
                }
                else
                    lbEntSalAvisos.Text = "Fondos insuficientes en Línea de crédito: " + ddlEntSalLineasDeCredito.SelectedItem.Text;
            }
            else
            {
                if (ddlEntSalConceptoMov.SelectedIndex == 0)
                {
                    lbEntSalAvisos.Text = "La entrada no tiene productos registrados";
                }
                else if (ddlEntSalConceptoMov.SelectedIndex == 1)
                {
                    lbEntSalAvisos.Text = "La salida no tiene productos registrados";
                }
            }
        }
Beispiel #2
0
        public void FinalizaEntradaSalida()
        {
            decimal costoTotal = 0M;

            foreach (Producto p in ((List <MedNeg.Inventarios.Producto>)Session["invEntSalLsProductos"]))
            {
                costoTotal += p.costo;
            }
            if (costoTotal <= blInventarios.BuscarCantCreditoLineaCredito(int.Parse(ddlEntSalLineasDeCredito.SelectedValue)))
            {
                try
                {
                    int idAlmacen = int.Parse(ddlEntSalAlmacenes.SelectedValue);
                    foreach (Producto p in ((List <MedNeg.Inventarios.Producto>)Session["invEntSalLsProductos"]))
                    {
                        blInventarios.GestionarExistenciaProducto(idAlmacen, p.dbProducto.idProducto, p.lote, p.serie, p.fechaCaducidad, p.cantidad, ddlEntSalConceptoMov.SelectedValue, Convert.ToInt32(ddlEntSalLineasDeCredito.SelectedValue.ToString()));
                    }

                    MedDAL.DAL.inventario inventario = new MedDAL.DAL.inventario();
                    inventario.idLineaCredito   = int.Parse(ddlEntSalLineasDeCredito.SelectedValue);
                    inventario.idTipoMovimiento = int.Parse(ddlEntSalTiposMovimiento.SelectedValue);
                    inventario.idAlmacen        = idAlmacen;
                    inventario.Observaciones    = txtEntSalComentarios.Text;
                    inventario.Fecha            = DateTime.Now;
                    inventario.Concepto         = ddlEntSalConceptoMov.SelectedValue;
                    inventario.Pedimento        = txbPedimento.Text;

                    List <MedDAL.DAL.inventario_partida> lpartida = new List <MedDAL.DAL.inventario_partida>();;
                    MedDAL.DAL.inventario_partida        partida;
                    costoTotal = 0M;
                    foreach (Producto p in ((List <MedNeg.Inventarios.Producto>)Session["invEntSalLsProductos"]))
                    {
                        partida            = new MedDAL.DAL.inventario_partida();
                        partida.idProducto = p.dbProducto.idProducto;
                        partida.Cantidad   = p.cantidad.ToString();
                        partida.Precio     = p.costo;
                        partida.Lote       = p.lote;
                        partida.NoSerie    = p.serie;

                        costoTotal += p.costo;
                        lpartida.Add(partida);
                    }

                    blInventarios.agregarRegistroInventario(inventario, lpartida);

                    //Codigo Renard, para que funcione el modulo de inventarios.
                    foreach (MedDAL.DAL.inventario_partida oInventarioPartida in lpartida)
                    {
                        if (!blInventarios.BuscarAlmacenProductoStocks(idAlmacen, oInventarioPartida.idProducto))
                        {
                            MedDAL.DAL.productos_almacen_stocks oProductoAlmacenStock = new MedDAL.DAL.productos_almacen_stocks();
                            oProductoAlmacenStock.idAlmacen  = idAlmacen;
                            oProductoAlmacenStock.idProducto = oInventarioPartida.idProducto;
                            oProductoAlmacenStock.StockMax   = 0;
                            oProductoAlmacenStock.StockMin   = 0;
                            blInventarios.NuevoProductosAlmacenStock(oProductoAlmacenStock);
                        }

                        List <MedDAL.DAL.recetas_partida_faltantes> lstRetecasPartidaFaltantes = oblRecetasPartidaFaltantes.BuscarPorProductoAlmacen(oInventarioPartida.idProducto, idAlmacen);

                        if (lstRetecasPartidaFaltantes.Count > 0)
                        {
                            foreach (MedDAL.DAL.recetas_partida_faltantes oRecetaPartidaFaltante in lstRetecasPartidaFaltantes)
                            {
                                oblRecetasPartidaFaltantes.EliminarRegistro(oRecetaPartidaFaltante);
                            }
                        }
                    }

                    if (ddlEntSalConceptoMov.SelectedValue.Equals("Entrada"))
                    {
                        blInventarios.DescontarCreditoALinea(int.Parse(ddlEntSalLineasDeCredito.SelectedValue), costoTotal);
                    }

                    lbEntSalAvisos.Text = "Proceso finalizado con éxito";
                }
                catch (Exception ex)
                {
                    lbEntSalAvisos.Text = ex.Message;
                }
            }
            else
            {
                lbEntSalAvisos.Text = "Fondos insuficientes en Línea de crédito: " + ddlEntSalLineasDeCredito.SelectedItem.Text;
            }
        }