示例#1
0
        public int Guardar(DetallesProductosModel Objeto)
        {
            int res;

            try
            {
                res = cdDetallesProductos.Guardar(Objeto);
            }
            catch (Exception)
            {
                res = 0;
            }

            return(res);
        }
示例#2
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);
        }