Invoice report

This commit is contained in:
2018-03-07 17:03:45 +01:00
parent f540bab261
commit ad478b02b1
25 changed files with 1006 additions and 125 deletions
@@ -0,0 +1,43 @@
<?php
/**
* Created by Pensare Software.
* User: Theo Weijmer
* Date: 07/03/2018
* Time: 15:31
*/
class QinvoiceMonthOverview {
public static function fire( $projectID, $year )
{
$sql = "SELECT MNT.id,
month,
COALESCE(forecastamount, 0) AS forecastamount,
COALESCE(paymentamount, 0) AS paymentamount
FROM months MNT
LEFT JOIN (
SELECT SUM(forecastamount) AS forecastamount, month_id
FROM forecasts
WHERE project_id = {$projectID}
AND `year` = {$year}
GROUP BY month_id
) AS FCT
ON MNT.id = FCT.month_id + 1
LEFT JOIN (
SELECT SUM(paymentamount) AS paymentamount, MONTH(paymentdate) AS month_id
FROM payments PAY
JOIN invoices INV
ON INV.id = PAY.invoice_id
WHERE INV.project_id = {$projectID}
AND YEAR(paymentdate) = {$year}
GROUP BY month_id
) AS PAY
ON MNT.id = PAY.month_id
JOIN projects PRJ
GROUP BY MNT.id
ORDER BY MNT.id ";
return $sql;
}
}
@@ -16,11 +16,16 @@ class Qinvoiceoverview {
PRJ.projectname,
(own_revenue + other_revenue ) AS revenues,
CUS.name AS customername,
IF( YEAR(invoicedate) = {$year},SUM(invoiceamount), 0) AS currentyear,
IF( YEAR(invoicedate) != {$year},SUM(invoiceamount), 0) AS otheryear,
COALESCE(Q1.currentyearpayed, 0) AS currentyearpayed,
COALESCE(Q1.otheryearpayed, 0) AS otheryearpayed,
CONCAT(firstname, ' ', middlename, ' ', lastname) AS fullname
SUM(IF( YEAR(invoicedate) = {$year},invoiceamount, 0)) AS currentyear,
SUM(IF( YEAR(invoicedate) != {$year},invoiceamount, 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(reservedpayed, 0 ) AS reservedpayed,
COALESCE(currentforecast, 0) AS currentforecast,
COALESCE(otherforecast, 0) AS otherforecast
FROM invoices INV
RIGHT JOIN projects PRJ
ON PRJ.id = INV.project_id
@@ -38,6 +43,22 @@ class Qinvoiceoverview {
GROUP BY invoice_id
) AS Q1
ON INV.id = Q1.invoice_id
LEFT JOIN (
SELECT project_id,
SUM(IF(payed='UNPAYED', reservationamount, 0)) reserved,
SUM(IF(payed='PAYED', reservationamount, 0)) reservedpayed
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;