| @@ -1,11 +1,7 @@ | |||||
| package com.ffii.tsms.modules.report.service | package com.ffii.tsms.modules.report.service | ||||
| import com.ffii.core.support.JdbcDao | import com.ffii.core.support.JdbcDao | ||||
| import com.ffii.tsms.modules.data.entity.Customer | |||||
| import com.ffii.tsms.modules.data.entity.Grade | |||||
| import com.ffii.tsms.modules.data.entity.Salary | |||||
| import com.ffii.tsms.modules.data.entity.Staff | |||||
| import com.ffii.tsms.modules.data.entity.Team | |||||
| import com.ffii.tsms.modules.data.entity.* | |||||
| import com.ffii.tsms.modules.data.service.SalaryEffectiveService | import com.ffii.tsms.modules.data.service.SalaryEffectiveService | ||||
| import com.ffii.tsms.modules.project.entity.Invoice | import com.ffii.tsms.modules.project.entity.Invoice | ||||
| import com.ffii.tsms.modules.project.entity.Milestone | import com.ffii.tsms.modules.project.entity.Milestone | ||||
| @@ -47,7 +43,7 @@ data class DayInfo(val date: String?, val weekday: String?) | |||||
| open class ReportService( | open class ReportService( | ||||
| private val jdbcDao: JdbcDao, | private val jdbcDao: JdbcDao, | ||||
| private val projectRepository: ProjectRepository, | private val projectRepository: ProjectRepository, | ||||
| private val salaryEffectiveService: SalaryEffectiveService | |||||
| private val salaryEffectiveService: SalaryEffectiveService, private val salaryRepository: SalaryRepository | |||||
| ) { | ) { | ||||
| private val logger: Log = LogFactory.getLog(javaClass) | private val logger: Log = LogFactory.getLog(javaClass) | ||||
| private val DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy/MM/dd") | private val DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy/MM/dd") | ||||
| @@ -2419,9 +2415,9 @@ open class ReportService( | |||||
| val staffId = staffInfo["staffId"] as String | val staffId = staffInfo["staffId"] as String | ||||
| val staffSalaryData = staffSalaryDataList.find { it.staffId == staffId } | val staffSalaryData = staffSalaryDataList.find { it.staffId == staffId } | ||||
| if (staffSalaryData != null) { | |||||
| // if (staffSalaryData != null) { | |||||
| val updatedFinancialYears = (staffInfo["financialYears"] as List<FinancialYear>).map { financialYear -> | val updatedFinancialYears = (staffInfo["financialYears"] as List<FinancialYear>).map { financialYear -> | ||||
| updateFinancialYear(financialYear, staffSalaryData.salaryData) | |||||
| updateFinancialYear(financialYear, staffSalaryData?.salaryData, staffInfo) | |||||
| } | } | ||||
| val updatedStaffInfo = staffInfo.toMutableMap().apply { | val updatedStaffInfo = staffInfo.toMutableMap().apply { | ||||
| @@ -2429,16 +2425,27 @@ open class ReportService( | |||||
| } | } | ||||
| staffInfoList[index] = updatedStaffInfo | staffInfoList[index] = updatedStaffInfo | ||||
| } | |||||
| // } | |||||
| } | } | ||||
| } | } | ||||
| fun updateFinancialYear(financialYear: FinancialYear, salaryDataList: List<SalaryEffectiveService.SalaryData>): FinancialYear { | |||||
| fun updateFinancialYear(financialYear: FinancialYear, salaryDataList: List<SalaryEffectiveService.SalaryData>?, staffInfo: Map<String, Any>): FinancialYear { | |||||
| println("====================== staffInfo: $staffInfo ===============================") | |||||
| if(salaryDataList == null){ | |||||
| return financialYear.copy( | |||||
| hourlyRate = (staffInfo["hourlyRate"] as BigDecimal).toDouble(), | |||||
| salaryPoint = (staffInfo["salaryPoint"] as Long).toInt() | |||||
| ) | |||||
| } | |||||
| val relevantSalaryData = salaryDataList.find { salaryData -> | val relevantSalaryData = salaryDataList.find { salaryData -> | ||||
| val salaryYearMonth = YearMonth.from(salaryData.financialYear) | val salaryYearMonth = YearMonth.from(salaryData.financialYear) | ||||
| salaryYearMonth >= financialYear.start && salaryYearMonth <= financialYear.end | salaryYearMonth >= financialYear.start && salaryYearMonth <= financialYear.end | ||||
| } | } | ||||
| println("====================== relevantSalaryData: $relevantSalaryData ===============================") | |||||
| if (relevantSalaryData != null) { | if (relevantSalaryData != null) { | ||||
| return financialYear.copy( | return financialYear.copy( | ||||
| hourlyRate = relevantSalaryData.hourlyRate.toDouble(), | hourlyRate = relevantSalaryData.hourlyRate.toDouble(), | ||||
| @@ -2448,6 +2455,7 @@ open class ReportService( | |||||
| val previousHourlyRate = findPreviousValue(salaryDataList, financialYear.start) { it.hourlyRate } | val previousHourlyRate = findPreviousValue(salaryDataList, financialYear.start) { it.hourlyRate } | ||||
| val previousSalaryPoint = findPreviousValue(salaryDataList, financialYear.start) { it.salaryPoint } | val previousSalaryPoint = findPreviousValue(salaryDataList, financialYear.start) { it.salaryPoint } | ||||
| println("====================== staffInfo: $staffInfo ===============================") | |||||
| return financialYear.copy( | return financialYear.copy( | ||||
| hourlyRate = previousHourlyRate?.toDouble() ?: financialYear.hourlyRate, | hourlyRate = previousHourlyRate?.toDouble() ?: financialYear.hourlyRate, | ||||
| salaryPoint = previousSalaryPoint ?: financialYear.salaryPoint | salaryPoint = previousSalaryPoint ?: financialYear.salaryPoint | ||||
| @@ -2745,6 +2753,8 @@ open class ReportService( | |||||
| val row9Cell2 = row9.getCell(column+1) ?: row9.createCell(column+1) | val row9Cell2 = row9.getCell(column+1) ?: row9.createCell(column+1) | ||||
| sheet.addMergedRegion(CellRangeAddress(rowNum, rowNum, column, column + 1)) | sheet.addMergedRegion(CellRangeAddress(rowNum, rowNum, column, column + 1)) | ||||
| row9Cell.setCellValue("${financialYears[i].start.format(monthFormat)} - ${financialYears[i].end.format(monthFormat)}") | row9Cell.setCellValue("${financialYears[i].start.format(monthFormat)} - ${financialYears[i].end.format(monthFormat)}") | ||||
| CellUtil.setAlignment(row9Cell, HorizontalAlignment.CENTER); | |||||
| CellUtil.setVerticalAlignment(row9Cell, VerticalAlignment.CENTER); | |||||
| CellUtil.setCellStyleProperty(row9Cell, "borderBottom", BorderStyle.THIN) | CellUtil.setCellStyleProperty(row9Cell, "borderBottom", BorderStyle.THIN) | ||||
| CellUtil.setCellStyleProperty(row9Cell2, "borderBottom", BorderStyle.THIN) | CellUtil.setCellStyleProperty(row9Cell2, "borderBottom", BorderStyle.THIN) | ||||
| column = column.plus(2) | column = column.plus(2) | ||||