|
@@ -449,8 +449,7 @@ open class ReportService( |
|
|
|
|
|
|
|
|
val totalFeeCell = row.createCell(7) |
|
|
val totalFeeCell = row.createCell(7) |
|
|
val totalFee = |
|
|
val totalFee = |
|
|
(item["expectedTotalFee"]?.let { it as Double } ?: 0.0) - (item["subContractFee"]?.let { it as Double } |
|
|
|
|
|
?: 0.0) |
|
|
|
|
|
|
|
|
(item["expectedTotalFee"]?.let { it as Double } ?: 0.0) |
|
|
totalFeeCell.apply { |
|
|
totalFeeCell.apply { |
|
|
setCellValue(totalFee) |
|
|
setCellValue(totalFee) |
|
|
cellStyle.dataFormat = accountingStyle |
|
|
cellStyle.dataFormat = accountingStyle |
|
@@ -479,7 +478,7 @@ open class ReportService( |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
val issuedCell = row.createCell(11) |
|
|
val issuedCell = row.createCell(11) |
|
|
val issuedAmount = item["issuedAmount"]?.let { it as BigDecimal } ?: BigDecimal(0) |
|
|
|
|
|
|
|
|
val issuedAmount = item["sumIssuedAmount"]?.let { it as BigDecimal } ?: BigDecimal(0) |
|
|
issuedCell.apply { |
|
|
issuedCell.apply { |
|
|
setCellValue(issuedAmount.toDouble()) |
|
|
setCellValue(issuedAmount.toDouble()) |
|
|
cellStyle = boldFontCellStyle |
|
|
cellStyle = boldFontCellStyle |
|
@@ -496,7 +495,7 @@ open class ReportService( |
|
|
|
|
|
|
|
|
val cpiCell = row.createCell(13) |
|
|
val cpiCell = row.createCell(13) |
|
|
cpiCell.apply { |
|
|
cpiCell.apply { |
|
|
cellFormula = "IF(L${rowNum} = 0, 0, L${rowNum}/J${rowNum})" |
|
|
|
|
|
|
|
|
cellFormula = "IF(J${rowNum} = 0, 0, L${rowNum}/J${rowNum})" |
|
|
cellStyle = boldFontCellStyle |
|
|
cellStyle = boldFontCellStyle |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@@ -507,7 +506,7 @@ open class ReportService( |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
val receivedAmountCell = row.createCell(15) |
|
|
val receivedAmountCell = row.createCell(15) |
|
|
val paidAmount = item["paidAmount"]?.let { it as BigDecimal } ?: BigDecimal(0) |
|
|
|
|
|
|
|
|
val paidAmount = item["sumPaidAmount"]?.let { it as BigDecimal } ?: BigDecimal(0) |
|
|
receivedAmountCell.apply { |
|
|
receivedAmountCell.apply { |
|
|
setCellValue(paidAmount.toDouble()) |
|
|
setCellValue(paidAmount.toDouble()) |
|
|
cellStyle.dataFormat = accountingStyle |
|
|
cellStyle.dataFormat = accountingStyle |
|
@@ -590,7 +589,7 @@ open class ReportService( |
|
|
|
|
|
|
|
|
val lastCpiCell = row.createCell(13) |
|
|
val lastCpiCell = row.createCell(13) |
|
|
lastCpiCell.apply { |
|
|
lastCpiCell.apply { |
|
|
cellFormula = "SUM(N15:N${rowNum})" |
|
|
|
|
|
|
|
|
cellFormula = "IF(J${rowNum}=0,0,L${rowNum}/J${rowNum})" |
|
|
cellStyle = boldFontCellStyle |
|
|
cellStyle = boldFontCellStyle |
|
|
cellStyle.dataFormat = accountingStyle |
|
|
cellStyle.dataFormat = accountingStyle |
|
|
} |
|
|
} |
|
@@ -599,7 +598,7 @@ open class ReportService( |
|
|
|
|
|
|
|
|
val lastPCpiCell = row.createCell(14) |
|
|
val lastPCpiCell = row.createCell(14) |
|
|
lastPCpiCell.apply { |
|
|
lastPCpiCell.apply { |
|
|
cellFormula = "SUM(O15:O${rowNum})" |
|
|
|
|
|
|
|
|
cellFormula = "=IF(J${rowNum}=0,0,H${rowNum}/J${rowNum})" |
|
|
cellStyle = boldFontCellStyle |
|
|
cellStyle = boldFontCellStyle |
|
|
cellStyle.dataFormat = accountingStyle |
|
|
cellStyle.dataFormat = accountingStyle |
|
|
} |
|
|
} |
|
@@ -1940,7 +1939,6 @@ open class ReportService( |
|
|
+ " group by p.code" |
|
|
+ " group by p.code" |
|
|
+ " )" |
|
|
+ " )" |
|
|
+ " select p.code, p.description, c.name as client, IFNULL(s2.name, \"N/A\") as subsidiary, concat(t.code, \' - \', t.name) as teamLead, p.planStart , p.planEnd , p.expectedTotalFee, ifnull(p.subContractFee, 0) as subContractFee, " |
|
|
+ " select p.code, p.description, c.name as client, IFNULL(s2.name, \"N/A\") as subsidiary, concat(t.code, \' - \', t.name) as teamLead, p.planStart , p.planEnd , p.expectedTotalFee, ifnull(p.subContractFee, 0) as subContractFee, " |
|
|
// + " IFNULL(cte_ts.normalConsumed, 0) as normalConsumed, IFNULL(cte_ts.otConsumed, 0) as otConsumed, IFNULL(cte_ts.hourlyRate, 0) as hourlyRate, " |
|
|
|
|
|
+ " IFNULL(cte_i.sumIssuedAmount, 0) as sumIssuedAmount, IFNULL(cte_i.sumPaidAmount, 0) as sumPaidAmount" |
|
|
+ " IFNULL(cte_i.sumIssuedAmount, 0) as sumIssuedAmount, IFNULL(cte_i.sumPaidAmount, 0) as sumPaidAmount" |
|
|
+ " ,0 as totalCumulativeExpenditure " |
|
|
+ " ,0 as totalCumulativeExpenditure " |
|
|
+ " from project p" |
|
|
+ " from project p" |
|
@@ -3096,8 +3094,14 @@ open class ReportService( |
|
|
|
|
|
|
|
|
val result = updatedList.map { item -> |
|
|
val result = updatedList.map { item -> |
|
|
val budget = (item["budget"] as? Double)?.times(0.8) ?: 0.0 |
|
|
val budget = (item["budget"] as? Double)?.times(0.8) ?: 0.0 |
|
|
val budgetRemain = budget - (item["totalCumulativeExpenditure"] as? Double ?: 0.0) |
|
|
|
|
|
val remainingPercent = (budgetRemain / budget) |
|
|
|
|
|
|
|
|
val totalCumulativeExpenditure = (item["totalCumulativeExpenditure"] as? BigDecimal ?: 0.0).toDouble() |
|
|
|
|
|
val budgetRemain = budget.minus(totalCumulativeExpenditure) |
|
|
|
|
|
// val remainingPercent = (budgetRemain).div(budget) |
|
|
|
|
|
// println("-----------------------------------${item["code"]}-------------------------------") |
|
|
|
|
|
// println("budget: $budget") |
|
|
|
|
|
// println("totalCumulativeExpenditure: $totalCumulativeExpenditure") |
|
|
|
|
|
// println("budgetRemain: $budgetRemain") |
|
|
|
|
|
// println("remainingPercent: $remainingPercent") |
|
|
item.toMutableMap().apply { |
|
|
item.toMutableMap().apply { |
|
|
put("budgetPercentage", remainingPercent) |
|
|
put("budgetPercentage", remainingPercent) |
|
|
} |
|
|
} |
|
@@ -3930,7 +3934,7 @@ open class ReportService( |
|
|
+ " select p.id from project p" |
|
|
+ " select p.id from project p" |
|
|
+ " where p.status = 'On-going'" |
|
|
+ " where p.status = 'On-going'" |
|
|
) |
|
|
) |
|
|
if (teamLeadId != null){ |
|
|
|
|
|
|
|
|
if (teamLeadId != null && teamLeadId > 0){ |
|
|
sql.append( "and p.teamLead = :teamLeadId " ) |
|
|
sql.append( "and p.teamLead = :teamLeadId " ) |
|
|
} |
|
|
} |
|
|
sql.append(" ) and t.recordDate >= p.actualStart ") |
|
|
sql.append(" ) and t.recordDate >= p.actualStart ") |
|
@@ -3971,7 +3975,7 @@ open class ReportService( |
|
|
+ " select p.id from project p" |
|
|
+ " select p.id from project p" |
|
|
+ " where p.status = 'On-going'" |
|
|
+ " where p.status = 'On-going'" |
|
|
) |
|
|
) |
|
|
if(teamLeadId != null){ |
|
|
|
|
|
|
|
|
if(teamLeadId != null && teamLeadId > 0){ |
|
|
sql.append(" and p.teamLead = :teamLeadId ") |
|
|
sql.append(" and p.teamLead = :teamLeadId ") |
|
|
} |
|
|
} |
|
|
sql.append(" )) order by staffId, salaryId, date ") |
|
|
sql.append(" )) order by staffId, salaryId, date ") |
|
|