diff --git a/src/controllers/SalaryPeriodEmployeeController.ts b/src/controllers/SalaryPeriodEmployeeController.ts index aadf96c..b8296cd 100644 --- a/src/controllers/SalaryPeriodEmployeeController.ts +++ b/src/controllers/SalaryPeriodEmployeeController.ts @@ -572,12 +572,58 @@ export class SalaryPeriodEmployeeController extends Controller { salaryProfile.amountSpecial = 0; } } else { - salaryProfile.isNext = false; - salaryProfile.amountUse = 0; - salaryProfile.positionSalaryAmount = salaryProfile.amount; - salaryProfile.positionSalaryDayAmount = 0; - salaryProfile.positionSalaryAmountPer = 0; - salaryProfile.amountSpecial = 0; + if (salaryFormula != null && salaryFormula.salaryMax == salaryProfile.amount) { + let salaryRankAmountMax = await this.salaryRankRepository.findOne({ + where: { + salaryMonth: salaryFormula.salaryMax, + salaryEmployee_: { + id: salaryFormula.salaryEmployee.id, + }, + }, + }); + salaryProfile.isNext = true; + salaryProfile.amountUse = salaryFormula.salaryMax - salaryProfile.amount; + salaryProfile.positionSalaryAmount = + salaryRankAmountMax == null || salaryRankAmountMax.salaryMonth == null + ? 0 + : salaryRankAmountMax.salaryMonth; + salaryProfile.positionSalaryDayAmount = + salaryRankAmountMax == null ? 0 : salaryRankAmountMax.salaryDay; + salaryProfile.groupNew = salaryFormula.salaryEmployee.group; + salaryProfile.salaryLevelNew = salaryRankAmountMax == null ? 0 : salaryRankAmountMax.step; + salaryRankAmountMax == null ? 0 : salaryRankAmountMax.step; + if (salaryRankAmountMax != null) { + if (step - salaryRankAmountMax.step <= 0.5) { + salaryProfile.positionSalaryAmountPer = 0.02; + salaryProfile.amountSpecial = + salaryRankAmountMax == null || salaryRankAmountMax.salaryMonth == null + ? 0 + : salaryRankAmountMax.salaryMonth * 0.02; + } else if (step - salaryRankAmountMax.step <= 1) { + salaryProfile.positionSalaryAmountPer = 0.04; + salaryProfile.amountSpecial = + salaryRankAmountMax == null || salaryRankAmountMax.salaryMonth == null + ? 0 + : salaryRankAmountMax.salaryMonth * 0.04; + } else { + salaryProfile.positionSalaryAmountPer = 0.06; + salaryProfile.amountSpecial = + salaryRankAmountMax == null || salaryRankAmountMax.salaryMonth == null + ? 0 + : salaryRankAmountMax.salaryMonth * 0.06; + } + } else { + salaryProfile.positionSalaryAmountPer = 0; + salaryProfile.amountSpecial = 0; + } + } else { + salaryProfile.isNext = false; + salaryProfile.amountUse = 0; + salaryProfile.positionSalaryAmount = salaryProfile.amount; + salaryProfile.positionSalaryDayAmount = 0; + salaryProfile.positionSalaryAmountPer = 0; + salaryProfile.amountSpecial = 0; + } } } else { throw new HttpError(HttpStatusCode.NOT_FOUND, "ประเภทการเลื่อนขึ้นเงินเดือนไม่ถูกต้อง"); @@ -999,13 +1045,64 @@ export class SalaryPeriodEmployeeController extends Controller { salaryProfile.amountSpecial = 0; } } else { - salaryProfile.isNext = false; - salaryProfile.amountUse = 0; - salaryProfile.positionSalaryAmount = - salaryProfile.amount == null ? 0 : salaryProfile.amount; - salaryProfile.positionSalaryDayAmount = 0; - salaryProfile.positionSalaryAmountPer = 0; - salaryProfile.amountSpecial = 0; + if ( + salaryFormula != null && + salaryFormula.salaryMax != null && + salaryFormula.salaryMax == salaryProfile.amount + ) { + let salaryRankAmountMax = await this.salaryRankRepository.findOne({ + where: { + salaryMonth: salaryFormula.salaryMax, + salaryEmployee_: { + id: salaryFormula.salaryEmployee.id, + }, + }, + }); + salaryProfile.isNext = true; + salaryProfile.amountUse = + salaryFormula.salaryMax - (salaryProfile.amount == null ? 0 : salaryProfile.amount); + salaryProfile.positionSalaryAmount = + salaryRankAmountMax == null || salaryRankAmountMax.salaryMonth == null + ? 0 + : salaryRankAmountMax.salaryMonth; + salaryProfile.positionSalaryDayAmount = + salaryRankAmountMax == null ? 0 : salaryRankAmountMax.salaryDay; + salaryProfile.groupNew = salaryFormula.salaryEmployee.group; + salaryProfile.salaryLevelNew = salaryRankAmountMax == null ? 0 : salaryRankAmountMax.step; + salaryRankAmountMax == null ? 0 : salaryRankAmountMax.step; + if (salaryRankAmountMax != null) { + if (step - salaryRankAmountMax.step <= 0.5) { + salaryProfile.positionSalaryAmountPer = 0.02; + salaryProfile.amountSpecial = + salaryRankAmountMax == null || salaryRankAmountMax.salaryMonth == null + ? 0 + : salaryRankAmountMax.salaryMonth * 0.02; + } else if (step - salaryRankAmountMax.step <= 1) { + salaryProfile.positionSalaryAmountPer = 0.04; + salaryProfile.amountSpecial = + salaryRankAmountMax == null || salaryRankAmountMax.salaryMonth == null + ? 0 + : salaryRankAmountMax.salaryMonth * 0.04; + } else { + salaryProfile.positionSalaryAmountPer = 0.06; + salaryProfile.amountSpecial = + salaryRankAmountMax == null || salaryRankAmountMax.salaryMonth == null + ? 0 + : salaryRankAmountMax.salaryMonth * 0.06; + } + } else { + salaryProfile.positionSalaryAmountPer = 0; + salaryProfile.amountSpecial = 0; + } + } else { + salaryProfile.isNext = false; + salaryProfile.amountUse = 0; + salaryProfile.positionSalaryAmount = + salaryProfile.amount == null ? 0 : salaryProfile.amount; + salaryProfile.positionSalaryDayAmount = 0; + salaryProfile.positionSalaryAmountPer = 0; + salaryProfile.amountSpecial = 0; + } } } else { throw new HttpError(HttpStatusCode.NOT_FOUND, "ประเภทการเลื่อนขึ้นเงินเดือนไม่ถูกต้อง"); @@ -1530,13 +1627,64 @@ export class SalaryPeriodEmployeeController extends Controller { salaryProfile.amountSpecial = 0; } } else { - salaryProfile.isNext = false; - salaryProfile.amountUse = 0; - salaryProfile.positionSalaryAmount = - salaryProfile.amount == null ? 0 : salaryProfile.amount; - salaryProfile.positionSalaryDayAmount = 0; - salaryProfile.positionSalaryAmountPer = 0; - salaryProfile.amountSpecial = 0; + if ( + salaryFormula != null && + salaryFormula.salaryMax != null && + salaryFormula.salaryMax == salaryProfile.amount + ) { + let salaryRankAmountMax = await this.salaryRankRepository.findOne({ + where: { + salaryMonth: salaryFormula.salaryMax, + salaryEmployee_: { + id: salaryFormula.salaryEmployee.id, + }, + }, + }); + salaryProfile.isNext = true; + salaryProfile.amountUse = + salaryFormula.salaryMax - (salaryProfile.amount == null ? 0 : salaryProfile.amount); + salaryProfile.positionSalaryAmount = + salaryRankAmountMax == null || salaryRankAmountMax.salaryMonth == null + ? 0 + : salaryRankAmountMax.salaryMonth; + salaryProfile.positionSalaryDayAmount = + salaryRankAmountMax == null ? 0 : salaryRankAmountMax.salaryDay; + salaryProfile.groupNew = salaryFormula.salaryEmployee.group; + salaryProfile.salaryLevelNew = salaryRankAmountMax == null ? 0 : salaryRankAmountMax.step; + salaryRankAmountMax == null ? 0 : salaryRankAmountMax.step; + if (salaryRankAmountMax != null) { + if (step - salaryRankAmountMax.step <= 0.5) { + salaryProfile.positionSalaryAmountPer = 0.02; + salaryProfile.amountSpecial = + salaryRankAmountMax == null || salaryRankAmountMax.salaryMonth == null + ? 0 + : salaryRankAmountMax.salaryMonth * 0.02; + } else if (step - salaryRankAmountMax.step <= 1) { + salaryProfile.positionSalaryAmountPer = 0.04; + salaryProfile.amountSpecial = + salaryRankAmountMax == null || salaryRankAmountMax.salaryMonth == null + ? 0 + : salaryRankAmountMax.salaryMonth * 0.04; + } else { + salaryProfile.positionSalaryAmountPer = 0.06; + salaryProfile.amountSpecial = + salaryRankAmountMax == null || salaryRankAmountMax.salaryMonth == null + ? 0 + : salaryRankAmountMax.salaryMonth * 0.06; + } + } else { + salaryProfile.positionSalaryAmountPer = 0; + salaryProfile.amountSpecial = 0; + } + } else { + salaryProfile.isNext = false; + salaryProfile.amountUse = 0; + salaryProfile.positionSalaryAmount = + salaryProfile.amount == null ? 0 : salaryProfile.amount; + salaryProfile.positionSalaryDayAmount = 0; + salaryProfile.positionSalaryAmountPer = 0; + salaryProfile.amountSpecial = 0; + } } } else { throw new HttpError(HttpStatusCode.NOT_FOUND, "ประเภทการเลื่อนขึ้นเงินเดือนไม่ถูกต้อง");