//Este Método busca los productos relacionados a la formula que contiene al insumo y les actualiza el precio despues de actualizar el precio de la formula void ActuaizarPrecioProductos(int IdFormula, double PrecioUnitarioFormula) { CNProductos Productos = new CNProductos(conexion); CNFormulas Formulas = new CNFormulas(conexion); DataTable _Productos = Productos.ConsultaPorFormula(IdFormula); foreach (DataRow row in _Productos.Rows) { double CostoDetallesProducto = Convert.ToDouble(row["CostoTotalProducto"]) - Convert.ToDouble(row["CostoUnitario"]); row["CostoUnitario"] = PrecioGranel(PrecioUnitarioFormula, Convert.ToString(row["UnidadMedida"]), Convert.ToDouble(row["Cantidad"])); row["CostoTotalProducto"] = Convert.ToDouble(row["CostoUnitario"]) + CostoDetallesProducto; Productos.Actualizar(new ProductosModel { IdProducto = Convert.ToInt32(row["IdProducto"]), IdFormula = Convert.ToInt32(row["IdFormula"]), NombreProducto = Convert.ToString(row["NombreProducto"]), Cantidad = Convert.ToDecimal(row["Cantidad"]), UnidadMedida = Convert.ToString(row["UnidadMedida"]), CostoUnitario = Convert.ToDecimal(row["CostoUnitario"]), CostoTotalProducto = Convert.ToDecimal(row["CostoTotalProducto"]), Activo = (bool)(row["Activo"]), }); } }
void MoverProductos(int IdFormula, DataTable TablaProductosOld) { for (int i = 0; i < TablaProductosOld.Rows.Count; i++) { DataTable Detalles = cnDetProducto.ConsultaDetallesPorProducto(Convert.ToInt32(TablaProductosOld.Rows[i]["IdProducto"])); ProductosModel Producto = new ProductosModel { Activo = (bool)(TablaProductosOld.Rows[i]["Activo"]), Cantidad = Convert.ToDecimal(TablaProductosOld.Rows[i]["Cantidad"].ToString()), CostoTotalProducto = Convert.ToDecimal(TablaProductosOld.Rows[i]["CostoTotalProducto"].ToString()), CostoUnitario = Convert.ToDecimal(TablaProductosOld.Rows[i]["CostoUnitario"].ToString()), IdFormula = IdFormula, NombreProducto = (TablaProductosOld.Rows[i]["NombreProducto"].ToString()), UnidadMedida = (TablaProductosOld.Rows[i]["UnidadMedida"].ToString()), }; int id = Convert.ToInt32(cnProductos.Guardar(Producto)); decimal CostoTotal = 0; foreach (DataRow row in Detalles.Rows) { DetallesProductosModel detalle = new DetallesProductosModel { IdDetalle = 0, IdProducto = id, IdInsumo = Convert.ToInt32(row["IdInsumo"]), CostoInsumo = Convert.ToDecimal(CalculaPrecioInsumo(Convert.ToInt32(row["IdInsumo"]))), }; CostoTotal += detalle.CostoInsumo; cnDetProducto.Guardar(detalle); } Producto.CostoTotalProducto = CostoTotal + Producto.CostoUnitario; Producto.IdProducto = id; cnProductos.Actualizar(Producto); } }
void CreaProducto(List <int> lista) //Este metodo crea un nuevo producto si se va a modificar su lista de detalles, y ademas recupera el id del nuevo producto { for (int i = 0; i < lista.Count; i++) { DataTable listaProductos = cnProductos.ConsultaConsultaPorId(lista[i]); ProductosModel _Productos = new ProductosModel { IdProducto = Convert.ToInt32(listaProductos.Rows[0]["IdProducto"]), IdFormula = Convert.ToInt32(listaProductos.Rows[0]["IdFormula"]), NombreProducto = Convert.ToString(listaProductos.Rows[0]["NombreProducto"]), Cantidad = Convert.ToDecimal(listaProductos.Rows[0]["Cantidad"]), UnidadMedida = Convert.ToString(listaProductos.Rows[0]["UnidadMedida"]), CostoUnitario = Convert.ToDecimal(listaProductos.Rows[0]["CostoUnitario"]), CostoTotalProducto = Convert.ToDecimal(listaProductos.Rows[0]["CostoUnitario"]), Activo = (bool)(listaProductos.Rows[0]["Activo"]) }; int IdP = Convert.ToInt32(cnProductos.Guardar(_Productos)); DataTable Detalles = cnDetProducto.ConsultaDetallesPorProducto(Convert.ToInt32(listaProductos.Rows[0]["IdProducto"])); double Precio = 0.00; foreach (DataRow row in Detalles.Rows) { if (Convert.ToInt32(row["IdInsumo"]) == IdInsumo) { row["IdProducto"] = IdP; row["Precio"] = PrecioInsumo; Precio += Convert.ToDouble(row["Precio"]); } else { row["IdProducto"] = IdP; Precio += Convert.ToDouble(row["Precio"]); } cnDetProducto.Guardar(new DetallesProductosModel { CostoInsumo = Convert.ToDecimal(row["Precio"]), IdDetalle = Convert.ToInt32(row["IdDetalle"]), IdProducto = Convert.ToInt32(row["IdProducto"]), IdInsumo = IdInsumo, }); } _Productos.IdProducto = IdP; _Productos.CostoTotalProducto += Convert.ToDecimal(Precio); cnProductos.Actualizar(_Productos); cnProductos.Borrar(lista[i]); } }