Merge pull request #5100 from beganovich/v5-1003-company-custom-fields

(v5) Support for custom company fields on the PDF
This commit is contained in:
David Bomba 2021-03-13 15:07:08 +11:00 committed by GitHub
commit f67652cf88
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 42 additions and 7 deletions

View File

@ -137,6 +137,10 @@ class Design extends BaseDesign
$elements[] = ['element' => 'p', 'content' => $variable, 'show_empty' => false, 'properties' => ['data-ref' => 'company_details-' . substr($variable, 1)]]; $elements[] = ['element' => 'p', 'content' => $variable, 'show_empty' => false, 'properties' => ['data-ref' => 'company_details-' . substr($variable, 1)]];
} }
foreach (['company1', 'company2', 'company3', 'company4'] as $field) {
$elements[] = ['element' => 'p', 'content' => $this->getCustomFieldValue($field), 'show_empty' => false, 'properties' => ['data-ref' => 'company_details-' . $field]];
}
return $elements; return $elements;
} }

View File

@ -12,9 +12,7 @@
namespace App\Services\PdfMaker\Designs\Utilities; namespace App\Services\PdfMaker\Designs\Utilities;
use App\Models\Task;
use App\Utils\Traits\MakesHash; use App\Utils\Traits\MakesHash;
use Carbon\Carbon;
use DOMDocument; use DOMDocument;
use DOMXPath; use DOMXPath;
use Exception; use Exception;
@ -273,4 +271,35 @@ trait DesignHelpers
array_splice($this->context['pdf_variables']["{$type}_columns"], $key + 1, 0, $custom_columns); array_splice($this->context['pdf_variables']["{$type}_columns"], $key + 1, 0, $custom_columns);
} }
} }
public function getCustomFieldValue(string $field): string
{
// In custom_fields column we store fields like: company1-4,
// while in settings, they're stored in custom_value1-4 format.
// That's why we need this mapping.
$fields = [
'company1' => 'custom_value1',
'company2' => 'custom_value2',
'company3' => 'custom_value3',
'company4' => 'custom_value4',
];
if (!array_key_exists($field, $fields)) {
return '';
}
if (!property_exists($this->client->company->custom_fields, $field)) {
return '';
}
$value = $this->client->company->getSetting($fields[$field]);
return (new \App\Utils\Helpers)->formatCustomFieldValue(
$this->client->company->custom_fields,
$field,
$value,
$this->client
);
}
} }

View File

@ -99,10 +99,13 @@ trait MakesDates
public function translateDate($date, $format, $locale) public function translateDate($date, $format, $locale)
{ {
Carbon::setLocale($locale); Carbon::setLocale($locale);
return Carbon::parse($date)->translatedFormat($format);
try {
return Carbon::parse($date)->translatedFormat($format);
} catch(\Exception $e) {
return 'Invalid date!';
}
} }
} }

View File

@ -154,8 +154,7 @@
<div id="body"> <div id="body">
<div class="header-wrapper"> <div class="header-wrapper">
<p>$company.name</p> <div id="company-details"></div>
<div id="company-address"></div> <div id="company-address"></div>
<div> <div>