public ActionResult Create() { if (!db.Caisses.Any()) { return(RedirectToAction("Index")); } ViewBag.ClientId = new SelectList(db.Clients, "ID", "Nom"); var venteVM = new VenteVM() { Details = new List <DetailVenteVM>() }; var produits = db.Produits.OrderBy(p => p.Nom).ToList(); foreach (var produit in produits) { venteVM.Details.Add(new DetailVenteVM() { NomProduit = produit.Nom, ProduitId = produit.ID, PU = produit.PrixVente, Quantite = 0 }); } return(View(venteVM)); }
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 Create(VenteVM vente, Guid clientId, string reglement) { if (ModelState.IsValid) { StockManager stockManager = new StockManager(db); Vente newVente = new Vente() { Details = new List <DetailVente>(), Client = db.Clients.Find(clientId), Date = DateTime.Now, Id = Guid.NewGuid(), ClientId = clientId, MontantRegle = 0, DateOperation = DateTime.Now, UserId = User.Identity.GetUserId() }; double total = 0; foreach (var detail in vente.Details) { if (detail.Quantite > 0) { newVente.Details.Add(new DetailVente() { Produit = db.Produits.Find(detail.ProduitId), QuantiteVendue = detail.Quantite, ProduitID = detail.ProduitId, ID = Guid.NewGuid() }); } stockManager.RemoveStock(detail.ProduitId, detail.Quantite, OperationType.Vente); total += detail.Quantite * db.Produits.Find(detail.ProduitId).PrixVente; } newVente.Montant = total; newVente.MontantRestant = total; db.Operations.Add(newVente); db.SaveChanges(); new CaisseManager(db).reglerVente(vente.MontantPaye, newVente, "Paiement de vente", reglement); return(RedirectToAction("Confirmer", new { id = newVente.Id })); } ViewBag.ClientId = new SelectList(db.Clients, "ID", "Nom", vente.ClientId); return(View(vente)); }
public ActionResult Edit(Guid?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Vente vente = db.Operations.OfType <Vente>().Include(o => o.Details).FirstOrDefault(o => o.Id == id); if (vente == null) { return(HttpNotFound()); } if (!db.Caisses.Any()) { return(RedirectToAction("Index")); } ViewBag.ClientId = new SelectList(db.Clients, "ID", "Nom"); var venteVM = new VenteVM() { DateOperation = vente.DateOperation, Details = new List <DetailVenteVM>() }; var produits = db.Produits.OrderBy(p => p.Nom).ToList(); foreach (var produit in produits) { venteVM.Details.Add(new DetailVenteVM() { NomProduit = produit.Nom, ProduitId = produit.ID, PU = produit.PrixVente, Quantite = 0 }); var detail = vente.Details.FirstOrDefault(d => d.Produit.ID == produit.ID); if (detail != null) { venteVM.Details.Last().Quantite = detail.QuantiteVendue; } } return(View(venteVM)); }