public bool Compare2Value(string condition) { bool result = false; string[] a = condition.Split(new string[] { ">", "<", "=", ">=", "<=" }, StringSplitOptions.None); Calculate value = new Calculate(); if (condition.Contains(">")) { result = value.CALCULATE(a[0].Split(' '), ID_NhanVien, date) > value.CALCULATE(a[1].Split(' '), ID_NhanVien, date) ? true : false; } else if (condition.Contains("<")) { result = value.CALCULATE(a[0].Split(' '), ID_NhanVien, date) < value.CALCULATE(a[1].Split(' '), ID_NhanVien, date) ? true : false; } else if (condition.Contains("=")) { result = value.CALCULATE(a[0].Split(' '), ID_NhanVien, date) == value.CALCULATE(a[1].Split(' '), ID_NhanVien, date) ? true : false; } else if (condition.Contains(">=")) { result = value.CALCULATE(a[0].Split(' '), ID_NhanVien, date) >= value.CALCULATE(a[1].Split(' '), ID_NhanVien, date) ? true : false; } else if (condition.Contains("<=")) { result = value.CALCULATE(a[0].Split(' '), ID_NhanVien, date) <= value.CALCULATE(a[1].Split(' '), ID_NhanVien, date) ? true : false; } return(result); }
public string ifRecursive(string condition, string trueValue, string falseValue) { if (Compare2Value(condition)) { Calculate value = new Calculate(); return(value.CALCULATE(StringToArrayByOp(trueValue), ID_NhanVien, date).ToString()); } else if (falseValue.Contains('>') || falseValue.Contains('<') || falseValue.Contains('=')) { string[] tmp = ParseStringCondition(falseValue); return(ifRecursive(tmp[1], tmp[3], tmp[5])); } else { Calculate value = new Calculate(); return(value.CALCULATE(StringToArrayByOp(falseValue), ID_NhanVien, date).ToString()); } }
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); }
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); } }