118 lines
3.2 KiB
PHP
118 lines
3.2 KiB
PHP
<?php
|
|
/**
|
|
* Created by Pensare Software.
|
|
* User: Theo Weijmer
|
|
* Date: 21/02/2018
|
|
* Time: 10:34
|
|
*/
|
|
|
|
class Invoices_model extends MY_Model {
|
|
|
|
protected $tablename = 'invoices';
|
|
|
|
public function getInvoicedPerYearPerProject( $projectID )
|
|
{
|
|
$this->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;
|
|
}
|
|
}
|