public int Actualizar(DetallesFormulasModel Parametro) { try { return(cdDetallesFormula.Actualizar(Parametro)); } catch (Exception er) { throw new Exception(er.Message); } }
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; } }