From 4e55342d288852c757368844d86648ff83d91a32 Mon Sep 17 00:00:00 2001 From: "MSI\\derek" Date: Thu, 30 May 2024 14:48:46 +0800 Subject: [PATCH] update --- .../modules/report/service/ReportService.kt | 9 ++++++--- .../AR05_Project Completion Report.xlsx | Bin 12370 -> 12562 bytes ...h Outstanding Accounts Receivable v02.xlsx | Bin 12570 -> 12739 bytes 3 files changed, 6 insertions(+), 3 deletions(-) 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 664d91b..18c5055 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 @@ -1733,9 +1733,10 @@ open class ReportService( + " result.code, " + " result.name, " + " result.teamCode, " - + " result.custCode, " ) + + " result.custCode, " + + " result.subCode, " ) if (args.get("outstanding") as Boolean) { - sql.append(" result.projectFee - (result.totalBudget - COALESCE(i.issueAmount , 0) + COALESCE(i.issueAmount, 0) - COALESCE(i.paidAmount, 0)) as `Receivable Remained`, ") + sql.append(" result.projectFee - COALESCE(i.paidAmount, 0) as `Receivable Remained`, ") } sql.append( " DATE_FORMAT(result.actualEnd, '%d/%m/%Y') as actualEnd " @@ -1746,6 +1747,7 @@ open class ReportService( + " min(p.name) as name, " + " min(t.code) as teamCode, " + " min(c.code) as custCode, " + + " COALESCE(concat(min(ss.code),' - ',min(ss.name)), 'N/A') as subCode, " + " min(p.actualEnd) as actualEnd, " + " min(p.expectedTotalFee) as projectFee, " + " sum(COALESCE(tns.totalConsumed*sal.hourlyRate, 0)) as totalBudget " @@ -1766,6 +1768,7 @@ open class ReportService( + " left join salary sal on s.salaryId = sal.salaryPoint " + " 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' " + " and p.actualEnd BETWEEN :startDate and :endDate " @@ -1806,7 +1809,7 @@ open class ReportService( + " p.name, " + " t.code as team, " + " c.code as client, " - + " COALESCE(ss.name, 'N/A') as subsidiary, " + + " COALESCE(ss.code, 'N/A') as subsidiary, " + " p.expectedTotalFee * 0.8 as plannedBudget, " + " COALESCE(tns.totalBudget, 0) as actualConsumedBudget, " + " COALESCE(p.totalManhour, 0) as plannedManhour, " diff --git a/src/main/resources/templates/report/AR05_Project Completion Report.xlsx b/src/main/resources/templates/report/AR05_Project Completion Report.xlsx index d9187b622fdff9b34cd15a661f6be51609bb5024..2c076808beabdcd4da457fe9065b22dca4d69f76 100644 GIT binary patch delta 4654 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%0D5CRS;AKjbmd3xf%aI z%KWnl_ygN3$j11uF#!Pezr~x?E|x$@k>CLfwv?Ic=0F620xR|-3m>*s2+s8Pe4=iY o^ppSqZW!sm0?muX3*BY>M`|~m2>-7#09;`Cgzw&(LjIln4_vjFa{vGU delta 4455 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 diff --git a/src/main/resources/templates/report/AR06_Project Completion Report with Outstanding Accounts Receivable v02.xlsx b/src/main/resources/templates/report/AR06_Project Completion Report with Outstanding Accounts Receivable v02.xlsx index 700dc590c09515ef027acd8132b7309a0eaab360..ee9bcda7b1bdc5804cb3648138a590ad88413dc1 100644 GIT binary patch delta 4779 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 V?*fYaKY}965du!|M&O_1{{b_p(JKG| delta 4634 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