/* * Created by SharpDevelop. * User: nibbler * Date: 20.1.2007 * Time: 13:45 */ using System; using System.Drawing; using System.Windows.Forms; using System.Data; using System.Collections.Generic; namespace Faktury { /// /// Trida MainForm je hlavni trida, ktera ma nastarosti hlavni formular aplikace /// public partial class MainForm { // nase firma se kterou budeme pracovat public static Firma firma; // rika jestli je jiz firma vytvorena public static bool vytvoreno; // rika jestli nastala nejaka zmena ve formulari private bool zmena; // slouzi k praci se souborem private XMLsoubor xmlSoubor; // nazev souboru se kterym budeme pracovat private string soubor; // bezna faktura je aktualni faktura se kterou se pracuje private string beznaFaktura; /// /// Konstruktor MainForm() pripavi vse pro vytvoreni formulare a jeho zobrazeni /// public MainForm() { InitializeComponent(); firma = null; vytvoreno = false; zmena = false; xmlSoubor = null; soubor = null; beznaFaktura = null; ZobrazitFormular(false); ZobrazitMenu(false); string s = "Začněte založením nové firmy - Soubor/New ... nebo otevřením již existující firmy - Soubor/Open"; Informovat(s); } /// /// VycistitFormular() nastavi vlastnosti Text kontrolek na null nebo vychozi hodnoty /// public void VycistitFormular() { // do kontrolky s cislem faktury vygenerujeme nove cislo tb_cisloFaktury.Text = UrcitCisloFaktury(); tb_cisloObjednavky.Text = null; tb_konstantniSymbol.Text = null; cb_zpusobPlatby.Text = "převodem"; dtp_datumVystaveni.Text = null; dtp_datumUZP.Text = null; dtp_datumSplatnosti.Text = null; cb_odberatel.Text = null; // vynulujeme informace o zakaznikovi na formulari NacistZakaznika(cb_odberatel.Text); tb_vyrobek.Text = null; tb_cenaZaJednotku.Text = "0"; tb_pocetJednotek.Text = "0"; tb_cenaSDPHpp.Text = "0"; cb_sazbaDPHpp.SelectedItem = cb_sazbaDPHpp.Items[0]; tb_castkaDPHpp.Text = "0"; tb_cenaSDPHpp.Text = "0"; lv_vyrobky.Items.Clear(); tb_sluzba.Text = null; tb_cenaSDPHvp.Text = "0"; cb_sazbaDPHpp.SelectedItem = cb_sazbaDPHpp.Items[1]; tb_castkaDPHvp.Text = "0"; tb_cenaSDPHvp.Text = "0"; lv_sluzby.Items.Clear(); tb_celkovaCena.Text = "0"; b_odebratPP.Enabled = false; b_odebratVP.Enabled = false; } /// /// ValidovatFormular() nuti uzivatele zadat nutne informace /// /// vraci true, pokud uzivatel zadal vsechna nutna data public bool ValidovatFormular() { bool uspech = false; // musi zadat alespon jednu polozku if(lv_vyrobky.Items.Count == 0 && lv_sluzby.Items.Count == 0) { string s = "Nezadali jste žádnou položku ..."; Varovat(s); } // a musi zadat zakaznika else if(cb_odberatel.Text == "") { string s = "Musíte vybrat odběratele ..."; Varovat(s); } else { uspech = true; } return uspech; } /// /// ZobrazitFormular() slouzi k zviditelneni kontrolek na formulari /// /// jestli je zviditelnit bo ne public void ZobrazitFormular(bool stav) { listBox_fav.Enabled = stav; panel1.Visible = stav; gb_pevnePolozky.Visible = stav; gb_volitelnePolozky.Visible = stav; l_cenaCelkem.Visible = stav; tb_celkovaCena.Visible = stav; b_storno.Visible = stav; b_akce.Visible = stav; b_odebratPP.Enabled = false; b_odebratVP.Enabled = false; } /// /// ZobrazitMenu() slouzi k povoleni urcitych slozek menu /// /// jestli je povolit bo ne public void ZobrazitMenu(bool stav) { menuSouborUlozit.Enabled = stav; menuSouborUlozitjako.Enabled = stav; menuSouborZavrit.Enabled = stav; menuSouborExportDoHTML.Enabled = stav; menuSouborNahled.Enabled = stav; menuSouborTisk.Enabled = stav; menuFirma.Enabled = stav; menuFaktura.Enabled = stav; menuOdberatel.Enabled = stav; } /// /// ZobrazitSeznamFakturAZakazniku() naplni listBox fakturami a comboBox zakazniky /// take vyplni hlavicku faktury /// public void ZobrazitSeznamFakturAZakazniku() { // vycistime kontrolky l_naseAdresa.Text = null; l_nasKontakt.Text = null; listBox_fav.Items.Clear(); cb_odberatel.Items.Clear(); // a znova je naplnime // hlavicka faktury - nazev, adresa a kontaktni udaje nasi firmy string s = firma.ToString(); string[] retezec = s.Split('|'); l_naseAdresa.Text = retezec[0]; l_nasKontakt.Text = retezec[1]; // naplneni listBoxu foreach(KeyValuePair faktura in firma.Faktury) { listBox_fav.Items.Add(faktura.Value.EvidencniCislo); } // naplneni comboBoxu foreach(KeyValuePair zakaznik in firma.Zakaznici) { cb_odberatel.Items.Add(zakaznik.Value.ObchodniJmeno); } } /// /// ZobrazitFakturu() preda vsem kontrolkam informace z aktualni faktury /// /// ktera faktura se ma zobrazit /// jestli doslo k nacteni faktury v poradku public bool ZobrazitFakturu(string evidencniCisloFaktury) { bool uspech = false; // projdeme vsechny faktury foreach(KeyValuePair faktura in firma.Faktury) { // a jestli nejaka je rovna cislu faktury co hledame if(faktura.Value.EvidencniCislo == evidencniCisloFaktury) { // potvrdime uspech uspech = true; // vycistime polozky lv_vyrobky.Items.Clear(); lv_sluzby.Items.Clear(); // a nacteme naslou fakturu do formulare // propozice faktrury tb_evidencniCislo.Text = faktura.Value.EvidencniCislo; tb_cisloFaktury.Text = faktura.Value.CisloFaktury; tb_cisloObjednavky.Text = faktura.Value.CisloObjednavky; tb_konstantniSymbol.Text = faktura.Value.KonstantniSymbol; cb_zpusobPlatby.Text = faktura.Value.ZpusobPlatby; dtp_datumVystaveni.Text = faktura.Value.DatumVystaveni.ToString(); dtp_datumUZP.Text = faktura.Value.DatumUZP.ToString(); dtp_datumSplatnosti.Text = faktura.Value.DatumSplatnosti.ToString(); tb_celkovaCena.Text = faktura.Value.CelkovaCena.ToString(); // jaky k ni patri zakaznik NacistZakaznika(faktura.Value.Zakaznik); // a vsechny jeji polozky foreach(KeyValuePair vyrobek in faktura.Value.Vyrobky) { string[] seznamVyrobku = new string[7]; seznamVyrobku[0] = vyrobek.Value.DruhVyrobku; seznamVyrobku[1] = vyrobek.Value.CenaZaJednotku.ToString(); seznamVyrobku[2] = vyrobek.Value.PocetJednotek.ToString(); seznamVyrobku[3] = vyrobek.Value.CenaBezDPH.ToString(); seznamVyrobku[4] = vyrobek.Value.SazbaDPH.ToString(); seznamVyrobku[5] = vyrobek.Value.CastkaDPH.ToString(); seznamVyrobku[6] = vyrobek.Value.CenaSDPH.ToString(); lv_vyrobky.Items.Add(new ListViewItem(seznamVyrobku)); } foreach(KeyValuePair sluzba in faktura.Value.Sluzby) { string[] seznamVyrobku = new string[5]; seznamVyrobku[0] = sluzba.Value.DruhSluzby; seznamVyrobku[1] = sluzba.Value.CenaBezDPH.ToString(); seznamVyrobku[2] = sluzba.Value.SazbaDPH.ToString(); seznamVyrobku[3] = sluzba.Value.CastkaDPH.ToString(); seznamVyrobku[4] = sluzba.Value.CenaSDPH.ToString(); lv_sluzby.Items.Add(new ListViewItem(seznamVyrobku)); } } } return uspech; } /// /// PovolitTlacitka() povoluje tlacitka na formulari /// /// jestli povolit bo nepovolit tlacitka public void PovolitTlacitka(bool stav) { b_pridatOdberatele.Enabled = stav; b_pridatPP.Enabled = stav; b_pridatVP.Enabled = stav; } /// /// PridatFakturu() nacte informace od uzivatele o fakture /// a prida fakturu do seznamu faktur /// /// jestli je mozne pridani faktury public bool PridatFakturu() { // pro validaci ciselnych vstupu bool b = false; // propozice string evidencniCislo = tb_evidencniCislo.Text; string cisloFaktury = tb_cisloFaktury.Text; string cisloObjednavky = tb_cisloObjednavky.Text; string zakaznik = cb_odberatel.Text; string konstantniSymbol = tb_konstantniSymbol.Text; string zpusobPlatby = cb_zpusobPlatby.Text; // datumy DateTime datumVystaveni = DateTime.Parse(dtp_datumVystaveni.Text); DateTime datumUZP = DateTime.Parse(dtp_datumUZP.Text); DateTime datumSplatnosti = DateTime.Parse(dtp_datumSplatnosti.Text); // celkova cena decimal celkovaCena = decimal.Parse(tb_celkovaCena.Text); // vytvori fakturu Faktura faktura = new Faktura(evidencniCislo, cisloFaktury, cisloObjednavky, zakaznik, konstantniSymbol, zpusobPlatby, datumVystaveni, datumUZP, datumSplatnosti, celkovaCena); try { // do faktury pridame vsechny polozky for(int i = 0; i < lv_vyrobky.Items.Count; i++) { string druhVyrobku = lv_vyrobky.Items[i].SubItems[0].Text; decimal cenaZaJednotku = decimal.Parse(lv_vyrobky.Items[i].SubItems[1].Text); int pocetJednotek = Int32.Parse(lv_vyrobky.Items[i].SubItems[2].Text); decimal cenaBezDPH = decimal.Parse(lv_vyrobky.Items[i].SubItems[3].Text); short sazbaDPH = short.Parse(lv_vyrobky.Items[i].SubItems[4].Text); decimal castkaDPH = decimal.Parse(lv_vyrobky.Items[i].SubItems[5].Text); decimal cenaSDPH = decimal.Parse(lv_vyrobky.Items[i].SubItems[6].Text); Vyrobek vyrobek = new Vyrobek(druhVyrobku, cenaZaJednotku, pocetJednotek, cenaBezDPH, sazbaDPH, castkaDPH, cenaSDPH); faktura.PridatVyrobek(vyrobek); } for(int i = 0; i < lv_sluzby.Items.Count; i++) { string druhSluzby = lv_sluzby.Items[i].SubItems[0].Text; decimal cenaBezDPH = decimal.Parse(lv_sluzby.Items[i].SubItems[1].Text); short sazbaDPH = short.Parse(lv_sluzby.Items[i].SubItems[2].Text); decimal castkaDPH = decimal.Parse(lv_sluzby.Items[i].SubItems[3].Text); decimal cenaSDPH = decimal.Parse(lv_sluzby.Items[i].SubItems[4].Text); Sluzba sluzba = new Sluzba(druhSluzby, cenaBezDPH, sazbaDPH, castkaDPH, cenaSDPH); faktura.PridatSluzbu(sluzba); } b = true; } catch { b = false; string s = "Vyskytla se chyba při ukládání faktury. Zkontrolujte hlavně číslice!!!"; Varovat(s); } // pokud prevody cisel probehly v poradku if(b) { // pridame fakturu do seznamu faktur firma.PridatFakturu(faktura); // pridame i do listBoxu aby s ni uzivatel mohl dale pracovat listBox_fav.Items.Add(faktura.EvidencniCislo); string s = "Faktura " + evidencniCislo + " byla přidána do seznamu faktur ..."; Informovat(s); } return b; } /// /// NacistZakaznika() nacte pozadovaneho zakaznika ze seznamu zakazniku /// /// jmeno zakaznika, ktery se ma nacist public void NacistZakaznika(string jmenoZakaznika) { // pokud je predana v parametru prazdna hodnota, jenom vycistime adresu a kontakt ve formulari if(jmenoZakaznika == "") { l_ulice.Text = null; l_cislo.Text = null; l_psc.Text = null; l_mesto.Text = null; l_zeme.Text = null; l_telefon.Text = null; l_fax.Text = null; l_email.Text = null; l_ucet.Text = null; l_ico.Text = null; l_dic.Text = null; } else { // projdem vsechny zakazniky foreach(KeyValuePair zakaznik in firma.Zakaznici) { // kdyz naleznem if(zakaznik.Value.ObchodniJmeno == jmenoZakaznika) { // predame informace kontrolkam na formulari cb_odberatel.Text = zakaznik.Value.ObchodniJmeno; l_ulice.Text = zakaznik.Value.Ulice; l_cislo.Text = zakaznik.Value.Cislo; l_mesto.Text = zakaznik.Value.Mesto; l_psc.Text = zakaznik.Value.Psc; l_zeme.Text = zakaznik.Value.Zeme; l_telefon.Text = zakaznik.Value.Telefon; l_fax.Text = zakaznik.Value.Fax; l_email.Text = zakaznik.Value.Email; l_ucet.Text = zakaznik.Value.Ucet; l_ico.Text = zakaznik.Value.Ico; l_dic.Text = zakaznik.Value.Dic; } } } } /// /// VypocitatCelkovouCenu() se stara o vypocet celkove ceny faktury /// tak ze projde vsechny polozky a secte jejich ceny /// public void VypocitatCelkovouCenu() { decimal celkovaCena = 0; for(int i = 0; i < lv_vyrobky.Items.Count; i++) { decimal cenaSDPH = decimal.Parse(lv_vyrobky.Items[i].SubItems[6].Text); celkovaCena += cenaSDPH; } for(int i = 0; i < lv_sluzby.Items.Count; i++) { decimal cenaSDPH = decimal.Parse(lv_sluzby.Items[i].SubItems[4].Text); celkovaCena += cenaSDPH; } // celkovou cenu vypiseme do formulare tb_celkovaCena.Text = celkovaCena.ToString("f2"); } /// /// UrcitCisloFaktury() zjisti posledni cislo faktury v aktualni den a vytvori je jednu vyssi /// /// vygenerovane cislo faktury public string UrcitCisloFaktury() { string cislo; // zjistime si aktualni rok, mesic a den int rok = System.DateTime.Now.Year; int mesic = System.DateTime.Now.Month; int den = System.DateTime.Now.Day; // doplnime cisla nulami tak aby vsechna cisla faktur mela stejny format a tak i delku string s_mesic = "00"; string s_den = "00"; if(mesic < 10) { s_mesic = mesic.ToString("0#"); } else { s_mesic = mesic.ToString(); } if(den < 10) { s_den = den.ToString("0#"); } else { s_den = den.ToString(); } // mame hotovou prvni cast cisla faktury, ktera je slozena v podstate jen z datumu string predek = "FAV" + rok + s_mesic + s_den; // ted samotne cislovani string ocasek = "000"; // pocet faktur vystavenych ve stejny den int ciselnik = 1; if(firma != null) { // najdeme vsechny faktury se stejnou prvni casti a inkrementujeme ciselnik foreach(KeyValuePair faktura in firma.Faktury) { string[] s = faktura.Value.EvidencniCislo.Split('/'); if(s[0] == predek) { // ciselnik++; } } } // doplneni nulami aby byl format 3mistny if(ciselnik < 10) ocasek = ciselnik.ToString("00#"); else if(ciselnik < 100) ocasek = ciselnik.ToString("0#"); else if(ciselnik < 1000) ocasek = ciselnik.ToString(); // varovani o prekroceni kapacity faktur za jeden den // nema vyznam, pouze se zmeni format cisel faktur o jednu delku if(ciselnik > 999) { string s = "Nelze vytvořit víc jak 999 faktur za jeden den ..."; Varovat(s); } // dame dohromady cele cislo faktury cislo = "FAV" + rok + s_mesic + s_den + "/" + ocasek; return cislo; } /// /// UlozitSoubor() uklada data do souboru /// /// pokud bylo macknuto na "ulozit" public void UlozitSoubor(bool ulozitClick) { // varovani pred neulozenymi daty a zapis firmy do souboru if(zmena && !ulozitClick) { if(MessageBox.Show("Nemáte uloženou práci!!!\n\nChcete ji uložit?","Varování", MessageBoxButtons.OKCancel)==DialogResult.OK) { xmlSoubor.ZapsatFirmu(firma); zmena = false; } } else { xmlSoubor.ZapsatFirmu(firma); zmena = false; } } /// /// VytvoritNovouFirmu() vytvori formular pro vstupni data o nove firme /// public void VytvoritNovouFirmu() { // novy objekt firmy firma = new Firma(); // vytvoreni formulare FirmaForm new FirmaForm(false).ShowDialog(); // jestlize jsou vstupni informace z formulare FirmaForm potvrzeny if(vytvoreno) { try { // urcime nazev souboru soubor = firma.ObchodniJmeno + ".xml"; // vytvorime novy objekt XMLsoubor xmlSoubor = new XMLsoubor(soubor); // a zapiseme firmu do souboru xmlSoubor.ZapsatFirmu(firma); // zobrazime formular a ostatni ZobrazitFormular(true); ZobrazitMenu(true); ZobrazitSeznamFakturAZakazniku(); b_akce.Text = "Nová"; string s = "Firma byla úspěšně vytvořena a zapsána do souboru " + soubor + ". Nyní mužete vytvořit Vaší první fakturu ..."; Informovat(s); } catch { string s = "Během vytváření souboru s Vaší firmou došlo k chybě ..."; Varovat(s); } } // pokud jsme prerusili vytvareni firmy else { // vynulujeme firmu firma = null; string s = "Firma nebyla vytvořena ..."; Varovat(s); } } #region status - vypisy pro uzivatele /// /// Varovat() zmeni vlastnost Text pro kontrolku status /// /// varovani pro uzivatele public void Varovat(string s) { status.ForeColor = Color.Red; status.Text = " ! ! ! " + s + " ! ! ! "; } /// /// Informovat() zmeni vlastnost Text pro kontrolku status /// /// informace pro uzivatele public void Informovat(string s) { status.ForeColor = Color.Blue; status.Text = s; } #endregion #region obsluha menuSoubor /// /// MenuSouborNovaClick() - obsluha kliknuti na Nova v menu Soubor /// /// objekt /// udalost void MenuSouborNovaClick(object sender, System.EventArgs e) { // pokud jiz nejaka firma existuje if(firma != null) { // varovani if(MessageBox.Show("Opravdu chcete opustit tuto firmu\na založit novou firm?","Varování", MessageBoxButtons.OKCancel)==DialogResult.OK) { // a vytvoreni nove firmy firma = null; VytvoritNovouFirmu(); listBox_fav.Enabled = false; listBox_fav.SelectedItem = null; b_akce.Text = "OK"; menuFakturaNova.Enabled = false; VycistitFormular(); } } else { // vytvoreni firmy bez varovani VytvoritNovouFirmu(); listBox_fav.Enabled = false; listBox_fav.SelectedItem = null; b_akce.Text = "OK"; menuFakturaNova.Enabled = false; VycistitFormular(); } } /// /// MenuSouborOtevritClick() - obsluha kliknuti na Otevrit v menu Soubor /// /// objekt /// udalost void MenuSouborOtevritClick(object sender, System.EventArgs e) { // pokud doslo ke zmene v dosavadnich datech if(zmena) { // ulozime je UlozitSoubor(false); } // pokud existuje firma if(firma != null) { // a opustime tuto firmu if(MessageBox.Show("Opravdu chcete opustit tuto firmu\na založit novou firm?","Varování", MessageBoxButtons.OKCancel)==DialogResult.OK) { // otevreme otviraci dialog openFileDialogSoubor.ShowDialog(); } } else { // otevreme otviraci dialog openFileDialogSoubor.ShowDialog(); } } /// /// OpenFileDialogSouborFileOk() - obsluha kliknuti na OK v otviracim dialogu /// /// objekt /// udalost void OpenFileDialogSouborFileOk(object sender, System.ComponentModel.CancelEventArgs e) { firma = null; // zjistime si soubor soubor = openFileDialogSoubor.FileName; // vytvorime novy objekt XMLsoubor xmlSoubor = new XMLsoubor(soubor); // pokud je xmlSoubor validni, zalozime novou firmu podle daneho xml souboru if(xmlSoubor.Validovat()) { Informovat("Validace xml pomocí xsd proběhla v pořádku."); try { // a vytvorime novou firmu firma = xmlSoubor.NacistFirmu(); ZobrazitFormular(true); ZobrazitMenu(true); ZobrazitSeznamFakturAZakazniku(); if(listBox_fav.Items.Count == 0) { listBox_fav.Enabled = false; } string s = "Firma " + firma.ObchodniJmeno + " byla úspěšně načtena ..."; Informovat(s); } catch(Exception) { string s = "Vyskytla se chyba při načítání souboru ..."; Varovat(s); } } else { status.Text = "XML soubor neodpovídá XSD schématu"; } } /// /// MenuSouborUlozitClick() - obsluha kliknuti na Ulozit v menu Soubor /// /// objekt /// udalost void MenuSouborUlozitClick(object sender, System.EventArgs e) { UlozitSoubor(true); string s = "Soubor byl uložen ..."; Informovat(s); } /// /// MenuSouborUlozitjakoClick() - obsluha kliknuti na UlozitJako v menu Soubor /// /// objekt /// udalost void MenuSouborUlozitjakoClick(object sender, System.EventArgs e) { // zobrazime ukladaci dialog saveFileDialogSoubor.ShowDialog(); } /// /// SaveFileDialogSouborFileOk() - obsluha kliknuti na OK v ukladacim dialogu /// /// objekt /// udalost void SaveFileDialogSouborFileOk(object sender, System.ComponentModel.CancelEventArgs e) { // zjistime si zvolene jmeno a ulozime do souboru soubor = saveFileDialogSoubor.FileName; try { xmlSoubor = new XMLsoubor(soubor); UlozitSoubor(true); string s = "Firma " + firma.ObchodniJmeno + " byla úspěšně uložena ..."; Informovat(s); } catch(Exception) { string s = "Vyskytla se chyba při ukládání souboru ..."; Varovat(s); } } /// /// MenuSouborExportDoHTMLClick() - obsluha kliknuti Export do HTML v menu Soubor /// /// objekt /// udalost void MenuSouborExportDoHTMLClick(object sender, System.EventArgs e) { ExportDoHTML export = new ExportDoHTML(soubor); // pokud je vytvoreni instance Export v poradku if(export.Uspech) { Informovat("Export do HTML proběhl v pořádku."); } else { Varovat("Export do HTML byl neúspěšný"); } } /// /// MenuSouborZavritClick() - obsluha kliknuti na Zavrit v menu Soubor /// /// objekt /// udalost void MenuSouborZavritClick(object sender, System.EventArgs e) { // ulozi se zmeny if(zmena) { UlozitSoubor(false); } // vycistime formular VycistitFormular(); b_akce.Text = "OK"; l_naseAdresa.Text = null; l_nasKontakt.Text = null; listBox_fav.Items.Clear(); cb_odberatel.Items.Clear(); firma = null; vytvoreno = false; zmena = false; xmlSoubor = null; soubor = null; beznaFaktura = null; ZobrazitFormular(false); ZobrazitMenu(false); string s = "Začněte založením nové firmy - Soubor/New ... nebo otevřením již existující firmy - Soubor/Open"; Informovat(s); } /// /// MenuSouborNahledClick() - obsluha kliknuti na Nahled v menu Soubor /// /// objekt /// udalost void MenuSouborNahledClick(object sender, System.EventArgs e) { if(listBox_fav.SelectedItem != null) { // projdeme a vybereme fakturu, na kterou chceme udelat nahled pro tisk foreach(KeyValuePair faktura in firma.Faktury) { if(faktura.Value.EvidencniCislo == beznaFaktura) { string s = "Pohled na tisk faktury " + faktura.Value.EvidencniCislo + " ..."; Informovat(s); // novy objekt Tisk Tisk tisk = new Tisk(faktura.Value); // zrealizovat nahled tisk.Nahlizet(); } } } else { string s = "Před náhledem musíte vybrat fakturu ..."; Varovat(s); } } /// /// MenuSouborTiskClick() - obsluha kliknuti na Tisk v menu Soubor /// /// objekt /// udalost void MenuSouborTiskClick(object sender, System.EventArgs e) { if(listBox_fav.SelectedItem != null) { // projdeme a vybereme fakturu, kterou chceme tisknout foreach(KeyValuePair faktura in firma.Faktury) { if(faktura.Value.EvidencniCislo == beznaFaktura) { string s = "Tisknete fakturu " + faktura.Value.EvidencniCislo + " ..."; Informovat(s); // novy objekt Tisk Tisk tisk = new Tisk(faktura.Value); // realizovat tisk tisk.Tisknout(); } } } else { string s = "Před tiskem musíte vybrat fakturu ..."; Varovat(s); } } /// /// MenuSouborKonecClick() - obsluha kliknuti na Konec v menu Soubor /// /// objekt /// udalost void MenuSouborKonecClick(object sender, System.EventArgs e) { // ulozeni a zavreni formulare if(zmena) { UlozitSoubor(false); } this.Close(); } #endregion #region obsluha menuFirma /// /// MenuFirmaEditovatClick() - obsluha kliknuti na Editovat v menu Firma /// /// objekt /// udalost void MenuFirmaEditovatClick(object sender, System.EventArgs e) { // novy formular pro vstupni data o firme new FirmaForm(true).ShowDialog(); ZobrazitSeznamFakturAZakazniku(); } #endregion #region obsluha menuFaktura /// /// MenuFakturaNovaClick() - obsluha kliknuti na Nova v menu Faktura /// /// objekt /// udalost void MenuFakturaNovaClick(object sender, System.EventArgs e) { // nastaveni kontrolek, tak abychom mohli zadavat informace listBox_fav.Enabled = false; listBox_fav.SelectedItem = null; b_akce.Text = "OK"; menuFakturaNova.Enabled = true; VycistitFormular(); PovolitTlacitka(true); string s = "Vyplňte a potvrďte vstupní formulář ..."; Informovat(s); } /// /// MenuFakturaOdstranitClick() - obsluha kliknuti na Odstranit v menu Faktura /// /// objekt /// udalost void MenuFakturaOdstranitClick(object sender, System.EventArgs e) { // odstranime fakturu, ktera je oznacena v listBoxu if(listBox_fav.SelectedItem != null) { string s = "Faktura " + listBox_fav.SelectedItem.ToString() + " byla odstraněna ..."; firma.OdstranitFakturu(listBox_fav.SelectedItem.ToString()); ZobrazitSeznamFakturAZakazniku(); VycistitFormular(); Informovat(s); } } #endregion #region obsluha menuOdberatel /// /// MenuOdberatelPridatClick() - obsluha kliknuti na Pridat v menu Odberatel /// /// objekt /// udalost void MenuOdberatelPridatClick(object sender, System.EventArgs e) { // vytvorime formular pro pridani zakaznika new ZakaznikForm("Odběratel").ShowDialog(); if(vytvoreno) { // aktualizujeme comboBox cb_odberatel.Items.Clear(); foreach(KeyValuePair zakaznik in firma.Zakaznici) { cb_odberatel.Items.Add(zakaznik.Value.ObchodniJmeno); } zmena = true; string s = "Byl přidán nový odběratel..."; Informovat(s); } } /// /// MenuOdberatelOdstranitClick() - obsluha kliknuti na Odstranit v menu Odberatel /// /// objekt /// udalost void MenuOdberatelOdstranitClick(object sender, System.EventArgs e) { if(cb_odberatel.SelectedItem != null) { // odstranime vybraneho zakaznika string s = "Byl odstraněn odběratel " + cb_odberatel.SelectedItem.ToString() + " ..."; firma.OdstranitZakaznika(cb_odberatel.SelectedItem.ToString()); cb_odberatel.SelectedItem = null; ZobrazitSeznamFakturAZakazniku(); Informovat(s); } else { string s = "Nejdříve je nutné odběratele zvolit a poté odstranit ..."; Varovat(s); } } #endregion #region obsluha menuInfo /// /// MenuInfoClick() - obsluha kliknuti na Info v menu /// /// objekt /// udalost void MenuInfoClick(object sender, System.EventArgs e) { // zobrazeni formulare Popis new Popis().ShowDialog(); } #endregion #region obsluha tlacitek na formulari /// /// B_akceClick() - obsluha kliknuti na tlacitko B_akce /// /// objekt /// udalost void B_akceClick(object sender, System.EventArgs e) { // pokud tlacitko s napis Nova if(((Control)sender).Text == "Nová") { // nastavime formular na pridavani nove faktury listBox_fav.Enabled = false; listBox_fav.SelectedItem = null; b_akce.Text = "OK"; menuFakturaNova.Enabled = false; VycistitFormular(); PovolitTlacitka(true); string s = "Vyplňte a potvrďte vstupní formulář ..."; Informovat(s); } // pokud tlacitko s napis OK else if(((Control)sender).Text == "OK") { // zkontrolujeme vstup a pridame fakturu do seznamu faktur if(ValidovatFormular()) { if(PridatFakturu()) { zmena = true; string s = "Faktura " + tb_evidencniCislo.Text + " byla vytvořena a přidána do seznamu faktůr ..."; Informovat(s); VycistitFormular(); } } } // pokud tlacitko s napis Editovat else if(((Control)sender).Text == "Editovat") { // odstranime fakturu a pak hned ulozime tu zeditovanou firma.OdstranitFakturu(beznaFaktura); if(PridatFakturu()) { ZobrazitSeznamFakturAZakazniku(); b_akce.Enabled = false; string s = "Faktura " + tb_evidencniCislo.Text + " byla úspěšně změněna ..."; Informovat(s); VycistitFormular(); } } } /// /// B_stornoClick() - obsluha kliknuti na tlacitko B_storno /// /// objekt /// udalost void B_stornoClick(object sender, System.EventArgs e) { // vycistime formlar listBox_fav.Enabled = true; listBox_fav.SelectedItem = null; b_akce.Text = "Nová"; menuFakturaNova.Enabled = true; VycistitFormular(); } /// /// B_pridatPPClick() - obsluha kliknuti na tlacitko B_pridatPP /// precte informace z formulare, vypocita celkovou cenu polozek /// a prida polozku do seznmu polozek /// /// objekt /// udalost void B_pridatPPClick(object sender, System.EventArgs e) { bool existuje = false; for(int i = 0; i < lv_vyrobky.Items.Count; i++) { string nazev = lv_vyrobky.Items[i].SubItems[0].Text; if(nazev == tb_vyrobek.Text) existuje = true; } if(tb_vyrobek.Text != "" && !existuje) { string[] polozka = new string[7]; polozka[0] = tb_vyrobek.Text; polozka[1] = tb_cenaZaJednotku.Text; polozka[2] = tb_pocetJednotek.Text; polozka[3] = tb_cenaBezDPHpp.Text; polozka[4] = cb_sazbaDPHpp.Text; polozka[5] = tb_castkaDPHpp.Text; polozka[6] = tb_cenaSDPHpp.Text; lv_vyrobky.Items.Add(new ListViewItem(polozka)); VypocitatCelkovouCenu(); tb_vyrobek.Text = ""; tb_cenaZaJednotku.Text = "0"; tb_pocetJednotek.Text = "0"; cb_sazbaDPHpp.Text = "19"; zmena = true; string s = "Vyrobek byl přidán do seznamu výrobků ..."; Informovat(s); } else { string s = "Název výrobku musí být jedinečný ..."; Varovat(s); } } /// /// B_pridatVPClick() - obsluha kliknuti na tlacitko B_pridatVP /// precte informace z formulare, vypocita celkovou cenu polozek /// a prida polozku do seznmu polozek /// /// objekt /// udalost void B_pridatVPClick(object sender, System.EventArgs e) { bool existuje = false; for(int i = 0; i < lv_sluzby.Items.Count; i++) { string nazev = lv_sluzby.Items[i].SubItems[0].Text; if(nazev == tb_sluzba.Text) existuje = true; } if(tb_sluzba.Text != "" && !existuje) { string[] polozka = new string[5]; polozka[0] = tb_sluzba.Text; polozka[1] = tb_cenaBezDPHvp.Text; polozka[2] = cb_sazbaDPHvp.Text; polozka[3] = tb_castkaDPHvp.Text; polozka[4] = tb_cenaSDPHvp.Text; lv_sluzby.Items.Add(new ListViewItem(polozka)); VypocitatCelkovouCenu(); tb_sluzba.Text = ""; tb_cenaBezDPHvp.Text = "0"; cb_sazbaDPHvp.Text = "5"; zmena = true; string s = "Služba byla přidána do seznamu služeb ..."; Informovat(s); } else { string s = "Název služby musí být jedinečný ..."; Varovat(s); } } /// /// B_odebratPPClick() - obsluha kliknuti na tlacitko B_odebratPP /// odebere polozku z listView /// /// objekt /// udalost void B_odebratPPClick(object sender, System.EventArgs e) { if(lv_vyrobky.SelectedItems.Count != 0) { string vyrobek = lv_vyrobky.SelectedItems[0].SubItems[0].Text; lv_vyrobky.SelectedItems[0].Remove(); zmena = true; string s = "Výrobek " + vyrobek + " byl odstraňen ..."; Informovat(s); } } /// /// B_odebratVPClick() - obsluha kliknuti na tlacitko B_odebratVP /// odebere polozku z listView /// /// objekt /// udalost void B_odebratVPClick(object sender, System.EventArgs e) { if(lv_sluzby.SelectedItems.Count != 0) { string sluzba = lv_sluzby.SelectedItems[0].SubItems[0].Text; lv_sluzby.SelectedItems[0].Remove(); zmena = true; string s = "Služba " + sluzba + " byla odstraňena ..."; Informovat(s); } } #endregion #region udalosti ke kontrolkam /// /// ListBox_favClick() - obsluha kliknuti na ListBox_fav /// /// objekt /// udalost void ListBox_favClick(object sender, System.EventArgs e) { if(listBox_fav.SelectedItem != null) { beznaFaktura = listBox_fav.SelectedItem.ToString(); // zobrazime fakturu v hlavnim formulari if(ZobrazitFakturu(beznaFaktura)) { string s = "Faktura " + beznaFaktura + " byla načtena v pořádku ..."; Informovat(s); ZobrazitMenu(true); b_akce.Text = "Editovat"; b_akce.Enabled = true; b_odebratPP.Enabled = false; b_odebratVP.Enabled = false; } else { string s = "Fakturu " + beznaFaktura + " se nepodařilo správně načíst ..."; Varovat(s); } } } /// /// Cb_odberatelTextChanged() - obsluha zmeny Cb_odberatel /// /// objekt /// udalost void Cb_odberatelTextChanged(object sender, System.EventArgs e) { // nacte zvoleneho zakaznika do formulare NacistZakaznika(cb_odberatel.Text); } /// /// Tb_cisloFakturyTextChanged() - obsluha zmeny Tb_cisloFaktury /// /// objekt /// udalost void Tb_cisloFakturyTextChanged(object sender, System.EventArgs e) { // cislo faktury bude stejne jako evidencni cislo faktury // u vystavene faktury je toto redundantni tb_evidencniCislo.Text = tb_cisloFaktury.Text; } /// /// Tb_cenaZaJednotkuTextChanged() - obsluha zmeny Tb_cenaZaJednotku /// kdyz se zmeni hodnota, tak se prepocitaji zbyvajici zavisejici kontrolky /// /// objekt /// udalost void Tb_cenaZaJednotkuTextChanged(object sender, System.EventArgs e) { decimal cenaZaJednotku = 0; int pocetJednotek = 0; try { cenaZaJednotku = decimal.Parse(tb_cenaZaJednotku.Text.Replace('.',',')); pocetJednotek = int.Parse(tb_pocetJednotek.Text); } catch{} short sazbaDPH = 19; if(cb_sazbaDPHpp.Text == "5") { sazbaDPH = 5; } decimal dph = (decimal)sazbaDPH/100; decimal cenaBezDPH = cenaZaJednotku * pocetJednotek; decimal castkaDPH = cenaBezDPH * dph; decimal cenaSDPH = cenaBezDPH * (1 + dph); tb_cenaBezDPHpp.Text = cenaBezDPH.ToString("f2"); tb_castkaDPHpp.Text = castkaDPH.ToString("f2"); tb_cenaSDPHpp.Text = cenaSDPH.ToString("f2"); } /// /// Tb_cenaBezDPHvpTextChanged() - obsluha zmeny Tb_cenaBezDPHvp /// kdyz se zmeni hodnota, tak se prepocitaji zbyvajici zavisejici kontrolky /// /// objekt /// udalost void Tb_cenaBezDPHvpTextChanged(object sender, System.EventArgs e) { decimal cenaBezDPH = 0; try { cenaBezDPH = decimal.Parse(tb_cenaBezDPHvp.Text.Replace('.',',')); } catch{} short sazbaDPH = 5; if(cb_sazbaDPHvp.Text == "19") { sazbaDPH = 19; } decimal dph = (decimal)sazbaDPH/100; decimal castkaDPH = cenaBezDPH * dph; decimal cenaSDPH = cenaBezDPH * (1 + dph); tb_castkaDPHvp.Text = castkaDPH.ToString("f2"); tb_cenaSDPHvp.Text = cenaSDPH.ToString("f2"); } /// /// Lv_vyrobkyMouseEnter() - obsluha vstupu mysi do Lv_vyrobky /// /// objekt /// udalost void Lv_vyrobkyMouseEnter(object sender, System.EventArgs e) { // nastaveni velikosti kontrolky ((Control)sender).Height = 123; } /// /// Lv_vyrobkyMouseLeave() - obsluha vystupu mysi z Lv_vyrobky /// /// objekt /// udalost void Lv_vyrobkyMouseLeave(object sender, System.EventArgs e) { // nastaveni velikosti kontrolky ((Control)sender).Height = 43; } /// /// Lv_vyrobkySelectedIndexChanged() - obsluha zmeny indexu v Lv_vyrobky /// /// objekt /// udalost void Lv_vyrobkySelectedIndexChanged(object sender, System.EventArgs e) { // povolime tlacitko na odebrani polozky b_odebratPP.Enabled = true; } /// /// Lv_sluzbySelectedIndexChanged() - obsluha zmeny indexu v Lv_sluzby /// /// objekt /// udalost void Lv_sluzbySelectedIndexChanged(object sender, System.EventArgs e) { // povolime tlacitko na odebrani polozky b_odebratVP.Enabled = true; } #endregion #region validace /// /// Cb_odberatelValidated() - obsluha validace /// /// objekt /// udalost void Cb_odberatelValidated(object sender, System.EventArgs e) { // validace odberatele if(((ComboBox)sender).Equals(cb_odberatel)) { bool b = false; // pokud jsme vybrali existujiciho odberatele nebo sme nechali comboBox prazdny // je vse v poradku foreach(KeyValuePair zakaznik in firma.Zakaznici) { if(cb_odberatel.Text == zakaznik.Value.ObchodniJmeno) b = true; } if(b || cb_odberatel.Text == "") { this.errorProvider.SetError((Control)sender,""); b_akce.Enabled = true; } // jinak error else { this.errorProvider.SetError((Control)sender,"Vyberte odběratele ze seznamu!"); b_akce.Enabled = false; } } } #endregion } }