1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-11-14 15:13:29 +01:00
invoiceninja/app/Models/Presenters/InvoicePresenter.php
2022-04-27 13:20:41 +10:00

76 lines
1.8 KiB
PHP

<?php
/**
* Invoice Ninja (https://invoiceninja.com).
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2022. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://www.elastic.co/licensing/elastic-license
*/
namespace App\Models\Presenters;
use App\Utils\Number;
use App\Utils\Traits\MakesDates;
/**
* Class InvoicePresenter.
*
* For convenience and to allow users to easiliy
* customise their invoices, we provide all possible
* invoice variables to be available from this presenter.
*
* Shortcuts to other presenters are here to facilitate
* a clean UI / UX
*/
class InvoicePresenter extends EntityPresenter
{
use MakesDates;
public function amount()
{
return Number::formatMoney($this->balance, $this->client);
}
public function invoice_number()
{
if ($this->number != '') {
return $this->number;
} else {
return '';
}
}
public function rBits()
{
$properties = new \stdClass();
$properties->terms_text = $this->terms;
$properties->note = $this->public_notes;
$properties->itemized_receipt = [];
foreach ($this->line_items as $item) {
$properties->itemized_receipt[] = $this->itemRbits($item);
}
$data = new stdClass();
$data->receive_time = time();
$data->type = 'transaction_details';
$data->source = 'user';
$data->properties = $properties;
return [$data];
}
public function itemRbits($item)
{
$data = new stdClass();
$data->description = $item->notes;
$data->item_price = floatval($item->cost);
$data->quantity = floatval($item->quantity);
$data->amount = round($data->item_price * $data->quantity, 2);
return $data;
}
}