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")); }