// tallennetaan uusi tilaus tilauskantaan // tarkistaa automaattisesti suurimman seuraavan vapaan tilausnumeron public void TallennaTilaus(List <Tilaus> ptilaukset, Tilaus uusitilaus) { //apumuuttuja double loppusumma = 0; uusitilaus.tilausnro = VapaaTilausnumero(ptilaukset); // lasketaan loppusumma for (int i = 0; i < uusitilaus.tilausrivit.Count; i++) { //loppusummaan lisätään tilausrivin a-hinta kertaa tilausrivin määrä loppusumma = loppusumma + (uusitilaus.tilausrivit[i].ahinta * uusitilaus.tilausrivit[i].maara); } // loppusumma tilaukselle kahdella desimaalilla uusitilaus.loppusumma = Math.Round(loppusumma, 2); // lasketaan veroton summa kahdella desimaalilla uusitilaus.loppusummaveroton = Math.Round(uusitilaus.loppusumma / verokerroin, 2); // veron osuus, verollinen miinus veroton uusitilaus.loppusummanvero = uusitilaus.loppusumma - uusitilaus.loppusummaveroton; // haetaan aikaleima tilaukselle aikaleima = DateTime.Now; // lisätään tilauslistaan ptilaukset.Add(uusitilaus); }
// tallennetaan uusi tilaus tilauskantaan // tarkistaa automaattisesti suurimman seuraavan vapaan tilausnumeron public void TallennaTilaus(List<Tilaus> ptilaukset, Tilaus uusitilaus) { //apumuuttuja double loppusumma = 0; uusitilaus.tilausnro = VapaaTilausnumero(ptilaukset); // lasketaan loppusumma for (int i = 0; i < uusitilaus.tilausrivit.Count; i++) { //loppusummaan lisätään tilausrivin a-hinta kertaa tilausrivin määrä loppusumma = loppusumma + (uusitilaus.tilausrivit[i].ahinta * uusitilaus.tilausrivit[i].maara); } // loppusumma tilaukselle kahdella desimaalilla uusitilaus.loppusumma = Math.Round(loppusumma, 2); // lasketaan veroton summa kahdella desimaalilla uusitilaus.loppusummaveroton = Math.Round(uusitilaus.loppusumma / verokerroin, 2); // veron osuus, verollinen miinus veroton uusitilaus.loppusummanvero = uusitilaus.loppusumma - uusitilaus.loppusummaveroton; // haetaan aikaleima tilaukselle aikaleima = DateTime.Now; // lisätään tilauslistaan ptilaukset.Add(uusitilaus); }
// Tallennetaan tietokanta kun ohjelma sulkeutuu private void Saliavustaja_FormClosed(object sender, FormClosedEventArgs e) { // instanssi jotta voidaan kutsua Tilaus luokan metodia Tilaus tilaushallinta = new Tilaus(); // tietokannan tallennus, jos virhe niin ilmoitetaan käyttäjälle // tilanteesta ei ole paluuta takaisin if ((tilaushallinta.TallennaTilauskanta(tilauskanta, tietokanta)) == false) { MessageBox.Show(Path.GetFullPath(tietokanta) + "\nVirhe tietokannan tallentamisessa, tiedot menetetään..", "Virhe"); } }
// metodi suoritetaan kun ohjelma avautuu private void Saliavustaja_Load(object sender, EventArgs e) { // instanssi jotta voidaan kutsua Tilaus luokan metodia Tilaus tilaushallinta = new Tilaus(); // ohjelman avauksessa ei ole uutta tilausta auki TilausKesken = false; TyhjennaTilaus(); OhjelmanTila(); // jos tietokantatiedosto löytyy niin yritetään ladata if (File.Exists(tietokanta)) { try { using (Stream tiedosto = File.Open(tietokanta, FileMode.Open)) { BinaryFormatter bin = new BinaryFormatter(); tilauskanta = (List <Tilaus>)bin.Deserialize(tiedosto); } } // jos tiedostovirhe, palautetaan false catch (IOException) { MessageBox.Show(Path.GetFullPath(tietokanta) + "\nVirhe tietokannan lataamisessa, lopetetaan!", "Virhe"); this.Close(); } // jos datassa on virhe, palautetaan false catch (SerializationException) { MessageBox.Show(Path.GetFullPath(tietokanta) + "\nVirhe tietokannan lataamisessa, lopetetaan!", "Virhe"); this.Close(); } } // tilauslista refresh TilauksetRefresh(); // tilauslista selection pois TilauksetLtk.ClearSelection(); // ikkunan otsikko this.Text = ohjelmanNimi; }
// muuntaa tilausrivit laatikosta Tilaus objektiin private bool MuunnaTilausRivit(Tilaus ptilaus) { if (TilausKesken == true) { // muunnetaan rivit for (int i = 0; i < TilausRivitLtk.Rows.Count; i++) { // apumuuttujat, vain loopissa olemassa double ahinta = 0; double maara = 0; // muodostetaan instanssi uudelle riville Tilausrivi uusirivi = new Tilausrivi(); // haetaan ahinta laatikosta, muunnetaan teksti luvuksi apumuuttujaan if (Double.TryParse(TilausRivitLtk.Rows[i].Cells[1].Value.ToString(), out ahinta) == false) { // jos lukumuunnoksessa virhe, palautetaan heti false return(false); } // haetaan määrä laatikosta, muunnetaan teksti luvuksi apumuuttujaan if (Double.TryParse(TilausRivitLtk.Rows[i].Cells[2].Value.ToString(), out maara) == false) { // jos lukumuunnoksessa virhe, palautetaan heti false return(false); } // asetetaan arvot rivi objektiin uusirivi.tuote = TilausRivitLtk.Rows[i].Cells[0].Value.ToString(); uusirivi.ahinta = ahinta; uusirivi.maara = maara; // lisätään uusi rivi tilaukselle ptilaus.tilausrivit.Add(uusirivi); } // muunnos onnistui return(true); } // ei tehty mitään, palautetaan false return(false); }
// tilauksen tallennus tilauskantaan private void LisaaTilausButton_Click(object sender, EventArgs e) { if (TilausKesken == true) { // instanssi tilaukselle Tilaus uusitilaus = new Tilaus(); if (MuunnaTilausRivit(uusitilaus) == false) { MessageBox.Show("Loppusummaa ei voitu laskea\nTarkista rivit!", "Virhe!"); // jos virhe, palataan metodista heti return; } // tarkistetaan että on valittu pöytä if (ValitsePoytaValikko.Text == "") { MessageBox.Show("Pöytää ei ole valittu!", "Virhe!"); // jos virhe, palataan metodista heti return; } else { uusitilaus.poyta = ValitsePoytaValikko.Text; } // tallennetaan tilaus tilauskantaan uusitilaus.TallennaTilaus(tilauskanta, uusitilaus); // refresh tilauslista TilauksetRefresh(); // tilauslistan selection pois TilauksetLtk.ClearSelection(); // tyhjennetään tilausrivit TilausKesken = false; TyhjennaTilaus(); OhjelmanTila(); } }
// metodi suoritetaan kun ohjelma avautuu private void Saliavustaja_Load(object sender, EventArgs e) { // instanssi jotta voidaan kutsua Tilaus luokan metodia Tilaus tilaushallinta = new Tilaus(); // ohjelman avauksessa ei ole uutta tilausta auki TilausKesken = false; TyhjennaTilaus(); OhjelmanTila(); // jos tietokantatiedosto löytyy niin yritetään ladata if (File.Exists(tietokanta)) { try { using (Stream tiedosto = File.Open(tietokanta, FileMode.Open)) { BinaryFormatter bin = new BinaryFormatter(); tilauskanta = (List<Tilaus>)bin.Deserialize(tiedosto); } } // jos tiedostovirhe, palautetaan false catch (IOException) { MessageBox.Show(Path.GetFullPath(tietokanta) + "\nVirhe tietokannan lataamisessa, lopetetaan!", "Virhe"); this.Close(); } // jos datassa on virhe, palautetaan false catch (SerializationException) { MessageBox.Show(Path.GetFullPath(tietokanta) + "\nVirhe tietokannan lataamisessa, lopetetaan!", "Virhe"); this.Close(); } } // tilauslista refresh TilauksetRefresh(); // tilauslista selection pois TilauksetLtk.ClearSelection(); // ikkunan otsikko this.Text = ohjelmanNimi; }
// muuntaa tilausrivit laatikosta Tilaus objektiin private bool MuunnaTilausRivit(Tilaus ptilaus) { if (TilausKesken == true) { // muunnetaan rivit for (int i = 0; i < TilausRivitLtk.Rows.Count; i++) { // apumuuttujat, vain loopissa olemassa double ahinta = 0; double maara = 0; // muodostetaan instanssi uudelle riville Tilausrivi uusirivi = new Tilausrivi(); // haetaan ahinta laatikosta, muunnetaan teksti luvuksi apumuuttujaan if (Double.TryParse(TilausRivitLtk.Rows[i].Cells[1].Value.ToString(), out ahinta) == false) { // jos lukumuunnoksessa virhe, palautetaan heti false return false; } // haetaan määrä laatikosta, muunnetaan teksti luvuksi apumuuttujaan if (Double.TryParse(TilausRivitLtk.Rows[i].Cells[2].Value.ToString(), out maara) == false) { // jos lukumuunnoksessa virhe, palautetaan heti false return false; } // asetetaan arvot rivi objektiin uusirivi.tuote = TilausRivitLtk.Rows[i].Cells[0].Value.ToString(); uusirivi.ahinta = ahinta; uusirivi.maara = maara; // lisätään uusi rivi tilaukselle ptilaus.tilausrivit.Add(uusirivi); } // muunnos onnistui return true; } // ei tehty mitään, palautetaan false return false; }
// tilauksen tallennus tilauskantaan private void LisaaTilausButton_Click(object sender, EventArgs e) { if(TilausKesken == true) { // instanssi tilaukselle Tilaus uusitilaus = new Tilaus(); if(MuunnaTilausRivit(uusitilaus) == false) { MessageBox.Show("Loppusummaa ei voitu laskea\nTarkista rivit!", "Virhe!"); // jos virhe, palataan metodista heti return; } // tarkistetaan että on valittu pöytä if (ValitsePoytaValikko.Text == "") { MessageBox.Show("Pöytää ei ole valittu!", "Virhe!"); // jos virhe, palataan metodista heti return; } else uusitilaus.poyta = ValitsePoytaValikko.Text; // tallennetaan tilaus tilauskantaan uusitilaus.TallennaTilaus(tilauskanta, uusitilaus); // refresh tilauslista TilauksetRefresh(); // tilauslistan selection pois TilauksetLtk.ClearSelection(); // tyhjennetään tilausrivit TilausKesken = false; TyhjennaTilaus(); OhjelmanTila(); } }