sql = " SELECT ROUND(COALESCE(SUM(invoiceamount), 0),0) AS invoiced, YEAR(invoicedate) AS invoiceyear FROM invoices WHERE project_id = {$projectID} GROUP BY YEAR(invoicedate) ORDER BY YEAR(invoicedate) "; $invoiced = $this->get_query_result(); return $invoiced; } public function getOutstandingPerProject( $projectID ) { $this->sql = " SELECT (own_revenue + other_revenue + OFF.costs) AS totalrevenue, ROUND(SUM(INV.invoiceamount * ((100 + vatrate) / 100)), 0) AS totalinvoiced, ( SELECT SUM(paymentamount) PAYMENTAMOUNT FROM payments PAY JOIN invoices INV ON INV.id = PAY.invoice_id WHERE INV.project_id = {$projectID} ) AS payed, PRJ.archive FROM invoices INV JOIN projects PRJ ON PRJ.id = INV.project_id JOIN ( SELECT vatrate, id FROM vats WHERE active = 'T' AND archive = 'F' ) VTS ON VTS.id = INV.vat_id JOIN offers OFF ON PRJ.id = OFF.project_id WHERE PRJ.id = {$projectID} "; $invoiceDetails = $this->get_query_row(); return $invoiceDetails; } public function getTotalsOutstandingPerProject($archive = TRUE) { $this->sql = " SELECT PRJ.id, projectnumber, projectname, SUM(invoiced) AS invoiced, SUM(payment) AS payment, revenues, costs, COALESCE(payedcosts, 0) AS payedcosts FROM ( SELECT project_id, ROUND(SUM(invoiceamount * (1 + (vatrate / 100))), 0) AS invoiced, payment FROM invoices INV JOIN vats VAT ON VAT.id = INV.vat_id LEFT JOIN ( SELECT ROUND(COALESCE(SUM(paymentamount), 0), 0) AS payment, invoice_id FROM payments GROUP BY invoice_id) AS Q1 ON INV.id = Q1.invoice_id GROUP BY INV.id) Q2 JOIN projects PRJ ON PRJ.id = Q2.project_id JOIN ( SELECT ROUND((own_revenue + other_revenue + costs) * (1 + (vatrate / 100)), 0) revenues, ROUND(costs * (1 + (vatrate / 100)), 0) costs, OFF.project_id FROM offers OFF JOIN projects PRJ ON PRJ.id = OFF.project_id JOIN vats VAT ON VAT.id = PRJ.vat_id) Q3 ON Q3.project_id = PRJ.id LEFT JOIN ( SELECT SUM(costs) AS payedcosts, project_id FROM projectcosts GROUP BY project_id) Q4 ON Q4.project_id = PRJ.id "; if( $archive == FALSE ) $this->sql .= "WHERE PRJ.archive = 'F' "; $this->sql .= " GROUP BY PRJ.id "; $outstandings = $this->get_query_result(); return $outstandings; } }