public static void renovarMateriasPrimas(DataTable MateriaPrima, DataTable MateriaPrimaXIntermedio, DataTable ProductosIntermedio, double cantidad, int idProducto, SqlConnection con, SqlTransaction trans, List <Producto> productosConPocaMP)
        {
            for (int k = 0; k < MateriaPrima.Rows.Count; k++)
            {
                MateriaPrima.Rows[k]["cantidad"] = double.Parse(MateriaPrima.Rows[k]["cantidad"].ToString()) * cantidad;
            }
            for (int f = 0; f < ProductosIntermedio.Rows.Count; f++)//RECORREMOS LA TABLA DE PRODUCTOS INTERMEDIOS
            {
                if (ProductosIntermedio.Rows.Count != 0)
                {
                    double cantidadIntermedios = cantidad * double.Parse(ProductosIntermedio.Rows[f]["cantidad"].ToString());

                    MateriaPrimaXIntermedio = ProductoDAO.GetMateriaPrima(int.Parse(ProductosIntermedio.Rows[f]["idProductohijo"].ToString()), trans, con);//CARGAMOS EN LA TABLA LOS DATOS DE LAS MATERIAS PRIMAS DE LOS PRODUCTOS INTERMEDIOS
                    for (int j = 0; j < MateriaPrimaXIntermedio.Rows.Count; j++)
                    {
                        MateriaPrimaXIntermedio.Rows[j]["cantidad"] = double.Parse(MateriaPrimaXIntermedio.Rows[j]["cantidad"].ToString()) * cantidadIntermedios;
                    }
                }
            }
            MateriaPrima.Merge(MateriaPrimaXIntermedio, true);// YA TENEMOS DENTRO DE  LA TABLA MATERIA PRIMA TODOS LOS PRODUCTOS INSUMOS O MP QUE SE NECESITAN PARA UN PRODUCTO DEL PEDIDO QUE NO ESTE RESERVADO
            for (int k = 0; k < MateriaPrima.Rows.Count; k++)
            {
                int    idProdMP   = 0;
                double cantidadMP = 0;
                idProdMP   = int.Parse(MateriaPrima.Rows[k]["idProductohijo"].ToString());
                cantidadMP = double.Parse(MateriaPrima.Rows[k]["cantidad"].ToString());
                ProductoDAO.actualizarStockMateriasPrimas(idProdMP, cantidadMP * -1, con, trans);
            }
        }
        public static void renovarStock(DetallePedido detPedido, SqlConnection con, SqlTransaction trans, Pedido pedido, List <Producto> productosConPocaMP)
        {
            DataTable ProductosIntermedio;
            DataTable MateriaPrima;
            DataTable DetallePlan;
            int       idProductoFinal      = 0;
            int       idProductoIntermedio = 0;
            double    cantidad             = 0;

            idProductoFinal = detPedido.producto.idProducto;                                                                             //OBTENEMOS EL ID DEL PRODUCTO FINAL
            cantidad        = detPedido.cantidad;                                                                                        //OBTENEMOS LA CANTIDAD DE PRODUCTOS
            if (ProductoDAO.verificarProductoPlanificado(pedido.fechaNecesidad.Date, idProductoFinal, con, trans) == true)               //PREGUNTAMOS SI PARA ESE PRODUCTO YA HAY UN DETALLE DEL PLAN PARA ESA FECHA Y ES TRUE
            {
                DetallePlan = DetallePlanProduccionDAO.GetDetallePlanXProducto(idProductoFinal, pedido.fechaNecesidad.Date, con, trans); //OBTENEMOS LOS DATOS DEL DETALLE DEL PLAN

                renovarDetallePlanYPedidoXPlan(DetallePlan, pedido.idPedido, con, trans, cantidad);

                MateriaPrima = ProductoDAO.GetMateriaPrima(idProductoFinal, trans, con);              //CARGAMOS EN LA TABLA LOS DATOS DE LAS MATERIAS PRIMAS
                DataTable MateriaPrimaXIntermedio = new DataTable();
                ProductosIntermedio = ProductoDAO.GetProductoIntermedio(idProductoFinal, con, trans); //CARGAMOS EN LA TABLA LOS DATOS DE LOS PRODUCTOS INTERMEDIO

                renovarMateriasPrimas(MateriaPrima, MateriaPrimaXIntermedio, ProductosIntermedio, cantidad, idProductoFinal, con, trans, productosConPocaMP);
            }
            //else
            //{
            //    if (ProductoDAO.verificarPlanSinProducto(pedido.fechaNecesidad.Date, idProductoFinal, con, trans) == true)//PREGUNTAMOS SI PARA ESE PRODUCTO YA HAY UN DETALLE DEL PLAN PARA ESA FECHA Y ES TRUE
            //    {
            //        Producto prodNuevo = new Producto();
            //        prodNuevo.idProducto = idProductoFinal;
            //        DetallePlanProduccion detallePlanProduccion = new DetallePlanProduccion()
            //        {
            //            fechaProduccion = pedido.fechaNecesidad,
            //            idPlan = PlanMaestroProduccionDAO.obtenerIdPlan(pedido.fechaNecesidad.Date),
            //            cantidadPLan = 0,
            //            producto = prodNuevo,
            //            cantidadPedido = double.Parse(cantidad.ToString())
            //        };

            //        cargarNuevoDetallePlanYPedidoXPlan(detallePlanProduccion, con, trans, pedido);

            //        MateriaPrima = ProductoDAO.GetMateriaPrima(idProductoFinal, trans, con);//CARGAMOS EN LA TABLA LOS DATOS DE LAS MATERIAS PRIMAS
            //        DataTable MateriaPrimaXIntermedio = new DataTable();
            //        ProductosIntermedio = ProductoDAO.GetProductoIntermedio(idProductoFinal, con, trans);//CARGAMOS EN LA TABLA LOS DATOS DE LOS PRODUCTOS INTERMEDIO

            //        obtenerMateriasPrimas(MateriaPrima, MateriaPrimaXIntermedio, ProductosIntermedio, cantidad, idProductoFinal, con, trans);
            //    }
            //}
        }
        public static void actualizarStock(DetallePlanProduccion detPlan, SqlConnection con, SqlTransaction trans, PlanMaestroProduccion plan, List <Producto> ProductosConPocaMP)
        {
            DataTable ProductosIntermedio;
            DataTable MateriaPrima;

            int idProductoFinal = 0;

            double cantidad = 0;

            idProductoFinal = detPlan.producto.idProducto;                   //OBTENEMOS EL ID DEL PRODUCTO FINAL
            cantidad        = detPlan.cantidadPedido + detPlan.cantidadPLan; //OBTENEMOS LA CANTIDAD DE PRODUCTOS


            MateriaPrima = ProductoDAO.GetMateriaPrima(idProductoFinal, trans, con);//CARGAMOS EN LA TABLA LOS DATOS DE LAS MATERIAS PRIMAS
            DataTable MateriaPrimaXIntermedio = new DataTable();

            ProductosIntermedio = ProductoDAO.GetProductoIntermedio(idProductoFinal, con, trans);//CARGAMOS EN LA TABLA LOS DATOS DE LOS PRODUCTOS INTERMEDIO

            obtenerMateriasPrimas(MateriaPrima, MateriaPrimaXIntermedio, ProductosIntermedio, cantidad, idProductoFinal, con, trans, ProductosConPocaMP);
        }