Files
dbois/application/models/eloquent/queries/Qinvoiceoverview.php
T
2018-05-05 20:55:18 +02:00

66 lines
3.1 KiB
PHP

<?php
/**
* Created by Pensare Software.
* User: Theo Weijmer
* Date: 02/03/2018
* Time: 15:56
*/
class Qinvoiceoverview {
public static function fire( $year )
{
$sql = "
SELECT PRJ.id, PRJ.projectnumber,
PRJ.projectname,
(own_revenue + other_revenue ) AS revenues,
CUS.name AS customername,
SUM(IF( YEAR(invoicedate) = {$year}, invoiceamount* ((100 + VTS.vatrate)/100), 0)) AS currentyear,
SUM(IF( YEAR(invoicedate) != {$year}, invoiceamount * ((100 + VTS.vatrate)/100), 0)) AS otheryear,
SUM(COALESCE(Q1.currentyearpayed, 0)) AS currentyearpayed,
SUM(COALESCE(Q1.otheryearpayed, 0)) AS otheryearpayed,
CONCAT(firstname, ' ', middlename, ' ', lastname) AS fullname,
( SELECT vatrate FROM vats WHERE archive = 'F' LIMIT 1 ) AS vatrate,
COALESCE(reserved, 0 ) AS reserved,
COALESCE(currentforecast, 0) AS currentforecast,
COALESCE(otherforecast, 0) AS otherforecast
FROM invoices INV
RIGHT JOIN projects PRJ
ON PRJ.id = INV.project_id
JOIN offers OFF
ON PRJ.id = OFF.project_id
JOIN customers CUS
ON CUS.id = PRJ.customer_id
JOIN users USR
ON USR.id = PRJ.projectleader_id
JOIN vats VTS
ON VTS.id = INV.vat_id
LEFT JOIN (
SELECT invoice_id,
SUM(IF(YEAR(paymentdate) = {$year},paymentamount, 0)) AS currentyearpayed,
SUM(IF(YEAR(paymentdate) != {$year},paymentamount, 0)) AS otheryearpayed
FROM payments
GROUP BY invoice_id
) AS Q1
ON INV.id = Q1.invoice_id
LEFT JOIN (
SELECT project_id,
SUM( reservationamount) reserved
FROM reservations
GROUP BY project_id
) AS Q2
ON PRJ.id = Q2.project_id
LEFT JOIN (
SELECT project_id,
SUM(IF(year = {$year}, IF(month_id >= MONTH(NOW()) -1, forecastamount, 0), 0)) AS currentforecast,
SUM(IF(year > {$year}, forecastamount, 0)) AS otherforecast
FROM forecasts
GROUP BY project_id
) AS Q3
ON PRJ.id = Q3.project_id
GROUP BY PRJ.projectnumber, PRJ.projectname ";
return $sql;
}
}