Exemplo n.º 1
0
        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)));
        }
Exemplo n.º 2
0
        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)));
        }