/*
* 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
}
}