| @@ -144,29 +144,30 @@ open class DashboardService( | |||||
| open fun getFinancialStatus(): List<Map<String, Any>> { | open fun getFinancialStatus(): List<Map<String, Any>> { | ||||
| val sql = StringBuilder( | val sql = StringBuilder( | ||||
| " with cte_invoice as (select p.code, sum(i.issueAmount) as sumIssuedAmount , sum(i.paidAmount) as sumPaidAmount" | |||||
| + " from invoice i" | |||||
| + " left join project p on p.code = i.projectCode" | |||||
| + " group by p.code" | |||||
| + " )," | |||||
| + " cte_teamLead as (" | |||||
| + " select p.teamLead, p.code, t.name as teamName , t.code as teamCode" | |||||
| + " from project p" | |||||
| + " left join team t on t.teamLead = p.teamLead " | |||||
| + " )" | |||||
| + " Select p.code, p.description, c.name as client, concat(cte_t.teamCode, \' - \', cte_t.teamName) as teamLead, p.planStart , p.planEnd , p.expectedTotalFee ," | |||||
| + " s.name as staff , IFNULL(t.normalConsumed, 0) as normalConsumed, IFNULL(t.otConsumed , 0) as otConsumed, s2.hourlyRate," | |||||
| + " IFNULL(cte_i.sumIssuedAmount, 0) as sumIssuedAmount , IFNULL(cte_i.sumPaidAmount, 0) as sumPaidAmount " | |||||
| " with cte_timesheet as (" | |||||
| + " Select p.code, s.name as staff, IFNULL(t.normalConsumed, 0) as normalConsumed, IFNULL(t.otConsumed , 0) as otConsumed, s2.hourlyRate" | |||||
| + " from timesheet t" | + " from timesheet t" | ||||
| + " left join project_task pt on pt.id = t.projectTaskId" | + " left join project_task pt on pt.id = t.projectTaskId" | ||||
| + " left join project p ON p.id = pt.project_id" | + " left join project p ON p.id = pt.project_id" | ||||
| + " left join staff s on s.id = t.staffId" | + " left join staff s on s.id = t.staffId" | ||||
| + " left join salary s2 on s.salaryId = s2.salaryPoint" | + " left join salary s2 on s.salaryId = s2.salaryPoint" | ||||
| + " left join customer c on c.id = p.customerId" | |||||
| + " left join team t2 on t2.id = s.teamId" | + " left join team t2 on t2.id = s.teamId" | ||||
| + " )," | |||||
| + " cte_invoice as (" | |||||
| + " select p.code, sum(i.issueAmount) as sumIssuedAmount , sum(i.paidAmount) as sumPaidAmount" | |||||
| + " from invoice i" | |||||
| + " left join project p on p.code = i.projectCode" | |||||
| + " group by p.code" | |||||
| + " )" | |||||
| + " select p.code, p.description, c.name as client, concat(t.code, \' - \', t.name) as teamLead, p.planStart , p.planEnd , p.expectedTotalFee," | |||||
| + " 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" | |||||
| + " from project p" | |||||
| + " left join cte_timesheet cte_ts on p.code = cte_ts.code" | |||||
| + " left join customer c on c.id = p.customerId" | |||||
| + " left join tsmsdb.team t on t.teamLead = p.teamLead" | |||||
| + " left join cte_invoice cte_i on cte_i.code = p.code" | + " left join cte_invoice cte_i on cte_i.code = p.code" | ||||
| + " left join cte_teamLead cte_t on cte_t.code = p.code" | |||||
| + " where p.status = \'On-going\' " | |||||
| + " where p.status = \'On-going\'" | |||||
| ) | ) | ||||
| sql.append(" order by p.code") | sql.append(" order by p.code") | ||||