diff --git a/app/Services/PdfMaker/Designs/Plain.php b/app/Services/PdfMaker/Designs/Plain.php index 36b6ea628262..7c69b13de34c 100644 --- a/app/Services/PdfMaker/Designs/Plain.php +++ b/app/Services/PdfMaker/Designs/Plain.php @@ -14,10 +14,74 @@ namespace App\Services\PdfMaker\Designs; class Plain { - public function html() + public function html(): ?string { return file_get_contents( base_path('resources/views/pdf-designs//plain.html') ); } -} + + public static function elements(): array + { + return [ + 'company-address' => [ + 'id' => 'company-address', + 'elements' => [ + ['element' => 'p', 'content' => '$company.address1'], + ['element' => 'p', 'content' => '$company.address2'], + ['element' => 'p', 'content' => '$company.city_state_postal'], + ['element' => 'p', 'content' => '$company.postal_city_state'], + ['element' => 'p', 'content' => '$company.country'], + ['element' => 'p', 'content' => '$company1'], + ['element' => 'p', 'content' => '$company2'], + ['element' => 'p', 'content' => '$company3'], + ['element' => 'p', 'content' => '$company4'], + ], + ], + 'entity-details' => [ + 'id' => 'entity-details', + 'elements' => [ + ['element' => 'tr', 'content' => '', 'elements' => [ + ['element' => 'th', 'content' => '$entity-number-label', 'properties' => ['class' => 'text-left pr-4 font-normal']], + ['element' => 'th', 'content' => '$entity-number', 'properties' => ['class' => 'text-left pr-4 font-medium']], + ]], + ['element' => 'tr', 'content' => '', 'elements' => [ + ['element' => 'th', 'content' => '$entity-date-label', 'properties' => ['class' => 'text-left pr-4 font-normal']], + ['element' => 'th', 'content' => '$entity-date', 'properties' => ['class' => 'text-left pr-4 font-normal']], + ]], + ['element' => 'tr', 'content' => '', 'elements' => [ + ['element' => 'th', 'content' => '$due-date-label', 'properties' => ['class' => 'text-left pr-4 font-normal']], + ['element' => 'th', 'content' => '$due-date', 'properties' => ['class' => 'text-left pr-4 font-normal']], + ]], + ['element' => 'tr', 'content' => '', 'properties' => ['class' => 'bg-gray-200'], 'elements' => [ + ['element' => 'th', 'content' => '$balance-due-label', 'properties' => ['class' => 'text-left pr-4 font-normal']], + ['element' => 'th', 'content' => '$balance-due', 'properties' => ['class' => 'text-left pr-4 font-normal']], + ]], + ], + ], + 'client-details' => [ + 'id' => 'client-details', + 'properties' => ['hidden' => 'true'], + 'elements' => [ + ['element' => 'p', 'content' => '$client.name', 'properties' => ['class' => 'font-medium']], + ['element' => 'p', 'content' => '$client.id_number'], + ['element' => 'p', 'content' => '$client.vat_number'], + ['element' => 'p', 'content' => '$client.address1'], + ['element' => 'p', 'content' => '$client.address2'], + ['element' => 'p', 'content' => '$client.city_state_postal'], + ['element' => 'p', 'content' => '$client.postal_city_state'], + ['element' => 'p', 'content' => '$client.country'], + ['element' => 'p', 'content' => '$client.email'], + ['element' => 'p', 'content' => '$client.custom1'], + ['element' => 'p', 'content' => '$client.custom2'], + ['element' => 'p', 'content' => '$client.custom3'], + ['element' => 'p', 'content' => '$client.custom4'], + ['element' => 'p', 'content' => '$contact.custom1'], + ['element' => 'p', 'content' => '$contact.custom2'], + ['element' => 'p', 'content' => '$contact.custom3'], + ['element' => 'p', 'content' => '$contact.custom4'], + ], + ], + ]; + } +} \ No newline at end of file diff --git a/app/Utils/HtmlEngine.php b/app/Utils/HtmlEngine.php index 677f98137472..2c741d0c1117 100644 --- a/app/Utils/HtmlEngine.php +++ b/app/Utils/HtmlEngine.php @@ -103,6 +103,7 @@ class HtmlEngine } $data = []; + $data['$global-margin'] = ['value' => 'm-12', 'label' => '']; $data['$tax'] = ['value' => '', 'label' => ctrans('texts.tax')]; $data['$app_url'] = ['value' => $this->generateAppUrl(), 'label' => '']; $data['$from'] = ['value' => '', 'label' => ctrans('texts.from')]; @@ -267,7 +268,7 @@ class HtmlEngine $logo = $this->company->present()->logo($this->settings); - $data['$company.logo'] = ['value' => "logo" ?: ' ', 'label' => ctrans('texts.logo')]; + $data['$company.logo'] = ['value' => $logo ?: ' ', 'label' => ctrans('texts.logo')]; $data['$company_logo'] = &$data['$company.logo']; $data['$company1'] = ['value' => $this->settings->custom_value1 ?: ' ', 'label' => $this->makeCustomField('company1')]; $data['$company2'] = ['value' => $this->settings->custom_value2 ?: ' ', 'label' => $this->makeCustomField('company2')]; diff --git a/resources/views/pdf-designs/plain.html b/resources/views/pdf-designs/plain.html index 45950ea3b96d..a6f4901e8d7f 100644 --- a/resources/views/pdf-designs/plain.html +++ b/resources/views/pdf-designs/plain.html @@ -14,12 +14,12 @@
-
$company-name
+
$company.name
$company->name logo
diff --git a/tests/Feature/PdfMaker/ExampleIntegrationTest.php b/tests/Feature/PdfMaker/ExampleIntegrationTest.php index 78096a7bf95a..0aa1e072ebb9 100644 --- a/tests/Feature/PdfMaker/ExampleIntegrationTest.php +++ b/tests/Feature/PdfMaker/ExampleIntegrationTest.php @@ -18,9 +18,7 @@ class ExampleIntegrationTest extends TestCase $engine = new HtmlEngine($invitation, 'invoice'); $state = [ - 'template' => [ - - ], + 'template' => Plain::elements(), 'variables' => $engine->generateLabelsAndValues(), ]; @@ -30,7 +28,6 @@ class ExampleIntegrationTest extends TestCase ->design(Plain::class) ->build(); - info($state); - info($maker->getCompiledHTML()); + // info($maker->getCompiledHTML()); } }