63 lines
3.2 KiB
PHP
63 lines
3.2 KiB
PHP
<?php
|
|
/**
|
|
* Created by Pensare Software.
|
|
* User: Theo Weijmer
|
|
* Date: 13/04/2018
|
|
* Time: 14:27
|
|
*/
|
|
|
|
class ReservationTotals {
|
|
|
|
public static function fire()
|
|
{
|
|
// UNION ALL wordt gebruikt voor een full outer join
|
|
$sql = "SELECT Q5.project_id AS projectID, external_id AS externalID,
|
|
Q5.costs, reservation, payed, (reservation - payed) AS saldo,
|
|
(Q5.costs - payed) AS saldoToPay, PRJ.projectnumber, EXT.contactperson,
|
|
ROUND(( (other_revenue * (100 + (SELECT vatrate
|
|
FROM vats VTS
|
|
JOIN projects P
|
|
ON VTS.id = P.vat_id
|
|
WHERE P.id = PRJ.id LIMIT 1))) / 100 ), 0) other_revenue
|
|
FROM (
|
|
SELECT COALESCE(reservation, 0) AS reservation, costs, payed, Q2.external_id, Q2.project_id
|
|
FROM (
|
|
SELECT SUM(reservationamount) AS reservation, external_id, project_id
|
|
FROM reservations
|
|
GROUP BY external_id, project_id
|
|
) Q1
|
|
RIGHT JOIN
|
|
(
|
|
SELECT SUM(costs) AS costs, SUM(payed) AS payed, external_id, project_id
|
|
FROM projectcosts
|
|
GROUP BY external_id, project_id
|
|
) Q2
|
|
ON Q1.external_id = Q2.external_id AND Q1.project_id = Q2.project_id
|
|
UNION ALL
|
|
SELECT reservation, COALESCE(costs, 0), COALESCE(payed, 0), Q3.external_id, Q3.project_id
|
|
FROM (
|
|
SELECT SUM(reservationamount) AS reservation, external_id, project_id
|
|
FROM reservations
|
|
GROUP BY external_id, project_id
|
|
) Q3
|
|
LEFT JOIN
|
|
(
|
|
SELECT SUM(costs) AS costs, SUM(payed) AS payed, external_id, project_id, id
|
|
FROM projectcosts
|
|
GROUP BY external_id, project_id
|
|
) Q4
|
|
ON Q3.external_id = Q4.external_id AND Q3.project_id = Q4.project_id
|
|
WHERE Q4.id IS NULL
|
|
) Q5
|
|
JOIN projects PRJ
|
|
ON PRJ.id = Q5.project_id
|
|
JOIN externals EXT
|
|
ON EXT.id = Q5.external_id
|
|
JOIN offers OFF
|
|
ON PRJ.id = OFF.project_id ";
|
|
|
|
return $sql;
|
|
}
|
|
|
|
}
|