Esempio n. 1
0
        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())
                {
                    GiaTriTienLuongTheoChucVu br = uow.FindObject <GiaTriTienLuongTheoChucVu>(CriteriaOperator.Parse("Oid = ?", _id));
                    if (br != null)
                    {
                        br.Delete();
                        uow.CommitChanges();
                        uow.PurgeDeletedObjects();
                        RefreshData();
                    }
                }
            }
        }
Esempio n. 2
0
        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();
        }
Esempio n. 3
0
        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();
        }