public ActionResult Edit(VenteVM vente, Guid clientId, string reglement)
        {
            if (ModelState.IsValid)
            {
                StockManager stockManager = new StockManager(db);
                Vente        oldVente     = db.Ventes.Where(v => v.Id == vente.Id).Include(v => v.Details.Select(d => d.Produit)).First();
                //Restitution du stock
                foreach (var detail in oldVente.Details)
                {
                    stockManager.AddStock(detail.ProduitID, detail.QuantiteVendue, OperationType.Vente);
                }
                //Annulation des reglements
                var caisseManager = new CaisseManager(db);
                caisseManager.AnnulerReglementsVente(oldVente, "suppression");
                //Suppression des anciens details
                oldVente.Montant        = 0;
                oldVente.MontantRegle   = 0;
                oldVente.MontantRestant = 0;
                for (int i = 0; i < oldVente.Details.Count; i++)
                {
                    db.DetailsVente.Remove(oldVente.Details[i]);
                }
                db.SaveChanges();
                //Enregistrement des nouveaux details commande
                double total = 0;
                foreach (var detail in vente.Details)
                {
                    if (detail.Quantite > 0)
                    {
                        oldVente.Details.Add(new DetailVente()
                        {
                            Produit        = db.Produits.Find(detail.ProduitId),
                            QuantiteVendue = detail.Quantite,
                            ProduitID      = detail.ProduitId,
                            ID             = Guid.NewGuid()
                        });
                    }
                    //Sortie de stock
                    stockManager.RemoveStock(detail.ProduitId, detail.Quantite, OperationType.Vente);
                    total += detail.Quantite * db.Produits.Find(detail.ProduitId).PrixVente;
                }

                //Reglements

                oldVente.Montant        = total;
                oldVente.MontantRestant = total;
                db.SaveChanges();
                caisseManager.reglerVente(vente.MontantPaye, oldVente, "Paiement de vente", reglement);
                return(RedirectToAction("Confirmer", new { id = oldVente.Id }));
            }

            ViewBag.ClientId = new SelectList(db.Clients, "ID", "Nom", vente.ClientId);
            return(View(vente));
        }
        public ActionResult DeleteConfirmed(Guid id)
        {
            StockManager manager = new StockManager(db);
            Vente        vente   = db.Operations.OfType <Vente>().Include(v => v.Details).FirstOrDefault(o => o.Id == id);

            foreach (var detail in vente.Details)
            {
                manager.AddStock(detail.ProduitID, detail.QuantiteVendue, OperationType.Vente);
            }
            var caisseManager = new CaisseManager(db);

            caisseManager.AnnulerReglementsVente(vente, "suppression");
            db.Operations.Remove(vente);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }