Files
dbois/application/models/projects/Invoices_model.php
T
2020-01-10 15:30:30 +01:00

114 lines
3.1 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
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()
{
$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
GROUP BY
PRJ.id ";
$outstandings = $this->get_query_result();
return $outstandings;
}
}