void cbCa_SelectionChangeCommitted(object sender, EventArgs e)
        {
            cCaAbs ca = (cbCa.SelectedItem) as cCaAbs;

            if (ca == null)
            {
                AutoClosingMessageBox.Show("ca null", "", 1000);
                return;
            }
            DateTime ngay = DateTime.Today.Date;

            if (ca.ID == 0 || ca.ID == int.MinValue || ca.ID == int.MinValue + 1)
            {
                dtpBDLam.Value = new DateTime(ngay.Year, ngay.Month, ngay.Day, 0, 0, 0);
                dtpKTLam.Value = new DateTime(ngay.Year, ngay.Month, ngay.Day, 0, 0, 0);
                dtpBDLam.Update();
                dtpKTLam.Update();
                return;
            }

            // chọn ca 1, 2 ,....
            DateTime timeBD = ngay.Add(ca.OnnTS);
            DateTime timeKT = ngay.Add(ca.OffTS);

            dtpBDLam.Value = timeBD;
            dtpKTLam.Value = timeKT;
        }
Exemple #2
0
        private void cbCa_SelectedIndexChanged(object sender, EventArgs e)
        {
            cCaAbs   tmpCa = (cCaAbs)cbCa.SelectedItem;
            DateTime gio   = (radVao.Checked) ? dateTimeGioMoi.Value.Date.Add(tmpCa.OnnTS) : dateTimeGioMoi.Value.Date.Add(tmpCa.OffTS);

            dateTimeGioMoi.Value = new DateTime(gio.Year, gio.Month, gio.Day, gio.Hour, gio.Minute, 0);
        }
        private bool DuDieuKienTach(cChkInOut CIO, cCaAbs caMoi)
        {
            var ca3  = ((cCaChuan)caMoi).catruoc;
            var ca1  = ((cCaChuan)caMoi).casauuu;
            var ngay = CIO.ThuocNgayCong;

            if (ngay.Add(ca3.OffTS).Subtract(XL2._30phut) < CIO.Vao.Time ||
                CIO.Raa.Time < ngay.Add(ca1.OnnTS).Add(XL2._30phut))
            {
                return(false);
            }
            return(true);
        }
Exemple #4
0
        void dateTimeGioMoi_ValueChanged(object sender, EventArgs e)
        {
            cCaAbs tmpCa      = (cCaAbs)cbCa.SelectedItem;
            bool   tmpCheckIn = radVao.Checked;

            if (!((tmpCheckIn && dateTimeGioMoi.Value.TimeOfDay == tmpCa.OnnTS) || (tmpCheckIn == false && dateTimeGioMoi.Value.TimeOfDay == tmpCa.OffTS)))
            {
                cbCa.SelectedIndexChanged -= cbCa_SelectedIndexChanged;
                cbCa.SelectedIndex         = 0;
                cbCa.Refresh();
                cbCa.SelectedIndexChanged += cbCa_SelectedIndexChanged;
            }
        }
Exemple #5
0
        private void switchButton1_ValueChanged(object sender, EventArgs e)
        {
            cCaAbs tmpCa         = (cCaAbs)cbCa.SelectedItem;
            bool   tmpKieuGioVao = radVao.Checked;

            if (!((tmpKieuGioVao && dateTimeGioMoi.Value.TimeOfDay == tmpCa.OnnTS) || (tmpKieuGioVao == false && dateTimeGioMoi.Value.TimeOfDay == tmpCa.OffTS)))
            {
                cbCa.SelectedIndexChanged -= cbCa_SelectedIndexChanged;
                cbCa.SelectedIndex         = 0;
                cbCa.Refresh();
                cbCa.SelectedIndexChanged += cbCa_SelectedIndexChanged;
            }
            lbKieuGio.Text = string.Format("Giờ {0}", (radVao.Checked ? "vào" : "ra"));
        }
        private void linkTinhLaiCong_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            var      ngay       = DateTime.Today;
            TimeSpan timespanBD = dtpBDLam.Value.TimeOfDay;
            TimeSpan timeSpanKT = dtpKTLam.Value.TimeOfDay;
            var      timeBD     = ngay.Add(timespanBD);
            var      timeKT     = ngay.Add(timeSpanKT);

            if (timespanBD > timeSpanKT)
            {
                timeKT = timeKT.AddDays(1d);
            }

            cCaAbs ca = cbCa.SelectedItem as cCaAbs;

            if (ca == null)
            {
                AutoClosingMessageBox.Show("ca null", "", 1000);
                return;
            }

            var sophutOT   = (checkXNLamThem.Checked && numSoPhutOT.Value > 0) ? (int)numSoPhutOT.Value : 0;
            var tinhPCTC   = (checkTinhPC150.Checked);
            var tongGioLam = TimeSpan.Zero;
            var Cong       = 0d;
            var Phucap     = 0d;

            if (ca.QuaDem && timespanBD < timeSpanKT && timespanBD < XL2._04h30)
            {
                timeBD = timeBD.AddDays(1d);
                timeKT = timeKT.AddDays(1d);
            }
            TinhToan(ngay, ca.ID, ca.WorkingTimeTS, ca.Workingday, ca.LunchMin,
                     ngay.Add(ca.OnnTS), ngay.Add(ca.OffTS), ngay.Add(ca.chophepTreTS), ngay.Add(ca.chophepSomTS),
                     timeBD, timeKT, sophutOT, tinhPCTC, out tongGioLam, out Cong, out Phucap);
            tbGioLam.Text = tongGioLam.TotalHours.ToString("#0.##");
            tbCong.Text   = Cong.ToString("0.0#");
            tbPC.Text     = Phucap.ToString("0.0#");
        }
        private void btnThucHien_Click(object sender, EventArgs e)
        {
            #region kiểm tra kết nối csdl trước khi thực hiện

            if (SqlDataAccessHelper.TestConnection(SqlDataAccessHelper.ConnectionString) == false)
            {
                AutoClosingMessageBox.Show("Mất kết nối với CSDL. Vui lòng thử lại sau.", "Lỗi", 2000);
                return;
            }

            #endregion

            #region lấy và kiểm tra dsnv được chọn

            BindingContext[dgrdDSNVTrgPhg.DataSource].EndCurrentEdit();
            //2. lấy danh sách nhân viên check, nếu chưa có nv nào check thì thông báo
            IEnumerable <DataGridViewRow> lstGridViewRow = dgrdDSNVTrgPhg.Rows.Cast <DataGridViewRow>();
            var listDataRow = from row in (lstGridViewRow)select row.DataBoundItem as DataRowView;
            var listNV      = (from rowView in listDataRow
                               where (rowView["check"] != DBNull.Value && (bool)rowView["check"])
                               select((cUserInfo)rowView["cUserInfo"]).MaCC).ToArray();

            if (listNV.Length == 0)
            {
                AutoClosingMessageBox.Show("Bạn chưa chọn Nhân viên", "Thông báo", 2000);
                return;
            }

            #endregion

            #region lấy ds các ngày đã check

            var DSNgayCheck = checklistNgay.Items.Cast <object>().Where((t, i) => checklistNgay.GetItemChecked(i)).Cast <DateTime>().ToList();
            if (DSNgayCheck.Count == 0)
            {
                AutoClosingMessageBox.Show("Bạn chưa chọn ngày làm việc.", "Thông báo", 2000);
                return;
            }

            #endregion

            #region lấy ca được chọn

            // kiểm tra chọn ca làm việc chưa? chưa thì báo
            cCaAbs ca = cbCa.SelectedItem as cCaAbs;
            if (ca == null || cbCa.SelectedIndex == 0)
            {
                AutoClosingMessageBox.Show("Bạn chưa chọn ca làm việc.", "Thông báo", 1500);
                return;
            }

            #endregion

            #region lấy check xác nhận làm thêm và check pc 50, lý do, ghi chú

            string lydo   = (cbLyDo.SelectedItem != null) ? cbLyDo.SelectedItem.ToString() : cbLyDo.SelectedText;
            string ghichu = tbGhiChu.Text;

            #endregion

            #region lấy thời gian

            //đã chọn ca làm việc

/*
 *                      TimeSpan tgInn = dtpBDLam.Value.TimeOfDay;
 *                      TimeSpan tgOut = dtpKTLam.Value.TimeOfDay;
 *                      if (tgInn > tgOut) tgOut = tgOut.Add(XL2._1ngay);
 */

            var      ngay1      = DateTime.Today.Date;
            TimeSpan TimeSpanBD = dtpBDLam.Value.TimeOfDay;
            TimeSpan TimeSpanKT = dtpKTLam.Value.TimeOfDay;
            var      timeBD     = ngay1.Add(TimeSpanBD);
            var      timeKT     = ngay1.Add(TimeSpanKT);
            if (TimeSpanBD > TimeSpanKT)
            {
                timeKT = timeKT.AddDays(1d);
            }
            var sophutOT = (checkXNLamThem.Checked && numSoPhutOT.Value > 0) ? (int)numSoPhutOT.Value : 0;
            var TinhPCTC = (checkTinhPC150.Checked);
            var giolam   = TimeSpan.Zero;
            var Cong     = 0d;
            var PhuCap   = 0d;

            #endregion

            var TreSomTinhCV = checkTreSomTinhCV.Checked;
            if (ca.QuaDem && TimeSpanBD < TimeSpanKT && TimeSpanBD < XL2._04h30)
            {
                timeBD = timeBD.AddDays(1d);
                timeKT = timeKT.AddDays(1d);
            }

            if (TinhToan(ngay1, ca.ID, ca.WorkingTimeTS, ca.Workingday, ca.LunchMin, ngay1.Add(ca.OnnTS), ngay1.Add(ca.OffTS), ngay1.Add(ca.chophepTreTS), ngay1.Add(ca.chophepSomTS),
                         timeBD, timeKT, sophutOT, TinhPCTC, out giolam, out Cong, out PhuCap) == false)
            {
                return;
            }

            bool flagError = false;
            #region hỏi lại trước khi thực hiện

            if (
                MessageBox.Show(
                    "Bạn muốn thêm các giờ chấm công tay cho các nhân viên?\nVui lòng kiểm tra kỹ thời gian nhập để không làm sai lệch công của nhân viên.",
                    Resources.capXacNhan, MessageBoxButtons.YesNo) == DialogResult.No)
            {
                return;
            }

            #endregion

            foreach (var macc in listNV)
            {
                foreach (var ngay in DSNgayCheck)
                {
                    DateTime TimeStrInn = ngay.Date.Add(TimeSpanBD);
                    DateTime TimeStrOut = ngay.Date.Add(TimeSpanKT);
                    if (TimeSpanBD > TimeSpanKT)
                    {
                        TimeStrOut = TimeStrOut.AddDays(1d);
                    }

                    if (ca.QuaDem && TimeSpanBD < TimeSpanKT && TimeSpanBD < XL2._04h30)
                    {
                        TimeStrInn = TimeStrInn.AddDays(1d);
                        TimeStrOut = TimeStrOut.AddDays(1d);
                    }

                    if (ca.ID == int.MinValue)
                    {
                        XL.TaoCaTuDo((cCaTuDo)ca, TimeStrInn, XL2._08gio, XL2.ChoPhepTre, XL2.ChoPhepSom, XL2.LamThemAfterOT, 1f, "8");
                    }
                    else if (ca.ID == int.MinValue + 1)
                    {
                        XL.TaoCaTuDo((cCaTuDo)ca, TimeStrInn, XL2._12gio, XL2.ChoPhepTre, XL2.ChoPhepSom, XL2.LamThemAfterOT, 1.5f, "D");
                    }

                    if (ngay <= XL2.ThangKetCong && XL2.ThangKetCong != DateTime.MinValue)
                    {
                        continue;                                                               //tbd temp patch
                    }
                    if (checkXNLamThem.Checked || TinhPCTC || TreSomTinhCV)                     //1.có XN làm thêm --> thêm giờ XN,  2.không xác nhận làm thêm thì thêm giờ A
                    {
                        var nv = new cUserInfo {
                            MaCC = macc,
                        };
                        var chkinn = new cChkInn_A {
                            Time = TimeStrInn, Type = "I", MachineNo = 21, Source = "PC", PhucHoi = new cPhucHoi {
                                Them = true, IDGioGoc = -1, Xoaa = false
                            }
                        };
                        var chkout = new cChkOut_A {
                            Time = TimeStrOut, Type = "O", MachineNo = 22, Source = "PC", PhucHoi = new cPhucHoi {
                                Them = true, IDGioGoc = -1, Xoaa = false
                            }
                        };
                        var cio_a = new cChkInOut_A {
                            Vao           = chkinn, Raa = chkout, TimeDaiDien = chkinn.Time,
                            HaveINOUT     = 0,
                            ThuocCa       = ca,
                            ThuocNgayCong = XL.ThuocNgayCong(TimeStrInn),
                            TD            = new ThoiDiem(),
                        };
                        XL.ThemGioChoNVQL(chkinn, nv, XL2.currUserID, lydo, ghichu);
                        XL.ThemGioChoNVQL(chkout, nv, XL2.currUserID, lydo, ghichu);
                        if (ca.TachCa)
                        {
                            XL.XacNhanCoTachCaChoQL(nv, cio_a, ca, sophutOT, TinhPCTC, TreSomTinhCV);
                        }
                        else
                        {
                            XL.XacNhanKoTachCaChoQL(nv, cio_a, ca, sophutOT, TinhPCTC, TreSomTinhCV);
                        }
                    }
                    else                      // không xác nhận làm thêm thì thêm giờ A
                    {
                        XL.ThemGioChoNVQL(new cChkInn_A {
                            Time = TimeStrInn, Type = "I", MachineNo = 21, Source = "PC", PhucHoi = new cPhucHoi {
                                Them = true, IDGioGoc = -1, Xoaa = false
                            }
                        }, new cUserInfo {
                            MaCC = macc
                        }, XL2.currUserID, lydo, ghichu);
                        XL.ThemGioChoNVQL(new cChkOut_A {
                            Time = TimeStrOut, Type = "O", MachineNo = 22, Source = "PC", PhucHoi = new cPhucHoi {
                                Them = true, IDGioGoc = -1, Xoaa = false
                            }
                        }, new cUserInfo {
                            MaCC = macc
                        }, XL2.currUserID, lydo, ghichu);
                        XL.CheckTinhPC50(new cUserInfo {
                            MaCC = macc
                        }, (TimeStrInn.TimeOfDay < XL2._04h30 ? TimeStrInn.Date.AddDays(-1) : TimeStrInn.Date), TinhPCTC);
                    }
                }
            }
            if (flagError)
            {
                AutoClosingMessageBox.Show("Thêm giờ chấm công tay cho các nhân viên thành công.", "Thông báo", 2000);
            }
        }
Exemple #8
0
        private void btnThucHien_Click(object sender, EventArgs e)
        {
            if (SqlDataAccessHelper.TestConnection(SqlDataAccessHelper.ConnectionString) == false)
            {
                AutoClosingMessageBox.Show("Mất kết nối với CSDL. Vui lòng thử lại sau.", "Lỗi", 2000);
                return;
            }

            // kiểm tra chọn ca làm việc chưa? chưa thì báo
            cCaAbs ca = cbCa.SelectedItem as cCaAbs;

            if (ca == null || cbCa.SelectedIndex == 0)
            {
                AutoClosingMessageBox.Show("Bạn chưa chọn ca làm việc.", "Thông báo", 1500);
                return;
            }

            //đã chọn ca làm việc
            var      ngay       = dtpNgay.Value.Date;
            TimeSpan timespanBD = dtpBDLam.Value.TimeOfDay;
            TimeSpan timeSpanKT = dtpKTLam.Value.TimeOfDay;
            var      timeBD     = ngay.Add(timespanBD);
            var      timeKT     = ngay.Add(timeSpanKT);

            if (timespanBD > timeSpanKT)
            {
                timeKT = timeKT.AddDays(1d);
            }

            var sophutOT     = (checkXNLamThem.Checked && numSoPhutOT.Value > 0) ? (int)numSoPhutOT.Value : 0;
            var TinhPCTC     = (checkTinhPC150.Checked);
            var TreSomTinhCV = checkTreSomTinhCV.Checked;
            var giolam       = TimeSpan.Zero;
            var Cong         = 0d;
            var PhuCap       = 0d;

            if (ca.QuaDem && timespanBD < timeSpanKT && timespanBD < XL2._04h30)
            {
                timeBD = timeBD.AddDays(1d);
                timeKT = timeKT.AddDays(1d);
            }
            if (TinhToan(ngay, ca.ID, ca.WorkingTimeTS, ca.Workingday, ca.LunchMin, ngay.Add(ca.OnnTS), ngay.Add(ca.OffTS), ngay.Add(ca.chophepTreTS), ngay.Add(ca.chophepSomTS),
                         timeBD, timeKT, sophutOT, TinhPCTC, out giolam, out Cong, out PhuCap) == false)
            {
                tbGioLam.Text = giolam.TotalHours.ToString("#0.##");
                tbCong.Text   = Cong.ToString("0.0#");
                tbPC.Text     = PhuCap.ToString("0.0#");
                return;
            }

            #region hỏi lại trước khi thực hiện

            if (
                MessageBox.Show(
                    "Bạn muốn thêm các giờ chấm công tay cho các nhân viên?\nVui lòng kiểm tra kỹ thời gian nhập để không làm sai lệch công của nhân viên.",
                    Resources.capXacNhan, MessageBoxButtons.YesNo) == DialogResult.No)
            {
                return;
            }

            #endregion


            // kiểm tra chọn NV chưa, chưa thì báo
            DataView tableCheckNV = dgrdDSNVTrgPhg.DataSource as DataView;
            if (tableCheckNV == null)
            {
                return;
            }
            DataRow[] arrRows = tableCheckNV.Table.Select("check = true", "UserEnrollNumber asc");
            if (arrRows.Length == 0)
            {
                AutoClosingMessageBox.Show("Bạn chưa chọn nhân viên.", "Thông báo", 1500);
                return;
            }

            // đã chọn NV, lấy ds mã CC đã chọn
            string lydo   = (cbLyDo.SelectedItem != null) ? cbLyDo.SelectedItem.ToString() : cbLyDo.SelectedText;
            string ghichu = tbGhiChu.Text;

            bool flag = true;

            try {
                foreach (DataRow row in arrRows)
                {
                    //dsNVcheck.Add((int)row["UserEnrollNumber"]);
                    int iUserEnrollNumber = (int)row["UserEnrollNumber"];
                    if (ca.ID == int.MinValue)
                    {
                        XL.TaoCaTuDo((cCaTuDo)ca, timeBD, XL2._08gio, XL2.ChoPhepTre, XL2.ChoPhepSom, XL2.LamThemAfterOT, 1f, "8");
                    }
                    else if (ca.ID == int.MinValue + 1)
                    {
                        XL.TaoCaTuDo((cCaTuDo)ca, timeBD, XL2._12gio, XL2.ChoPhepTre, XL2.ChoPhepSom, XL2.LamThemAfterOT, 1.5f, "D");
                    }

                    if (checkXNLamThem.Checked || TinhPCTC || TreSomTinhCV)                     //1.có XN làm thêm --> thêm giờ XN,  2.không xác nhận làm thêm thì thêm giờ A
                    {
                        var nv = new cUserInfo {
                            MaCC = iUserEnrollNumber, NgayCongBD_Bef2D = ngay.Date.AddDays(-2d), NgayCongKT_Aft2D = ngay.Date.AddDays(2d)
                        };
                        var chkinn = new cChkInn_A {
                            Time = timeBD, Type = "I", MachineNo = 21, Source = "PC", PhucHoi = new cPhucHoi {
                                Them = true, IDGioGoc = -1, Xoaa = false
                            }
                        };

                        var chkout = new cChkOut_A {
                            Time = timeKT, Type = "O", MachineNo = 22, Source = "PC", PhucHoi = new cPhucHoi {
                                Them = true, IDGioGoc = -1, Xoaa = false
                            }
                        };
                        var cio_a = new cChkInOut_A {
                            Vao           = chkinn,
                            Raa           = chkout,
                            HaveINOUT     = 1,
                            ThuocCa       = ca,
                            TimeDaiDien   = chkinn.Time,
                            ThuocNgayCong = XL.ThuocNgayCong(chkinn.Time),
                            TD            = new ThoiDiem()
                        };
                        if (cio_a.ThuocNgayCong <= XL2.ThangKetCong && XL2.ThangKetCong != DateTime.MinValue)
                        {
                            continue;                                                                                                           //tbd temp patch
                        }
                        nv.DS_CIO_A.Add(cio_a);
                        XL.ThemGioChoNV(chkinn, nv, XL2.currUserID, lydo, ghichu);
                        XL.ThemGioChoNV(chkout, nv, XL2.currUserID, lydo, ghichu);
                        if (ca.TachCa)
                        {
                            XL.XacNhanCoTachCa(nv, cio_a, ca, sophutOT, TinhPCTC, TreSomTinhCV);
                        }
                        else
                        {
                            XL.XacNhanKoTachCa(nv, cio_a, ca, sophutOT, TinhPCTC, TreSomTinhCV);
                        }
                    }
                    else                      //2.không xác nhận làm thêm thì thêm giờ A
                    {
                        if (timeBD.Date <= XL2.ThangKetCong && XL2.ThangKetCong != DateTime.MinValue)
                        {
                            continue;                                                                                                   //tbd temp patch
                        }
                        var nv = new cUserInfo {
                            MaCC = iUserEnrollNumber, NgayCongBD_Bef2D = ngay.Date.AddDays(-2d), NgayCongKT_Aft2D = ngay.Date.AddDays(2d)
                        };
                        XL.ThemGioChoNV(new cChkInn_A {
                            Time = timeBD, Type = "I", MachineNo = 21, Source = "PC", PhucHoi = new cPhucHoi {
                                Them = true, IDGioGoc = -1, Xoaa = false
                            }
                        }, new cUserInfo {
                            MaCC = iUserEnrollNumber
                        }, XL2.currUserID, lydo, ghichu);
                        XL.ThemGioChoNV(new cChkOut_A {
                            Time = timeKT, Type = "O", MachineNo = 22, Source = "PC", PhucHoi = new cPhucHoi {
                                Them = true, IDGioGoc = -1, Xoaa = false
                            }
                        }, new cUserInfo {
                            MaCC = iUserEnrollNumber
                        }, XL2.currUserID, lydo, ghichu);
                        XL.CheckTinhPC50(nv, (timeBD.TimeOfDay < XL2._04h30 ? timeBD.Date.AddDays(-1) : timeBD.Date), TinhPCTC);
                    }
                }
            } catch (Exception exception) {
                lg.Error("", exception);
            }
            if (flag)
            {
                AutoClosingMessageBox.Show("Thêm giờ chấm công tay cho các nhân viên thành công.", "Thông báo", 2000);
            }
        }