70 lines
3.7 KiB
PHP
70 lines
3.7 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 PRJ.id AS projectID, external_id AS externalID,
|
|
PRJ.projectname,
|
|
COALESCE(fromreservation, 0) AS fromreservation,
|
|
COALESCE(Q5.costs, 0) AS costs, COALESCE(reservation, 0) AS reservation,
|
|
COALESCE(payed, 0) AS payed, (COALESCE(reservation, 0) - COALESCE(fromreservation, 0)) AS saldo,
|
|
(COALESCE(Q5.costs, 0) - COALESCE(payed, 0)) AS saldoToPay, PRJ.projectnumber, EXT.contactperson,
|
|
ROUND(( (OFF.costs * (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,
|
|
IF(from_reservation = 'T', payed, 0) fromreservation
|
|
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, MAX(from_reservation) AS from_reservation
|
|
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,
|
|
IF(from_reservation = 'T', payed, 0) fromreservation
|
|
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, MAX(id) AS id, MAX(from_reservation) AS from_reservation
|
|
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
|
|
RIGHT JOIN projects PRJ
|
|
ON PRJ.id = Q5.project_id
|
|
LEFT JOIN offers OFF
|
|
ON PRJ.id = OFF.project_id
|
|
LEFT JOIN externals EXT
|
|
ON EXT.id = Q5.external_id
|
|
WHERE OFF.costs > 0
|
|
AND PRJ.archive = 'F'";
|
|
|
|
return $sql;
|
|
}
|
|
|
|
}
|