public static void AjustarSalidas(int mes, int año) { using (var db = new DatosEntities()) { var oldLibro = from p in db.LibroInventarios where p.Mes == mes && p.Año == año select p; foreach (var item in oldLibro) { db.LibroInventarios.DeleteObject(item); } db.SaveChanges(); var q = from factura in db.Facturas join facturaplato in db.FacturasPlatos on factura.IdFactura equals facturaplato.IdFactura where factura.Fecha.Value.Month == mes && factura.Fecha.Value.Year == año && factura.Anulado == false && (factura.Tipo == "FACTURA" || factura.Tipo == "CONSUMO") select new VentasxPlato { IdPlato = facturaplato.Idplato, Descripcion = facturaplato.Descripcion, PlatosVendidos = facturaplato.Cantidad.Value }; var ResumenxPlato = from p in q.ToList() group p by new { p.IdPlato, p.Descripcion } into ventaxPlato select new VentasxPlato { IdPlato = ventaxPlato.Key.IdPlato, Descripcion = ventaxPlato.Key.Descripcion, PlatosVendidos = ventaxPlato.Sum(x => x.PlatosVendidos) }; foreach (var plato in ResumenxPlato) { List <PlatosIngrediente> ingredientes = FactoryPlatos.getIngredientes(plato.IdPlato); foreach (PlatosIngrediente ingrediente in ingredientes) { LibroInventario itemMes = (from item in db.LibroInventarios where item.Mes == mes && item.IdProducto == ingrediente.IdIngrediente select item).FirstOrDefault(); if (itemMes == null) { itemMes = CrearItem(mes, año, ingrediente); itemMes.Costo = (from x in db.Ingredientes where x.IdIngrediente == itemMes.IdProducto select x.Costo).FirstOrDefault(); } itemMes.Salidas = itemMes.Salidas + (ingrediente.Cantidad * plato.PlatosVendidos); itemMes.Final = itemMes.Inicio + itemMes.Entradas - itemMes.Salidas; itemMes.InventarioFisico = itemMes.Final; itemMes.Ajustes = 0; if (itemMes.IdLibroInventarios == null) { itemMes.IdLibroInventarios = FactoryContadores.GetMax("IdLibroInventarios"); db.LibroInventarios.AddObject(itemMes); } } db.SaveChanges(); } } }
public static void DescontarInventario(Factura factura) { using (RestaurantEntities db = new RestaurantEntities()) { factura = (from x in db.Facturas where x.IdFactura == factura.IdFactura select x).FirstOrDefault(); foreach (FacturasPlato plato in factura.FacturasPlatos) { List <PlatosIngrediente> ingredientes = FactoryPlatos.getIngredientes(plato.Idplato); foreach (PlatosIngrediente ingrediente in ingredientes) { IngredientesInventario item = (from x in db.IngredientesInventarios where x.IdIngrediente == ingrediente.IdIngrediente select x).FirstOrDefault(); if (item == null) { string Grupo = (from x in db.Ingredientes where x.IdIngrediente == ingrediente.IdIngrediente select x.Grupo).FirstOrDefault(); item = new IngredientesInventario(); item.IdIngrediente = ingrediente.IdIngrediente; item.Ingrediente = ingrediente.Ingrediente; item.FechaInicio = factura.Fecha; item.Ajuste = 0; item.Entradas = 0; item.Final = 0; item.Grupo = Grupo; item.Inicio = 0; item.Salidas = 0; } item.Salidas = item.Salidas + (ingrediente.Cantidad * plato.Cantidad); item.Final = item.Inicio + item.Entradas - item.Salidas; item.InventarioFisico = item.Final; item.Ajuste = 0; if (item.IdIngredienteInventario == null) { item.IdIngredienteInventario = FactoryContadores.GetMax("IdIngredienteInventario"); db.IngredientesInventarios.AddObject(item); } } } factura.Inventarios = true; db.SaveChanges(); } }
public static void DescontarInventario(Factura factura) { foreach (FacturasPlato plato in factura.FacturasPlatos) { List <PlatosIngrediente> ingredientes = FactoryPlatos.getIngredientes(plato.Idplato); foreach (PlatosIngrediente ingrediente in ingredientes) { using (FeriaEntities db = new FeriaEntities()) { IngredientesInventario InventarioDia = (from item in db.IngredientesInventarios where item.Fecha == factura.Fecha && item.IdIngrediente == ingrediente.IdIngrediente select item).FirstOrDefault(); if (InventarioDia == null) { IngredientesInventario InventarioAnterior = (from item in db.IngredientesInventarios where item.Fecha < factura.Fecha && item.IdIngrediente == ingrediente.IdIngrediente select item).FirstOrDefault(); InventarioDia = new IngredientesInventario(); InventarioDia.IdIngrediente = ingrediente.IdIngrediente; InventarioDia.Ingrediente = ingrediente.Ingrediente; InventarioDia.Fecha = factura.Fecha; InventarioDia.Ajuste = 0; InventarioDia.Entradas = 0; if (InventarioAnterior == null) { InventarioDia.Inicio = 0; } else { InventarioDia.Inicio = InventarioDia.InventarioFisico; } } InventarioDia.Salidas = ingrediente.Cantidad * plato.Cantidad; InventarioDia.Final = InventarioDia.Inicio + InventarioDia.Entradas + InventarioDia.Salidas; InventarioDia.InventarioFisico = InventarioDia.Final; InventarioDia.Ajuste = 0; if (InventarioDia.IdIngredienteInventario == null) { InventarioDia.IdIngredienteInventario = FactoryContadores.GetMax("IdIngredienteInventario"); db.IngredientesInventarios.AddObject(InventarioDia); } db.SaveChanges(); } } } }
public static void DescontarPlato(Plato plato, double cantidad) { if (plato == null) { return; } using (DatosEntities db = new DatosEntities()) { List <PlatosIngrediente> ingredientes = FactoryPlatos.getIngredientes(plato.IdPlato); foreach (PlatosIngrediente ingrediente in ingredientes) { IngredientesInventario item = (from x in db.IngredientesInventarios where x.IdIngrediente == ingrediente.IdIngrediente select x).FirstOrDefault(); if (item == null) { string Grupo = (from x in db.Ingredientes where x.IdIngrediente == ingrediente.IdIngrediente select x.Grupo).FirstOrDefault(); item = new IngredientesInventario(); item.IdIngrediente = ingrediente.IdIngrediente; item.Ingrediente = ingrediente.Ingrediente; item.FechaInicio = DateTime.Today; item.Ajuste = 0; item.Entradas = 0; item.Final = 0; item.Grupo = Grupo; item.Inicio = 0; item.Salidas = 0; } item.Salidas = item.Salidas + (ingrediente.Cantidad * cantidad); item.Final = item.Inicio + item.Entradas - item.Salidas; item.InventarioFisico = item.Final; item.Ajuste = 0; if (item.IdIngredienteInventario == null) { item.IdIngredienteInventario = FactoryContadores.GetMax("IdIngredienteInventario"); db.IngredientesInventarios.AddObject(item); } db.SaveChanges(); } } }