//detalji racuna -> dohvacanje ukupnog iznosa i ispis te oslobađanje parcele public void KreirajStavke(racun kreiraniRacun) { decimal ukupniIznos = 0; int brOsobaUSmjestaju = 0; using (KampiralisteEntiteti kontekst = new KampiralisteEntiteti()) { kontekst.smjestajs.Attach(odabraniSmjestaj); brOsobaUSmjestaju = odabraniSmjestaj.prijavas.Count; ukupniIznos += UkupniIznosRacuna(kreiraniRacun, kontekst); ispisRacuna.Text = Convert.ToString(ukupniIznos) + " kn"; kreiraniRacun.iznos = ukupniIznos; kontekst.SaveChanges(); } OslobodiParcelu(brOsobaUSmjestaju); }
//poziv funkcije za kreiranje računa, osvjezavanje parcela, prikaza iznosa i gostiju private void akcijaKreirajRacun_Click(object sender, EventArgs e) { if (ispisOdabraniGosti.Items.Count > 0) { racun kreiraniRacun = KreirajRacun(); KreirajStavke(kreiraniRacun); MessageBox.Show("Račun je kreiran!"); ispisOdabraniGosti.Items.Clear(); ispisRacuna.Text = null; PrikaziParcele(); } else { MessageBox.Show("Niste odabrali goste za koje želite izdati račun!"); } }
//racun -> izracun ukupnog iznosa prema statusu osobe, broju dana, vrsti smjestaja i broju osoba private decimal UkupniIznosRacuna(racun kreiraniRacun, KampiralisteEntiteti kontekst) { decimal ukupniIznos = 0; kontekst.smjestajs.Attach(odabraniSmjestaj); List <prijava> listaStavki = ispisOdabraniGosti.Items.Cast <prijava>().ToList(); int brOsobaUSmjestaju = odabraniSmjestaj.prijavas.Count; foreach (var item in listaStavki) { int razlikaDatuma = (item.datum_odjave - item.datum_prijave).Days; if (kreiraniRacun != null) { item.racun = kreiraniRacun; } ukupniIznos += item.status_osobe.iznos * razlikaDatuma + ((item.smjestaj.vrsta_smjestaja.iznos) / brOsobaUSmjestaju) * razlikaDatuma; } return(ukupniIznos); }
//kreiranje računa private racun KreirajRacun() { racun noviRacun = null; using (KampiralisteEntiteti kontekst = new KampiralisteEntiteti()) { kontekst.smjestajs.Attach(odabraniSmjestaj); noviRacun = new racun() { smjestaj = odabraniSmjestaj as smjestaj, smjestaj_id = odabraniSmjestaj.id, zaposlenik_id = prijavljeniZaposlenik.id, JIR = RandomString(), ZIR = RandomString(), iznos = 0, datum_vrijeme_izdavanja = DateTime.Now }; kontekst.racuns.Add(noviRacun); kontekst.SaveChanges(); } return(noviRacun); }
// storniranje racuna -> dohvacanje prijava, postavljanje racuna na null i ponovno zauzimanje parcele private void akcijaStornirajRacun_Click(object sender, EventArgs e) { BindingList <prijava> listaPrijava = new BindingList <prijava>(); racun odabraniRacun = racunBindingSource.Current as racun; if (odabraniRacun != null) { if (MessageBox.Show("Sigurno želite stornirati odabrani račun?", "Upozorenje!", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) { using (var baza = new KampiralisteEntiteti()) { baza.racuns.Attach(odabraniRacun); var upit = from prijava in baza.prijavas where prijava.racun.id == odabraniRacun.id select prijava; listaPrijava = new BindingList <prijava>(upit.ToList()); foreach (var item in listaPrijava) { item.racun_id = null; } odabraniSmjestaj = odabraniRacun.smjestaj as smjestaj; ZauzmiParcelu(); baza.racuns.Remove(odabraniRacun); baza.SaveChanges(); } } } else { MessageBox.Show("Potrebno je odabrati račun koji se želi stornirati!"); } PrikaziRacune(); }