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();
                }
            }
        }
Пример #2
0
 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();
         }
     }
 }