Esempio n. 1
0
        private void btnCapNhat_Click(object sender, EventArgs e)
        {
            if (XL2.KiemtraKetnoiCSDL() == false)
            {
                return;
            }

            #region ko cho cập nhật lương công nhật nếu tháng này đã đã kết lương

            if (XL.Kiemtra(m_thang, MyUtility.LastDayOfMonth(m_thang)))
            {
                MessageBox.Show(string.Format(Resources.Text_KhoangTGDaKetCong_KoChinhSuaGioCC, "cập nhật thông tin làm việc công nhật", "cập nhật thông tin làm việc công nhật", ""),
                                Resources.Caption_ThongBao, MessageBoxButtons.OK);
                return;
            }

            #endregion

            // lấy thông tin từ form
            var UserEnrollNumber = (lbUserEnrollNumber.Tag == null) ? -1 : (int)lbUserEnrollNumber.Tag;
            var DonGiaLuong      = (int)numDonGiaLuong.Value;
            var TamUng           = Convert.ToDouble(numTamUng.Value);

            #region update đơn giá lương , tạm ứng xuống csdl
            //info ko cần lưu thành tiền vì lúc lưu xuống đã tính thành tiền để có cơ sở tính lương, lúc lấy lên thì tính ra số tổng rồi mới xuất bb
            string query = @" 
update DSNVChiCongNhatThang 
set DonGiaLuong=@DonGiaLuong, TamUng=@TamUng 
where UserEnrollNumber=@UserEnrollNumber and Thang=@Thang ";
            int    kq2   = SqlDataAccessHelper.ExecNoneQueryString(query,
                                                                   new string[] { "@DonGiaLuong", "@TamUng", "@UserEnrollNumber", "@Thang" },
                                                                   new object[] { DonGiaLuong, TamUng, UserEnrollNumber, m_thang });
            DAO.GhiNhatKyThaotac("Cập nhật lương công nhật và tạm ứng",
                                 string.Format("Cập nhật đơn giá lương công nhật [{1}], tạm ứng [{2}] cho NV có mã chấm công [{0}]",
                                               UserEnrollNumber, DonGiaLuong.ToString(Settings.Default.numFormatMoney), TamUng.ToString(Settings.Default.numFormatMoney)), maCC: UserEnrollNumber);
            #endregion

            // sau khi cập nhật thì reload lại
            var table = DAO.LayTableCongNhat(m_thang);
            dgrdDSLuongCongnhat.DataSource = table;
            dgrdDSLuongCongnhat.ClearSelection();
        }
        private void btnLietKe_Click(object sender, EventArgs e)
        {
            if (XL2.KiemtraKetnoiCSDL() == false)
            {
                return;
            }

            //1. lấy dữ liệu từ form
            dtpThang.Update();
            currMonth = dtpThang.Value;
            var ngayBD = DateTime.MinValue;
            var ngayKT = DateTime.MinValue;

            ngayBD = new DateTime(currMonth.Year, currMonth.Month, 1);
            ngayKT = new DateTime(currMonth.Year, currMonth.Month, DateTime.DaysInMonth(currMonth.Year, currMonth.Month));
            //-----------INFO bắt buộc EndEdit thao tác trên Grid rồi mới thực hiện xử lý tác vụ

            dgrdDSNVTrgPhg.EndEdit();
            dgrdDSNVTrgPhg.Update();

            //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
            BindingContext[dgrdDSNVTrgPhg.DataSource].EndCurrentEdit();
            var listNV = (from DataGridViewRow dataGridViewRow in dgrdDSNVTrgPhg.Rows
                          let row = (DataRowView)dataGridViewRow.DataBoundItem
                                    where (row["check"] != DBNull.Value && (bool)row["check"])
                                    select((cUserInfo)row["cUserInfo"]).MaCC).ToList();

            if (listNV.Count == 0)
            {
                ACMessageBox.Show(Resources.Text_ChuaChonNV, Resources.Caption_ThongBao, 2000);
                return;
            }

            var table = DAO5.LietKeNgayVangChoNV(listNV, ngayBD, ngayKT);

            dgrdNgayVang.DataSource = table;
            if (table.Rows.Count == 0)
            {
                ACMessageBox.Show("Các nhân viên đang chọn không vắng ngày nào trong tháng.", "Thông báo", 1500);
            }
            GC.Collect();
        }
Esempio n. 3
0
        private void btnThemKBVang_Click(object sender, EventArgs e)
        {
            if (XL2.KiemtraKetnoiCSDL() == false)
            {
                return;
            }

            #region ko cho chỉnh sửa giờ nếu khoảng thời gian xem công tồn tại các ngày đã kết lương

            if (XL.Kiemtra(dtpNgayBD.Value.Date, dtpNgayKT.Value.Date))
            {
                MessageBox.Show(string.Format(Resources.Text_KhoangTGDaKetCong_KoChinhSuaGioCC, "xem công", "khai báo vắng", "xem công"),
                                Resources.Caption_ThongBao, MessageBoxButtons.OK);
                return;
            }
            #endregion

            // xác định đang chọn datagrid nào để lấy các datarow của các datagrid đó
            DataGridView currDataGrid = XacDinhDataGridViewDangChon();

            if (currDataGrid.SelectedRows.Count != 0)
            {
                IEnumerable <dynamic> arrRecord = (from DataGridViewRow row in currDataGrid.SelectedRows
                                                   let rowViews = (DataRowView)row.DataBoundItem
                                                                  select new { MaCC = (int)rowViews["UserEnrollNumber"], NgayVang = (DateTime)rowViews["TimeStrNgay"] }).ToList();

                if (arrRecord.Any() == false)
                {
                    return;
                }

                frm_KBVang_Nhanh frm = new frm_KBVang_Nhanh {
                    StartPosition     = FormStartPosition.CenterParent,
                    listMaCC_NgayVang = arrRecord
                };
                frm.ShowDialog();
                if (frm.IsReload)
                {
                    btnXem.PerformClick();
                }
            }
        }
        private void btnSave_Click(object sender, EventArgs e)
        {
            if (XL2.KiemtraKetnoiCSDL() == false)
            {
                return;
            }

            var val30 = (int)numPC30.Value;

            DAO5.UpdSetting((int)numPC30.Tag, val30.ToString());
            var val50 = (int)numPC50.Value;

            DAO5.UpdSetting((int)numPC50.Tag, val50.ToString());
            var valPCTCC3 = (int)numPCTCC3.Value;

            DAO5.UpdSetting((int)numPCTCC3.Tag, valPCTCC3.ToString());
            var val100 = (int)numPC100.Value;

            DAO5.UpdSetting((int)numPC100.Tag, val100.ToString());
            var val160 = (int)numPC160.Value;

            DAO5.UpdSetting((int)numPC160.Tag, val160.ToString());
            var val200 = (int)numPC200.Value;

            DAO5.UpdSetting((int)numPC200.Tag, val200.ToString());
            var val290 = (int)numPC290.Value;

            DAO5.UpdSetting((int)numPC290.Tag, val290.ToString());
            var valTGLamDemToiThieu = dateTimePicker1.Value.TimeOfDay;

            DAO5.UpdSetting((int)dateTimePicker1.Tag, valTGLamDemToiThieu.ToString(@"hh\:mm\:") + "00");
            var valChoPhepTre = (int)numPhutTre.Value;

            DAO5.UpdSetting((int)numPhutTre.Tag, valChoPhepTre.ToString());
            var valChoPhepSom = (int)numPhutSom.Value;

            DAO5.UpdSetting((int)numPhutSom.Tag, valChoPhepSom.ToString());
            var valLamThemAfterOT = (int)numPhutAfterOT.Value;

            DAO5.UpdSetting((int)numPhutAfterOT.Tag, valLamThemAfterOT.ToString());
            ACMessageBox.Show("Lưu thông số thành công.", "Thông báo", 2000);
        }
Esempio n. 5
0
        private void btnXoa_Click(object sender, EventArgs e)
        {
            if (XL2.KiemtraKetnoiCSDL() == false)
            {
                return;
            }
            #region ko cho chỉnh sửa giờ nếu khoảng thời gian xem công tồn tại các ngày đã kết lương

            if (XL.Kiemtra(m_thang.Date, MyUtility.LastDayOfMonth(m_thang)))
            {
                MessageBox.Show(string.Format(Resources.Text_KhoangTGDaKetCong_KoChinhSuaGioCC, "chỉnh sửa thu chi tháng", "thực hiện thao tác", ""),
                                Resources.Caption_ThongBao, MessageBoxButtons.OK);
                return;
            }

            #endregion

            #region lấy thông tin từ form

            int?macc = (int?)lbUserEnrollNumber.Tag;
            if (macc == null)
            {
                ACMessageBox.Show(Resources.Text_ChuaChonNV, Resources.Caption_ThongBao, 2000);
                return;
            }

            #endregion

            // thực hiện query
            int kq = SqlDataAccessHelper.ExecNoneQueryString(
                " delete from DSThuChiThang where Thang=@Thang and UserEnrollNumber=@UserEnrollNumber ",
                new string[] { "@Thang", "@UserEnrollNumber" },
                new object[] { m_thang, macc });
            DAO5.GhiNhatKyThaotac("Xoá khoản thu chi tháng", string.Format("Xoá tạm ứng, lương điều chỉnh, mức đóng BHXH, thu chi khác tháng [{0}]... của 1 NV có mã chấm công [{1}]", m_thang.ToString("dd/MM/yyyy"), macc), maCC: macc);
            if (kq == 0)
            {
                MessageBox.Show(Resources.Text_CoLoi, Resources.Caption_Loi);
            }

            reloadGridDSThuChi();
        }
Esempio n. 6
0
        private void btnHuyKetluong_Click(object sender, EventArgs e)
        {
            if (XL2.KiemtraKetnoiCSDL() == false)
            {
                return;                                              // kiểm tra kết nối csdl trước khi thực hiện
            }
            //confirm trước khi thực hiện
            if (MessageBox.Show(string.Format("Bạn muốn hủy kết lương tháng {0}?", m_Thang.ToString("MM/yyyy")), Resources.Caption_XacNhan, MessageBoxButtons.YesNo) == DialogResult.No)
            {
                return;
            }

            if (XL.HuyKetLuongThang(MyUtility.FirstDayOfMonth(m_Thang)))
            {
                ACMessageBox.Show("Đã huỷ kết lương tháng " + m_Thang.ToString("MM/yyyy"), Resources.Caption_ThongBao, 3000);
            }
            else
            {
                MessageBox.Show(Resources.Text_CoLoi, Resources.Caption_Loi);
            }
        }
 private void btnHuyXN_Click(object sender, EventArgs e)
 {
     #region hỏi lại trước khi thực hiện
     #endregion
     if (XL2.KiemtraKetnoiCSDL() == false)
     {
         return;
     }
     if (tabControl1.SelectedTab == tabDSG_DaXN)
     {
         IEnumerable <DataGridViewRow> lstGridViewRow = dgrdGioDaXN.SelectedRows.Cast <DataGridViewRow>();
         var listRowView = (from row in (lstGridViewRow)
                            select((DataRowView)row.DataBoundItem)).ToList();
         foreach (var rowView in listRowView)
         {
             var ID = (int)rowView["IDXNCa_LamThem"];
             XL.HuyXN_GioChamCong(ID);
         }
         Thread.Sleep(20);
         btnXem.PerformClick();
     }
 }
        private void btnChamCong_Click(object sender, EventArgs e)
        {
            if (XL2.KiemtraKetnoiCSDL() == false)
            {
                return;
            }

            /* 1. lấy dsnv check, lấy tháng
             *
             */
            string     strChecked_ArrMaCC = checkedDSNV.EditValue.ToString();
            List <int> arrMaCC            = new List <int>();

            strChecked_ArrMaCC.Split(',').ToList().ForEach(item => arrMaCC.Add(int.Parse(item)));
            DataTable tableArrMaCC = MyUtility.Array_To_DataTable("tableArrMaCC", arrMaCC);

            DateTime ngayDauThang  = MyUtility.FirstDayOfMonth(dateNavigator1.DateTime);
            DateTime ngayCuoiThang = MyUtility.FirstDayOfMonth(dateNavigator1.DateTime);

            //kiểm tra tình trạng kết công
            XL.Kiemtra(ngayDauThang, ngayCuoiThang);
            this.ChamCong(tableArrMaCC, ngayDauThang);
        }
Esempio n. 9
0
        private void btnXoaTK_Click(object sender, EventArgs e)
        {
            if (XL2.KiemtraKetnoiCSDL() == false)
            {
                return;
            }

            string tempTenTK    = tbTenTaiKhoan.Text;
            string deleteString = @" delete NewUserAccount where UserAccount = @UserAccount ";

            try {
                int kq = SqlDataAccessHelper.ExecNoneQueryString(deleteString, new[] { "@UserAccount" }, new object[] { tempTenTK });
                if (kq != 0)
                {
                    MessageBox.Show("Xóa tài khoản thành công.", "Thông báo", MessageBoxButtons.OK);
                }
                Load_cbTaikhoanWE();
                Load_dataGridNewUserAccount();
            } catch (Exception ex) {
                lg.Error(string.Format("[{0}]_[{1}]\n", this.Name, System.Reflection.MethodBase.GetCurrentMethod().Name), ex);
                MessageBox.Show("Không xóa tài khoản được.", "Lỗi", MessageBoxButtons.OK);
            }
        }
Esempio n. 10
0
        private void btnXoaTatcaDSThuchiThang_Click(object sender, EventArgs e)
        {
            if (XL2.KiemtraKetnoiCSDL() == false)
            {
                return;
            }
            #region ko cho chỉnh sửa giờ nếu khoảng thời gian xem công tồn tại các ngày đã kết lương

            if (XL.Kiemtra(m_thang.Date, MyUtility.LastDayOfMonth(m_thang)))
            {
                MessageBox.Show(string.Format(Resources.Text_KhoangTGDaKetCong_KoChinhSuaGioCC, "chỉnh sửa thu chi tháng", "thực hiện thao tác", ""),
                                Resources.Caption_ThongBao, MessageBoxButtons.OK);
                return;
            }

            #endregion

            //xác nhận trước khi xóa
            string messContent = "Bạn muốn xóa tất cả danh sách thu chi tháng {0}?.";
            messContent = string.Format(messContent, m_thang.ToString("MM/yyyy"));
            if (MessageBox.Show(messContent, Resources.Caption_XacNhan) == DialogResult.No)
            {
                return;
            }

            // thực hiện query
            int kq = SqlDataAccessHelper.ExecNoneQueryString("delete from DSThuChiThang where thang=@Thang ", new string[] { "@Thang" }, new object[] { m_thang });
            DAO5.GhiNhatKyThaotac("Xoá tất cả khoản thu chi tháng", string.Format("Xoá tạm ứng, lương điều chỉnh, mức đóng BHXH, thu chi khác của TẤT CẢ NV tháng [{0}]", m_thang.ToString("dd/MM/yyyy")));

            if (kq == 0)
            {
                MessageBox.Show(Resources.Text_CoLoi, Resources.Caption_Loi);
            }

            reloadGridDSThuChi();
        }
Esempio n. 11
0
        private void btnThaydoi_Click(object sender, EventArgs e)
        {
            if (XL2.KiemtraKetnoiCSDL() == false)
            {
                return;
            }

            string oldPass     = btnEditMatkhauCu.Text;
            string newPass     = btnEditMatkhauMoi1.Text;
            string testPass    = btnEditMatkhauMoi2.Text;
            string userAccount = GlobalVariables.CurrentUserAccount;
            int    userID      = GlobalVariables.CurrentUserID;

            if (newPass == testPass)
            {
                ACMessageBox.Show("Vui lòng nhập 2 mật khẩu mới giống nhau.", Resources.Caption_Loi, 2000);
                return;
            }
            if (DAO5.ChangePassword(oldPass, newPass, userAccount, userID))
            {
                ACMessageBox.Show(Resources.Text_DaThucHienXong, Resources.Caption_ThongBao, 2000);
                this.Close();
            }
        }
        private void checkBoxTachCaDem_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBoxTachCaDem.Checked == false)
            {
                comboBoxCaTruoc.DataSource = null;
                comboBoxCaSau.DataSource   = null;
            }
            else
            {
                if (XL2.KiemtraKetnoiCSDL() == false)
                {
                    return;
                }

                var tableDSCaTruoc = DAO5.LayDSCa_FillCaTruocCaSau();
                var tableDSCaSau   = tableDSCaTruoc.Copy();
                comboBoxCaTruoc.DataSource    = tableDSCaTruoc;
                comboBoxCaTruoc.ValueMember   = "ShiftID";
                comboBoxCaTruoc.DisplayMember = "ShiftCode";
                comboBoxCaSau.DataSource      = tableDSCaSau;
                comboBoxCaSau.ValueMember     = "ShiftID";
                comboBoxCaSau.DisplayMember   = "ShiftCode";
            }
        }
Esempio n. 13
0
        private void btnCapNhat_Click(object sender, EventArgs e)
        {
            if (XL2.KiemtraKetnoiCSDL() == false)
            {
                return;
            }

            // lấy ID tài khoản đang chọn
            DataRowView rowView = lstTaikhoan.SelectedItem as DataRowView;
            int         userid  = (int)rowView["UserID"];

            // update phòng ban thao tác và status cho phép hay ko
            #region lấy ds phòng ban 1. được thao tác, 2.check kết công
            List <cPhongBan> dsphongbanChecked = new List <cPhongBan>();
            List <cPhongBan> dsphongbanUnCheck = new List <cPhongBan>();
            // đưa về root node trước khi thực hiện
            var root = treePhongBan.TopNode;
            GetTopLevelNode(ref root);            // mỗi lần duyệt node sẽ làm root node chuyển về parent của node cuối nên phải trả về node gốc để duyệt từ đầu
            while (root.PrevNode != null)
            {
                root = root.PrevNode;
            }
            GetNode_DuocThaotac_CheckKetcong(root, dsphongbanChecked, dsphongbanUnCheck);
            #endregion


            // duyệt qua từng phòng ban và update lại phòng ban đó được cho phép hay ko
            for (int i = 0; i < dsphongbanChecked.Count; i++)
            {
                SqlDataAccessHelper.ExecNoneQueryString(
                    @" update DeptPrivilege set IsYes = @IsYes where IDD = @IDD and UserID = @UserID
						IF @@ROWCOUNT=0 INSERT INTO DeptPrivilege (UserID,IDD,IsYes) VALUES (@UserID,@IDD,@IsYes) "
                    , new string[] { "@UserID", "@IsYes", "@IDD" }
                    , new object[] { userid, 1, dsphongbanChecked[i].ID });
            }
            for (int i = 0; i < dsphongbanUnCheck.Count; i++)
            {
                SqlDataAccessHelper.ExecNoneQueryString(
                    @" update DeptPrivilege set IsYes = @IsYes where IDD = @IDD and UserID = @UserID
						IF @@ROWCOUNT=0 INSERT INTO DeptPrivilege (UserID,IDD,IsYes) VALUES (@UserID,@IDD,@IsYes) "
                    , new string[] { "@UserID", "@IsYes", "@IDD" }
                    , new object[] { userid, 0, dsphongbanUnCheck[i].ID });
            }

            //duyệt từng chức năng và update lại cho phép hay ko cho phép chức năng đó
            List <XL2.cChucNang> lstchucnang = checkQuyenThaotac.DataSource as List <XL2.cChucNang>;
            for (int i = 0; i < checkQuyenThaotac.Items.Count; i++)
            {
                XL2.cChucNang item   = checkQuyenThaotac.Items[i] as XL2.cChucNang;
                bool          check  = item.IsYes;
                int           menuid = item.ID;
                SqlDataAccessHelper.ExecNoneQueryString(
                    @" update MenuPrivilege set IsYes = @IsYes where UserID = @UserID and MenuID = @MenuID
						IF @@ROWCOUNT=0 INSERT INTO MenuPrivilege (UserID,MenuID,IsYes) VALUES (@UserID,@MenuID,@IsYes) "
                    , new string[] { "@UserID", "@IsYes", "@MenuID" }
                    , new object[] { userid, check, menuid });
            }

            ACMessageBox.Show("Cập nhật phân quyền thành công.", "Thông báo", 2000);

point1:
            lstTaikhoan_SelectedValueChanged(lstTaikhoan, null);
        }
Esempio n. 14
0
        private void btnXNPCTC_Click(object sender, EventArgs e)
        {
            if (XL2.KiemtraKetnoiCSDL() == false)
            {
                return;
            }

            #region ko cho chỉnh sửa giờ nếu khoảng thời gian xem công tồn tại các ngày đã kết lương

            if (XL.Kiemtra(dtpNgayBD.Value.Date, dtpNgayKT.Value.Date))
            {
                MessageBox.Show(string.Format(Resources.Text_KhoangTGDaKetCong_KoChinhSuaGioCC, "xem công", "xác nhận phụ cấp", "xem công"),
                                Resources.Caption_ThongBao, MessageBoxButtons.OK);
                return;
            }

            #endregion

            // xác định đang chọn datagrid nào để lấy các datarow của các datagrid đó
            DataGridView currDataGrid = XacDinhDataGridViewDangChon();

            // lọc lấy các datarow được check, nếu không có row nào được check thì chế độ view all, ngược lại thì xem các ngày được check
            if (currDataGrid.SelectedRows.Count != 0)
            {
                var arrRecord = (from DataGridViewRow row in currDataGrid.SelectedRows
                                 select(((DataRowView)row.DataBoundItem).Row)).ToArray();

                if (arrRecord.Length == 0)
                {
                    return;
                }

                frm_XN_PC50 frm112 = new frm_XN_PC50 {
                    StartPosition = FormStartPosition.CenterParent,
                    m_arrRecd     = arrRecord
                };
                //frm112.Location = new Point((int)((Size.Width - frm112.Size.Width) / 2f), (int)((Size.Height - frm112.Size.Height) / 2f));
                //frm112.m_DSNV = m_DSNV;
                frm112.ShowDialog();

                // lấy dsnv đang chọn
                var listNV = (from DataGridViewRow dataGridViewRow in dgrdDSNVTrgPhg.Rows
                              let rowView = dataGridViewRow.DataBoundItem as DataRowView
                                            where (rowView["check"] != DBNull.Value && (bool)rowView["check"])
                                            select(cUserInfo) rowView["cUserInfo"])
                             .ToList();

                if (frm112.IsReload)
                {
                    int      tempUserEnrollNumber;
                    DateTime tempDateTime;
                    GetCurrRow(dgrdTongHop, out tempUserEnrollNumber, out tempDateTime);
                    XL.TaoTableXemCong(listNV, m_Bang_TongHopXemCong);
                    SetCurrRow(dgrdTongHop, tempUserEnrollNumber, tempDateTime);
                    GetCurrRow(dgrdGioKDQD, out tempUserEnrollNumber, out tempDateTime);
                    XL.TaoTableGioKDQD(listNV, m_Bang_GioKDQD);
                    SetCurrRow(dgrdGioKDQD, tempUserEnrollNumber, tempDateTime);
                    GetCurrRow(dgrdGioThieuCheck, out tempUserEnrollNumber, out tempDateTime);
                    XL.TaoTableGioThieuCheck(listNV, m_Bang_GioThieuCheck);
                    SetCurrRow(dgrdGioThieuCheck, tempUserEnrollNumber, tempDateTime);
                    XL.TaoTableThK_TreSom(listNV, m_Bang_ThK_TreSom);
                    VeLaiDataGrid(dgrdTongHop);
                    VeLaiDataGrid(dgrdGioKDQD);
                    VeLaiDataGrid(dgrdGioThieuCheck);
                    VeLaiDataGrid(dgrdThKTreSom);
                    dgrdTongHop.Invalidate();
                    dgrdGioKDQD.Invalidate();
                    dgrdGioThieuCheck.Invalidate();
                    dgrdThKTreSom.Invalidate();
                }
            }
        }
Esempio n. 15
0
        private void btnXoaGioRaa_Click(object sender, EventArgs e)
        {
            if (XL2.KiemtraKetnoiCSDL() == false)
            {
                return;
            }

            IsReload = true;
            var lydo   = (cbLyDo.SelectedItem != null) ? cbLyDo.SelectedItem.ToString() : cbLyDo.Text;
            var ghichu = tbGhiChu.Text;

            #region hỏi lại ttrước khi xoá

            if (MessageBox.Show(string.Format(Resources.Text_xacNhanXoaGioHangLoat, "ra"), Resources.Caption_XacNhan, MessageBoxButtons.YesNo) == DialogResult.No)
            {
                return;
            }

            #endregion


            if (dgrdDSGioVaoRa.SelectedRows.Count == 0)
            {
                return;
            }
            var flagThongBao = false; // thông báo ko được xoá giờ đãn XN

            try                       //general try catch
            {
                var arrRecord = (from DataGridViewRow dataGridViewRow in dgrdDSGioVaoRa.SelectedRows
                                 let row = (DataRowView)dataGridViewRow.DataBoundItem
                                           let nv = (cUserInfo)(row["cUserInfo"])
                                                    let cCheckInOut = (cCheckInOut)(row["cCheckInOut"])
                                                                      let ngay = (DateTime)(row["TimeStrNgay"])
                                                                                 select new { nhanvien = nv, CIO = cCheckInOut, Ngay = ngay }).GroupBy(o => o.nhanvien).ToList();

                var ds_raa3_vao1     = new List <cCheck>();
                var DS_Check_KoHopLe = new List <cCheck>();
                foreach (var groupByNV in arrRecord)
                {
                    var nhanvien = groupByNV.Key;
                    foreach (var row in groupByNV)
                    {
                        if (row.CIO.DaXN)
                        {
                            flagThongBao = true;
                            continue;
                        }

                        if (row.CIO.HaveINOUT == -1)
                        {
                            continue;
                        }
                        var checkout = row.CIO.Raa;
                        XL.XoaGioChoNV(nhanvien.MaCC, checkout, row.nhanvien.DS_Check_A, lydo, ghichu);
                    }
                    XL.LoaiBoCheckKoHopLe1(nhanvien.DS_Check_A, ref DS_Check_KoHopLe);
                    XL.GhepCIO_A2(nhanvien.DS_Check_A, nhanvien.DS_CIO_A);
                    XL.XetCa_ListCIO_A3(nhanvien.DS_CIO_A, nhanvien.LichTrinhLV, ds_raa3_vao1, nhanvien.DS_Check_A);
                    XL.TronDS_CIO_A_V5(nhanvien.DS_CIO_A, nhanvien.DS_CIO_V, nhanvien.DSVaoRa);
                    XL.PhanPhoi_DSVaoRa6(nhanvien.DSVaoRa, nhanvien.DSNgayCong);
                    XL.PhanPhoi_DSVang7(nhanvien.DSVang, nhanvien.DSNgayCong);
                    XL.TinhCong_ListNgayCong8(nhanvien.DSNgayCong, nhanvien.StartNT, nhanvien.EndddNT);                    //ver 4.0.0.4
                    XL.TinhPCTC_TrongListXNPCTC9(nhanvien.DSXNPhuCap50, nhanvien.DSNgayCong);
                    XL.TinhPCDB_TrongListXNPCDB10(nhanvien.DSXNPhuCapDB, nhanvien.DSNgayCong);
                    XL.TinhPCNgayVang(nhanvien.DSVang, nhanvien.DSNgayCong);
                }
                if (DS_Check_KoHopLe.Count > 0)
                {
                    DAO.LoaiGioLienQuan(DS_Check_KoHopLe);
                }
                if (ds_raa3_vao1.Count > 0)
                {
                    DAO.ThemGio_ra3_vao1(ds_raa3_vao1);
                }

                loadGrid();


                if (flagThongBao)
                {
                    ACMessageBox.Show(Resources.Text_KoTheSuaXoaGioDaXN, Resources.Caption_ThongBao, 2000);
                }
            } catch (Exception ex)             //general try catch
            {
                lg.Error(string.Format("[{0}]_[{1}]\n", this.Name, System.Reflection.MethodBase.GetCurrentMethod().Name), ex);
                MessageBox.Show(Resources.Text_CoLoi, Resources.Caption_Loi);
            }
        }
Esempio n. 16
0
        private void btnSuaa_Click(object sender, EventArgs e)
        {
            if (XL2.KiemtraKetnoiCSDL() == false)
            {
                return;
            }

            IsReload = true;
            var timespanGioVao = dtpVao.Value.TimeOfDay;
            var timespanGioRaa = dtpRaa.Value.TimeOfDay;
            var lydo           = (cbLyDo.SelectedItem != null) ? cbLyDo.SelectedItem.ToString() : cbLyDo.Text;
            var ghichu         = tbGhiChu.Text;

            if (dgrdDSGioVaoRa.SelectedRows.Count == 0)
            {
                return;
            }

            #region hỏi lại trước khi sửa
            if (MessageBox.Show(string.Format(Resources.Text_xacNhanSuaGioHangLoat,
                                              (radGioVao.Checked)?"vào":"ra",
                                              (radGioVao.Checked)?dtpVao.Value.ToString("H:mm"): dtpRaa.Value.ToString("H:mm")),
                                Resources.Caption_XacNhan, MessageBoxButtons.YesNo) == DialogResult.No)
            {
                return;
            }

            #endregion

            try                           //general try catch
            {
                var flagThongBao = false; // flag thông báo không cho phép sửa giờ đã CN
                var arrRecord    = (from DataGridViewRow dataGridViewRow in dgrdDSGioVaoRa.SelectedRows
                                    let row = (DataRowView)dataGridViewRow.DataBoundItem
                                              let nv = (cUserInfo)row["cUserInfo"]
                                                       let cCheckInOut = (cCheckInOut)row["cCheckInOut"]
                                                                         let ngay = (DateTime)row["TimeStrNgay"]
                                                                                    select new { nhanvien = nv, CIO = cCheckInOut, Ngay = ngay }).GroupBy(o => o.nhanvien).ToList();
                var ds_raa3_vao1     = new List <cCheck>();
                var DS_Check_KoHopLe = new List <cCheck>();
                foreach (var group in arrRecord)
                {
                    var nhanvien = group.Key;
                    foreach (var item in group)
                    {
                        if (item.CIO.DaXN)                           // ko cho sửa các giờ đã xác nhận
                        {
                            flagThongBao = true;
                            continue;
                        }
                        if (radGioVao.Checked)
                        {
                            if (item.CIO.HaveINOUT == -2)
                            {
                                continue;
                            }
                            var giovao      = item.Ngay.Add(timespanGioVao);
                            var checkinnold = item.CIO.Vao;
                            var checkinnnew = new cCheck {
                                MaCC    = nhanvien.MaCC, Type = "I", Time = giovao, Source = "PC", MachineNo = 21,
                                PhucHoi = new cPhucHoi {
                                    IDGioGoc = int.MaxValue, Them = checkinnold.PhucHoi.Them, Xoaa = checkinnold.PhucHoi.Xoaa
                                }
                            };
                            XL.SuaGioChoNV(nhanvien.MaCC, checkinnold, checkinnnew, nhanvien.DS_Check_A, lydo, ghichu);
                        }
                        else
                        {
                            if (item.CIO.HaveINOUT == -1)
                            {
                                continue;
                            }
                            var gioraa      = item.Ngay.Add(timespanGioRaa);
                            var checkoutold = item.CIO.Raa;
                            var checkoutnew = new cCheck {
                                MaCC    = nhanvien.MaCC, Type = "O", Time = gioraa, Source = "PC", MachineNo = 22,
                                PhucHoi = new cPhucHoi {
                                    IDGioGoc = int.MaxValue, Them = checkoutold.PhucHoi.Them, Xoaa = checkoutold.PhucHoi.Xoaa
                                }
                            };
                            XL.SuaGioChoNV(nhanvien.MaCC, checkoutold, checkoutnew, nhanvien.DS_Check_A, lydo, ghichu);
                        }
                    }
                    XL.LoaiBoCheckKoHopLe1(nhanvien.DS_Check_A, ref DS_Check_KoHopLe);
                    XL.GhepCIO_A2(nhanvien.DS_Check_A, nhanvien.DS_CIO_A);
                    XL.XetCa_ListCIO_A3(nhanvien.DS_CIO_A, nhanvien.LichTrinhLV, ds_raa3_vao1, nhanvien.DS_Check_A);
                    XL.TronDS_CIO_A_V5(nhanvien.DS_CIO_A, nhanvien.DS_CIO_V, nhanvien.DSVaoRa);
                    XL.PhanPhoi_DSVaoRa6(nhanvien.DSVaoRa, nhanvien.DSNgayCong);
                    XL.PhanPhoi_DSVang7(nhanvien.DSVang, nhanvien.DSNgayCong);
                    XL.TinhCong_ListNgayCong8(nhanvien.DSNgayCong, nhanvien.StartNT, nhanvien.EndddNT);                    //ver 4.0.0.4
                    XL.TinhPCTC_TrongListXNPCTC9(nhanvien.DSXNPhuCap50, nhanvien.DSNgayCong);
                    XL.TinhPCDB_TrongListXNPCDB10(nhanvien.DSXNPhuCapDB, nhanvien.DSNgayCong);
                    XL.TinhPCNgayVang(nhanvien.DSVang, nhanvien.DSNgayCong);
                }
                if (DS_Check_KoHopLe.Count > 0)
                {
                    DAO.LoaiGioLienQuan(DS_Check_KoHopLe);
                }
                if (ds_raa3_vao1.Count > 0)
                {
                    DAO.ThemGio_ra3_vao1(ds_raa3_vao1);
                }

                loadGrid();
                if (flagThongBao)
                {
                    ACMessageBox.Show(Resources.Text_KoTheSuaXoaGioDaXN, Resources.Caption_ThongBao, 2000);
                }
            } catch (Exception ex)             //general try catch
            {
                lg.Error(string.Format("[{0}]_[{1}]\n", this.Name, System.Reflection.MethodBase.GetCurrentMethod().Name), ex);
                MessageBox.Show(Resources.Text_CoLoi, Resources.Caption_Loi);
            }
        }
Esempio n. 17
0
        private void btnThem_Click(object sender, EventArgs e)
        {
            if (XL2.KiemtraKetnoiCSDL() == false)
            {
                return;
            }

            IsReload = true;

            #region lấy thông tin

            var timespanGioVao = dtpVao.Value.TimeOfDay;
            var timespanGioRaa = dtpRaa.Value.TimeOfDay;
            var lydo           = (cbLyDo.SelectedItem != null) ? cbLyDo.SelectedItem.ToString() : cbLyDo.Text;
            var ghichu         = tbGhiChu.Text;

            #endregion

            var tempstring = radGioVao.Checked ? "vào" : "ra";
            var temptime   = (radGioVao.Checked) ? dtpVao.Value : dtpRaa.Value;
            if (dgrdDSGioVaoRa.SelectedRows.Count == 0)
            {
                return;
            }

            #region hỏi lại trước khi thêm

            if (MessageBox.Show(string.Format(Resources.Text_xacNhanThemGioHangLoat, tempstring, temptime.ToString("H:mm")),
                                Resources.Caption_XacNhan, MessageBoxButtons.YesNo) == DialogResult.No)
            {
                return;
            }

            #endregion

            try             //general try catch
            {
                #region lấy ds các giờ vào ra, group lại theo từng nhân viên để thực hiện thêm 1 loạt rồi sau đó xử lý tính toán lại checkinout và ngày công

                var arrRecord = (from DataGridViewRow dataGridViewRow in dgrdDSGioVaoRa.SelectedRows
                                 let row = (DataRowView)dataGridViewRow.DataBoundItem
                                           let nv = (cUserInfo)(row["cUserInfo"])
                                                    let cCheckInOut = (cCheckInOut)(row["cCheckInOut"])
                                                                      let ngay = (DateTime)(row["TimeStrNgay"])
                                                                                 select new { nhanvien = nv, CIO = cCheckInOut, Ngay = ngay }).GroupBy(o => o.nhanvien).ToList();

                #endregion
                var ds_raa3_vao1     = new List <cCheck>();
                var DS_Check_KoHopLe = new List <cCheck>();
                foreach (var group in arrRecord)
                {
                    var nhanvien = group.Key;
                    foreach (var item in @group.Where(item => item.CIO.HaveINOUT != 0))
                    {
                        if (radGioVao.Checked)                          //2. thêm I cho O kv
                        {
                            if (item.CIO.HaveINOUT == -2)
                            {
                                var giovao = item.Ngay.Add(timespanGioVao);
                                if (giovao > item.CIO.Raa.Time)
                                {
                                    giovao = giovao.AddDays(-1d);                                                            // trừ đi 1 ngày nếu (giờ vào thêm) > giờ ra
                                }
                                var checkinn = new cCheck {
                                    MaCC = item.nhanvien.MaCC, Type = "I", Time = giovao, Source = "PC", MachineNo = 21, PhucHoi = new cPhucHoi {
                                        Them = true, IDGioGoc = -1, Xoaa = false
                                    }
                                };
                                XL.ThemGioChoNV(item.nhanvien.MaCC, checkinn, item.nhanvien.DS_Check_A, lydo, ghichu);
                            }
                        }
                        else
                        {
                            if (item.CIO.HaveINOUT == -1)                              //3. thêm O cho I kr
                            {
                                var gioraa = item.Ngay.Add(timespanGioRaa);
                                if (gioraa < item.CIO.Vao.Time)
                                {
                                    gioraa = gioraa.AddDays(1d);                                                            // cộng thêm 1 ngày nếu (giờ vào thêm) > giờ ra
                                }
                                var checkout = new cCheck {
                                    MaCC = item.nhanvien.MaCC, Type = "O", Time = gioraa, Source = "PC", MachineNo = 22, PhucHoi = new cPhucHoi {
                                        Them = true, IDGioGoc = -1, Xoaa = false
                                    }
                                };
                                XL.ThemGioChoNV(item.nhanvien.MaCC, checkout, item.nhanvien.DS_Check_A, lydo, ghichu);
                            }
                        }
                    }

                    XL.LoaiBoCheckKoHopLe1(nhanvien.DS_Check_A, ref DS_Check_KoHopLe);
                    XL.GhepCIO_A2(nhanvien.DS_Check_A, nhanvien.DS_CIO_A);
                    XL.XetCa_ListCIO_A3(nhanvien.DS_CIO_A, nhanvien.LichTrinhLV, ds_raa3_vao1, nhanvien.DS_Check_A);
                    XL.TronDS_CIO_A_V5(nhanvien.DS_CIO_A, nhanvien.DS_CIO_V, nhanvien.DSVaoRa);
                    XL.PhanPhoi_DSVaoRa6(nhanvien.DSVaoRa, nhanvien.DSNgayCong);
                    XL.PhanPhoi_DSVang7(nhanvien.DSVang, nhanvien.DSNgayCong);
                    XL.TinhCong_ListNgayCong8(nhanvien.DSNgayCong, nhanvien.StartNT, nhanvien.EndddNT);                    //ver 4.0.0.4
                    XL.TinhPCTC_TrongListXNPCTC9(nhanvien.DSXNPhuCap50, nhanvien.DSNgayCong);
                    XL.TinhPCDB_TrongListXNPCDB10(nhanvien.DSXNPhuCapDB, nhanvien.DSNgayCong);
                    XL.TinhPCNgayVang(nhanvien.DSVang, nhanvien.DSNgayCong);
                }
                if (DS_Check_KoHopLe.Count > 0)
                {
                    DAO.LoaiGioLienQuan(DS_Check_KoHopLe);
                }
                if (ds_raa3_vao1.Count > 0)
                {
                    DAO.ThemGio_ra3_vao1(ds_raa3_vao1);
                }

                loadGrid();
            } catch (Exception ex)             //general try catch
            {
                lg.Error(string.Format("[{0}]_[{1}]\n", this.Name, System.Reflection.MethodBase.GetCurrentMethod().Name), ex);
                MessageBox.Show(Resources.Text_CoLoi, Resources.Caption_Loi);
            }
        }
        private void buttonLuu_Click(object sender, EventArgs e)
        {
            if (XL2.KiemtraKetnoiCSDL() == false)
            {
                return;
            }

            #region lấy dữ liệu từ form và xử lý trước khi lưu

            var      shiftid = (lbShiftID.Tag != null) ? (int)(lbShiftID.Tag) : -1;
            var      shiftcode = textBoxShiftcode.Text;
            var      mota = textBoxMoTa.Text;
            var      kyhieucc = textBoxKyhieu.Text;
            bool     tachcadem = checkBoxTachCaDem.Checked;
            bool     isenable = checkBoxEnable.Checked;
            bool     isextended = checkBoxCaMR.Checked;
            TimeSpan OnnDuty = TimeSpan.Zero, OffDuty = TimeSpan.Zero;
            TimeSpan OnnInn = TimeSpan.Zero, CutInn = TimeSpan.Zero;
            TimeSpan OnnOut = TimeSpan.Zero, CutOut = TimeSpan.Zero;
            TimeSpan OnnLun = TimeSpan.Zero, OffLun = TimeSpan.Zero;
            float    wkday = 0f;
            int      daycount = 0, wktime = 0, shiftid1 = -1, shiftid2 = -1;

            #region validate giờ
            if (TimeSpan.TryParse(maskedTextBoxVao.Text, out OnnDuty) == false)
            {
                ACMessageBox.Show(Resources.Text_GioVaoKoHL, Resources.Caption_Loi, 2000);
                return;
            }
            if (TimeSpan.TryParse(maskedTextBoxRaa.Text, out OffDuty) == false)
            {
                ACMessageBox.Show(Resources.Text_GioRaaKoHL, Resources.Caption_Loi, 2000);
                return;
            }
            if (TimeSpan.TryParse(maskedTextBoxBDLunch.Text, out OnnLun) == false)
            {
                ACMessageBox.Show(Resources.Text_OnnLunKoHL, Resources.Caption_Loi, 2000);
                return;
            }
            if (TimeSpan.TryParse(maskedTextBoxKTLunch.Text, out OffLun) == false)
            {
                ACMessageBox.Show(Resources.Text_OffLunKoHL, Resources.Caption_Loi, 2000);
                return;
            }
            if (float.TryParse(maskedTextBoxWKDay.Text, out wkday) == false)
            {
                ACMessageBox.Show(Resources.Text_WKDayKoHL, Resources.Caption_Loi, 2000);
                return;
            }
            #endregion

            //tính daycount , wktime
            if (OffDuty < OnnDuty)
            {
                daycount = 1;
            }
            OffDuty = OffDuty.Add(new TimeSpan(daycount, 0, 0, 0));

            wktime = Convert.ToInt32((OffDuty - OnnDuty - (OffLun - OnnLun)).TotalMinutes);

            int iOnnInn = Convert.ToInt32(numOnnInn.Value);            // bug onn in qua đêm
            int iCutInn = Convert.ToInt32(numCutInn.Value);            // bug cut in qua đêm
            int iOnnOut = Convert.ToInt32(numOnnOut.Value);            // bug onn out qua đêm
            int iCutOut = Convert.ToInt32(numCutOut.Value);            // bug cut out qua đêm
            int iCPTre  = Convert.ToInt32(numLateGrace.Value);
            int iCPSom  = Convert.ToInt32(numEarlyGrace.Value);
            int afterot = Convert.ToInt32(numAfterOT.Value);
            if (tachcadem)
            {
                shiftid1 = (int)comboBoxCaTruoc.SelectedValue;
                shiftid2 = (int)comboBoxCaSau.SelectedValue;
            }

            #endregion

            //MessageBox.Show(shiftid + " " + shiftcode + " " + mota + " " + kyhieucc + " " + OnnDuty + " " + OffDuty + " " + wktime);// fortesting
            if (themmoi)             // đang thêm
            {
                int n = DAO5.InsCa(shiftcode, OnnDuty, OffDuty, daycount, wktime, wkday, iOnnInn, iCutInn, iOnnOut, iCutOut, iCPTre, iCPSom, afterot,
                                   mota, kyhieucc, OnnLun, OffLun, tachcadem, shiftid1, shiftid2, isenable, isextended);
                if (n == 0)
                {
                    MessageBox.Show(Resources.Text_CoLoi, Resources.Caption_Loi, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                // sau khi lưu xong thì set về false
                themmoi = false;
            }
            else             // đang sửa
            {
                int n = DAO5.UpdCa(shiftid, shiftcode, OnnDuty, OffDuty, daycount, wktime, wkday, iOnnInn, iCutInn, iOnnOut, iCutOut, iCPTre, iCPSom, afterot,
                                   mota, kyhieucc, OnnLun, OffLun, tachcadem, shiftid1, shiftid2, isenable, isextended);
                if (n == 0)
                {
                    MessageBox.Show(Resources.Text_CoLoi, Resources.Caption_Loi, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            LoadGrid();            // thêm hoặc sửa xong thì load lại grid
        }
        private void btnSuaGio_Click(object sender, EventArgs e)
        {
            if (XL2.KiemtraKetnoiCSDL() == false)
            {
                return;
            }

            bool flag         = false;
            bool tmpSuaGioVao = (tabControl1.SelectedIndex == 0);

            try
            {
                DataGridView dataGridThaoTac = tmpSuaGioVao ? dgrdCTGioVao : dgrdCTGioRa;
                DataTable    table           = dataGridThaoTac.DataSource as DataTable;
                if (table == null)
                {
                    return;
                }
                DataRow[] tmpArrRow = (table).Select("check = true");
                if (tmpArrRow.Length == 0)
                {
                    ACMessageBox.Show(Resources.Text_ChuaChonNV, Resources.Caption_ThongBao, 2000);
                    return;
                }

                frm_ThongTinSuaGioHangLoat frm311Thongtin = new frm_ThongTinSuaGioHangLoat()
                {
                    fNgaySuaMacDinh = dtpBD.Value.Date, fCheckIn = tmpSuaGioVao
                };
                frm311Thongtin.ShowDialog();

                if (frm311Thongtin.fOK)
                {
                    DateTime tmpGioMoi     = frm311Thongtin.fGioMoi;
                    bool     tmpKieuGioMoi = frm311Thongtin.fCheckIn;
                    foreach (DataRow row in tmpArrRow)
                    {
                        int      tmpUserEnrollNumber = (int)row["UserEnrollNumber"];
                        DateTime tmpGioCu            = (DateTime)row["TimeStr"];
                        int      tmpMachineNo        = (int)row["MachineNo"];
                        string   tmpSourceOld        = row["Source"].ToString();
                        string   tmpLyDo             = frm311Thongtin.fLydo;
                        string   tmpGhiChu           = frm311Thongtin.fGhichu;
                        flag = DAO5.SuaGioChoNV(tmpUserEnrollNumber, tmpGioCu, tmpGioMoi, tmpSourceOld, "PC", tmpMachineNo, (tmpKieuGioMoi) ? 21 : 22, -1, tmpLyDo, tmpGhiChu);
                        if (flag == false)
                        {
                            lg.Error("Lỗi: sửa giờ cho " + tmpUserEnrollNumber + " giờ chưa sửa: " + tmpGioCu + " giờ sửa: " + tmpGioMoi);
                            break;
                        }
                    }
                    if (flag)
                    {
                        btnXem_Click(btnXem, null);
                    }
                    else
                    {
                        MessageBox.Show("Xảy ra lỗi trong quá trình sửa giờ cho Nhân viên. Vui lòng thử lại.", "Lỗi", MessageBoxButtons.OK);
                    }
                }
            }
            catch (Exception ex)
            {
                lg.Error(string.Format("[{0}]_[{1}]\n", this.Name, System.Reflection.MethodBase.GetCurrentMethod().Name), ex);
                MessageBox.Show(Resources.Text_CoLoi, Resources.Caption_Loi);
            }
        }
        private void btnThem_Click(object sender, EventArgs e)
        {
            if (XL2.KiemtraKetnoiCSDL() == false)
            {
                return;
            }

            // xác nhận thực hiện
            if (MessageBox.Show("Khai báo vắng cho các nhân viên?", Resources.Caption_XacNhan, MessageBoxButtons.OKCancel) == DialogResult.Cancel)
            {
                return;
            }
            #region             //lấy loại vắng, workingDay, workingTime, absentCode, XL2.currUserID

            if (cbLoaiVang.SelectedItem == null)
            {
                ACMessageBox.Show("Bạn chưa chọn loại vắng", Resources.Caption_ThongBao, 2000);
                return;
            }
            var rowLV        = cbLoaiVang.SelectedItem as DataRowView;
            var absentCode   = rowLV["AbsentCode"].ToString();
            var workingDay   = (float)((frm_KBVang.Working)cbSoBuoi.SelectedItem).Cong;
            var phuCapString = maskedTextBox1.Text;
            var phuCapInt    = 0;
            var phuCapFloat  = 0f;
            if (int.TryParse(phuCapString, out phuCapInt) == false || phuCapString.Length < 3)
            {
                ACMessageBox.Show("Nhập phụ cấp chưa đúng định dạng.", Resources.Caption_Loi, 2000); return;
            }
            phuCapFloat = Convert.ToSingle(phuCapInt) / 100f;

            #region set working time tùy theo workingDay

            var workingTime = 0f;

            if (Math.Abs(workingDay - 0f) < 0.01f)
            {
                workingTime = 0f;
            }
            else if (Math.Abs(workingDay - 0.25f) < 0.01f)
            {
                workingTime = 2f;
                if (!(absentCode.ToLower() == "p" || absentCode.ToLower() == "ro"))
                {
                    ACMessageBox.Show("Chưa hỗ trợ vắng 2 tiếng ngoài phép và việc riêng.", "Chức năng chưa được hỗ trợ", 3000);
                    return;
                }
            }
            else if (Math.Abs(workingDay - 0.5f) < 0.01f)
            {
                workingTime = 4f;
            }
            else if (Math.Abs(workingDay - 1f) < 0.01f)
            {
                workingTime = 8f;
            }

            #endregion

            #endregion

            IsReload = true;
            List <Error> listError = new List <Error>();
            XL.ThemNgayVang(listMaCC_NgayVang, workingDay, workingTime, phuCapFloat, absentCode, listError);
            if (listError.Count > 0)
            {
                frmError frm = new frmError {
                    StartPosition = FormStartPosition.CenterParent, listError = listError
                };
                frm.ShowDialog();
            }
            Close();
        }
Esempio n. 21
0
        private void btnTaoTK_Click(object sender, EventArgs e)
        {
            if (XL2.KiemtraKetnoiCSDL() == false)
            {
                return;
            }

            if (tbPass1.Text != tbPass2.Text)
            {
                MessageBox.Show("Mật khẩu không khớp.");
                return;
            }
            if (tbPass1.Text == string.Empty || tbPass2.Text == string.Empty)
            {
                MessageBox.Show("Mật khẩu không được để trống.");
                return;
            }

            string insertString = @" insert into NewUserAccount(UserID, UserAccount, Password) values (@UserID, @UserAccount, @password) ";

            // xem các chức năng để tạo mặc định
            List <cChucNang> listChucNang   = XL2.TaoChucNang();
            string           templateString = " insert into MenuPrivilege (UserID, MenuID, IsYes) values (@UserID, {0}, 0) ";
            string           chuoi          = string.Empty;

            for (int i = 0; i < listChucNang.Count; i++)
            {
                chuoi         = string.Format(templateString, listChucNang[i].ID);
                insertString += chuoi;
            }
            int tempUserID = (int)cbTaikhoanWE.SelectedValue;

            string tempUserAccount = tbTenTaiKhoan.Text;
            string tempPass        = tbPass1.Text;
            string tempPassEncrypt = MyUtility.Mahoa(tempPass);

            try {
                #region

                /* insertString = @" insert into NewUserAccount(UserID, UserAccount, Password) values (@UserID, @UserAccount, @password)
                 *                                      insert into MenuPrivilege (UserID, MenuID, IsYes) values (@UserID, 10001, 0)
                 *                                      insert into MenuPrivilege (UserID, MenuID, IsYes) values (@UserID, 10002, 0)
                 *                                      insert into MenuPrivilege (UserID, MenuID, IsYes) values (@UserID, 20001, 0)
                 *                                      insert into MenuPrivilege (UserID, MenuID, IsYes) values (@UserID, 20002, 0)
                 *                                      insert into MenuPrivilege (UserID, MenuID, IsYes) values (@UserID, 20003, 0)
                 *                                      insert into MenuPrivilege (UserID, MenuID, IsYes) values (@UserID, 30001, 0)
                 *                                      insert into MenuPrivilege (UserID, MenuID, IsYes) values (@UserID, 30002, 0)
                 *                                      insert into MenuPrivilege (UserID, MenuID, IsYes) values (@UserID, 40001, 0)
                 *                                      insert into MenuPrivilege (UserID, MenuID, IsYes) values (@UserID, 40002, 0)
                 *                                      insert into MenuPrivilege (UserID, MenuID, IsYes) values (@UserID, 60001, 0) "
                 */

                #endregion

                int kq = SqlDataAccessHelper.ExecNoneQueryString(insertString
                                                                 , new[] { "@UserID", "@UserAccount", "@password" }
                                                                 , new object[] { tempUserID, tempUserAccount, tempPassEncrypt }, CanLog: false);
                if (kq != 0)
                {
                    ACMessageBox.Show("Thêm tài khoản thành công.", "Thông báo", 2000);
                }
                else
                {
                    MessageBox.Show("Không thêm được tài khoản.", "Lỗi", MessageBoxButtons.OK);
                }
                Load_dataGridNewUserAccount();
                Load_cbTaikhoanWE();
            } catch (Exception exception) {
                lg.Error(string.Format("[{0}]_[{1}]\n", this.Name, System.Reflection.MethodBase.GetCurrentMethod().Name), exception);
                MessageBox.Show("Mất kết nối đến máy chủ. Vui lòng thử lại.", "Lỗi", MessageBoxButtons.OK);
            }
        }
Esempio n. 22
0
        private void btnXacNhan_Click(object sender, EventArgs e)
        {
            if (XL2.KiemtraKetnoiCSDL() == false)
            {
                return;
            }

            var loai   = 0;
            var pcngay = 0;
            var pcdem  = 0;
            var temp   = string.Empty;

            if (radKhongPC.Checked)
            {
                loai = -1;
            }
            else if (radPCNgayNghi.Checked)
            {
                loai   = 200;
                pcngay = XL2.PC100;
                pcdem  = XL2.PC160;
                temp   = "ngày nghỉ {0}% (ban ngày), {1}% (ban đêm)";
                temp   = string.Format(temp, XL2.PC100, XL2.PC160);
            }
            else if (radPCNgayLe.Checked)
            {
                loai   = 300;
                pcngay = XL2.PC200;
                pcdem  = XL2.PC290;
                temp   = "ngày lễ {0}% (ban ngày), {1}% (ban đêm), chưa kể công lễ, tết";
                temp   = string.Format(temp, XL2.PC200, XL2.PC290);
            }
            else if (radPCCus1.Checked)
            {
                loai   = 1;
                pcngay = (int)(numPCCus1.Value);
                temp   = "tuỳ chỉnh " + pcngay + "% cho giờ làm trên 8 tiếng";
            }
            else if (radPCCus2.Checked)
            {
                loai   = 2;
                pcngay = (int)(numPCCus2.Value);
                temp   = "tuỳ chỉnh " + pcngay + "% cho giờ làm";
            }

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

            if (loai == -1)
            {
                if (MessageBox.Show(string.Format("Bạn muốn huỷ xác nhận tính phụ cấp {0}?", temp), Resources.Caption_XacNhan,
                                    MessageBoxButtons.OKCancel) == DialogResult.Cancel)
                {
                    return;
                }
            }
            else
            {
                if (MessageBox.Show(string.Format("Bạn muốn xác nhận các ngày làm việc vừa chọn tính phụ cấp {0}?", temp),
                                    Resources.Caption_XacNhan, MessageBoxButtons.OKCancel) == DialogResult.Cancel)
                {
                    return;
                }
            }

            #endregion

            IsReload = true;

            foreach (var row in m_arrRecd)
            {
                var nhanvien = (cUserInfo)row["cUserInfo"];
                var ngay     = (DateTime)row["TimeStrNgay"];
                var ngayCong = (cNgayCong)row["cNgayCong"];
                //if (ngay <= XL2.NgayCuoiThangKetCong && XL2.NgayCuoiThangKetCong != DateTime.MinValue) continue;//tbd temp patch// ko thực hiện đối với các ngày trong tháng đã kết công
                if (loai == -1)
                {
                    XL.HuyBo_TinhPCDB(nhanvien, ngayCong, nhanvien.DSXNPhuCapDB);
                    //XL.TinhPCNgayVang(ngayCong);
                }
                else
                {
                    XL.TinhPCDB(nhanvien, ngayCong, ngay, loai, pcngay, pcdem, temp);
                    XL.TinhPCNgayVang(ngayCong);
                }
            }
            this.Close();
        }
Esempio n. 23
0
        private void btnXem_Click(object sender, EventArgs e)
        {
            if (XL2.KiemtraKetnoiCSDL() == false)
            {
                return;
            }


            #region             //1. lấy dữ liệu từ form lấy ngày BD và kết thúc nếu quá 62 ngày thì báo

            dtpNgayBD.Update();
            dtpNgayKT.Update();
            var ngayBD = dtpNgayBD.Value.Date;
            var ngayKT = dtpNgayKT.Value.Date;
            if (ngayBD > ngayKT)
            {
                MyUtility.Swap(ref ngayBD, ref ngayKT);
            }
            var ngayBD_Bef2D = ngayBD.AddDays(-2d);
            var ngayKT_Aft2D = ngayKT.AddDays(2d);
            // ngày 1->5 là trừ ra = 4, + 1 để ra số ngày, + thêm 2 để ra cột(UserEnrollNumber và số lượng)

            if ((ngayKT - ngayBD).Duration() > new TimeSpan(62, 0, 0, 0))
            {
                if (MessageBox.Show(Resources.Text_KhoangThoiGianXemCongQuaDai, Resources.Caption_XacNhan, MessageBoxButtons.YesNo) == DialogResult.No)
                {
                    return;
                }
            }
            #endregion

            XL.SaveSetting(lastStartDate: ngayBD, lastEndDate: ngayKT);
            BindingContext[dgrdDSNVTrgPhg.DataSource].EndCurrentEdit();

            #region             //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

            var listNV = (from DataGridViewRow dataGridViewRow in dgrdDSNVTrgPhg.Rows
                          let rowView = dataGridViewRow.DataBoundItem as DataRowView
                                        where (rowView["check"] != DBNull.Value && (bool)rowView["check"])
                                        select(cUserInfo) rowView["cUserInfo"])
                         .ToList();

            if (listNV.Count == 0)
            {
                ACMessageBox.Show(Resources.Text_ChuaChonNV, Resources.Caption_ThongBao, 2000);                 //
                GC.Collect();
                return;
            }

            #endregion

            //3. lấy dữ liệu chấm công của các nhân viên
            try {
                if (XL.KiemtraDulieuCapnhatTuServer(DateTime.Now) == false)
                {
                    ACMessageBox.Show(Resources.Text_DuLieuChamCongChuaUpdate, Resources.Caption_ThongBao, 4000);
                }
                WaitWindow.Show(this.XuLyXemCong, "Đang xử lý, vui lòng đợi trong giây lát...", new object[] { listNV, ngayBD_Bef2D, ngayKT_Aft2D });
                //XL.XemCong_v08(listNV, ngayBD_Bef2D, ngayKT_Aft2D);
                Reload4DataGrid(listNV);
            } catch (Exception exception) {
                lg.Error(string.Format("[{0}]_[{1}]\n", this.Name, System.Reflection.MethodBase.GetCurrentMethod().Name), exception);
                MessageBox.Show(Resources.Text_MatKetNoiCSDL, Resources.Caption_Loi);
                GC.Collect();
            }
        }
        private void btnLuu_Click(object sender, EventArgs e)
        {
            if (XL2.KiemtraKetnoiCSDL() == false)
            {
                return;
            }

            string maNV  = tbMaNV.Text;
            string hoten = tbHoTenNV.Text.TrimEnd('?', '.', ',');

            string[] words    = hoten.Split(' ');
            string   ten      = (words.Last(item => item != string.Empty));
            int      gioitinh = (radNam.Checked) ? 0 : 1;
            int      maCC;

            if (int.TryParse(tbMaCC.Text, out maCC) == false)
            {
                ACMessageBox.Show("Mã chấm công phải là số hợp lệ.", Resources.Caption_Loi, 2000);
                return;
            }
            string   tenCC = tbUserEnrollName.Text;
            string   mathetu = tbMaTheTu.Text;
            DateTime ngayvaolam = dtpNgayVaoLam.Value.Date;
            int      idchucvu = (int)cbChucVu.SelectedValue;
            int      idphong = (int)cbPhongBan.SelectedValue;
            string   tenphong = (cbPhongBan.SelectedItem != null) ? cbPhongBan.SelectedItem.ToString() : cbPhongBan.SelectedText;
            int      idlichtrinh = (int)cbLichTrinh.SelectedValue;
            string   tenLichTrinh = (cbLichTrinh.SelectedItem != null) ? cbLichTrinh.SelectedItem.ToString() : cbLichTrinh.SelectedText;
            float    hslcb, hslcv, hsbhxhcongthem;

            if (float.TryParse(tbHSLCB.Text, out hslcb) == false ||
                float.TryParse(tbHSLCV.Text, out hslcv) == false ||
                float.TryParse(tbHSBHXHCongThem.Text, out hsbhxhcongthem) == false)
            {
                ACMessageBox.Show(Resources.Text_HeSoLCB_CV_BHXH_ChuaHopLe, Resources.Caption_Loi, 2000);
                return;
            }
            bool userEnabled = checkUserEnabled.Checked;

            if (mode == 1)
            {
                var tableKiemTraTonTai = SqlDataAccessHelper.ExecuteQueryString(
                    "select * from UserInfo where UserEnrollNumber = @UserEnrollNumber",
                    new string[] { "@UserFullCode", "@UserEnrollNumber" },
                    new object[] { maNV, maCC });
                if (tableKiemTraTonTai.Rows.Count > 0)
                {
                    ACMessageBox.Show("Mã nhân viên hoặc mã chấm công đã tồn tại trong CSDL. Vui lòng chọn mã khác.", Resources.Caption_Loi, 2000);
                    return;
                }
            }
            #region xác nhận trước khi lưu
            if (MessageBox.Show(Resources.Text_XacNhanLuuThongTinNV, Resources.Caption_XacNhan, MessageBoxButtons.OKCancel) == DialogResult.Cancel)
            {
                return;
            }
            #endregion

            #region execute query

            int kq1 = SqlDataAccessHelper.ExecNoneQueryString(
                @" UPDATE UserInfo Set 
								UserFullCode = @UserFullCode, UserFullName = @UserFullName, UserLastName = @UserLastName, UserEnrollName = @UserEnrollName,
								  UserCardNo = @UserCardNo, UserHireDay = @UserHireDay, UserIDTitle = @IDChucVu, UserSex = @UserSex, 
								  UserEnabled = @UserEnabled, UserIDD = @UserIDD, SchID = @SchID, 
								  HeSoLuongCB = @HeSoLuongCB, HeSoLuongSP = @HeSoLuongSP, HSBHCongThem = @HSBHCongThem

								where UserEnrollNumber = @UserEnrollNumber

							if ( @@ROWCOUNT = 0 )  
							INSERT INTO UserInfo (  UserFullCode,  UserFullName,  UserLastName,  UserEnrollNumber,  UserEnrollName,
									UserCardNo,  UserHireDay,  UserIDTitle,  UserSex,  UserPrivilege,  UserEnabled,
									UserIDD,  SchID,  HeSoLuongCB,  HeSoLuongSP,  HSBHCongThem,  
									PushCardID,  UserPW, UserGroup, UserTZ) 
							VALUES (  @UserFullCode,  @UserFullName,  @UserLastName,  @UserEnrollNumber,  @UserEnrollName,
									  @UserCardNo,  @UserHireDay,  @IDChucVu,  @UserSex,  @UserPrivilege,  @UserEnabled,
									  @UserIDD,  @SchID,  @HeSoLuongCB,  @HeSoLuongSP,  @HSBHCongThem,  
									  @PushCardID,  @UserPW, @UserGroup, @UserTZ )"                                    ,
                new string[] {
                "@UserFullCode", "@UserFullName", "@UserLastName", "@UserEnrollNumber", "@UserEnrollName",
                "@UserCardNo", "@UserHireDay", "@IDChucVu", "@UserSex",
                "@UserEnabled", "@UserIDD", "@SchID",
                "@HeSoLuongCB", "@HeSoLuongSP", "@HSBHCongThem",
                "@UserPrivilege", "@PushCardID", "@UserPW", "@UserGroup", "@UserTZ"
            },
                new object[] {
                maNV, hoten, ten, maCC, tenCC,
                mathetu, ngayvaolam, idchucvu, gioitinh,
                userEnabled, idphong, idlichtrinh,
                hslcb, hslcv, hsbhxhcongthem,
                0, "[0000000000]", string.Empty, 1, "0000000000000000",
            });
            string noidung =
                @"Lưu thông tin nhân viên có mã chấm công [{0}], mã nhân viên [{1}], hệ số lương cơ bản [{2}], hệ số lương sản phẩm [{3}], hệ số bảo hiểm cộng thêm cho lãnh đạo [{4}], tình trạng hoạt động [{5}], phòng ban [{6}], lịch trình [{7}]";
            DAO5.GhiNhatKyThaotac("Lưu thông tin nhân viên", string.Format(noidung,
                                                                           maCC, maNV, hslcb.ToString("0.00"), hslcv.ToString("0.00"), hsbhxhcongthem.ToString("0.00"), userEnabled, tenphong, tenLichTrinh), maCC: maCC);

            #endregion
            if (checkLamCongnhat.Enabled && checkLamCongnhat.Checked)
            {
                var ngayBD        = dtpNgayBDCongnhat.Value.Date;
                var ngayKT        = dtpNgayKTCongnhat.Value.Date;
                var laNVChinhthuc = checkNVChinhThuc.Checked;
                if (ngayBD > ngayKT)                 // hoán vị ngày bắt đầu kết thúc nếu bị ngược
                {
                    var temp = ngayBD;
                    ngayKT = ngayBD;
                    ngayBD = temp;
                }
                //thực hiện tách nếu làm công nhật ngày bd và kt là nhiều tháng liên tiếp
                List <DateTime> arrNgayBD, arrNgayKT;
                XL2.TachThang(ngayBD, ngayKT, out arrNgayBD, out arrNgayKT);
                for (int i = 0; i < arrNgayBD.Count; i++)
                {
                    int kq2 = DAO5.UpdIns_ThuChiNVCongNhat(new DateTime(arrNgayBD[i].Year, arrNgayBD[i].Month, 1), maCC, idphong, tenphong, arrNgayBD[i], arrNgayKT[i], 0, 0d, laNVChinhthuc);
                    if (kq2 == 0)
                    {
                        MessageBox.Show(Resources.Text_CoLoi);
                        break;
                    }
                }
            }

            if (kq1 == 0)
            {
                MessageBox.Show(Resources.Text_CoLoi, Resources.Caption_Loi);
            }
            else
            {
                IsReload = true;
                if (mode == 1)
                {
                    ACMessageBox.Show("Thêm nhân viên thành công.", Resources.Caption_ThongBao, 2000);
                    MyUtility.ClearControlText(tbMaNV, tbHoTenNV, tbMaCC, tbUserEnrollName);
                    radNam.Checked            = true;
                    tbMaTheTu.Text            = "0000000000";
                    tbHSLCB.Text              = "000";
                    tbHSLCV.Text              = "000";
                    tbHSBHXHCongThem.Text     = "000";
                    cbChucVu.SelectedIndex    = 0;
                    cbPhongBan.SelectedIndex  = 0;
                    cbLichTrinh.SelectedIndex = 0;
                    checkUserEnabled.Checked  = true;
                }
                else
                {
                    Close();
                }
            }
        }
        private void btnCapNhat_Click(object sender, EventArgs e)
        {
            if (XL2.KiemtraKetnoiCSDL() == false)
            {
                return;
            }

            DateTime ngaydauthang  = dtpThang.Value;
            int      uen           = (int)m_currRowNV["UserEnrollNumber"];
            bool     LaNVChinhThuc = checkNVChinhThuc.Checked;
            DateTime ngayBD        = dtpNgayBDCongnhat.Value;
            DateTime ngayKT        = dtpNgayKTCongnhat.Value;

            if (ngayBD > ngayKT)
            {
                MyUtility.Swap(ref ngayBD, ref ngayKT);
            }
            if (checkLamCongnhat.Checked && checkLamCongnhat.Enabled)
            {
                #region query string

                var query = @"	
		UPDATE	DSNVChiCongNhatThang
		SET		IDPhong = @IDPhong ,TenPhong = @TenPhong
				,NgayBatDau = @NgayBatDau ,NgayKetThuc = @NgayKetThuc ,SoNgayCong = 0
				,NVChinhThuc = @NVChinhThuc
		WHERE	Thang = @Thang and UserEnrollNumber = @UserEnrollNumber
		if @@ROWCOUNT = 0
		INSERT INTO		DSNVChiCongNhatThang
				(Thang ,UserEnrollNumber ,IDPhong ,TenPhong
				,NgayBatDau ,NgayKetThuc ,SoNgayCong
				,DonGiaLuong ,TamUng ,NVChinhThuc)
		VALUES
				(@Thang ,@UserEnrollNumber ,@IDPhong ,@TenPhong
				,@NgayBatDau ,@NgayKetThuc ,0 
				,0 ,0 ,@NVChinhThuc) "                ;

                #endregion

                int idPhong  = (int)m_currRowNV["MaPhong"];
                var tenPhong = m_currRowNV["TenPhong"].ToString();
                #region update or insert xuống csdl

                int kq = SqlDataAccessHelper.ExecNoneQueryString(
                    query,
                    new string[] { "@Thang", "@UserEnrollNumber", "@IDPhong", "@TenPhong", "@NgayBatDau", "@NgayKetThuc", "@NVChinhThuc" },
                    new object[] { ngaydauthang, uen, idPhong, tenPhong, ngayBD, ngayKT, LaNVChinhThuc });
                DAO5.GhiNhatKyThaotac("Lưu ngày làm việc công nhật",
                                      string.Format("Lưu thời gian làm việc công nhật bắt đầu từ ngày [{1}] đến hết ngày [{2}], [{3}] cho NV có mã chấm công [{0}]",
                                                    uen, ngayBD.ToString("dd/MM/yyyy"), ngayKT.ToString("dd/MM/yyyy"), LaNVChinhThuc ? "tính lương các ngày còn lại như NV chính thức" : ""), maCC: uen);
                if (kq == 0)                // báo lỗi
                {
                    MessageBox.Show(Resources.Text_CoLoi);
                    return;
                }
                #endregion

                // sau khi update thì đóng form và reload
                IsReload = true;
                Close();
            }
        }
        private void btnThem_Click(object sender, EventArgs e)
        {
            if (XL2.KiemtraKetnoiCSDL() == false)
            {
                return;
            }

            // lấy ngày check
            List <DateTime> DSNgayCheck = (from object item in checklistNgay.CheckedItems select(DateTime) item).ToList();

            if (DSNgayCheck.Count == 0)
            {
                ACMessageBox.Show("Bạn chưa chọn ngày vắng", "Thông báo", 2000);
                return;
            }

            #region ko cho chỉnh sửa giờ nếu khoảng thời gian xem công tồn tại các ngày đã kết lương

            if (XL.Kiemtra(DSNgayCheck[0], DSNgayCheck[DSNgayCheck.Count - 1]))
            {
                MessageBox.Show(String.Format(Resources.Text_KhoangTGDaKetCong_KoChinhSuaGioCC, "khai báo vắng", "khai báo vắng", "khai báo vắng"),
                                Resources.Caption_ThongBao, MessageBoxButtons.OK);
                return;
            }

            #endregion


            #region hỏi lại trước khi thực hiện
            if (MessageBox.Show(Resources.Text_XacNhanThemKhaiVang, Resources.Caption_XacNhan, MessageBoxButtons.YesNo) == DialogResult.No)
            {
                return;
            }
            #endregion
            //1. lấy dữ liệu từ form
            dtpThang.Update();
            currMonth = dtpThang.Value;

            dgrdDSNVTrgPhg.EndEdit();
            dgrdDSNVTrgPhg.Update();

            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
            var listMaCC_NV = (from DataGridViewRow dataGridViewRow  in dgrdDSNVTrgPhg.Rows
                               let row = (DataRowView)dataGridViewRow.DataBoundItem
                                         where (row["check"] != DBNull.Value && (bool)row["check"])
                                         select((cUserInfo)row["cUserInfo"]).MaCC)
                              .ToList();

            if (listMaCC_NV.Count == 0)
            {
                ACMessageBox.Show(Resources.Text_ChuaChonNV, Resources.Caption_ThongBao, 2000);
                return;
            }

            // lấy loại vắng
            if (cbLoaiVang.SelectedItem == null)
            {
                ACMessageBox.Show("Bạn chưa chọn loại vắng", "Thông báo", 2000);
                return;
            }
            var rowLV = cbLoaiVang.SelectedItem as DataRowView;

            var   absentCode = rowLV["AbsentCode"].ToString();
            float workingDay = 0f;
            if (rad2Gio.Checked)
            {
                workingDay = 0.25f;
            }
            else if (radNuaNgay.Checked)
            {
                workingDay = 0.5f;
            }
            else if (rad1ngay.Checked)
            {
                workingDay = 1f;
            }
            else
            {
                workingDay = 0f;
            }
            var workingTime  = 0f;
            var phuCapString = maskedTextBox1.Text;
            var phuCapInt    = 0;
            var phuCapFloat  = 0f;
            if (int.TryParse(phuCapString, out phuCapInt) == false || phuCapString.Length < 3)
            {
                ACMessageBox.Show("Nhập phụ cấp chưa đúng định dạng.", Resources.Caption_Loi, 2000); return;
            }
            phuCapFloat = Convert.ToSingle(phuCapInt) / 100f;

            #region set working time tùy theo workingDay

            if (Math.Abs(workingDay - 0f) < 0.01f)
            {
                workingTime = 0f;
            }
            else if (Math.Abs(workingDay - 0.25f) < 0.01f)
            {
                workingTime = 2f;
            }
            else if (Math.Abs(workingDay - 0.5f) < 0.01f)
            {
                workingTime = 4f;
            }
            else if (Math.Abs(workingDay - 1f) < 0.01f)
            {
                workingTime = 8f;
            }

            #endregion

            if (Math.Abs(workingDay - 0.25f) < 0.01f)
            {
                if (!(absentCode.ToLower() == "p" || absentCode.ToLower() == "ro"))
                {
                    ACMessageBox.Show("Chưa hỗ trợ vắng 2 tiếng ngoài phép và việc riêng.", "Chức năng chưa được hỗ trợ", 3000);
                    return;
                }
            }

            var formatString = "[{0}] đã xin phép vắng [{1}] [{2}] ngày ngày [{3}]";
            var tableVang    = DAO.LietKeNgayVangChoNV(listMaCC_NV, DSNgayCheck.Min(), DSNgayCheck.Max());
            if (tableVang.Rows.Count > 0)
            {
                List <Warning> listWarning = new List <Warning>();
                foreach (var nv in listMaCC_NV)                  //duyệt từng nhân viên
                {
                    foreach (var ngay in DSNgayCheck)            // duyệt từng ngày check vắng của nhân viên
                    {
                        DateTime ngay1  = ngay;
                        int      nv1    = nv;
                        var      result = (from DataRow item in tableVang.Rows
                                           where (int)item["UserEnrollNumber"] == nv1 && (DateTime)item["TimeDate"] == ngay1
                                           select item).ToList();                                // lấy danh sách các xin phép vắng trong ngày xác định
                        if (result.Any())
                        {
                            // nếu có xin phép vắng thì ghi lại chuỗi các xin phép vắng đó
                            var userfullname = result[0]["UserFullName"].ToString();
                            listWarning.AddRange(result.Select(row123 => new Warning()
                            {
                                CB = "Đã có xin phép vắng",
                                ND = string.Format(formatString, userfullname, row123["AbsentCode"],
                                                   ((float)row123["Workingday"]).ToString("0.0#"),
                                                   ((DateTime)row123["TimeDate"]).ToString("dd/MM/yyyy"))
                            }));
                        }
                    }
                }

                // hiện form cảnh báo, nếu xác nhận tiếp tục thì thực hiện , ko thì dừng
                frmWarning frm = new frmWarning {
                    StartPosition = FormStartPosition.CenterParent
                };
                frm.listWarning = listWarning;
                frm.ShowDialog();
                if (frm.TiepTuc == false)
                {
                    return;
                }
            }

            IEnumerable <dynamic> tempList = (from macc in listMaCC_NV
                                              from ngay in DSNgayCheck
                                              select new { MaCC = macc, NgayVang = ngay });
            DAO.ThemNgayVang(tempList, workingDay, workingTime, phuCapFloat, absentCode);


            // sau khi thao tác xong thì clear check các ngày liệt kê lại
            chk2ExceptSat.Checked = false;
            chk2ExceptSun.Checked = false;
            for (int i = 0; i < checklistNgay.Items.Count; i++)
            {
                checklistNgay.SetItemChecked(i, false);
            }

            Thread.Sleep(20);
            btnLietKe.PerformClick();
        }
        private void btnCapNhatVaoCSDL_Click(object sender, EventArgs e)
        {
            IsReload = true;
            if (XL2.KiemtraKetnoiCSDL() == false)
            {
                return;
            }

            #region ko cho chỉnh sửa giờ nếu khoảng thời gian xem công tồn tại các ngày đã kết lương

            if (XL.Kiemtra(m_Thang.Date, MyUtility.LastDayOfMonth(m_Thang)))
            {
                MessageBox.Show(string.Format(Resources.Text_KhoangTGDaKetCong_KoChinhSuaGioCC, "chỉnh sửa thu chi tháng", "thực hiện thao tác", ""),
                                Resources.Caption_ThongBao, MessageBoxButtons.OK);
                return;
            }

            #endregion


            var      table     = dgrdDThuchiExcel.DataSource as DataTable;
            DateTime thang     = m_Thang;
            var      flagError = false;

            #region xác nhận trước khi thực hiện

            if (
                MessageBox.Show(string.Format("Bạn muốn cập nhật cho tháng {0}?", thang.ToString("M/yyyy")), Resources.Caption_XacNhan,
                                MessageBoxButtons.YesNo) == DialogResult.No)
            {
                return;
            }

            #endregion

            if (table != null)
            {
                var tableTatCaNV = XL.LayDSNV(true);                //tbd
                foreach (DataRow row in table.Rows)
                {
                    #region lấy thông tin

                    var userFullcode = row["UserFullCode"].ToString().TrimStart().TrimEnd().ToLower();
                    //var arrRows = tableTatCaNV.Select("UserFullCode = '" +userFullcode + "'","", DataViewRowState.CurrentRows);
                    var resultRow = (tableTatCaNV.Rows.Cast <DataRow>().Where(
                                         dataRow => dataRow["UserFullCode"].ToString().TrimStart().TrimEnd().ToLower() == userFullcode)).SingleOrDefault();
                    if (resultRow == null)
                    {
                        continue;
                    }
                    var tenNV             = resultRow["UserFullName"].ToString();
                    var UserEnrollNumber  = (int)resultRow["UserEnrollNumber"];
                    var luongdieuchinh    = (double)row["LuongDieuChinh"];
                    var tamung            = (double)row["TamUng"];
                    var thuchikhac        = (double)row["ThuChiKhac"];
                    var mucdongbhxhDouble = (double)row["MucDongBHXH"];
                    var mucdongbhxhFloat  = Convert.ToSingle(mucdongbhxhDouble);

                    #endregion

                    var kq = DAO.CapnhatThuchiThang(UserEnrollNumber, thang, luongdieuchinh, tamung, thuchikhac, mucdongbhxhFloat);

                    #region báo lỗi nếu ko cập nhật được

                    if (kq == 0)
                    {
                        flagError = true;
                        ACMessageBox.Show(string.Format("Xảy ra lỗi trong quá trình cập nhật tại vị trí nhân viên {0}, mã {1}.\nVui lòng thử lại.", tenNV,
                                                        userFullcode), "Lỗi", 3000);
                        break;
                    }

                    #endregion
                }
                if (flagError == false)
                {
                    ACMessageBox.Show("Thực hiện thành công.", "Thông báo", 2000);
                }
            }
        }
        private void btnXem_Click(object sender, EventArgs e)
        {
            if (XL2.KiemtraKetnoiCSDL() == false)
            {
                return;
            }

            //0. xoa dữ liệu cũ
            //1. lấy dữ liệu từ form
            dtpBD.Update(); dtpKT.Update();
            DateTime startTime = dtpBD.Value;
            DateTime endTime   = dtpKT.Value;

            dgrdDSNVTrgPhg.EndEdit();
            BindingContext[dgrdDSNVTrgPhg.DataSource].EndCurrentEdit();

            try             //general try catch
            {
                #region     //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

                var listNV = (from DataGridViewRow dataGridViewRow in dgrdDSNVTrgPhg.Rows
                              let rowView = dataGridViewRow.DataBoundItem as DataRowView
                                            where (rowView["check"] != DBNull.Value && (bool)rowView["check"])
                                            select(cUserInfo) rowView["cUserInfo"])
                             .ToList();

                if (listNV.Count == 0)
                {
                    ACMessageBox.Show(Resources.Text_ChuaChonNV, Resources.Caption_ThongBao, 2000);                     //
                    GC.Collect();
                    return;
                }

                #endregion
                //2. lấy dữ liệu chấm công của các nhân viên
                if (XL.KiemtraDulieuCapnhatTuServer(DateTime.Now) == false)
                {
                    ACMessageBox.Show(Resources.Text_DuLieuChamCongChuaUpdate, Resources.Caption_ThongBao, 4000);
                }

                DataTable fDataTableChkInOut = new DataTable();
                try {
                    var Arr_MaCC = (from nv in listNV select nv.MaCC).ToArray();
                    fDataTableChkInOut = DAO5.LayTableCIO_A(Arr_MaCC, startTime, endTime);
                    fDataTableChkInOut.Columns.Add("check", typeof(bool));
                } catch (Exception exception) {
                    lg.Error(string.Format("[{0}]_[{1}]\n", this.Name, System.Reflection.MethodBase.GetCurrentMethod().Name), exception);

                    MessageBox.Show(Resources.Text_MatKetNoiCSDL, Resources.Caption_Loi);
                    GC.Collect();
                }

                DataTable dataTableChiTietVao = dgrdCTGioVao.DataSource as DataTable;
                DataTable dataTableChiTietRa  = dgrdCTGioRa.DataSource as DataTable;
                if (dataTableChiTietVao == null)
                {
                    dataTableChiTietVao = fDataTableChkInOut.Clone();
                }
                else
                {
                    dataTableChiTietVao.Rows.Clear();
                }

                if (dataTableChiTietRa == null)
                {
                    dataTableChiTietRa = fDataTableChkInOut.Clone();
                }
                else
                {
                    dataTableChiTietRa.Rows.Clear();
                }


                //4. xử lý dữ liệu để đưa lên lưới tổng hợp
                foreach (DataRow row in fDataTableChkInOut.Rows)
                {
                    if ((int)row["MachineNo"] % 2 == 1)
                    {
                        dataTableChiTietVao.ImportRow(row);
                    }
                    else
                    {
                        dataTableChiTietRa.ImportRow(row);
                    }
                }
                dgrdCTGioVao.DataSource              = dataTableChiTietVao;
                dgrdCTGioRa.DataSource               = dataTableChiTietRa;
                checkAllGridCheckIn.CheckedChanged  -= checkAll_CheckedChanged;
                checkAllGridCheckOut.CheckedChanged -= checkAll_CheckedChanged;
                checkAllGridCheckIn.Checked          = false;
                checkAllGridCheckOut.Checked         = false;
                checkAllGridCheckIn.CheckedChanged  += checkAll_CheckedChanged;
                checkAllGridCheckOut.CheckedChanged += checkAll_CheckedChanged;
            } catch (Exception ex)             //general try catch
            {
                lg.Error(string.Format("[{0}]_[{1}]\n", this.Name, System.Reflection.MethodBase.GetCurrentMethod().Name), ex);
                MessageBox.Show(Resources.Text_CoLoi, Resources.Caption_Loi);
            }
        }
Esempio n. 29
0
        private void btnXoa_Click(object sender, EventArgs e)
        {
            if (XL2.KiemtraKetnoiCSDL() == false)
            {
                return;
            }

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

            BindingContext[dgrdDSNVTrgPhg.DataSource].EndCurrentEdit();

            var checkRows = (from DataGridViewRow dataGridViewRow in dgrdDSNVTrgPhg.Rows
                             let row = (DataRowView)dataGridViewRow.DataBoundItem
                                       where dataGridViewRow.Cells["check"].FormattedValue != null && (bool)dataGridViewRow.Cells["check"].FormattedValue
                                       select(int) row["UserEnrollNumber"]).ToList();

            #endregion

            #region chưa chọn NV thì báo và thoát

            if (checkRows.Count == 0)
            {
                ACMessageBox.Show(Resources.Text_ChuaChonNV, Resources.Caption_ThongBao, 2000);
                return;
            }

            #endregion

            #region xác nhận trước khi xoá
            if (MessageBox.Show("Bạn muốn xoá Nhân viên này khỏi CSDL? \nKhi xoá Nhân viên sẽ không thể phục hồi lại nhân viên này.\nCân nhắc sử dụng chức năng vô hiệu hoá trạng thái hoạt động (UserEnabled).\nBấm yes để xoá Nhân viên. Bấm No để quay trở lại.", Resources.Caption_XacNhan, MessageBoxButtons.YesNo) == DialogResult.No)
            {
                return;
            }
            #endregion
            TreeNode node = treePhongBan.SelectedNode;            // sử dụng để reload dgrid

            var    query = "	delete from UserInfo where ( UserEnrollNumber = {0} ) ";
            string temp  = string.Join(" or UserEnrollNumber = ", checkRows.ToArray());
            query = string.Format(query, temp);
            int kq = SqlDataAccessHelper.ExecNoneQueryString(query, null, null);
            foreach (int checkedUEN in checkRows)
            {
                DAO.GhiNhatKyThaotac("Xoá NV khỏi CSDL", string.Format("Xoá NV có mã chấm công [{0}] khỏi CSDL", checkedUEN), maCC: checkedUEN);
            }
            if (kq != 0)
            {
                ACMessageBox.Show("Xoá Nhân viên thành công.", Resources.Caption_ThongBao, 2000);
            }
            else
            {
                ACMessageBox.Show(Resources.Text_CoLoi, Resources.Caption_Loi, 2000);
            }

            #region reload grid

            string oldFilter = string.Empty;
            var    dataView  = dgrdDSNVTrgPhg.DataSource as DataView;
            if (dataView != null)
            {
                oldFilter = dataView.RowFilter;
            }
            treePhongBan_AfterSelect(treePhongBan, new TreeViewEventArgs(node));
            dataView = dgrdDSNVTrgPhg.DataSource as DataView;
            if (dataView != null)
            {
                dataView.RowFilter = oldFilter;
            }

            #endregion
        }
Esempio n. 30
0
        private void btnThem_Click(object sender, EventArgs e)
        {
            if (XL2.KiemtraKetnoiCSDL() == false)
            {
                return;
            }

            // lấy ngày check
            var ngayBD = dtpNgayBD.Value.Date;
            var ngayKT = dtpNgayKT.Value.Date;

            if (ngayBD > ngayKT)
            {
                MyUtility.Swap(ref ngayBD, ref ngayKT);
            }
            List <DateTime> DSNgayCheck = new List <DateTime>();

            for (DateTime indexNgay = ngayBD; indexNgay <= ngayKT; indexNgay = indexNgay.AddDays(1d))
            {
                DSNgayCheck.Add(indexNgay);
            }


            #region ko cho chỉnh sửa giờ nếu khoảng thời gian xem công tồn tại các ngày đã kết lương

            if (XL.Kiemtra(DSNgayCheck[0], DSNgayCheck[DSNgayCheck.Count - 1]))
            {
                MessageBox.Show(String.Format(Resources.Text_KhoangTGDaKetCong_KoChinhSuaGioCC, "khai báo vắng", "khai báo vắng", "khai báo vắng"),
                                Resources.Caption_ThongBao, MessageBoxButtons.OK);
                return;
            }

            #endregion

            #region hỏi lại trước khi thực hiện
            if (MessageBox.Show(Resources.Text_XacNhanThemKhaiVang, Resources.Caption_XacNhan, MessageBoxButtons.YesNo) == DialogResult.No)
            {
                return;
            }
            #endregion

            // lấy loại vắng
            if (cbLoaiVang.SelectedItem == null)
            {
                ACMessageBox.Show("Bạn chưa chọn loại vắng", "Thông báo", 2000);
                return;
            }
            var rowLV = cbLoaiVang.SelectedItem as DataRowView;

            var absentCode  = rowLV["AbsentCode"].ToString();
            var workingDay  = 1f;
            var workingTime = 8f;

            var formatString = "[{0}] đã xin phép vắng [{1}] [{2}] ngày ngày [{3}]";
            var tableVang    = DAO.LietKeNgayVangChoNV(listMaCC_NV, DSNgayCheck.Min(), DSNgayCheck.Max());

            if (tableVang.Rows.Count > 0)
            {
                List <Warning> listWarning = new List <Warning>();
                foreach (var nv in listMaCC_NV)                  //duyệt từng nhân viên
                {
                    foreach (var ngay in DSNgayCheck)            // duyệt từng ngày check vắng của nhân viên
                    {
                        DateTime ngay1  = ngay;
                        int      nv1    = nv;
                        var      result = (from DataRow item in tableVang.Rows
                                           where (int)item["UserEnrollNumber"] == nv1 && (DateTime)item["TimeDate"] == ngay1
                                           select item).ToList();                                // lấy danh sách các xin phép vắng trong ngày xác định
                        if (result.Any())
                        {
                            // nếu có xin phép vắng thì ghi lại chuỗi các xin phép vắng đó
                            var userfullname = result[0]["UserFullName"].ToString();
                            listWarning.AddRange(result.Select(row123 => new Warning()
                            {
                                CB = "Đã có xin phép vắng",
                                ND = string.Format(formatString, userfullname, row123["AbsentCode"],
                                                   ((float)row123["Workingday"]).ToString("0.0#"),
                                                   ((DateTime)row123["TimeDate"]).ToString("dd/MM/yyyy"))
                            }));
                        }
                    }
                }

                // hiện form cảnh báo, nếu xác nhận tiếp tục thì thực hiện , ko thì dừng
                frmWarning frm = new frmWarning {
                    listWarning = listWarning, WindowState = FormWindowState.Normal, StartPosition = FormStartPosition.CenterParent
                };
                //Point temp = XL2.GetCenterLocation(this.MdiParent.Size.Width, this.MdiParent.Size.Height, frm.Size.Width, frm.Size.Height);
                //frm.Location = new Point(this.MdiParent.Location.X + temp.X, this.MdiParent.Location.Y + temp.Y);
                frm.ShowDialog();
                if (frm.TiepTuc == false)
                {
                    return;
                }
            }

            IsReload = true;
            IEnumerable <dynamic> listMaCC_NgayVang = (from macc in listMaCC_NV
                                                       from ngay in DSNgayCheck
                                                       select new { MaCC = macc, NgayVang = ngay });

            List <Error> listError = new List <Error>();
            XL.ThemNgayVang(listMaCC_NgayVang, workingDay, workingTime, 0f, absentCode, listError);
            if (listError.Count > 0)
            {
                frmError frm = new frmError {
                    StartPosition = FormStartPosition.CenterParent, listError = listError
                };
                frm.ShowDialog();
            }

            Close();
        }