示例#1
0
        /// <summary>
        /// Metoda pro deleni
        /// </summary>
        /// <param name="formula">Vzorec</param>
        /// <param name="number1">Prvni cislo vzorce ktere uzivatel zada</param>
        /// <param name="number2">Druhe cislo vzorce ktere uzivatel zada</param>
        /// <returns>Vysledek po vypoctu</returns>
        public double Division(FormulasModel formula, double number1, double number2)
        {
            String example = number1 + "/" + number2;
            double result  = new Expression(example).calculate();

            return(result);
        }
示例#2
0
        public ActionResult Index()
        {
            FormulasModel rates = new FormulasModel();

            rates.Rates = GetRates();
            return(View(rates));
        }
示例#3
0
        public int Actualizar(FormulasModel Objeto)
        {
            int res;

            try
            {
                using (SqlConnection con = new SqlConnection(conexion))
                {
                    using (SqlCommand cmd = new SqlCommand("spFormulasGuardar", con))
                    {
                        cmd.CommandType = CommandType.StoredProcedure;
                        cmd.Parameters.Add("@IdFormula", SqlDbType.Int).Value          = Objeto.IdFormula;
                        cmd.Parameters.Add("@NombreFormula", SqlDbType.NVarChar).Value = Objeto.NombreFormula;
                        cmd.Parameters.Add("@Cantidad", SqlDbType.Decimal).Value       = Objeto.Cantidad;
                        cmd.Parameters.Add("@Capacidad", SqlDbType.VarChar).Value      = Objeto.Capacidad;
                        cmd.Parameters.Add("@UnidadMedida", SqlDbType.NVarChar).Value  = Objeto.UnidadMedida;
                        cmd.Parameters.Add("@IdFamilia", SqlDbType.Int).Value          = Objeto.IdFamilia;
                        cmd.Parameters.Add("@DetalleAccion", SqlDbType.VarChar).Value  = "A";
                        con.Open();
                        res = Convert.ToInt32(cmd.ExecuteScalar());
                        con.Close();
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Error: " + ex.Message);
            }

            return(res);
        }
示例#4
0
        /// <summary>
        /// Metoda pro upravene nasobeni
        /// </summary>
        /// <param name="formula">Vzorec</param>
        /// <param name="number1">Prvni cislo vzorce ktere uzivatel zada</param>
        /// <param name="number2">Druhe cislo vzorce ktere uzivatel zada</param>
        /// <returns>Vysledek po vypoctu</returns>
        public double SpecialMultiplication(FormulasModel formula, double number1, double number2)
        {
            String example = number1 + "*" + number2 + "*" + number2;
            double result  = new Expression(example).calculate();

            return(result);
        }
示例#5
0
        public int ActualizarFormula(int IdFormula, FormulasModel F)
        {
            DataTable TablaProductosOld = cnProductos.ConsultaPorFormula(IdFormula);

            cnFormulas.Borrar(IdFormula);
            int id = 0;// Convert.ToInt32(BLF.Guardar(F));

            MoverProductos(id, TablaProductosOld);
            cnProductos.BorrarPorFormula(IdFormula);
            return(id);
        }
示例#6
0
 public int Actualizar(FormulasModel Parametro)
 {
     try
     {
         return(cdFormulas.Actualizar(Parametro));
     }
     catch (Exception er)
     {
         throw new Exception(er.Message);
     }
 }
        FormulasModel CreaObjetoFormula(DataTable Formula)
        {
            FormulasModel _Formula = new FormulasModel();

            _Formula.IdFormula     = 0;
            _Formula.NombreFormula = Formula.Rows[0]["NombreFormula"].ToString();
            _Formula.Cantidad      = Convert.ToDouble(Formula.Rows[0]["Cantidad"].ToString());
            _Formula.Capacidad     = Formula.Rows[0]["Capacidad"].ToString();
            _Formula.UnidadMedida  = Formula.Rows[0]["UnidadMedida"].ToString();
            _Formula.IdFamilia     = Convert.ToInt32(Formula.Rows[0]["IdFamilia"].ToString());
            return(_Formula);
        }
示例#8
0
 private void btnDetalles_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
 {
     if (ValidaGUI())
     {
         //AsignaGUIOjeto();
         //BLL.BLLFormulas g = new BLL.BLLFormulas(BLL.Gral.gStrConexion, BLL.Gral.gStrUsuario);
         //string msj = g.Guardar(F);
         FormulasModel F         = AsignaGUIOjeto2();
         int           IdFormula = 0;// new CNFormulas().Guardar(F);
         //frmDetallesFormulas frm = ;
         //frm.llenarCampos(txtNombre.Text, IdFormula.ToString(), cmbFamilia.Text, txtCantidad.Text + " " + cmbUnidad.Text, F.IdFamilia, F.UnidadMedida, txtCantidad.Text);
         new frmDetallesFormulas(IdFormula).ShowDialog();
         Close();
     }
 }
        public FormulasDetail(FormulasModel formulaDetail)
        {
            InitializeComponent();
            if (Device.OS == TargetPlatform.Windows)
            {
                NavigationPage.SetHasNavigationBar(this, false);
            }

            Title                  = formulaDetail.Name;
            Formula.Text           = formulaDetail.Formula;
            FirstNameOfValue.Text  = formulaDetail.FirstValue;
            FirstNameOfUnit.Text   = formulaDetail.FirstValueUnit;
            SecondNameOfValue.Text = formulaDetail.SecondValue;
            SecondNameOfUnit.Text  = formulaDetail.SecondValueUnit;
            formula                = formulaDetail;
        }
        public double GetResult(FormulasModel formula, double number1, double number2)
        {
            double result = 0;

            /// Vyber vzorce dle nazvu ///

            if (formula.Name.Equals("Výkon"))
            {
                result = GetPerformanceResult(formula, number1, number2);
            }
            else if (formula.Name.Equals("Rychlost"))
            {
                result = GetSpeedResult(formula, number1, number2);
            }
            else if (formula.Name.Equals("Tlak"))
            {
                result = GetSpeedResult(formula, number1, number2);
            }
            else if (formula.Name.Equals("Práce"))
            {
                result = GetWorkResult(formula, number1, number2);
            }
            else if (formula.Name.Equals("Proud"))
            {
                result = GetCurrentResult(formula, number1, number2);
            }
            else if (formula.Name.Equals("Odpor"))
            {
                result = GetResistanceResult(formula, number1, number2);
            }
            else if (formula.Name.Equals("Napětí"))
            {
                result = GetTensionResult(formula, number1, number2);
            }
            else if (formula.Name.Equals("Kmitočet"))
            {
                result = GetResistanceResult(formula, number1, number2);
            }
            else if (formula.Name.Equals("Energie"))
            {
                result = GetEnergyResult(formula, number1, number2);
            }

            return(result);
        }
        public double GetCurrentResult(FormulasModel formula, double number1, double number2)
        {
            double result = mymath.Division(formula, number1, number2);

            return(result);
        }
        public double GetWorkResult(FormulasModel formula, double number1, double number2)
        {
            double result = mymath.Multiplication(formula, number1, number2);

            return(result);
        }
        public double GetEnergyResult(FormulasModel formula, double number1, double number2)
        {
            double result = mymath.SpecialMultiplication(formula, number1, number2);

            return(result);
        }
示例#14
0
        public int Guardar(int IdUser, FormulasModel Objeto, DataTable DetallesFormula)
        {
            int res;

            try
            {
                using (TransactionScope scope = new TransactionScope())
                {
                    res = cdFormulas.Guardar(Objeto);
                    if (res < 1)
                    {
                        throw new Exception("Error al guardar datos generales de la fórmula.");
                    }
                    foreach (DataRow item in DetallesFormula.Rows)
                    {
                        cdDetFormula.Guardar(new DetallesFormulasModel
                        {
                            IdDetalle          = Convert.ToInt32(item["IdDetalle"]),
                            IdFormula          = res,
                            IdInsumo           = Convert.ToInt32(item["IdInsumo"]),
                            CantidadInsumo     = Convert.ToDecimal(item["Cantidad"].ToString().Split(' ')[0]),
                            UnidadMedidaInsumo = item["Cantidad"].ToString().Split(' ')[1],
                            CostoInsumo        = Convert.ToDecimal(item["Precio"]),
                            IdUsuario          = IdUser
                        });
                    }

                    if (Objeto.IdFormula > 0)
                    {
                        foreach (DataRow Producto in cdProductos.ConsultaGridPorFormula(Objeto.IdFormula).Rows)
                        {
                            decimal CostoMinimoFormula = Objeto.UnidadMedida.ToString().Equals("K") ?
                                                         (Convert.ToDecimal(Objeto.CostoTotal) / (Objeto.Capacidad.ToString().ToUpper().StartsWith("K") ? ConversorUnidades.Kilos_Miligramos(Convert.ToDecimal(Objeto.Cantidad)) :
                                                                                                  Objeto.Capacidad.ToString().ToUpper().StartsWith("G") ? ConversorUnidades.Gramos_Miligramos(Convert.ToDecimal(Objeto.Cantidad)) :
                                                                                                  Convert.ToDecimal(Objeto.Cantidad))) :
                                                         (Convert.ToDecimal(Objeto.CostoTotal) / (Objeto.Capacidad.ToString().ToUpper().StartsWith("L") ? ConversorUnidades.Litros_Mililitros(Convert.ToDecimal(Objeto.Cantidad)) :
                                                                                                  Convert.ToDecimal(Objeto.Cantidad)));


                            decimal CostoGranel = CostoMinimoFormula *
                                                  (Producto["UnidadMedida"].ToString().ToUpper().StartsWith("L") ? ConversorUnidades.Litros_Mililitros(Convert.ToDecimal(Producto["Cantidad"])) :
                                                   Producto["UnidadMedida"].ToString().ToUpper().StartsWith("K") ? ConversorUnidades.Kilos_Miligramos(Convert.ToDecimal(Producto["Cantidad"])) :
                                                   Producto["UnidadMedida"].ToString().ToUpper().StartsWith("G") ? ConversorUnidades.Gramos_Miligramos(Convert.ToDecimal(Producto["Cantidad"])) :
                                                   Convert.ToDecimal(Producto["Cantidad"]));


                            List <DetallesProductosModel> detalles = new List <DetallesProductosModel>();
                            foreach (DataRow detProducto in cdDetProducto.ConsultaGridPorProducto(Convert.ToInt32(Producto["IdProducto"])).Rows)
                            {
                                detalles.Add(new DetallesProductosModel
                                {
                                    CostoInsumo = Convert.ToDecimal(detProducto["Precio"]),
                                    IdInsumo    = Convert.ToInt32(detProducto["IdInsumo"])
                                });
                            }
                            ProductosModel newProducto = new ProductosModel
                            {
                                IdFormula          = res,
                                NombreProducto     = Producto["NombreProducto"].ToString(),
                                Cantidad           = Convert.ToDecimal(Producto["Cantidad"]),
                                UnidadMedida       = Producto["UnidadMedida"].ToString(),
                                CostoUnitario      = CostoGranel,
                                CostoTotalProducto = detalles.Sum(x => x.CostoInsumo) + CostoGranel,
                                Activo             = true
                            };
                            newProducto.IdProducto             = cdProductos.Guardar(newProducto);
                            detalles.ForEach(x => x.IdProducto = newProducto.IdProducto);
                            detalles.ForEach(x => cdDetProducto.Guardar(x));
                        }
                        cdProductos.BorrarPorFormula(Objeto.IdFormula);
                        if (cdFormulas.Borrar(Objeto.IdFormula) < 1)
                        {
                            throw new Exception("No se han podido dar de baja " + Objeto.NombreFormula + ".\n Todos los cambios serán deshechos." +
                                                "Contacte al administrador del sistema.");
                        }
                    }
                    if (Objeto.IdFamilia == 1)
                    {//Es Insumo
                        DataTable Insumo = cdInsumos.ConsultaGridPorNombre(Objeto.NombreFormula);
                        if (Insumo.Rows.Count == 0)
                        {
                            cdInsumos.Guardar(new InsumosModel
                            {
                                IdFamilia      = 1,
                                IdMoneda       = 1,
                                IdProveedor    = 1,
                                NombreInsumo   = Objeto.NombreFormula,
                                NombreInterno  = Objeto.NombreFormula,
                                UnidadMedida   = Objeto.UnidadMedida.Equals("L") ? Objeto.UnidadMedida : "KG",
                                PrecioUnitario = CostoFormulaPorUnidad(Convert.ToDouble(Objeto.CostoTotal), Objeto.Cantidad, Objeto.Capacidad),
                                TotalCompraMX  = 1000
                            });
                        }
                        else
                        {
                            cnInsumos.Actualizar(IdUser, new InsumosModel
                            {
                                IdInsumo       = Convert.ToInt32(Insumo.Rows[0]["IdInsumo"]),
                                IdFamilia      = 1,
                                IdMoneda       = 1,
                                IdProveedor    = 1,
                                NombreInsumo   = Objeto.NombreFormula,
                                NombreInterno  = Objeto.NombreFormula,
                                UnidadMedida   = Objeto.UnidadMedida.Equals("L") ? Objeto.UnidadMedida : "KG",
                                PrecioUnitario = CostoFormulaPorUnidad(Convert.ToDouble(Objeto.CostoTotal), Objeto.Cantidad, Objeto.Capacidad),
                                TotalCompraMX  = 1000
                            }, true, out string Msj);
                        }
                    }

                    scope.Complete();
                }
            }
            catch (Exception)
            {
                res = 0;
            }
            return(res);
        }
示例#15
0
        public bool Actualizar(int IdUsuario, InsumosModel Parametro, bool ActualizarPrecios, out string Msj, decimal PrecioDolar = 1)
        {
            try
            {
                using (TransactionScope scope = new TransactionScope())
                {
                    if (cdInsumos.Actualizar(Parametro) < 1)
                    {
                        throw new Exception("No se han podido actualizar los datos del insumo.");
                    }
                    if (ActualizarPrecios)
                    {
                        int IdFormula = 0;
                        foreach (DataRow item in cdDetFormula.ConsultaGridPorInsumo(Parametro.IdInsumo).Rows)
                        {
                            if (Convert.ToInt32(item["IdFormula"]) != IdFormula)
                            {
                                IdFormula = Convert.ToInt32(item["IdFormula"]);
                                DataTable Formula         = cdFormulas.ConsultaGridIndividual(IdFormula);
                                DataTable DetallesFormula = cdDetFormula.ConsultaGridPorFormula(IdFormula);
                                decimal   CostoTotal      = 0;

                                FormulasModel NewFormula = new FormulasModel
                                {
                                    Cantidad      = Convert.ToDouble(Formula.Rows[0]["Cantidad"]),
                                    Capacidad     = Formula.Rows[0]["Capacidad"].ToString(),
                                    IdFamilia     = Convert.ToInt32(Formula.Rows[0]["IdFamilia"]),
                                    NombreFormula = Formula.Rows[0]["NombreFormula"].ToString(),
                                    UnidadMedida  = Formula.Rows[0]["UnidadMedida"].ToString()
                                };
                                NewFormula.IdFormula = cdFormulas.Guardar(NewFormula);
                                if (NewFormula.IdFormula < 1)
                                {
                                    throw new Exception("No se han podido actualizar el costo de " + item["NombreFormula"].ToString() + ".\n Todos los cambios serán deshechos." +
                                                        "Contacte al administrador del sistema.");
                                }
                                foreach (DataRow detalle in DetallesFormula.Rows)
                                {
                                    decimal CostoInsumo = Convert.ToInt32(detalle["IdInsumo"]) != Parametro.IdInsumo ? Convert.ToDecimal(detalle["CostoInsumo"]) :
                                                          ((Convert.ToDecimal(Parametro.PrecioUnitario) * PrecioDolar) * (Convert.ToDecimal(detalle["CantidadInsumo"]) * FactorMedida(detalle["UnidadMedida"].ToString(), detalle["UnidadMedidaInsumo"].ToString())));
                                    CostoTotal += CostoInsumo;
                                    if (cdDetFormula.Guardar(new DetallesFormulasModel
                                    {
                                        IdFormula = NewFormula.IdFormula,
                                        IdInsumo = Convert.ToInt32(detalle["IdInsumo"]),
                                        CantidadInsumo = Convert.ToDecimal(detalle["CantidadInsumo"]),
                                        UnidadMedidaInsumo = detalle["UnidadMedidaInsumo"].ToString(),
                                        CostoInsumo = CostoInsumo,
                                        IdUsuario = IdUsuario
                                    }) < 1)
                                    {
                                        throw new Exception("No se han podido actualizar el costo en los detalles de " + item["NombreFormula"].ToString() + ".\n Todos los cambios serán deshechos." +
                                                            "Contacte al administrador del sistema.");
                                    }
                                }
                                //calculo el costo de generar la unidad mas pequeña de la formula
                                //por ejemplo, si son kg, cuanto cuesta  crear un mg?
                                // si son Litros, cuanto cuesta crear un ml?

                                decimal CostoMinimoFormula = NewFormula.UnidadMedida.ToString().Equals("K") ?
                                                             (Convert.ToDecimal(CostoTotal) / (NewFormula.Capacidad.ToString().ToUpper().StartsWith("K") ? ConversorUnidades.Kilos_Miligramos(Convert.ToDecimal(NewFormula.Cantidad)) :
                                                                                               NewFormula.Capacidad.ToString().ToUpper().StartsWith("G") ? ConversorUnidades.Gramos_Miligramos(Convert.ToDecimal(NewFormula.Cantidad)) :
                                                                                               Convert.ToDecimal(NewFormula.Cantidad))) :
                                                             (Convert.ToDecimal(CostoTotal) / (NewFormula.Capacidad.ToString().ToUpper().StartsWith("L") ? ConversorUnidades.Litros_Mililitros(Convert.ToDecimal(NewFormula.Cantidad)) :
                                                                                               Convert.ToDecimal(NewFormula.Cantidad)));

                                foreach (DataRow Producto in cdProductos.ConsultaGridPorFormula(IdFormula).Rows)
                                {
                                    decimal CostoGranel = CostoMinimoFormula *
                                                          (Producto["UnidadMedida"].ToString().ToUpper().StartsWith("L") ? ConversorUnidades.Litros_Mililitros(Convert.ToDecimal(Producto["Cantidad"])) :
                                                           Producto["UnidadMedida"].ToString().ToUpper().StartsWith("K") ? ConversorUnidades.Kilos_Miligramos(Convert.ToDecimal(Producto["Cantidad"])) :
                                                           Producto["UnidadMedida"].ToString().ToUpper().StartsWith("G") ? ConversorUnidades.Gramos_Miligramos(Convert.ToDecimal(Producto["Cantidad"])) :
                                                           Convert.ToDecimal(Producto["Cantidad"]));


                                    List <DetallesProductosModel> detalles = new List <DetallesProductosModel>();
                                    foreach (DataRow detProducto in cdDetProducto.ConsultaGridPorProducto(Convert.ToInt32(Producto["IdProducto"])).Rows)
                                    {
                                        detalles.Add(new DetallesProductosModel
                                        {
                                            CostoInsumo = Convert.ToDecimal(detProducto["Precio"]),
                                            IdInsumo    = Convert.ToInt32(detProducto["IdInsumo"])
                                        });
                                    }
                                    ProductosModel newProducto = new ProductosModel
                                    {
                                        IdProducto         = Convert.ToInt32(Producto["IdProducto"]),
                                        IdFormula          = NewFormula.IdFormula,
                                        NombreProducto     = Producto["NombreProducto"].ToString(),
                                        Cantidad           = Convert.ToDecimal(Producto["Cantidad"]),
                                        UnidadMedida       = Producto["UnidadMedida"].ToString(),
                                        CostoUnitario      = CostoGranel,
                                        CostoTotalProducto = detalles.Sum(x => x.CostoInsumo) + CostoGranel,
                                        Activo             = true,
                                        IdUsuario          = IdUsuario
                                    };
                                    newProducto.IdProducto = cdProductos.Actualizar(newProducto);
                                    //detalles.ForEach(x => x.IdProducto = newProducto.IdProducto);
                                    detalles.ForEach(x => cdDetProducto.Actualizar(x));
                                }
                                //cdProductos.BorrarPorFormula(IdFormula);
                                if (cdFormulas.Borrar(IdFormula) < 1)
                                {
                                    throw new Exception("No se han podido dar de baja " + item["NombreFormula"].ToString() + ".\n Todos los cambios serán deshechos." +
                                                        "Contacte al administrador del sistema.");
                                }

                                foreach (DataRow itemInsumo in cdInsumos.ConsultaGridPorNombre(item["NombreFormula"].ToString()).Rows)
                                {
                                    Actualizar(IdUsuario, new InsumosModel
                                    {
                                        IdInsumo       = Convert.ToInt32(itemInsumo["IdInsumo"]),
                                        IdProveedor    = Convert.ToInt32(itemInsumo["IdProveedor"]),
                                        NombreInsumo   = itemInsumo["NombreInsumo"].ToString(),
                                        NombreInterno  = itemInsumo["NombreInterno"].ToString(),
                                        UnidadMedida   = itemInsumo["UnidadMedida"].ToString(),
                                        PrecioUnitario = Convert.ToDouble(CostoMinimoFormula *
                                                                          (itemInsumo["UnidadMedida"].ToString().ToUpper().StartsWith("L") ? ConversorUnidades.Litros_Mililitros(Convert.ToDecimal(NewFormula.Cantidad)) :
                                                                           itemInsumo["UnidadMedida"].ToString().ToUpper().StartsWith("K") ? ConversorUnidades.Kilos_Miligramos(Convert.ToDecimal(NewFormula.Cantidad)) :
                                                                           itemInsumo["UnidadMedida"].ToString().ToUpper().StartsWith("G") ? ConversorUnidades.Gramos_Miligramos(Convert.ToDecimal(NewFormula.Cantidad)) :
                                                                           Convert.ToDecimal(1))),
                                        TotalCompraMX = 10000,
                                        IdFamilia     = Convert.ToInt32(itemInsumo["IdFamilia"]),
                                        IdMoneda      = Convert.ToInt32(itemInsumo["IdMoneda"]),
                                    }, true, out string MsjI, PrecioDolar);
                                }
                            }
                        }

                        int IdProducto = 0;
                        foreach (DataRow itemDetalle in cdDetProducto.ConsultaGridPorInsumo(Parametro.IdInsumo).Rows)
                        {
                            if (Convert.ToInt32(itemDetalle["IdProducto"]) != IdProducto)
                            {
                                IdProducto = Convert.ToInt32(itemDetalle["IdProducto"]);
                                DataTable Producto = cdProductos.ConsultaGridPorId(IdProducto);
                                if ((bool)(Producto.Rows[0]["Activo"]))
                                {
                                    List <DetallesProductosModel> detalles = new List <DetallesProductosModel>();
                                    foreach (DataRow detProducto in cdDetProducto.ConsultaGridPorProducto(IdProducto).Rows)
                                    {
                                        decimal CostoInsumo = Convert.ToInt32(detProducto["IdInsumo"]) != Parametro.IdInsumo ? Convert.ToDecimal(detProducto["Precio"]) :
                                                              (Convert.ToDecimal(Parametro.PrecioUnitario) * PrecioDolar);
                                        detalles.Add(new DetallesProductosModel
                                        {
                                            CostoInsumo = CostoInsumo,
                                            IdDetalle   = Convert.ToInt32(detProducto["IdDetalle"]),
                                            IdInsumo    = Convert.ToInt32(detProducto["IdInsumo"])
                                        });
                                    }
                                    ProductosModel newProducto = new ProductosModel
                                    {
                                        IdProducto         = Convert.ToInt32(Producto.Rows[0]["IdProducto"]),
                                        IdFormula          = Convert.ToInt32(Producto.Rows[0]["IdFormula"]),
                                        NombreProducto     = Producto.Rows[0]["NombreProducto"].ToString(),
                                        Cantidad           = Convert.ToDecimal(Producto.Rows[0]["Cantidad"]),
                                        UnidadMedida       = Producto.Rows[0]["UnidadMedida"].ToString(),
                                        CostoUnitario      = Convert.ToDecimal(Producto.Rows[0]["CostoUnitario"]),
                                        CostoTotalProducto = detalles.Sum(x => x.CostoInsumo) + Convert.ToDecimal(Producto.Rows[0]["CostoUnitario"]),
                                        Activo             = true,
                                        IdUsuario          = IdUsuario
                                    };
                                    newProducto.IdProducto = cdProductos.Actualizar(newProducto);
                                    //detalles.ForEach(x => x.IdProducto = newProducto.IdProducto);
                                    detalles.ForEach(x => cdDetProducto.Actualizar(x));
                                    //if (cdProductos.BorrarPorId(IdProducto) < 1)
                                    //    throw new Exception("No se ha podido dar de baja " + newProducto.NombreProducto + ".\n Todos los cambios serán deshechos." +
                                    //                                           "Contacte al administrador del sistema.");
                                }
                            }
                        }
                    }
                    scope.Complete();
                }
                Msj = "";
                return(true);
            }
            catch (Exception er)
            {
                Msj = (er.Message);
                return(false);
            }
        }
示例#16
0
        public void ActualizarP()
        {
            try
            {
                //Thread.Sleep(2000);

                using (TransactionScope scope = new TransactionScope())
                {
                    #region
                    if (cdInsumos.Actualizar(Parametro) < 1)
                    {
                        throw new Exception("No se han podido actualizar los datos del insumo.");
                    }

                    if (ActualizarPrecios)
                    {
                        int IdFormula = 0;
                        foreach (DataRow item in cdDetFormula.ConsultaGridPorInsumo(Parametro.IdInsumo).Rows)
                        {
                            if (Convert.ToInt32(item["IdFormula"]) != IdFormula)
                            {
                                IdFormula = Convert.ToInt32(item["IdFormula"]);
                                cdDetFormula.Actualizar(new DetallesFormulasModel
                                {
                                    IdDetalle          = Convert.ToInt32(item[0]),
                                    IdFormula          = Convert.ToInt32(item[1]),
                                    IdInsumo           = Parametro.IdInsumo,
                                    CantidadInsumo     = Convert.ToInt32(item["CantidadInsumo"]),
                                    UnidadMedidaInsumo = item["UnidadMedidaInsumo"].ToString(),
                                    CostoInsumo        = ((Convert.ToDecimal(Parametro.PrecioUnitario) * PrecioDolar) * (Convert.ToDecimal(item["CantidadInsumo"]) *
                                                                                                                         FactorMedida(item["UnidadMedida"].ToString(), item["UnidadMedidaInsumo"].ToString()))),
                                    IdUsuario = Parametro.IdUsuario
                                });

                                DataTable tblFormula = cdFormulas.ConsultaGridIndividual(IdFormula);

                                FormulasModel formula = new FormulasModel
                                {
                                    Cantidad      = Convert.ToDouble(tblFormula.Rows[0]["Cantidad"]),
                                    Capacidad     = tblFormula.Rows[0]["Capacidad"].ToString(),
                                    IdFamilia     = Convert.ToInt32(tblFormula.Rows[0]["IdFamilia"]),
                                    NombreFormula = tblFormula.Rows[0]["NombreFormula"].ToString(),
                                    UnidadMedida  = tblFormula.Rows[0]["UnidadMedida"].ToString(),
                                    CostoTotal    = Convert.ToDecimal(tblFormula.Rows[0]["CostoTotal"]),
                                    IdFormula     = Convert.ToInt32(tblFormula.Rows[0]["IdFormula"]),
                                };

                                //calculo el costo de generar la unidad mas pequeña de la formula
                                //por ejemplo, si son kg, cuanto cuesta  crear un mg?
                                // si son Litros, cuanto cuesta crear un ml?
                                decimal CostoMinimoFormula = formula.UnidadMedida.ToString().Equals("K") ?
                                                             (Convert.ToDecimal(formula.CostoTotal) / (formula.Capacidad.ToString().ToUpper().StartsWith("K") ? ConversorUnidades.Kilos_Miligramos(Convert.ToDecimal(formula.Cantidad)) :
                                                                                                       formula.Capacidad.ToString().ToUpper().StartsWith("G") ? ConversorUnidades.Gramos_Miligramos(Convert.ToDecimal(formula.Cantidad)) :
                                                                                                       Convert.ToDecimal(formula.Cantidad))) :
                                                             (Convert.ToDecimal(formula.CostoTotal) / (formula.Capacidad.ToString().ToUpper().StartsWith("L") ? ConversorUnidades.Litros_Mililitros(Convert.ToDecimal(formula.Cantidad)) :
                                                                                                       Convert.ToDecimal(formula.Cantidad)));

                                foreach (DataRow Producto in cdProductos.ConsultaGridPorFormula(IdFormula).Rows)
                                {
                                    decimal CostoGranel = CostoMinimoFormula *
                                                          (Producto["UnidadMedida"].ToString().ToUpper().StartsWith("L") ? ConversorUnidades.Litros_Mililitros(Convert.ToDecimal(Producto["Cantidad"])) :
                                                           Producto["UnidadMedida"].ToString().ToUpper().StartsWith("K") ? ConversorUnidades.Kilos_Miligramos(Convert.ToDecimal(Producto["Cantidad"])) :
                                                           Producto["UnidadMedida"].ToString().ToUpper().StartsWith("G") ? ConversorUnidades.Gramos_Miligramos(Convert.ToDecimal(Producto["Cantidad"])) :
                                                           Convert.ToDecimal(Producto["Cantidad"]));


                                    List <DetallesProductosModel> detalles = new List <DetallesProductosModel>();
                                    foreach (DataRow detProducto in cdDetProducto.ConsultaGridPorProducto(Convert.ToInt32(Producto["IdProducto"])).Rows)
                                    {
                                        detalles.Add(new DetallesProductosModel
                                        {
                                            CostoInsumo = Convert.ToDecimal(detProducto["Precio"]),
                                            IdInsumo    = Convert.ToInt32(detProducto["IdInsumo"])
                                        });
                                    }
                                    ProductosModel newProducto = new ProductosModel
                                    {
                                        IdProducto         = Convert.ToInt32(Producto["IdProducto"]),
                                        IdFormula          = formula.IdFormula,
                                        NombreProducto     = Producto["NombreProducto"].ToString(),
                                        Cantidad           = Convert.ToDecimal(Producto["Cantidad"]),
                                        UnidadMedida       = Producto["UnidadMedida"].ToString(),
                                        CostoUnitario      = CostoGranel,
                                        CostoTotalProducto = detalles.Sum(x => x.CostoInsumo) + CostoGranel,
                                        Activo             = true,
                                        IdUsuario          = IdUsuario
                                    };
                                    newProducto.IdProducto = cdProductos.Actualizar(newProducto);
                                }

                                foreach (DataRow itemInsumo in cdInsumos.ConsultaGridPorNombre(item["NombreFormula"].ToString()).Rows)
                                {
                                    Actualizar(IdUsuario, new InsumosModel
                                    {
                                        IdInsumo       = Convert.ToInt32(itemInsumo["IdInsumo"]),
                                        IdProveedor    = Convert.ToInt32(itemInsumo["IdProveedor"]),
                                        NombreInsumo   = itemInsumo["NombreInsumo"].ToString(),
                                        NombreInterno  = itemInsumo["NombreInterno"].ToString(),
                                        UnidadMedida   = itemInsumo["UnidadMedida"].ToString(),
                                        PrecioUnitario = Convert.ToDouble(CostoMinimoFormula *
                                                                          (itemInsumo["UnidadMedida"].ToString().ToUpper().StartsWith("L") ? ConversorUnidades.Litros_Mililitros(Convert.ToDecimal(formula.Cantidad)) :
                                                                           itemInsumo["UnidadMedida"].ToString().ToUpper().StartsWith("K") ? ConversorUnidades.Kilos_Miligramos(Convert.ToDecimal(formula.Cantidad)) :
                                                                           itemInsumo["UnidadMedida"].ToString().ToUpper().StartsWith("G") ? ConversorUnidades.Gramos_Miligramos(Convert.ToDecimal(formula.Cantidad)) :
                                                                           Convert.ToDecimal(1))),
                                        TotalCompraMX = 10000,
                                        IdFamilia     = Convert.ToInt32(itemInsumo["IdFamilia"]),
                                        IdMoneda      = Convert.ToInt32(itemInsumo["IdMoneda"]),
                                    }, true, out string MsjI, PrecioDolar);
                                }
                            }
                        }

                        int IdProducto = 0;
                        foreach (DataRow itemDetalle in cdDetProducto.ConsultaGridPorInsumo(Parametro.IdInsumo).Rows)
                        {
                            if (Convert.ToInt32(itemDetalle["IdProducto"]) != IdProducto)
                            {
                                IdProducto = Convert.ToInt32(itemDetalle["IdProducto"]);
                                DataTable Producto = cdProductos.ConsultaGridPorId(IdProducto);
                                if ((bool)(Producto.Rows[0]["Activo"]))
                                {
                                    List <DetallesProductosModel> detalles = new List <DetallesProductosModel>();
                                    foreach (DataRow detProducto in cdDetProducto.ConsultaGridPorProducto(IdProducto).Rows)
                                    {
                                        decimal CostoInsumo = Convert.ToInt32(detProducto["IdInsumo"]) != Parametro.IdInsumo ? Convert.ToDecimal(detProducto["Precio"]) :
                                                              (Convert.ToDecimal(Parametro.PrecioUnitario) * PrecioDolar);
                                        detalles.Add(new DetallesProductosModel
                                        {
                                            CostoInsumo = CostoInsumo,
                                            IdDetalle   = Convert.ToInt32(detProducto["IdDetalle"]),
                                            IdInsumo    = Convert.ToInt32(detProducto["IdInsumo"])
                                        });
                                    }
                                    ProductosModel newProducto = new ProductosModel
                                    {
                                        IdProducto         = Convert.ToInt32(Producto.Rows[0]["IdProducto"]),
                                        IdFormula          = Convert.ToInt32(Producto.Rows[0]["IdFormula"]),
                                        NombreProducto     = Producto.Rows[0]["NombreProducto"].ToString(),
                                        Cantidad           = Convert.ToDecimal(Producto.Rows[0]["Cantidad"]),
                                        UnidadMedida       = Producto.Rows[0]["UnidadMedida"].ToString(),
                                        CostoUnitario      = Convert.ToDecimal(Producto.Rows[0]["CostoUnitario"]),
                                        CostoTotalProducto = detalles.Sum(x => x.CostoInsumo) + Convert.ToDecimal(Producto.Rows[0]["CostoUnitario"]),
                                        Activo             = true,
                                        IdUsuario          = IdUsuario
                                    };
                                    newProducto.IdProducto = cdProductos.Actualizar(newProducto);
                                    detalles.ForEach(x => cdDetProducto.Actualizar(x));
                                }
                            }
                        }
                    }
                    #endregion
                    scope.Complete();
                }
                Msj             = "";
                EstadoOperacion = true;
            }
            catch (Exception er)
            {
                Msj             = (er.Message);
                EstadoOperacion = false;
                //return false;
            }
        }