1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-11-11 05:32:39 +01:00
invoiceninja/app/Services/PdfMaker/Designs/Utilities/TableHelpers.php

89 lines
2.4 KiB
PHP
Raw Normal View History

<?php
/**
* Invoice Ninja (https://invoiceninja.com)
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2020. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://opensource.org/licenses/AAL
*/
namespace App\Services\PdfMaker\Designs\Utilities;
trait TableHelpers
{
/**
* This method will help us decide either we show
* one "tax rate" column in the table or 3 custom tax rates.
*
* Logic below will help us calculate that & inject the result in the
* global state of the $context (design state).
*
* @return void
*/
public function processTaxColumns(): void
{
2020-08-04 16:41:18 +02:00
if (in_array('$product.tax', $this->context['product-table-columns'])) {
2020-08-05 11:52:01 +02:00
$line_items = collect($this->entity->line_items);
$tax1 = $line_items->where('tax_name1', '<>', '')->where('type_id', 1)->count();
$tax2 = $line_items->where('tax_name2', '<>', '')->where('type_id', 1)->count();
$tax3 = $line_items->where('tax_name3', '<>', '')->where('type_id', 1)->count();
$taxes = [];
if ($tax1 > 0) {
array_push($taxes, '$product.tax_rate1');
}
if ($tax2 > 0) {
array_push($taxes, '$product.tax_rate2');
}
if ($tax3 > 0) {
array_push($taxes, '$product.tax_rate3');
}
$key = array_search('$product.tax', $this->context['product-table-columns'], true);
if ($key) {
array_splice($this->context['product-table-columns'], $key, 1, $taxes);
}
}
}
/**
* Calculates the remaining colspans.
*
* @param int $taken
* @return int
*/
public function calculateColspan(int $taken): int
{
$total = (int) count($this->context['product-table-columns']);
return (int)$total - $taken;
}
/**
* Return "true" or "false" based on null or empty check.
* We need to return false as string because of HTML parsing.
*
* @param mixed $property
* @return string
*/
public function toggleHiddenProperty($property): string
{
if (is_null($property)) {
return 'false';
}
if (empty($property)) {
return 'false';
}
return 'true';
}
}