private void NactiDochazku() { if (panel_Formular.Controls[0] == null) return; Int32 CisloZam = 0; if ((treeView_Zamestnanci.SelectedNode != null) && (!Int32.TryParse(treeView_Zamestnanci.SelectedNode.Name, out CisloZam))) return; //textBox_Vyhledavani.Text = treeView_Zamestnanci.SelectedNode.Text; this.Text = "Docházka - " + treeView_Zamestnanci.SelectedNode.Text; panel_Formular.Visible = false; PripravFormularMesic(); String SQL = "SELECT CisloZam, Datum, Stredisko, Zakazka, Cinnost, SUM(Hodiny) FROM TabEGDochazkaDny WHERE CisloZam = " + CisloZam + " AND YEAR(Datum) = " + numericUpDown_Rok.Value + " AND Month(Datum) = " + numericUpDown_Mesic.Value + " GROUP BY CisloZam, Datum, Stredisko, Zakazka, Cinnost ORDER BY Datum, Stredisko, Zakazka, Cinnost"; IHeQuery SQLDochazka = Helios.OpenSQL(SQL); if (DochazkaDny == null) DochazkaDny = new List<DochazkaStruct>(); DochazkaDny.Clear(); DochazkaStruct Polozka = new DochazkaStruct(); while (!SQLDochazka.EOF()) { Polozka.CisloZam = SQLDochazka.FieldValues(0); Polozka.Datum = SQLDochazka.FieldValues(1); Polozka.Stredisko = SQLDochazka.FieldValues(2); Polozka.Zakazka = SQLDochazka.FieldValues(3); Polozka.Cinnost = SQLDochazka.FieldValues(4); Polozka.Hodiny = SQLDochazka.FieldValues(5); DochazkaDny.Add(Polozka); SQLDochazka.Next(); } String Stredisko = ""; String Zakazka = ""; Calendar Kalendar = new CultureInfo("cs-CZ").Calendar; Int32 PrvniTyden = Kalendar.GetWeekOfYear(new DateTime((int)numericUpDown_Rok.Value, (int)numericUpDown_Mesic.Value, 1), CalendarWeekRule.FirstDay, DayOfWeek.Monday); Int32 Tyden = 0; Int32 AktualniTyden; Int32 DenTydne; Int32 Radek = 0; TableLayoutPanel TydenTable = null; foreach (DochazkaStruct item in DochazkaDny) { //if (PrvniTyden == 0) // PrvniTyden = Kalendar.GetWeekOfYear(item.Datum, CalendarWeekRule.FirstDay, DayOfWeek.Monday); AktualniTyden = Kalendar.GetWeekOfYear(item.Datum, CalendarWeekRule.FirstDay, DayOfWeek.Monday); DenTydne = (Int32)Kalendar.GetDayOfWeek(item.Datum); DenTydne = DenTydne == 0 ? 8 : DenTydne + 1; if (Tyden != AktualniTyden) { Stredisko = item.Stredisko; Zakazka = item.Zakazka; Tyden = AktualniTyden; Radek = 0; TydenTable = (TableLayoutPanel)(((Panel)(((TableLayoutPanel)(panel_Formular.Controls[0])).GetControlFromPosition(0, AktualniTyden - PrvniTyden))).Controls[0]); ((TextBox)(((TableLayoutPanel)(TydenTable.GetControlFromPosition(0, 2))).GetControlFromPosition(0, Radek))).Text = item.Stredisko; ((TextBox)(((TableLayoutPanel)(TydenTable.GetControlFromPosition(0, 2))).GetControlFromPosition(1, Radek))).Text = item.Zakazka; } Stredisko = item.Stredisko; Zakazka = item.Zakazka; Radek = PridejRadek(AktualniTyden, Stredisko, Zakazka, DenTydne); ((TextBox)(((TableLayoutPanel)(TydenTable.GetControlFromPosition(0, 2))).GetControlFromPosition(DenTydne, Radek))).Text = item.Cinnost; ((TextBox)(((TableLayoutPanel)(TydenTable.GetControlFromPosition(0, 4))).GetControlFromPosition(DenTydne, Radek))).Text = item.Hodiny.ToString(); SectiHodiny(((TextBox)(((TableLayoutPanel)(TydenTable.GetControlFromPosition(0, 4))).GetControlFromPosition(DenTydne, Radek)))); } panel_Formular.Visible = true; }
private Boolean UlozitDochazku() { if (Uzamceno) return false; Boolean Result; TableLayoutPanel Formular = (TableLayoutPanel)(panel_Formular.Controls[0]); TableLayoutPanel TydenTable; TableLayoutPanel CinnostiTable; TableLayoutPanel HodinyTable; Boolean Ulozit; Boolean Preruseno = false; Int32 Rok = (Int32)numericUpDown_Rok.Value; Int32 Mesic = (Int32)numericUpDown_Mesic.Value; Int32 Tyden; Int32 Den; Double Hodiny; TextBox Stredisko; TextBox Zakazka; Control control; TextBox Cinnost; TextBox Delka; String Error; List<String> Errors = new List<String>(); String Info; List<String> Infos = new List<String>(); Boolean ChybaTyden; DochazkaStruct DochazkaPolozka = new DochazkaStruct(); Int32 CisloZam = 0; String SQL; Double HodinyCelkem; Boolean Smena; Result = false; if (DochazkaDny == null) DochazkaDny = new List<DochazkaStruct>(); DochazkaDny.Clear(); if ((treeView_Zamestnanci.SelectedNode != null) && (!Int32.TryParse(treeView_Zamestnanci.SelectedNode.Name, out CisloZam))) { Helios.Error("Vyberte zaměstnance"); return Result; } foreach (Control TydenPanel in Formular.Controls) { TydenTable = (TableLayoutPanel)(((Panel)(TydenPanel)).Controls[0]); Tyden = (Int32)(TydenTable.Tag); ChybaTyden = false; CinnostiTable = (TableLayoutPanel)(TydenTable.GetControlFromPosition(0, 2)); HodinyTable = (TableLayoutPanel)(TydenTable.GetControlFromPosition(0, 4)); for (int j = 2; j < 9; j++) { HodinyCelkem = 0; Smena = false; Den = CinnostiTable.GetControlFromPosition(j, 0) == null ? 0 : ZjistiDen(CinnostiTable.GetControlFromPosition(j, 0)); for (int i = 0; i < CinnostiTable.RowCount; i++) { Stredisko = (TextBox)(CinnostiTable.GetControlFromPosition(0, i)); Zakazka = (TextBox)(CinnostiTable.GetControlFromPosition(1, i)); control = CinnostiTable.GetControlFromPosition(j, i); //Den = control == null ? 0 : ZjistiDen(control); if (control != null) { Ulozit = true; Cinnost = (TextBox)control; Delka = (TextBox)(HodinyTable.GetControlFromPosition(j, i)); if ((Cinnost.Text.Length != 0) ^ (Delka.Text.Length != 0)) { if (Cinnost.Text.Length == 0) { Error = "Pro " + Den + "." + Mesic + "." + Rok + " není zadána činnost"; Errors.Add(Error); Ulozit = false; Preruseno = true; } else if (ZjistiHodiny(Cinnost.Text, out Hodiny)) { Delka.Text = Hodiny.ToString(); Info = "Pro " + Den + "." + Mesic + "." + Rok + " byly pro činnost " + Cinnost.Text + " nastaveny hodiny na " + Hodiny; Infos.Add(Info); Errors.Add(Info); } else { Error = "Pro " + Den + "." + Mesic + "." + Rok + " nejsou zadány hodiny"; Errors.Add(Error); Ulozit = false; Preruseno = true; } } if ((Cinnost.Text.Length != 0)) { if ((Stredisko.Text.Length == 0) && (!ChybaTyden)) { Error = "Pro " + Tyden + ". týden není zadán úsek"; Errors.Add(Error); Ulozit = false; Preruseno = true; ChybaTyden = true; } if ((Zakazka.Text.Length == 0) && (!ChybaTyden)) { Error = "Pro " + Tyden + ". týden není zadána zakázka"; Errors.Add(Error); Ulozit = false; Preruseno = true; ChybaTyden = true; } if (Ulozit) { if (ZjistiHodiny(Cinnost.Text, out Hodiny)) { if (Delka.Text != Hodiny.ToString()) { Delka.Text = Hodiny.ToString(); Info = "Pro " + Den + "." + Mesic + "." + Rok + " byly pro činnost " + Cinnost.Text + " nastaveny hodiny na " + Hodiny; Infos.Add(Info); Errors.Add(Info); } } DochazkaPolozka.CisloZam = CisloZam; DochazkaPolozka.Datum = new DateTime(Rok, Mesic, Den); DochazkaPolozka.Stredisko = Stredisko.Text; DochazkaPolozka.Zakazka = Zakazka.Text; DochazkaPolozka.Cinnost = Cinnost.Text; DochazkaPolozka.Hodiny = Double.Parse(Delka.Text); DochazkaDny.Add(DochazkaPolozka); HodinyCelkem += DochazkaPolozka.Hodiny; if (!Smena && ZjistiSmenu(DochazkaPolozka.Cinnost)) Smena = true; } } } } if (j < 7 && Den != 0) { if (HodinyCelkem == 0) { Info = "Pro " + Den + "." + Mesic + "." + Rok + " není zadána docházka"; Infos.Add(Info); } else if (HodinyCelkem < 8) { Error = "Pro " + Den + "." + Mesic + "." + Rok + " je zadáno méně jak 8 hodin"; Errors.Add(Error); Preruseno = true; } } if (Smena && HodinyCelkem != 8) { Error = "Pro " + Den + "." + Mesic + "." + Rok + " musí být zadáno přesně 8 hodin"; Errors.Add(Error); Preruseno = true; } } } if (Preruseno) { if (Chyby == null) { Chyby = new ChybovaHlaseni(); Chyby.Text = "Docházka neuložena"; Chyby.label_Nadpis.Text = "Seznam chyb:"; } Chyby.textBox_Chyby.Clear(); foreach (String item in Errors) { Chyby.textBox_Chyby.Text += item + Environment.NewLine; } Chyby.ShowDialog(); Result = false; } else { if (Infos.Count > 1) { if (Informace == null) { Informace = new ChybovaHlaseni(); Informace.Text = "Docházka uložena"; Informace.label_Nadpis.Text = "Seznam varování:"; } Informace.textBox_Chyby.Clear(); foreach (String item in Infos) { Informace.textBox_Chyby.Text += item + Environment.NewLine; } Informace.ShowDialog(); } SQL = "DELETE FROM TabEGDochazkaDny WHERE CisloZam = " + CisloZam + " AND YEAR(Datum) = " + Rok + " AND Month(Datum) = " + Mesic; Helios.ExecSQL(SQL); foreach (DochazkaStruct item in DochazkaDny) { SQL = "INSERT INTO TabEGDochazkaDny (CisloZam, Datum, Stredisko, Zakazka, Cinnost, Hodiny) VALUES ("; SQL += item.CisloZam + ", '"; SQL += item.Datum.Year + "-" + item.Datum.Day + "-" + item.Datum.Month + "', '"; SQL += item.Stredisko + "', '"; SQL += item.Zakazka + "', '"; SQL += item.Cinnost + "', "; SQL += item.Hodiny.ToString().Replace(",", ".") + ")"; Helios.ExecSQL(SQL); } SQL = "EXEC dbo.EGDochazkaMesicAktualizuj " + CisloZam + ", " + Rok + ", " + Mesic; Helios.ExecSQL(SQL); NaplnUpravenouDochazku(CisloZam, Rok, Mesic); Result = true; } return Result; }