예제 #1
0
        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;
        }
예제 #2
0
        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;
        }