public int Actualizar(InsumosModel Objeto) { int res; try { using (SqlConnection con = new SqlConnection(conexion)) { using (SqlCommand cmd = new SqlCommand("spInsumosGuardar", con)) { cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("@IdInsumo", SqlDbType.Int).Value = Objeto.IdInsumo; cmd.Parameters.Add("@IdProveedor", SqlDbType.Int).Value = Objeto.IdProveedor; cmd.Parameters.Add("@NombreInsumo", SqlDbType.NVarChar).Value = Objeto.NombreInsumo; cmd.Parameters.Add("@NombreInterno", SqlDbType.NVarChar).Value = Objeto.NombreInterno; cmd.Parameters.Add("@UnidadMedida", SqlDbType.NVarChar).Value = Objeto.UnidadMedida; cmd.Parameters.Add("@PrecioUnitario", SqlDbType.Decimal).Value = Objeto.PrecioUnitario; cmd.Parameters.Add("@TotalCompraMX", SqlDbType.Decimal).Value = Objeto.TotalCompraMX; cmd.Parameters.Add("@IdFamilia", SqlDbType.Int).Value = Objeto.IdFamilia; cmd.Parameters.Add("@IdMoneda", SqlDbType.Int).Value = Objeto.IdMoneda; 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); }
public int ActualizarV2(InsumosModel Objeto) { DataTable tabla = new DataTable(); try { using (SqlConnection con = new SqlConnection(conexion)) { using (SqlCommand cmd = new SqlCommand("spActualizaInsumosFormulas", con)) { cmd.CommandTimeout = (300); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("@IdInsumo", SqlDbType.Int).Value = Objeto.IdInsumo; cmd.Parameters.Add("@PUnitario", SqlDbType.Decimal).Value = Objeto.PrecioUnitario; cmd.Parameters.Add("@IdUsuario", SqlDbType.Int).Value = Objeto.IdUsuario; cmd.Parameters.Add("@ActualizaFormulas", SqlDbType.Bit).Value = Objeto.ActualizaFormulas; using (SqlDataAdapter adapter = new SqlDataAdapter(cmd)) { con.Open(); adapter.Fill(tabla); con.Close(); } } } } catch (Exception ex) { throw new Exception("Error: " + ex.Message); } return(Convert.ToInt32(tabla.Rows[0][0])); }
public CNInsumos(string conexion, int idUsuario, InsumosModel parametro, bool actualizarPrecios, decimal precioDolar) { cdInsumos = new CDInsumos(conexion); cdFormulas = new CDFormulas(conexion); cdDetFormula = new CDDetallesFormula(conexion); cdDetProducto = new CDDetallesProductos(conexion); cdProductos = new CDProductos(conexion); IdUsuario = idUsuario; Parametro = parametro; ActualizarPrecios = actualizarPrecios; PrecioDolar = precioDolar; }
public int Guardar(InsumosModel Objeto) { int res; try { res = cdInsumos.Guardar(Objeto); } catch (Exception) { res = 0; } return(res); }
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); } }