protected override void OnDelete() { if (XtraMessageBox.Show("Bạn có muốn xóa không?", "Cảnh Báo!", MessageBoxButtons.OKCancel) == DialogResult.Cancel) { return; } for (int i = 0; i < grvUCList.SelectedRowsCount; i++) { _id = grvUCList.GetRowCellValue(grvUCList.GetSelectedRows()[i], colOid).ToString(); using (var uow = new UnitOfWork()) { LoaiDuLieuTinhLuong br = uow.FindObject <LoaiDuLieuTinhLuong>(CriteriaOperator.Parse("Oid = ?", _id)); if (br != null) { br.Delete(); uow.CommitChanges(); uow.PurgeDeletedObjects(); } } } UOW.ReloadChangedObjects(); xpcLoaiDuLieuTinhLuong.Reload(); gridUCList.DataSource = xpcLoaiDuLieuTinhLuong; }
private void TaoDuLieuTinhLuongThang() { XPCollection xpcLuongChucVu = new XPCollection(typeof(GiaTriTienLuongTheoChucVu)); if (xpcLuongChucVu.Count == 0) { XtraMessageBox.Show("Chưa có dữ liệu lương chức vụ. Vui lòng khởi tạo dữ liệu lương chức vụ."); return; } xpcChamCong.Reload(); DateTime thang = DateTime.Parse(dtThang.EditValue.ToString()); string str = thang.Month.ToString() + "-" + thang.Year.ToString();// Phân biệt bảng xếp ca các tháng XPCollection xpcChamCongTheoThang = new XPCollection(xpcChamCong, new BinaryOperator("TenBangChamCong", str, BinaryOperatorType.Equal)); if (xpcChamCongTheoThang.Count > 0) { xpcMucTienLuong.Sorting = new SortingCollection(new SortProperty[] { new SortProperty("UuTien", DevExpress.Xpo.DB.SortingDirection.Ascending) }); foreach (Employee item in xpcNhanVien) { foreach (LoaiDuLieuTinhLuong loaiDL in xpcMucTienLuong) { /*ChiTietTienLuong ctLuong = new ChiTietTienLuong() * { * NhanVien = item, * Thang = DateTime.Parse(dtThang.EditValue.ToString()), * LoaiDLTinhLuong = loaiDL, * GiaTri = 0 * }; * if(!String.IsNullOrEmpty(loaiDL.GiaTriMacDinh)) * { * ctLuong.GiaTri = decimal.Parse(loaiDL.GiaTriMacDinh); * } * //Kiểm tra chi tiết lương đã có chưa * XPCollection xpc = new XPCollection(xpcChiTietLuong, CriteriaOperator.And( * new BinaryOperator("Thang", ctLuong.Thang), new BinaryOperator("NhanVien", ctLuong.NhanVien) * , new BinaryOperator("LoaiDLTinhLuong", ctLuong.LoaiDLTinhLuong))); * if (xpc.Count == 0) * { * xpcChiTietLuong.Add(ctLuong); * } * else * { * ChiTietTienLuong ctTemp = xpc[0] as ChiTietTienLuong; * ctTemp.GiaTri = ctLuong.GiaTri;//? * }*/ ChiTietTienLuong ctLuong = new ChiTietTienLuong() { NhanVien = item, Thang = DateTime.Parse(dtThang.EditValue.ToString()), LoaiDLTinhLuong = loaiDL, GiaTri = 0 }; //Tinh Theo Gia Tri Mac Dinh if (!String.IsNullOrEmpty(loaiDL.GiaTriMacDinh)) { ctLuong.GiaTri = decimal.Parse(loaiDL.GiaTriMacDinh); } //Tinh Theo Chuc Vu #region TÍNH LƯƠNG THEO CHỨC VỤ if (ctLuong.LoaiDLTinhLuong.NhomChucVu) { XPCollection xpcGiaTriTheoChucVu = new XPCollection(xpcGiaTriTienLuongTheoChucVu, CriteriaOperator.And(new BinaryOperator("ChucVu", ctLuong.NhanVien.ChucVu), new BinaryOperator("MucTienLuong", ctLuong.LoaiDLTinhLuong))); if (xpcGiaTriTheoChucVu.Count > 0) { GiaTriTienLuongTheoChucVu gtLuongTheoChucVu = xpcGiaTriTheoChucVu[0] as GiaTriTienLuongTheoChucVu; ctLuong.GiaTri = gtLuongTheoChucVu.GiaTri == null ? 0 : gtLuongTheoChucVu.GiaTri; } } #endregion //Tinh luong theo cong thuc #region TÍNH LƯƠNG THEO CÔNG THỨC using (var uow = new UnitOfWork()) { LoaiDuLieuTinhLuong temp = uow.FindObject <LoaiDuLieuTinhLuong>(CriteriaOperator.Parse("Oid = ?", ctLuong.LoaiDLTinhLuong.Oid)); //Kiểm tra xem loại dữ liệu tính lương này có sử dụng công thức không if (!String.IsNullOrEmpty(temp.CongThuc)) { //Công thức được định dạng chuẩn: /* Cột lưu [C+số thứ tự] : C tiền tớ bắt buộc * Giá trị [Giá Trị] * VD: [C3] + [C5] * [100]*/ string[] congThuc = temp.CongThuc.Split('[', ']'); // "", C3, +, C10, *, 100, "" 8+10*100 string bieuthuc = string.Empty; for (int j = 1; j < congThuc.Length; j++) { if (congThuc[j].Contains('C')) { XPCollection xpcGiatri = new XPCollection(xpcChiTietLuong, CriteriaOperator.And( new BinaryOperator("Thang", ctLuong.Thang), new BinaryOperator("NhanVien", ctLuong.NhanVien) , new BinaryOperator("LoaiDLTinhLuong.STT", congThuc[j].Substring(1)))); if (xpcGiatri.Count > 0) { decimal temp1 = (xpcGiatri[0] as ChiTietTienLuong).GiaTri; bieuthuc += temp1; } } else { if (congThuc[j] != "") { bieuthuc += congThuc[j]; } } } ctLuong.GiaTri = TinhBieuThucDonGian(bieuthuc); } } #endregion //Kiểm tra chi tiết lương đã có chưa XPCollection xpc = new XPCollection(xpcChiTietLuong, CriteriaOperator.And( new BinaryOperator("Thang", ctLuong.Thang), new BinaryOperator("NhanVien", ctLuong.NhanVien) , new BinaryOperator("LoaiDLTinhLuong", ctLuong.LoaiDLTinhLuong))); if (xpc.Count == 0) { xpcChiTietLuong.Add(ctLuong); } else { ChiTietTienLuong ctTemp = xpc[0] as ChiTietTienLuong; ctTemp.GiaTri = ctLuong.GiaTri;//? } } } } XpoDefault.Session.Save(xpcChiTietLuong); pivotGridControl1.RefreshData(); }
private void TinhLuongTheoCongThuc() { for (int i = 0; i < xpcChiTietLuong.Count; i++) { ChiTietTienLuong ctLuong = xpcChiTietLuong[i] as ChiTietTienLuong; #region TÍNH LƯƠNG THEO CÔNG THỨC using (var uow = new UnitOfWork()) { LoaiDuLieuTinhLuong temp = uow.FindObject <LoaiDuLieuTinhLuong>(CriteriaOperator.Parse("Oid = ?", ctLuong.LoaiDLTinhLuong.Oid)); //Kiểm tra xem loại dữ liệu tính lương này có sử dụng công thức không if (!String.IsNullOrEmpty(temp.CongThuc)) { //Công thức được định dạng chuẩn: /* Cột lưu [C+số thứ tự] : C tiền tớ bắt buộc * Giá trị [Giá Trị] * VD: [C3] + [C5] * [100]*/ string[] congThuc = temp.CongThuc.Split('[', ']'); // "", C3, +, C10, *, 100, "" 8+10*100 string bieuthuc = string.Empty; for (int j = 1; j < congThuc.Length; j++) { if (congThuc[j].Contains('C')) { XPCollection xpcGiatri = new XPCollection(xpcChiTietLuong, CriteriaOperator.And( new BinaryOperator("Thang", ctLuong.Thang), new BinaryOperator("NhanVien", ctLuong.NhanVien) , new BinaryOperator("LoaiDLTinhLuong.STT", congThuc[j].Substring(1)))); if (xpcGiatri.Count > 0) { ChiTietTienLuong cttl = xpcGiatri[0] as ChiTietTienLuong; if (cttl.LoaiDLTinhLuong.CongThuc.Contains('[')) { } decimal temp1 = (xpcGiatri[0] as ChiTietTienLuong).GiaTri; bieuthuc += temp1; } } else { if (congThuc[j] != "") { bieuthuc += congThuc[j]; } } } ctLuong.GiaTri = TinhBieuThucDonGian(bieuthuc); } } #endregion #region TÍNH LƯƠNG THEO CHỨC VỤ if (ctLuong.LoaiDLTinhLuong.NhomChucVu) { XPCollection xpcGiaTriTheoChucVu = new XPCollection(xpcGiaTriTienLuongTheoChucVu, CriteriaOperator.And(new BinaryOperator("ChucVu", ctLuong.NhanVien.ChucVu), new BinaryOperator("MucTienLuong", ctLuong.LoaiDLTinhLuong))); if (xpcGiaTriTheoChucVu.Count > 0) { GiaTriTienLuongTheoChucVu gtLuongTheoChucVu = xpcGiaTriTheoChucVu[0] as GiaTriTienLuongTheoChucVu; ctLuong.GiaTri = gtLuongTheoChucVu.GiaTri == null ? 0 : gtLuongTheoChucVu.GiaTri; } } #endregion } XpoDefault.Session.Save(xpcChiTietLuong); pivotGridControl1.RefreshData(); }