public IActionResult Obrisi(int UplataID) { UplataDobavljacu uplata = db.UplateDobavljacu.Where(x => x.UplataDobavljacuID == UplataID).FirstOrDefault(); int DobavljacID = uplata.DobavljacID; // regulisanje prema racunima Dobavljac dobavljac = db.Dobavljaci.Where(x => x.DobavljacID == DobavljacID).FirstOrDefault(); double IznosUplate = Math.Round(uplata.Iznos, 4); double?IznosKredita = dobavljac.Kredit; if (IznosUplate >= IznosKredita) { dobavljac.Kredit = 0; IznosUplate -= (double)IznosKredita; db.Dobavljaci.Update(dobavljac); db.SaveChanges(); } else { dobavljac.Kredit -= IznosUplate; IznosUplate = 0; db.Dobavljaci.Update(dobavljac); db.SaveChanges(); } if (IznosUplate > 0) { RacunDobavljaca polovican = db.RacuniDobavljaca.Where(x => x.DobavljacID == DobavljacID && x.DosadPlaceno > 0 && x.Placeno == false).FirstOrDefault(); if (polovican != null) { double PolovicanDosadPlaceno = Math.Round(polovican.DosadPlaceno, 4); if (IznosUplate >= PolovicanDosadPlaceno) { polovican.DosadPlaceno = 0; IznosUplate -= PolovicanDosadPlaceno; } else { polovican.DosadPlaceno -= IznosUplate; IznosUplate = 0; } db.RacuniDobavljaca.Update(polovican); db.SaveChanges(); } } if (IznosUplate > 0) { List <RacunDobavljaca> racuni = db.RacuniDobavljaca.Where(x => x.Placeno == true && x.DobavljacID == DobavljacID).OrderByDescending(p => p.Datum).ToList(); foreach (var x in racuni) { double UkupnoZaNaplatu = Math.Round(x.UkupnoSaPDV, 4); if (IznosUplate > 0) { if (IznosUplate >= UkupnoZaNaplatu) { x.DosadPlaceno = 0; x.Placeno = false; IznosUplate -= UkupnoZaNaplatu; db.RacuniDobavljaca.Update(x); db.SaveChanges(); } else { x.Placeno = false; x.DosadPlaceno -= IznosUplate; IznosUplate = 0; db.RacuniDobavljaca.Update(x); db.SaveChanges(); } if (IznosUplate <= 0) { break; } } } } db.UplateDobavljacu.Remove(uplata); db.SaveChanges(); return(RedirectToAction(nameof(Index))); }
public IActionResult Snimi(UplateDobavljacuDodajVM model) { if (model.Dodaj == true) { UplataDobavljacu nova = new UplataDobavljacu(); nova.Iznos = model.IznosUplate; nova.DobavljacID = model.DobavljacID; nova.Datum = model.Datum; nova.Brojizvoda = model.BrojIzvoda; db.UplateDobavljacu.Add(nova); db.SaveChanges(); // regulisanje uplata prema racunima double NoviIznos = Math.Round(model.IznosUplate, 4); List <RacunDobavljaca> racuni = db.RacuniDobavljaca.Where(x => x.Placeno == false && x.DobavljacID == nova.DobavljacID).ToList(); foreach (var x in racuni) { double DosadPlaceno = x.DosadPlaceno; double IznosRacuna = x.UkupnoSaPDV; // ukupno za naplatu double potrebno = Math.Round(IznosRacuna - DosadPlaceno, 4); if (NoviIznos >= potrebno) { NoviIznos -= potrebno; x.DosadPlaceno = Math.Round(x.DosadPlaceno, 4) + potrebno; x.Placeno = true; } else { x.DosadPlaceno = Math.Round(x.DosadPlaceno, 4) + NoviIznos; NoviIznos = 0; } if (Math.Round(x.DosadPlaceno, 4) == Math.Round(IznosRacuna, 4)) { x.Placeno = true; } if (NoviIznos == 0) { db.RacuniDobavljaca.Update(x); db.SaveChanges(); break; } db.RacuniDobavljaca.Update(x); db.SaveChanges(); } if (NoviIznos > 0) { Dobavljac dobavljac = db.Dobavljaci.Where(x => x.DobavljacID == model.DobavljacID).FirstOrDefault(); dobavljac.Kredit += Math.Round(NoviIznos, 4); db.Dobavljaci.Update(dobavljac); db.SaveChanges(); } } return(RedirectToAction(nameof(Index))); }