Diversen nav opmerkingen
This commit is contained in:
@@ -10,31 +10,47 @@ class ReservationTotals {
|
||||
|
||||
public static function fire()
|
||||
{
|
||||
$sql = "SELECT projectID, externalID, reservation, payed, (reservation - payed) AS saldo, PRJ.projectnumber, EXT.contactperson
|
||||
// UNION ALL wordt gebruikt voor een full outer join
|
||||
$sql = "SELECT Q5.project_id AS projectID, external_id AS externalID,
|
||||
costs, reservation, payed, (reservation - payed) AS saldo,
|
||||
(costs - payed) AS saldoToPay, PRJ.projectnumber, EXT.contactperson,
|
||||
ROUND(( (other_revenue * (100 + (SELECT vatrate from vats where active='T' LIMIT 1))) / 100 ), 0) other_revenue
|
||||
FROM (
|
||||
SELECT COALESCE(RES.project_id, PRC.project_id) AS projectID,
|
||||
COALESCE(RES.external_id, PRC.external_id) AS externalID,
|
||||
SUM(COALESCE(reservationamount, 0)) AS reservation,
|
||||
SUM(COALESCE(payed, 0)) AS payed
|
||||
FROM reservations RES
|
||||
LEFT JOIN projectcosts PRC
|
||||
ON RES.project_id = PRC.project_id AND RES.external_id = PRC.external_id
|
||||
GROUP BY COALESCE(RES.project_id, PRC.project_id), COALESCE(PRC.external_id, PRC.external_id)
|
||||
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 COALESCE(RES.project_id, PRC.project_id) AS projectID,
|
||||
COALESCE(RES.external_id, PRC.external_id) AS externalID,
|
||||
SUM(COALESCE(reservationamount, 0)) AS reservation,
|
||||
SUM(COALESCE(payed, 0)) AS payed
|
||||
FROM reservations RES
|
||||
RIGHT JOIN projectcosts PRC
|
||||
ON RES.project_id = PRC.project_id AND RES.external_id = PRC.external_id
|
||||
WHERE RES.id IS NULL
|
||||
GROUP BY COALESCE(RES.project_id, PRC.project_id), COALESCE(RES.external_id, PRC.external_id)
|
||||
) Q3
|
||||
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 = Q3.projectID
|
||||
ON PRJ.id = Q5.project_id
|
||||
JOIN externals EXT
|
||||
ON EXT.id = Q3.externalID ";
|
||||
ON EXT.id = Q5.external_id
|
||||
JOIN offers OFF
|
||||
ON PRJ.id = OFF.project_id ";
|
||||
|
||||
return $sql;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user