151 lines
4.0 KiB
PHP
151 lines
4.0 KiB
PHP
<?php
|
|
/**
|
|
* Created by Pensare Software.
|
|
* User: Theo Weijmer
|
|
* Date: 29/07/2018
|
|
* Time: 10:29
|
|
*/
|
|
|
|
class InvoiceOverview {
|
|
|
|
private $project;
|
|
private $year;
|
|
private $projectname;
|
|
private $customer;
|
|
private $totalToInvoicingExcl;
|
|
private $totalToInvoicingIncl;
|
|
private $totalInvoicedOtherYears;
|
|
private $totalInvoicedThisYear;
|
|
private $invoicesTotal;
|
|
private $needInvoice;
|
|
private $projectDetails;
|
|
private $projectnumber;
|
|
private $projectPayment;
|
|
private $invoicesToPay;
|
|
|
|
public function __construct( $project, $year )
|
|
{
|
|
$this->project = $project;
|
|
|
|
$this->year = $year;
|
|
|
|
$this->handle();
|
|
}
|
|
|
|
public function getProjectDetails()
|
|
{
|
|
return $this->projectDetails;
|
|
}
|
|
|
|
public function getNeedinvoice()
|
|
{
|
|
return $this->needInvoice;
|
|
}
|
|
|
|
private function handle()
|
|
{
|
|
$this->setProjectnumber();
|
|
|
|
$this->setProjectname();
|
|
|
|
$this->setCustomer();
|
|
|
|
$this->setTotalToInvoicingExcl();
|
|
|
|
$this->setTotalToInvoicingIncl();
|
|
|
|
$this->setTotalInvoicedOtherYears();
|
|
|
|
$this->setTotalInvoicedThisYear();
|
|
|
|
$this->setPaymentPerProject();
|
|
|
|
$this->setInvoicesTotal();
|
|
|
|
$this->setInvoicesToPay();
|
|
|
|
$this->setNeedInvoice();
|
|
|
|
$this->setProjectDetails();
|
|
}
|
|
|
|
private function setProjectnumber()
|
|
{
|
|
$this->projectnumber = $this->project->projectnumber;
|
|
}
|
|
|
|
private function setProjectname()
|
|
{
|
|
$this->projectname = $this->project->projectname;
|
|
}
|
|
|
|
private function setCustomer()
|
|
{
|
|
$this->customer = $this->project->customer->name;
|
|
}
|
|
|
|
private function setTotalToInvoicingExcl()
|
|
{
|
|
$offer = $this->project->offer;
|
|
|
|
$this->totalToInvoicingExcl =
|
|
$offer->own_revenue + $offer->other_revenue + $offer->costs;
|
|
}
|
|
|
|
private function setTotalToInvoicingIncl()
|
|
{
|
|
$this->totalToInvoicingIncl =
|
|
$this->totalToInvoicingExcl * ( 1 + ( $this->project->vat->vatrate / 100 ) );
|
|
}
|
|
|
|
private function setTotalInvoicedOtherYears()
|
|
{
|
|
$this->totalInvoicedOtherYears =
|
|
Invoice::invoicePerYear( $this->project->id, $this->year, FALSE );
|
|
}
|
|
|
|
private function setTotalInvoicedThisYear()
|
|
{
|
|
$this->totalInvoicedThisYear =
|
|
Invoice::invoicePerYear( $this->project->id, $this->year, TRUE );
|
|
}
|
|
|
|
private function setPaymentPerProject()
|
|
{
|
|
$this->projectPayment = Payment::getPaymentPerProject( $this->project->id );
|
|
}
|
|
|
|
private function setInvoicesTotal()
|
|
{
|
|
$this->invoicesTotal =
|
|
$this->totalInvoicedOtherYears + $this->totalInvoicedThisYear;
|
|
}
|
|
|
|
private function setInvoicesToPay()
|
|
{
|
|
$this->invoicesToPay = $this->invoicesTotal - $this->projectPayment;
|
|
}
|
|
|
|
private function setNeedInvoice()
|
|
{
|
|
$this->needInvoice =
|
|
$this->totalToInvoicingIncl - $this->invoicesTotal;
|
|
}
|
|
|
|
private function setProjectDetails()
|
|
{
|
|
$this->projectDetails = [
|
|
'projectnumber' => $this->projectnumber,
|
|
'projectname' => $this->projectname,
|
|
'customer' => $this->customer,
|
|
'totalToInvoicingExcl' => number_format( $this->totalToInvoicingExcl, 0, ',', '.' ),
|
|
'totalToInvoicingIncl' => number_format( $this->totalToInvoicingIncl, 0, ',', '.' ),
|
|
'totalInvoicedOtherYears' => number_format( $this->totalInvoicedOtherYears, 0, ',', '.' ),
|
|
'totalInvoicedThisYear' => number_format( $this->totalInvoicedThisYear, 0, ',', '.' ),
|
|
'invoicesTotal' => number_format( $this->invoicesTotal, 0, ',', '.' ),
|
|
'projectPayment' => number_format( $this->projectPayment, 0, ',', '.' ),
|
|
'invoiceToPay' => number_format( $this->invoicesToPay, 0, ',', '.' ),
|
|
'needInvoice' => number_format( $this->needInvoice, 0, ',', '.' )
|
|
];
|
|
}
|
|
} |