diff --git a/src/main/java/com/ffii/tsms/modules/report/service/ReportService.kt b/src/main/java/com/ffii/tsms/modules/report/service/ReportService.kt index 18c5055..a358b48 100644 --- a/src/main/java/com/ffii/tsms/modules/report/service/ReportService.kt +++ b/src/main/java/com/ffii/tsms/modules/report/service/ReportService.kt @@ -1737,6 +1737,7 @@ open class ReportService( + " result.subCode, " ) if (args.get("outstanding") as Boolean) { sql.append(" result.projectFee - COALESCE(i.paidAmount, 0) as `Receivable Remained`, ") +// sql.append(" result.projectFee - (result.totalBudget - COALESCE(i.issueAmount , 0) + COALESCE(i.issueAmount, 0) - COALESCE(i.paidAmount, 0)) as `Receivable Remained`, ") } sql.append( " DATE_FORMAT(result.actualEnd, '%d/%m/%Y') as actualEnd " @@ -1769,14 +1770,17 @@ open class ReportService( + " left JOIN team t ON s.teamId = t.id " + " left join customer c on c.id = p.customerId " + " LEFT JOIN subsidiary ss on p.customerSubsidiaryId = ss.id " - + " where p.deleted = false " - + " and p.status = 'Completed' " + + " where p.deleted = false ") + if (args.containsKey("teamId")) { + sql.append("t.id = :teamId") + } + sql.append( + " and p.status = 'Completed' " + " and p.actualEnd BETWEEN :startDate and :endDate " + " group by pt.project_id " + " ) as result " + " left join invoice i on result.code = i.projectCode " - + " order by result.actualEnd " - ) + + " order by result.actualEnd ") return jdbcDao.queryForList(sql.toString(), args) } diff --git a/src/main/java/com/ffii/tsms/modules/report/web/ReportController.kt b/src/main/java/com/ffii/tsms/modules/report/web/ReportController.kt index 02ea8fa..ab43814 100644 --- a/src/main/java/com/ffii/tsms/modules/report/web/ReportController.kt +++ b/src/main/java/com/ffii/tsms/modules/report/web/ReportController.kt @@ -2,10 +2,12 @@ package com.ffii.tsms.modules.report.web import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.kotlin.KotlinModule +import com.ffii.tsms.modules.common.SecurityUtils import com.ffii.tsms.modules.data.entity.* //import com.ffii.tsms.modules.data.entity.projections.FinancialStatusReportInfo import com.ffii.tsms.modules.data.entity.projections.StaffSearchInfo import com.ffii.tsms.modules.data.service.CustomerService +import com.ffii.tsms.modules.data.service.StaffsService import com.ffii.tsms.modules.data.service.TeamService import com.ffii.tsms.modules.project.entity.* import com.ffii.tsms.modules.project.entity.projections.ProjectResourceReport @@ -55,6 +57,7 @@ class ReportController( private val customerRepository: CustomerRepository, private val staffRepository: StaffRepository, private val leaveRepository: LeaveRepository, + private val staffsService: StaffsService, private val teamService: TeamService, private val customerService: CustomerService, private val subsidiaryService: SubsidiaryService, @@ -190,6 +193,9 @@ class ReportController( "endDate" to request.endDate, "outstanding" to request.outstanding ) + if (request.teamId != null) { + args["teamId"] = request.teamId + } val result = excelReportService.getProjectCompletionReport(args); val reportResult: ByteArray = excelReportService.generateProjectCompletionReport(args, result) // val mediaType: MediaType = MediaType.parseMediaType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") diff --git a/src/main/java/com/ffii/tsms/modules/report/web/model/ReportRequest.kt b/src/main/java/com/ffii/tsms/modules/report/web/model/ReportRequest.kt index f302693..dbb0854 100644 --- a/src/main/java/com/ffii/tsms/modules/report/web/model/ReportRequest.kt +++ b/src/main/java/com/ffii/tsms/modules/report/web/model/ReportRequest.kt @@ -51,6 +51,7 @@ data class ProjectResourceOverconsumptionReport ( val lowerLimit: Double ) data class ProjectCompletionReport ( + val teamId: Long?, val startDate: LocalDate, val endDate: LocalDate, val outstanding: Boolean