Exemplo n.º 1
0
        public Payroll(int IDNhanVien, DateTime ThangNam)
        {
            this.data        = new TinhTienLuongEntities();
            this.ID_NhanVien = IDNhanVien;
            this.ThangNam    = ThangNam;
            NHANSU staff = data.NHANSUs.Find(this.ID_NhanVien);

            if (staff != null && staff.ID <= 10)
            {
                Calculate val = new Calculate();

                this.Wfh                  = val.CALCULATE(("OTH_33").Split(' '), ID_NhanVien, ThangNam);
                this.AtWork               = val.CALCULATE(("OTH_32").Split(' '), ID_NhanVien, ThangNam);
                this.LeaveHours           = val.CALCULATE(("OTH_32").Split(' '), ID_NhanVien, ThangNam);
                this.Km                   = val.CALCULATE(("OTH_37").Split(' '), ID_NhanVien, ThangNam);
                this.SalaryBasic          = val.CALCULATE(("OTH_34").Split(' '), ID_NhanVien, ThangNam);
                this.OTSalary             = val.CALCULATE(("OTH_13").Split(' '), ID_NhanVien, ThangNam);
                this.Responsi_Japanese    = val.CALCULATE(("OTH_3").Split(' '), ID_NhanVien, ThangNam);
                this.Parking_Gasoline     = val.CALCULATE(("OTH_2").Split(' '), ID_NhanVien, ThangNam);
                this.BenefitWFH           = val.CALCULATE(("OTH_1").Split(' '), ID_NhanVien, ThangNam);
                this.SalaryDeduction      = val.CALCULATE(("OTH_5").Split(' '), ID_NhanVien, ThangNam);
                this.TotalAmount          = val.CALCULATE(("OTH_6").Split(' '), ID_NhanVien, ThangNam);
                this.TotalAmountInVND     = val.CALCULATE(("OTH_7").Split(' '), ID_NhanVien, ThangNam);
                this.SalaryForInsurance   = val.CALCULATE(("OTH_17").Split(' '), ID_NhanVien, ThangNam);
                this.SalaryForUnemployted = val.CALCULATE(("OTH_18").Split(' '), ID_NhanVien, ThangNam);

                this.HealthyInsuranceStaff          = val.CALCULATE(("OTH_19").Split(' '), ID_NhanVien, ThangNam);
                this.SocialInsuranceStaff           = val.CALCULATE(("OTH_20").Split(' '), ID_NhanVien, ThangNam);
                this.UnemploytedInsuranceStaff      = val.CALCULATE(("OTH_21").Split(' '), ID_NhanVien, ThangNam);
                this.UnemploytedInsuranceEnterprise = val.CALCULATE(("OTH_22").Split(' '), ID_NhanVien, ThangNam);
                this.HealthyInsuranceEnterprise     = val.CALCULATE(("OTH_23").Split(' '), ID_NhanVien, ThangNam);
                this.SocialInsuranceEnterprise      = val.CALCULATE(("OTH_24").Split(' '), ID_NhanVien, ThangNam);
                this.OTDeduction       = val.CALCULATE(("OTH_16").Split(' '), ID_NhanVien, ThangNam);
                this.PersonalDeduction = val.CALCULATE(("OTH_27").Split(' '), ID_NhanVien, ThangNam);
                this.AmountDependentPersonalDeduction = val.CALCULATE(("OTH_28").Split(' '), ID_NhanVien, ThangNam);
                this.TaxableIncome = val.CALCULATE(("OTH_29").Split(' '), ID_NhanVien, ThangNam);
                this.PITPayment    = val.CALCULATE(("OTH_30").Split(' '), ID_NhanVien, ThangNam);
            }
        }
Exemplo n.º 2
0
            public string convertStringFormula(string[] lstStringFormula)
            {
                string result = "";

                for (int i = 0; i < lstStringFormula.Length; i++)
                {
                    string str = lstStringFormula[i];
                    if (lstStringFormula[i].Contains("PC_"))
                    {
                        string[] parseElement = lstStringFormula[i].Split('_');
                        lstStringFormula[i] = ReplaceValue(lstStringFormula[i],
                                                           "PC_" + "\\d+",
                                                           data.spGetBenefit(ID_NhanVien, Int32.Parse(parseElement[1])).FirstOrDefault().Value.ToString("0.000"));
                    }
                    else if (lstStringFormula[i].Contains("BH_TH_"))
                    {
                        string[] parseElement = lstStringFormula[i].Split('_');
                        lstStringFormula[i] = ReplaceValue(lstStringFormula[i],
                                                           "BH_TH_" + "\\d+",
                                                           data.BAOHIEM_THUE.Find(Int32.Parse(parseElement[2].
                                                                                              Replace(")", "").
                                                                                              Replace("(", "").
                                                                                              Replace(",", ""))).PhanTramBaoHiem.ToString());
                    }
                    else if (lstStringFormula[i].Contains("NV_"))
                    {
                        string[] parseElement = lstStringFormula[i].Split('_');
                        switch (parseElement[1])
                        {
                        case "Km":
                        {
                            lstStringFormula[i] = lstStringFormula[i].Replace("NV_Km", data.NHANSUs.Find(this.ID_NhanVien).Km.HasValue ? data.NHANSUs.Find(this.ID_NhanVien).Km.Value.ToString() : "0");
                            break;
                        }

                        case "LuongCB":
                        {
                            lstStringFormula[i] = lstStringFormula[i].Replace("NV_LuongCB", data.NHANSUs.Find(this.ID_NhanVien).LuongCB.HasValue ? data.NHANSUs.Find(this.ID_NhanVien).LuongCB.Value.ToString() : "0");
                            break;
                        }

                        case "PayBack":
                        {
                            lstStringFormula[i] = lstStringFormula[i].Replace("NV_PayBack", data.NHANSUs.Find(this.ID_NhanVien).PayBack.HasValue ? data.NHANSUs.Find(this.ID_NhanVien).LuongCB.Value.ToString() : "0");
                            break;
                        }

                        case "NguoiPhuThuoc":
                        {
                            lstStringFormula[i] = lstStringFormula[i].Replace("NV_NguoiPhuThuoc", data.NHANSUs.Find(this.ID_NhanVien).SoNguoiPhuThuoc.HasValue ? data.NHANSUs.Find(this.ID_NhanVien).SoNguoiPhuThuoc.Value.ToString() : "0");
                            break;
                        }

                        default:
                        {
                            lstStringFormula[i] = "0";
                            break;
                        }
                        }
                    }
                    else if (lstStringFormula[i].Contains("OTH_"))
                    {
                        string[] parseElement = lstStringFormula[i].Split('_');
                        if (parseElement.Length < 0)
                        {
                            return(lstStringFormula[i]);
                        }
                        string[] resultFromFormulaPayrall = data.FORMULA_OF_PAYROLL.Find(Int32.Parse(parseElement[1]
                                                                                                     .Replace("(", "")
                                                                                                     .Replace(")", "")
                                                                                                     .Replace(",", "")
                                                                                                     )).Formula.Split(' ');
                        Calculate val = new Calculate();
                        lstStringFormula[i] = ReplaceValue(lstStringFormula[i],
                                                           "OTH_" + "\\d+",
                                                           val.CALCULATE(convertStringFormula(resultFromFormulaPayrall).Split(' '), ID_NhanVien, date).ToString());
                    }
                    else if (lstStringFormula[i].Contains("OT_"))
                    {
                        lstStringFormula[i] = "1";
                    }
                    else if (lstStringFormula[i].Contains("WorkingDays"))
                    {
                        lstStringFormula[i] = Weekdays(new DateTime(date.Year, date.Month, 1), new DateTime(date.Year, date.Month, 1).AddMonths(1).AddDays(-1)).ToString();
                    }
                    else if (lstStringFormula[i].Contains("AtWorks"))
                    {
                        int weekdays = Weekdays(new DateTime(date.Year, date.Month, 1), new DateTime(date.Year, date.Month, 1).AddMonths(1).AddDays(-1));
                        int OFFDays  = CalculateTotalOFFDayInWeekdays(ID_NhanVien,
                                                                      new DateTime(date.Year, date.Month, 1),
                                                                      new DateTime(date.Year, date.Month, 1).AddMonths(1).AddDays(-1));
                        string nameStaff = data.NHANSUs.Find(ID_NhanVien).HoVaTen;
                        fnDisplayWorkingDaysStaffOfMonth_Result WorkingHoursStaff = data.fnDisplayWorkingDaysStaffOfMonth(nameStaff, date).FirstOrDefault();
                        int WFHDays = WorkingHoursStaff.WFH.HasValue ? WorkingHoursStaff.WFH.Value : 0;
                        lstStringFormula[i] = (weekdays - OFFDays - WFHDays).ToString();
                    }
                    else if (lstStringFormula[i].Contains("WFHDays"))
                    {
                        string nameStaff = data.NHANSUs.Find(ID_NhanVien).HoVaTen;
                        fnDisplayWorkingDaysStaffOfMonth_Result WorkingHoursStaff = data.fnDisplayWorkingDaysStaffOfMonth(nameStaff, date).FirstOrDefault();
                        lstStringFormula[i] = WorkingHoursStaff.WFH.HasValue ? WorkingHoursStaff.WFH.Value.ToString() : "0";
                    }
                    else if (lstStringFormula[i].Contains("LeaveHours"))
                    {
                        string nameStaff = data.NHANSUs.Find(ID_NhanVien).HoVaTen;
                        fnDisplayWorkingDaysStaffOfMonth_Result WorkingHoursStaff = data.fnDisplayWorkingDaysStaffOfMonth(nameStaff, date).FirstOrDefault();
                        lstStringFormula[i] = WorkingHoursStaff.LEAVES.HasValue ? WorkingHoursStaff.LEAVES.Value.ToString() : "0";
                    }
                    else if (lstStringFormula[i].Contains("OFFDays"))
                    {
                        lstStringFormula[i] = CalculateTotalOFFDayInWeekdays(ID_NhanVien,
                                                                             new DateTime(date.Year, date.Month, 1),
                                                                             new DateTime(date.Year, date.Month, 1).AddMonths(1).AddDays(-1)).ToString();
                    }
                }
                foreach (string element in lstStringFormula)
                {
                    result += element;
                }
                return(result);
            }