mirror of
				https://github.com/invoiceninja/invoiceninja.git
				synced 2025-11-04 01:47:32 -05:00 
			
		
		
		
	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:
		
						commit
						f67652cf88
					
				@ -137,6 +137,10 @@ class Design extends BaseDesign
 | 
			
		||||
            $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;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -12,9 +12,7 @@
 | 
			
		||||
 | 
			
		||||
namespace App\Services\PdfMaker\Designs\Utilities;
 | 
			
		||||
 | 
			
		||||
use App\Models\Task;
 | 
			
		||||
use App\Utils\Traits\MakesHash;
 | 
			
		||||
use Carbon\Carbon;
 | 
			
		||||
use DOMDocument;
 | 
			
		||||
use DOMXPath;
 | 
			
		||||
use Exception;
 | 
			
		||||
@ -273,4 +271,35 @@ trait DesignHelpers
 | 
			
		||||
            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
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -99,10 +99,13 @@ trait MakesDates
 | 
			
		||||
 | 
			
		||||
    public function translateDate($date, $format, $locale)
 | 
			
		||||
    {
 | 
			
		||||
        
 | 
			
		||||
        Carbon::setLocale($locale);
 | 
			
		||||
        return Carbon::parse($date)->translatedFormat($format);
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
            return Carbon::parse($date)->translatedFormat($format);
 | 
			
		||||
        } catch(\Exception $e) {
 | 
			
		||||
            return 'Invalid date!';
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -154,8 +154,7 @@
 | 
			
		||||
 | 
			
		||||
<div id="body">
 | 
			
		||||
    <div class="header-wrapper">
 | 
			
		||||
        <p>$company.name</p>
 | 
			
		||||
 | 
			
		||||
        <div id="company-details"></div>
 | 
			
		||||
        <div id="company-address"></div>
 | 
			
		||||
 | 
			
		||||
        <div>
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user