request['entity_type'] == 'purchase_order' ? 'purchase_order' : 'product';
$pdf_service = new PdfService($this->mock->invitation, $document_type);
$pdf_config = (new PdfConfiguration($pdf_service));
$pdf_config->entity = $this->mock;
$pdf_config->entity_string = $this->request['entity_type'];
$this->entity_string = $this->request['entity_type'];
$pdf_config->setTaxMap($this->mock->tax_map);
$pdf_config->setTotalTaxMap($this->mock->total_tax_map);
$pdf_config->client = $this->mock->client;
$pdf_config->settings_object = $this->mock->client;
$pdf_config->settings = $this->getMergedSettings();
$this->settings = $pdf_config->settings;
$pdf_config->entity_design_id = $pdf_config->settings->{"{$pdf_config->entity_string}_design_id"};
$pdf_config->setPdfVariables();
$pdf_config->setCurrency(Currency::find($this->settings->currency_id));
$pdf_config->setCountry(Country::find($this->settings->country_id));
$pdf_config->design = Design::find($this->decodePrimaryKey($pdf_config->entity_design_id));
$pdf_config->currency_entity = $this->mock->client;
$pdf_service->config = $pdf_config;
$pdf_designer = (new PdfDesigner($pdf_service))->build();
$pdf_service->designer = $pdf_designer;
$pdf_service->html_variables = $document_type == 'purchase_order' ? $this->getVendorStubVariables() : $this->getStubVariables();
$pdf_builder = (new PdfBuilder($pdf_service))->build();
$pdf_service->builder = $pdf_builder;
$html = $pdf_service->getHtml();
return $pdf_service->resolvePdfEngine($html);
}
public function build(): self
{
$this->mock = $this->initEntity();
return $this;
}
public function initEntity(): mixed
{
$settings = new \stdClass;
$settings->entity = Client::class;
$settings->currency_id = '1';
$settings->industry_id = '';
$settings->size_id = '';
switch ($this->request['entity_type']) {
case 'invoice':
$entity = Invoice::factory()->make();
$entity->client = Client::factory()->make(['settings' => $settings]);
$entity->invitation = InvoiceInvitation::factory()->make();
break;
case 'quote':
$entity = Quote::factory()->make();
$entity->client = Client::factory()->make(['settings' => $settings]);
$entity->invitation = QuoteInvitation::factory()->make();
break;
case 'credit':
$entity = Credit::factory()->make();
$entity->client = Client::factory()->make(['settings' => $settings]);
$entity->invitation = CreditInvitation::factory()->make();
break;
case 'purchase_order':
$entity = PurchaseOrder::factory()->make();
$entity->client = Client::factory()->make(['settings' => $settings]);
$entity->invitation = PurchaseOrderInvitation::factory()->make();
break;
case PurchaseOrder::class:
$entity = PurchaseOrder::factory()->make();
$entity->invitation = PurchaseOrderInvitation::factory()->make();
$entity->vendor = Vendor::factory()->make();
break;
default:
# code...
break;
}
$entity->tax_map = $this->getTaxMap();
$entity->total_tax_map = $this->getTotalTaxMap();
$entity->invitation->company = $this->company;
return $entity;
}
/**
* getMergedSettings
*
* @return object
*/
public function getMergedSettings() :object
{
match ($this->request['settings_type']) {
'group' => $settings = ClientSettings::buildClientSettings($this->company->settings, $this->request['settings']),
'client' => $settings = ClientSettings::buildClientSettings($this->company->settings, $this->request['settings']),
'company' => $settings = (object)$this->request['settings'],
default => $settings = $this->company->settings,
};
$settings = CompanySettings::setProperties($settings);
return $settings;
}
/**
* getTaxMap
*
* @return void
*/
private function getTaxMap()
{
return collect([['name' => 'GST', 'total' => 10]]);
}
/**
* getTotalTaxMap
*
* @return void
*/
private function getTotalTaxMap()
{
return [['name' => 'GST', 'total' => 10]];
}
/**
* getStubVariables
*
* @return void
*/
public function getStubVariables()
{
return ['values' =>
[
'$client.shipping_postal_code' => '46420',
'$client.billing_postal_code' => '11243',
'$company.city_state_postal' => 'Beveley Hills, CA, 90210',
'$company.postal_city_state' => 'CA',
'$company.postal_city' => '90210, CA',
'$product.gross_line_total' => '100',
'$client.postal_city_state' => '11243 Aufderharchester, North Carolina',
'$client.postal_city' => '11243 Aufderharchester, North Carolina',
'$client.shipping_address1' => '453',
'$client.shipping_address2' => '66327 Waters Trail',
'$client.city_state_postal' => 'Aufderharchester, North Carolina 11243',
'$client.shipping_address' => '453
66327 Waters Trail
Aufderharchester, North Carolina 11243
Afghanistan
',
'$client.billing_address2' => '63993 Aiyana View',
'$client.billing_address1' => '8447',
'$client.shipping_country' => 'USA',
'$invoiceninja.whitelabel' => 'https://raw.githubusercontent.com/invoiceninja/invoiceninja/v5-develop/public/images/new_logo.png',
'$client.billing_address' => '8447
63993 Aiyana View
Aufderharchester, North Carolina 11243
Afghanistan
',
'$client.billing_country' => 'USA',
'$task.gross_line_total' => '100',
'$contact.portal_button' => 'View client portal',
'$client.shipping_state' => 'Delaware',
'$invoice.public_notes' => 'These are some public notes for your document',
'$client.shipping_city' => 'Kesslerport',
'$client.billing_state' => 'North Carolina',
'$product.description' => 'A Product Description',
'$product.product_key' => 'A Product Key',
'$entity.public_notes' => 'Entity Public notes',
'$invoice.balance_due' => '$0.00',
'$client.public_notes' => ' ',
'$company.postal_code' => $this->settings->postal_code,
'$client.billing_city' => 'Aufderharchester',
'$secondary_font_name' => isset($this->settings?->secondary_font) ? $this->settings->secondary_font : 'Roboto',
'$product.line_total' => '',
'$product.tax_amount' => '',
'$company.vat_number' => $this->settings->vat_number,
'$invoice.invoice_no' => '0029',
'$quote.quote_number' => '0029',
'$client.postal_code' => '11243',
'$contact.first_name' => 'Benedict',
'$secondary_font_url' => 'https://fonts.googleapis.com/css2?family=Roboto&display=swap',
'$contact.signature' => '',
'$company_logo_size' => $this->settings->company_logo_size ?: '65%',
'$product.tax_name1' => '',
'$product.tax_name2' => '',
'$product.tax_name3' => '',
'$product.unit_cost' => '',
'$quote.valid_until' => '2023-10-24',
'$custom_surcharge1' => '$0.00',
'$custom_surcharge2' => '$0.00',
'$custom_surcharge3' => '$0.00',
'$custom_surcharge4' => '$0.00',
'$quote.balance_due' => '$0.00',
'$company.id_number' => $this->settings->id_number,
'$invoice.po_number' => 'PO12345',
'$invoice_total_raw' => 0.0,
'$postal_city_state' => '11243 Aufderharchester, North Carolina',
'$client.vat_number' => '975977515',
'$city_state_postal' => 'Aufderharchester, North Carolina 11243',
'$contact.full_name' => 'Benedict Eichmann',
'$contact.last_name' => 'Eichmann',
'$company.country_2' => 'US',
'$product.product1' => '',
'$product.product2' => '',
'$product.product3' => '',
'$product.product4' => '',
'$statement_amount' => '',
'$task.description' => '',
'$product.discount' => '',
'$entity_issued_to' => 'Bob JOnes',
'$assigned_to_user' => '',
'$product.quantity' => '',
'$total_tax_labels' => '',
'$total_tax_values' => '',
'$invoice.discount' => '$0.00',
'$invoice.subtotal' => '$0.00',
'$company.address2' => $this->settings->address2,
'$partial_due_date' => ' ',
'$invoice.due_date' => '2023-10-24',
'$client.id_number' => 'CLI-2023-1234',
'$credit.po_number' => 'PO12345',
'$company.address1' => $this->settings->address1,
'$credit.credit_no' => '0029',
'$invoice.datetime' => '25/Feb/2023 1:10 am',
'$contact.custom1' => null,
'$contact.custom2' => null,
'$contact.custom3' => null,
'$contact.custom4' => null,
'$task.line_total' => '',
'$line_tax_labels' => '',
'$line_tax_values' => '',
'$secondary_color' => isset($this->settings->secondary_color) ? $this->settings->secondary_color : '#3d3d3d;',
'$invoice.balance' => '$0.00',
'$invoice.custom1' => 'custom value',
'$invoice.custom2' => 'custom value',
'$invoice.custom3' => 'custom value',
'$invoice.custom4' => 'custom value',
'$company.custom1' => 'custom value',
'$company.custom2' => 'custom value',
'$company.custom3' => 'custom value',
'$company.custom4' => 'custom value',
'$quote.po_number' => 'PO12345',
'$company.website' => $this->settings->website,
'$balance_due_raw' => '0.00',
'$entity.datetime' => '25/Feb/2023 1:10 am',
'$credit.datetime' => '25/Feb/2023 1:10 am',
'$client.address2' => '63993 Aiyana View',
'$client.address1' => '8447',
'$user.first_name' => 'Derrick Monahan DDS',
'$created_by_user' => 'Derrick Monahan DDS Erna Wunsch',
'$client.currency' => 'USD',
'$company.country' => 'United States',
'$company.address' => 'United States
',
'$tech_hero_image' => 'http://ninja.test:8000/images/pdf-designs/tech-hero-image.jpg',
'$task.tax_name1' => '',
'$task.tax_name2' => '',
'$task.tax_name3' => '',
'$client.balance' => '$0.00',
'$client_balance' => '$0.00',
'$credit.balance' => '$0.00',
'$credit_balance' => '$0.00',
'$gross_subtotal' => '$0.00',
'$invoice.amount' => '$0.00',
'$client.custom1' => 'custom value',
'$client.custom2' => 'custom value',
'$client.custom3' => 'custom value',
'$client.custom4' => 'custom value',
'$emailSignature' => 'A email signature.',
'$invoice.number' => '0029',
'$quote.quote_no' => '0029',
'$quote.datetime' => '25/Feb/2023 1:10 am',
'$client_address' => '8447
63993 Aiyana View
Aufderharchester, North Carolina 11243
Afghanistan
',
'$client.address' => '8447
63993 Aiyana View
Aufderharchester, North Carolina 11243
Afghanistan
',
'$payment_button' => 'Pay Now',
'$payment_qrcode' => '',
'$client.country' => 'Afghanistan',
'$user.last_name' => 'Erna Wunsch',
'$client.website' => 'http://www.parisian.org/',
'$dir_text_align' => 'left',
'$entity_images' => '',
'$task.discount' => '',
'$contact.email' => 'bob@gmail.com',
'$primary_color' => isset($this->settings->primary_color) ? $this->settings->primary_color : '#4e4e4e',
'$credit_amount' => '$0.00',
'$invoice.total' => '$0.00',
'$invoice.taxes' => '$0.00',
'$quote.custom1' => 'custom value',
'$quote.custom2' => 'custom value',
'$quote.custom3' => 'custom value',
'$quote.custom4' => 'custom value',
'$company.email' => $this->settings->email,
'$client.number' => '12345',
'$company.phone' => $this->settings->phone,
'$company.state' => $this->settings->state,
'$credit.number' => '0029',
'$entity_number' => '0029',
'$credit_number' => '0029',
'$global_margin' => '6.35mm',
'$contact.phone' => '681-480-9828',
'$portal_button' => 'View client portal',
'$paymentButton' => 'Pay Now',
'$entity_footer' => 'Default invoice footer',
'$client.lang_2' => 'en',
'$product.date' => '',
'$client.email' => 'client@gmail.com',
'$product.item' => '',
'$public_notes' => 'These are very public notes',
'$task.service' => '',
'$credit.total' => '$0.00',
'$net_subtotal' => '$0.00',
'$paid_to_date' => '$0.00',
'$quote.amount' => '$0.00',
'$company.city' => $this->settings->city,
'$payment.date' => '2022-10-10',
'$client.phone' => '555-123-3212',
'$number_short' => '0029',
'$quote.number' => '0029',
'$invoice.date' => '25/Feb/2023',
'$company.name' => $this->settings->name,
'$portalButton' => 'View client portal',
'$contact.name' => 'Benedict Eichmann',
'$entity.terms' => 'Default company invoice terms',
'$client.state' => 'North Carolina',
'$company.logo' => $this->settings->company_logo,
'$company_logo' => $this->settings->company_logo,
'$payment_link' => 'http://ninja.test:8000/client/pay/UAUY8vIPuno72igmXbbpldwo5BDDKIqs',
'$status_logo' => '',
'$description' => '',
'$product.tax' => '',
'$valid_until' => '',
'$your_entity' => '',
'$shipping' => '',
'$balance_due' => '$0.00',
'$outstanding' => '$0.00',
'$partial_due' => '$0.00',
'$quote.total' => '$0.00',
'$payment_due' => ' ',
'$credit.date' => '25/Feb/2023',
'$invoiceDate' => '25/Feb/2023',
'$view_button' => 'View Invoice',
'$client.city' => 'Aufderharchester',
'$spc_qr_code' => '',
'$client_name' => 'A Client Called Bob',
'$client.name' => 'A Client Called Bob',
'$paymentLink' => 'http://ninja.test:8000/client/pay/UAUY8vIPuno72igmXbbpldwo5BDDKIqs',
'$payment_url' => 'http://ninja.test:8000/client/pay/UAUY8vIPuno72igmXbbpldwo5BDDKIqs',
'$page_layout' => $this->settings->page_layout,
'$task.task1' => '',
'$task.task2' => '',
'$task.task3' => '',
'$task.task4' => '',
'$task.hours' => '',
'$amount_due' => '$0.00',
'$amount_raw' => '0.00',
'$invoice_no' => '0029',
'$quote.date' => '25/Feb/2023',
'$vat_number' => '975977515',
'$viewButton' => 'View Invoice',
'$portal_url' => 'http://ninja.test:8000/client/',
'$task.date' => '',
'$task.rate' => '',
'$task.cost' => '',
'$statement' => '',
'$user_iban' => ' ',
'$signature' => ' ',
'$id_number' => 'ID Number',
'$credit_no' => '0029',
'$font_size' => $this->settings->font_size,
'$view_link' => 'View Invoice',
'$page_size' => $this->settings->page_size,
'$country_2' => 'AF',
'$firstName' => 'Benedict',
'$user.name' => 'Derrick Monahan DDS Erna Wunsch',
'$font_name' => isset($this->settings?->primary_font) ? $this->settings?->primary_font : 'Roboto',
'$auto_bill' => 'This invoice will automatically be billed to your credit card on file on the due date.',
'$payments' => '',
'$task.tax' => '',
'$discount' => '$0.00',
'$subtotal' => '$0.00',
'$company1' => 'custom value',
'$company2' => 'custom value',
'$company3' => 'custom value',
'$company4' => 'custom value',
'$due_date' => '2022-01-01',
'$poNumber' => 'PO-123456',
'$quote_no' => '0029',
'$address2' => '63993 Aiyana View',
'$address1' => '8447',
'$viewLink' => 'View Invoice',
'$autoBill' => 'This invoice will automatically be billed to your credit card on file on the due date.',
'$view_url' => 'http://ninja.test:8000/client/invoice/UAUY8vIPuno72igmXbbpldwo5BDDKIqs',
'$font_url' => 'https://fonts.googleapis.com/css2?family=Roboto&display=swap',
'$details' => '',
'$balance' => '$0.00',
'$partial' => '$0.00',
'$client1' => 'custom value',
'$client2' => 'custom value',
'$client3' => 'custom value',
'$client4' => 'custom value',
'$dueDate' => '2022-01-01',
'$invoice' => '0029',
'$account' => '434343',
'$country' => 'United States',
'$contact' => 'Benedict Eichmann',
'$app_url' => 'http://ninja.test:8000',
'$website' => 'http://www.parisian.org/',
'$entity' => '',
'$thanks' => 'Thanks!',
'$amount' => '$0.00',
'$method' => ' ',
'$number' => '0029',
'$footer' => 'Default invoice footer',
'$client' => 'The Client Name',
'$email' => 'email@invoiceninja.net',
'$notes' => '',
'_rate1' => '',
'_rate2' => '',
'_rate3' => '',
'$taxes' => '$0.00',
'$total' => '$0.00',
'$phone' => ' ',
'$terms' => 'Default company invoice terms',
'$from' => 'Bob Jones',
'$item' => '',
'$date' => '25/Feb/2023',
'$tax' => '',
'$dir' => 'ltr',
'$to' => 'Jimmy Giggles',
'$show_paid_stamp' => $this->settings->show_paid_stamp ? 'flex' : 'none',
'$status_logo' => '
' . ctrans('texts.paid') .'
',
'$show_shipping_address' => $this->settings->show_shipping_address ? 'flex' : 'none',
'$show_shipping_address_block' => $this->settings->show_shipping_address ? 'block' : 'none',
'$show_shipping_address_visibility' => $this->settings->show_shipping_address ? 'visible' : 'hidden',
],
'labels' => $this->mockTranslatedLabels(),
];
}
private function mockTranslatedLabels()
{
return [
'$show_shipping_address_visibility_label' => ctrans('texts.shipping_address'),
'$client.shipping_postal_code_label' => ctrans('texts.shipping_postal_code'),
'$show_shipping_address_block_label' => ctrans('texts.shipping_address'),
'$client.billing_postal_code_label' => ctrans('texts.billing_postal_code'),
'$company.postal_city_state_label' => ctrans('texts.postal_city_state'),
'$company.city_state_postal_label' => ctrans('texts.city_state_postal'),
'$product.gross_line_total_label' => ctrans('texts.gross_line_total'),
'$client.shipping_address1_label' => ctrans('texts.shipping_address1'),
'$client.postal_city_state_label' => ctrans('texts.postal_city_state'),
'$client.shipping_address2_label' => ctrans('texts.shipping_address2'),
'$client.city_state_postal_label' => ctrans('texts.city_state_postal'),
'$client.billing_address2_label' => ctrans('texts.billing_address2'),
'$client.shipping_address_label' => ctrans('texts.shipping_address'),
'$client.billing_address1_label' => ctrans('texts.billing_address1'),
'$client.shipping_country_label' => ctrans('texts.shipping_country'),
'$invoiceninja.whitelabel_label' => ctrans('texts.white_label_link'),
'$client.billing_country_label' => ctrans('texts.billing_country'),
'$client.billing_address_label' => ctrans('texts.billing_address'),
'$task.gross_line_total_label' => ctrans('texts.gross_line_total'),
'$contact.portal_button_label' => ctrans('texts.button'),
'$client.shipping_state_label' => ctrans('texts.shipping_state'),
'$show_shipping_address_label' => ctrans('texts.show_shipping_address'),
'$invoice.public_notes_label' => ctrans('texts.public_notes'),
'$client.billing_state_label' => ctrans('texts.billing_state'),
'$client.shipping_city_label' => ctrans('texts.shipping_city'),
'$product.description_label' => ctrans('texts.description'),
'$product.product_key_label' => ctrans('texts.product_key'),
'$entity.public_notes_label' => ctrans('texts.public_notes'),
'$client.public_notes_label' => ctrans('texts.public_notes'),
'$company.postal_code_label' => ctrans('texts.postal_code'),
'$company.postal_city_label' => ctrans('texts.postal_city'),
'$secondary_font_name_label' => ctrans('texts.secondary_font'),
'$client.billing_city_label' => ctrans('texts.billing_city'),
'$invoice.balance_due_label' => ctrans('texts.balance_due'),
'$product.line_total_label' => ctrans('texts.line_total'),
'$product.tax_amount_label' => ctrans('texts.tax_amount'),
'$client.postal_code_label' => ctrans('texts.postal_code'),
'$company.vat_number_label' => ctrans('texts.vat_number'),
'$client.postal_city_label' => ctrans('texts.postal_city'),
'$quote.quote_number_label' => ctrans('texts.quote_number'),
'$invoice.invoice_no_label' => ctrans('texts.invoice_no'),
'$contact.first_name_label' => ctrans('texts.first_name'),
'$secondary_font_url_label' => ctrans('texts.secondary_font'),
'$contact.signature_label' => ctrans('texts.signature'),
'$product.tax_name1_label' => ctrans('texts.tax_name1'),
'$product.tax_name2_label' => ctrans('texts.tax_name2'),
'$product.tax_name3_label' => ctrans('texts.tax_name3'),
'$product.unit_cost_label' => ctrans('texts.unit_cost'),
'$company.id_number_label' => ctrans('texts.id_number'),
'$quote.valid_until_label' => ctrans('texts.valid_until'),
'$invoice_total_raw_label' => ctrans('texts.invoice_total'),
'$client.vat_number_label' => ctrans('texts.vat_number'),
'$company_logo_size_label' => ctrans('texts.logo'),
'$postal_city_state_label' => ctrans('texts.postal_city_state'),
'$invoice.po_number_label' => ctrans('texts.po_number'),
'$contact.last_name_label' => ctrans('texts.last_name'),
'$contact.full_name_label' => ctrans('texts.full_name'),
'$city_state_postal_label' => ctrans('texts.city_state_postal'),
'$company.country_2_label' => ctrans('texts.country'),
'$custom_surcharge1_label' => ctrans('texts.custom_surcharge1'),
'$custom_surcharge2_label' => ctrans('texts.custom_surcharge2'),
'$custom_surcharge3_label' => ctrans('texts.custom_surcharge3'),
'$custom_surcharge4_label' => ctrans('texts.custom_surcharge4'),
'$quote.balance_due_label' => ctrans('texts.balance_due'),
'$product.product1_label' => ctrans('texts.product1'),
'$product.product2_label' => ctrans('texts.product2'),
'$product.product3_label' => ctrans('texts.product3'),
'$product.product4_label' => ctrans('texts.product4'),
'$statement_amount_label' => ctrans('texts.amount'),
'$task.description_label' => ctrans('texts.description'),
'$product.discount_label' => ctrans('texts.discount'),
'$product.quantity_label' => ctrans('texts.quantity'),
'$entity_issued_to_label' => ctrans('texts.quote_issued_to'),
'$partial_due_date_label' => ctrans('texts.partial_due_date'),
'$invoice.datetime_label' => ctrans('texts.datetime_format_id'),
'$invoice.due_date_label' => ctrans('texts.due_date'),
'$company.address1_label' => ctrans('texts.address1'),
'$company.address2_label' => ctrans('texts.address2'),
'$total_tax_labels_label' => ctrans('texts.total_taxes'),
'$total_tax_values_label' => ctrans('texts.total_taxes'),
'$credit.po_number_label' => ctrans('texts.po_number'),
'$client.id_number_label' => ctrans('texts.id_number'),
'$credit.credit_note_label' => ctrans('texts.credit_note'),
'$assigned_to_user_label' => ctrans('texts.assigned_to'),
'$invoice.discount_label' => ctrans('texts.discount'),
'$invoice.subtotal_label' => ctrans('texts.subtotal'),
'$contact.custom1_label' => ctrans('texts.custom1'),
'$contact.custom2_label' => ctrans('texts.custom2'),
'$contact.custom3_label' => ctrans('texts.custom3'),
'$contact.custom4_label' => ctrans('texts.custom4'),
'$task.line_total_label' => ctrans('texts.line_total'),
'$task.tax_amount_label' => ctrans('texts.tax_amount'),
'$line_tax_labels_label' => ctrans('texts.line_taxes'),
'$line_tax_values_label' => ctrans('texts.line_taxes'),
'$invoice.custom1_label' => ctrans('texts.custom1'),
'$invoice.custom2_label' => ctrans('texts.custom2'),
'$invoice.custom3_label' => ctrans('texts.custom3'),
'$invoice.custom4_label' => ctrans('texts.custom4'),
'$company.custom1_label' => ctrans('texts.custom1'),
'$company.custom2_label' => ctrans('texts.custom2'),
'$company.custom3_label' => ctrans('texts.custom3'),
'$company.custom4_label' => ctrans('texts.custom4'),
'$secondary_color_label' => ctrans('texts.secondary_color'),
'$balance_due_raw_label' => ctrans('texts.balance_due'),
'$entity.datetime_label' => ctrans('texts.datetime_format_id'),
'$credit.datetime_label' => ctrans('texts.datetime_format_id'),
'$client.address2_label' => ctrans('texts.address2'),
'$company.address_label' => ctrans('texts.address'),
'$client.address1_label' => ctrans('texts.address1'),
'$quote.po_number_label' => ctrans('texts.po_number'),
'$client.currency_label' => ctrans('texts.currency'),
'$user.first_name_label' => ctrans('texts.first_name'),
'$created_by_user_label' => ctrans('texts.created_by'),
'$company.country_label' => ctrans('texts.country'),
'$tech_hero_image_label' => '',
'$company.website_label' => ctrans('texts.website'),
'$invoice.balance_label' => ctrans('texts.balance'),
'$client.country_label' => ctrans('texts.country'),
'$task.tax_name1_label' => ctrans('texts.tax_name1'),
'$task.tax_name2_label' => ctrans('texts.tax_name2'),
'$task.tax_name3_label' => ctrans('texts.tax_name3'),
'$payment_button_label' => '',
'$credit.custom1_label' => ctrans('texts.custom1'),
'$credit.custom2_label' => ctrans('texts.custom2'),
'$credit.custom3_label' => ctrans('texts.custom3'),
'$credit.custom4_label' => ctrans('texts.custom4'),
'$emailSignature_label' => ctrans('texts.email_signature'),
'$quote.datetime_label' => ctrans('texts.datetime_format_id'),
'$client.custom1_label' => ctrans('texts.custom1'),
'$client_address_label' => ctrans('texts.address'),
'$client.address_label' => ctrans('texts.address'),
'$payment_qrcode_label' => '',
'$client.custom2_label' => ctrans('texts.custom2'),
'$invoice.number_label' => ctrans('texts.number'),
'$quote.quote_no_label' => ctrans('texts.quote_no'),
'$user.last_name_label' => ctrans('texts.last_name'),
'$client.custom3_label' => ctrans('texts.custom3'),
'$client.website_label' => ctrans('texts.website'),
'$dir_text_align_label' => '',
'$client.custom4_label' => ctrans('texts.custom4'),
'$client.balance_label' => ctrans('texts.balance'),
'$client_balance_label' => ctrans('texts.client_balance'),
'$credit.balance_label' => ctrans('texts.balance'),
'$credit_balance_label' => ctrans('texts.credit_balance'),
'$gross_subtotal_label' => ctrans('texts.subtotal'),
'$invoice.amount_label' => ctrans('texts.amount'),
'$entity_footer_label' => ctrans('texts.footer'),
'$entity_images_label' => '',
'$task.discount_label' => ctrans('texts.discount'),
'$portal_button_label' => '',
'$approveButton_label' => ctrans('texts.approve'),
'$quote.custom1_label' => ctrans('texts.custom1'),
'$quote.custom2_label' => ctrans('texts.custom2'),
'$quote.custom3_label' => ctrans('texts.custom3'),
'$quote.custom4_label' => ctrans('texts.custom4'),
'$company.email_label' => ctrans('texts.email'),
'$primary_color_label' => ctrans('texts.primary_color'),
'$company.phone_label' => ctrans('texts.phone'),
'$exchange_rate_label' => ctrans('texts.exchange_rate'),
'$client.number_label' => ctrans('texts.number'),
'$global_margin_label' => '',
'$contact.phone_label' => ctrans('texts.phone'),
'$company.state_label' => ctrans('texts.state'),
'$credit.number_label' => ctrans('texts.number'),
'$entity_number_label' => ctrans('texts.quote_number'),
'$credit_number_label' => ctrans('texts.credit_number'),
'$client.lang_2_label' => ctrans('texts.language'),
'$contact.email_label' => ctrans('texts.email'),
'$invoice.taxes_label' => ctrans('texts.taxes'),
'$credit_amount_label' => ctrans('texts.credit_amount'),
'$invoice.total_label' => ctrans('texts.total'),
'$product.date_label' => ctrans('texts.date'),
'$product.item_label' => ctrans('texts.item'),
'$public_notes_label' => ctrans('texts.public_notes'),
'$entity.terms_label' => ctrans('texts.terms'),
'$task.service_label' => ctrans('texts.service'),
'$portalButton_label' => '',
'$payment.date_label' => ctrans('texts.date'),
'$client.phone_label' => ctrans('texts.phone'),
'$invoice.date_label' => ctrans('texts.date'),
'$client.state_label' => ctrans('texts.state'),
'$number_short_label' => '',
'$quote.number_label' => ctrans('texts.number'),
'$contact.name_label' => ctrans('texts.name'),
'$company.city_label' => ctrans('texts.city'),
'$company.name_label' => ctrans('texts.name'),
'$company.logo_label' => ctrans('texts.logo'),
'$company_logo_label' => ctrans('texts.logo'),
'$payment_link_label' => ctrans('texts.link'),
'$client.email_label' => ctrans('texts.email'),
'$paid_to_date_label' => ctrans('texts.paid_to_date'),
'$net_subtotal_label' => ctrans('texts.net_subtotal'),
'$credit.total_label' => ctrans('texts.total'),
'$quote.amount_label' => ctrans('texts.amount'),
'$description_label' => ctrans('texts.description'),
'$product.tax_label' => ctrans('texts.tax'),
'$your_entity_label' => ctrans("texts.your_{$this->entity_string}"),
'$view_button_label' => ctrans('texts.view'),
'$status_logo_label' => ctrans('texts.logo'),
'$credit.date_label' => ctrans('texts.date'),
'$payment_due_label' => ctrans('texts.payment_due'),
'$invoiceDate_label' => ctrans('texts.date'),
'$valid_until_label' => ctrans('texts.valid_until'),
'$postal_city_label' => ctrans('texts.postal_city'),
'$client_name_label' => ctrans('texts.client_name'),
'$client.name_label' => ctrans('texts.name'),
'$spc_qr_code_label' => '',
'$client.city_label' => ctrans('texts.city'),
'$paymentLink_label' => ctrans('texts.link'),
'$payment_url_label' => ctrans('texts.url'),
'$page_layout_label' => ctrans('texts.page_layout'),
'$balance_due_label' => ctrans('texts.balance_due'),
'$outstanding_label' => ctrans('texts.outstanding'),
'$partial_due_label' => ctrans('texts.partial_due'),
'$quote.total_label' => ctrans('texts.total'),
'$task.task1_label' => ctrans('texts.task1'),
'$task.task2_label' => ctrans('texts.task2'),
'$task.task3_label' => ctrans('texts.task3'),
'$task.task4_label' => ctrans('texts.task4'),
'$task.hours_label' => ctrans('texts.hours'),
'$viewButton_label' => ctrans('texts.view'),
'$quote.date_label' => ctrans('texts.date'),
'$amount_raw_label' => ctrans('texts.amount'),
'$vat_number_label' => ctrans('texts.vat_number'),
'$invoice_no_label' => ctrans('texts.invoice_no'),
'$portal_url_label' => ctrans('texts.url'),
'$amount_due_label' => ctrans('texts.amount_due'),
'$country_2_label' => ctrans('texts.country'),
'$task.date_label' => ctrans('texts.date'),
'$task.rate_label' => ctrans('texts.rate'),
'$task.cost_label' => ctrans('texts.cost'),
'$statement_label' => ctrans('texts.statement'),
'$view_link_label' => ctrans('texts.link'),
'$user_iban_label' => ctrans('texts.iban'),
'$signature_label' => ctrans('texts.signature'),
'$font_size_label' => ctrans('texts.font_size'),
'$po_number_label' => ctrans('texts.po_number'),
'$page_size_label' => ctrans('texts.page_size'),
'$user.name_label' => ctrans('texts.name'),
'$id_number_label' => ctrans('texts.id_number'),
'$credit_no_label' => ctrans('texts.credit_note'),
'$firstName_label' => ctrans('texts.first_name'),
'$font_name_label' => '',
'$auto_bill_label' => ctrans('texts.auto_bill'),
'$payments_label' => ctrans('texts.payments'),
'$shipping_label' => '',
'$task.tax_label' => ctrans('texts.tax'),
'$viewLink_label' => ctrans('texts.link'),
'$company1_label' => ctrans('texts.company1'),
'$company2_label' => ctrans('texts.company2'),
'$company3_label' => ctrans('texts.company3'),
'$company4_label' => ctrans('texts.company4'),
'$due_date_label' => ctrans('texts.due_date'),
'$address2_label' => ctrans('texts.address2'),
'$address1_label' => ctrans('texts.address1'),
'$poNumber_label' => ctrans('texts.po_number'),
'$quote_no_label' => ctrans('texts.quote_no'),
'$autoBill_label' => ctrans('texts.auto_bill'),
'$view_url_label' => ctrans('texts.url'),
'$font_url_label' => '',
'$discount_label' => ctrans('texts.discount'),
'$subtotal_label' => ctrans('texts.subtotal'),
'$country_label' => ctrans('texts.country'),
'$details_label' => ctrans('texts.details'),
'$custom1_label' => ctrans('texts.custom1'),
'$custom2_label' => ctrans('texts.custom2'),
'$custom3_label' => ctrans('texts.custom3'),
'$custom4_label' => ctrans('texts.custom4'),
'$dueDate_label' => ctrans('texts.due_date'),
'$client1_label' => ctrans('texts.client1'),
'$client2_label' => ctrans('texts.client2'),
'$contact_label' => ctrans('texts.contact'),
'$account_label' => '',
'$client3_label' => ctrans('texts.client3'),
'$app_url_label' => ctrans('texts.url'),
'$website_label' => ctrans('texts.website'),
'$client4_label' => ctrans('texts.client4'),
'$balance_label' => ctrans('texts.balance'),
'$partial_label' => ctrans('texts.partial'),
'$footer_label' => ctrans('texts.footer'),
'$entity_label' => ctrans("texts.{$this->entity_string}"),
'$thanks_label' => ctrans('texts.thanks'),
'$method_label' => ctrans('texts.method'),
'$client_label' => ctrans('texts.client'),
'$number_label' => ctrans('texts.number'),
'$amount_label' => ctrans('texts.amount'),
'$notes_label' => ctrans('texts.notes'),
'$terms_label' => ctrans('texts.terms'),
'tax_rate1_label' => ctrans('texts.tax_rate1'),
'tax_rate2_label' => ctrans('texts.tax_rate2'),
'tax_rate3_label' => ctrans('texts.tax_rate3'),
'$phone_label' => ctrans('texts.phone'),
'$email_label' => ctrans('texts.email'),
'$taxes_label' => ctrans('texts.taxes'),
'$total_label' => ctrans('texts.total'),
'$from_label' => ctrans('texts.from'),
'$item_label' => ctrans('texts.item'),
'$date_label' => ctrans('texts.date'),
'$tax_label' => ctrans('texts.tax'),
'$dir_label' => '',
'$to_label' => ctrans('texts.to'),
];
}
private function getVendorStubVariables()
{
return ['values' => [
'$vendor.billing_postal_code' => '06270-5526',
'$company.postal_city_state' => '29359 New Loy, Delaware',
'$company.city_state_postal' => 'New Loy, Delaware 29359',
'$product.gross_line_total' => '',
'$purchase_order.po_number' => 'PO12345',
'$vendor.postal_city_state' => '06270-5526 Jameyhaven, West Virginia',
'$vendor.city_state_postal' => 'Jameyhaven, West Virginia 06270-5526',
'$purchase_order.due_date' => '02-12-2021',
'$vendor.billing_address1' => '589',
'$vendor.billing_address2' => '761 Odessa Centers Suite 673',
'$invoiceninja.whitelabel' => 'https://raw.githubusercontent.com/invoiceninja/invoiceninja/v5-develop/public/images/new_logo.png',
'$purchase_order.custom1' => 'Custom 1',
'$purchase_order.custom2' => 'Custom 2',
'$purchase_order.custom3' => 'Custom 3',
'$purchase_order.custom4' => 'Custom 4',
'$vendor.billing_address' => '589
761 Odessa Centers Suite 673
New Loy, Delaware 29359
Afghanistan
',
'$vendor.billing_country' => 'Afghanistan',
'$purchase_order.number' => 'Live Preview #790',
'$purchase_order.total' => '$10,256.40',
'$vendor.billing_state' => 'West Virginia',
'$product.description' => '',
'$product.product_key' => '',
'$entity.public_notes' => 'These are public notes for the Vendor',
'$purchase_order.date' => '14/Mar/2023',
'$company.postal_code' => '29359',
'$company.postal_city' => '29359 New Loy',
'$vendor.billing_city' => 'Jameyhaven',
'$vendor.public_notes' => 'Public notes',
'$product.line_total' => '',
'$product.tax_amount' => '',
'$vendor.postal_code' => '06270-5526',
'$vendor.postal_city' => '06270-5526 Jameyhaven',
'$contact.first_name' => 'Geo',
'$company.vat_number' => 'vat number',
'$contact.signature' => '',
'$product.tax_name1' => '',
'$product.tax_name2' => '',
'$product.tax_name3' => '',
'$product.unit_cost' => '',
'$custom_surcharge1' => '$0.00',
'$custom_surcharge2' => '$0.00',
'$custom_surcharge3' => '$0.00',
'$custom_surcharge4' => '$0.00',
'$postal_city_state' => '06270-5526 Jameyhaven, West Virginia',
'$company_logo_size' => '65%',
'$vendor.vat_number' => 'At qui autem iusto et.',
'$contact.full_name' => 'Geo Maggio',
'$city_state_postal' => 'Jameyhaven, West Virginia 06270-5526',
'$contact.last_name' => 'Maggio',
'$company.country_2' => 'US',
'$company.id_number' => 'id number',
'$product.product1' => '',
'$product.product2' => '',
'$product.product3' => '',
'$product.product4' => '',
'$statement_amount' => '',
'$product.discount' => '',
'$assigned_to_user' => '',
'$entity_issued_to' => '',
'$product.quantity' => '',
'$total_tax_labels' => '',
'$total_tax_values' => '',
'$partial_due_date' => ' ',
'$company.address2' => '70218 Lori Station Suite 529',
'$company.address1' => 'Christiansen Garden',
'$vendor.id_number' => 'Libero debitis.',
'$contact.custom1' => null,
'$contact.custom2' => null,
'$contact.custom3' => null,
'$contact.custom4' => null,
'$secondary_color' => '#7081e0',
'$company.custom1' => ' ',
'$company.custom2' => ' ',
'$company.custom3' => ' ',
'$company.custom4' => ' ',
'$balance_due_raw' => '10256.40',
'$entity.datetime' => '14/Mar/2023 10:43 pm',
'$vendor.address1' => '589',
'$vendor.address2' => '761 Odessa Centers Suite 673',
'$line_tax_values' => '$488.40',
'$line_tax_labels' => 'Sales Tax 5%',
'$company.address' => 'Christiansen Garden
70218 Lori Station Suite 529
New Loy, Delaware 29359
United States
Phone: 1-240-886-2233
Email: immanuel53@example.net
',
'$user.first_name' => 'Mr. Louvenia Armstrong',
'$created_by_user' => 'Mr. Louvenia Armstrong Prof. Reyes Anderson',
'$vendor.currency' => 'USD',
'$company.country' => 'United States',
'$tech_hero_image' => 'https://invoicing.co/images/pdf-designs/tech-hero-image.jpg',
'$company.website' => 'http://www.dare.com/vero-consequatur-eveniet-dolorum-exercitationem-alias-repellat.html',
'$gross_subtotal' => '$10,256.40',
'$emailSignature' => ' ',
'$vendor_address' => '589
761 Odessa Centers Suite 673
New Loy, Delaware 29359
Afghanistan
',
'$vendor.address' => '589
761 Odessa Centers Suite 673
New Loy, Delaware 29359
Afghanistan
',
'$vendor.country' => 'Afghanistan',
'$vendor.custom3' => 'Ea quia tempore.',
'$vendor.custom1' => 'Necessitatibus aut.',
'$vendor.custom4' => 'Nobis aut harum.',
'$user.last_name' => 'Prof. Reyes Anderson',
'$vendor.custom2' => 'Sit fuga quas sint.',
'$vendor.website' => 'http://abernathy.com/consequatur-at-beatae-nesciunt',
'$dir_text_align' => 'left',
'$entity_footer' => '',
'$entity_images' => '',
'$contact.email' => '',
'$primary_color' => '#298AAB',
'$contact.phone' => '+1 (920) 735-1990',
'$vendor.number' => '0001',
'$company.phone' => '1-240-886-2233',
'$global_margin' => '6.35mm',
'$company.state' => 'Delaware',
'$entity_number' => 'Live Preview #790',
'$company.email' => 'immanuel53@example.net',
'$product.date' => '',
'$vendor.email' => '',
'$entity.terms' => '',
'$product.item' => '',
'$public_notes' => null,
'$paid_to_date' => '$0.00',
'$net_subtotal' => '$9,768.00',
'$payment.date' => ' ',
'$vendor.phone' => ' ',
'$contact.name' => 'Geo Maggio',
'$number_short' => 'Live Preview #790',
'$company.name' => 'Mrs. Kristina Powlowski',
'$company.city' => 'New Loy',
'$vendor.state' => 'West Virginia',
'$company.logo' => 'data:image/png;base64, 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',
'$company_logo' => 'data:image/png;base64, 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',
'$description' => '',
'$product.tax' => '',
'$view_button' => '
',
'$status_logo' => ' ',
'$partial_due' => '$0.00',
'$balance_due' => '$10,256.40',
'$outstanding' => '$10,256.40',
'$payment_due' => ' ',
'$postal_city' => '06270-5526 Jameyhaven',
'$vendor_name' => 'Claudie Nikolaus MD',
'$vendor.name' => 'Claudie Nikolaus MD',
'$vendor.city' => 'Jameyhaven',
'$page_layout' => 'portrait',
'$viewButton' => '
',
'$amount_due' => '$10,256.40',
'$amount_raw' => '10256.40',
'$vat_number' => 'At qui autem iusto et.',
'$portal_url' => 'http://ninja.test:8000/vendor/',
'$po_number' => null,
'$statement' => '',
'$view_link' => '
',
'$signature' => ' ',
'$font_size' => '16px',
'$page_size' => 'A4',
'$country_2' => 'AF',
'$firstName' => 'Geo',
'$id_number' => 'Libero debitis.',
'$user.name' => 'Mr. Louvenia Armstrong Prof. Reyes Anderson',
'$font_name' => 'Roboto',
'$auto_bill' => 'This invoice will automatically be billed to your credit card on file on the due date.',
'$poNumber' => null,
'$payments' => '',
'$viewLink' => '
',
'$subtotal' => '$9,768.00',
'$company1' => ' ',
'$company2' => ' ',
'$company3' => ' ',
'$company4' => ' ',
'$due_date' => ' ',
'$discount' => 0.0,
'$address1' => '589',
'$address2' => '761 Odessa Centers Suite 673',
'$autoBill' => 'This invoice will automatically be billed to your credit card on file on the due date.',
'$view_url' => 'http://ninja.test:8000/vendor/purchase_order/OwH1Bkl0AP3EBQxJpGvEsU7YbTk5durD',
'$font_url' => 'https://fonts.googleapis.com/css2?family=Roboto&display=swap',
'$details' => '',
'$balance' => '$0.00',
'$partial' => '$0.00',
'$custom1' => ' ',
'$custom2' => ' ',
'$custom3' => ' ',
'$custom4' => ' ',
'$dueDate' => ' ',
'$country' => 'Afghanistan',
'$vendor3' => 'Ea quia tempore.',
'$contact' => 'Geo Maggio',
'$account' => 'Mrs. Kristina Powlowski',
'$vendor1' => 'Necessitatibus aut.',
'$vendor4' => 'Nobis aut harum.',
'$vendor2' => 'Sit fuga quas sint.',
'$website' => 'http://abernathy.com/consequatur-at-beatae-nesciunt',
'$app_url' => 'http://ninja.test:8000',
'$footer' => '',
'$entity' => '',
'$thanks' => '',
'$amount' => '$10,256.40',
'$method' => ' ',
'$vendor' => 'Claudie Nikolaus MD',
'$number' => 'Live Preview #790',
'$email' => '',
'$terms' => '',
'$notes' => null,
'$tax_rate1' => '',
'$tax_rate2' => '',
'$tax_rate3' => '',
'$total' => '$10,256.40',
'$taxes' => '$488.40',
'$phone' => ' ',
'$from' => '',
'$item' => '',
'$date' => '14/Mar/2023',
'$tax' => '',
'$dir' => 'ltr',
'$to' => '',
],
'labels' => $this->vendorLabels(),
];
}
private function vendorLabels()
{
return [
'$vendor.billing_postal_code_label' => ctrans('texts.billing_postal_code'),
'$company.postal_city_state_label' => ctrans('texts.postal_city_state'),
'$company.city_state_postal_label' => ctrans('texts.city_state_postal'),
'$product.gross_line_total_label' => ctrans('texts.gross_line_total'),
'$purchase_order.po_number_label' => ctrans('texts.po_number'),
'$vendor.postal_city_state_label' => ctrans('texts.postal_city_state'),
'$vendor.city_state_postal_label' => ctrans('texts.city_state_postal'),
'$purchase_order.due_date_label' => ctrans('texts.due_date'),
'$vendor.billing_address1_label' => ctrans('texts.billing_address1'),
'$vendor.billing_address2_label' => ctrans('texts.billing_address2'),
'$invoiceninja.whitelabel_label' => ctrans('texts.white_label'),
'$purchase_order.custom1_label' => ctrans('texts.custom1'),
'$purchase_order.custom2_label' => ctrans('texts.custom2'),
'$purchase_order.custom3_label' => ctrans('texts.custom3'),
'$purchase_order.custom4_label' => ctrans('texts.custom4'),
'$vendor.billing_address_label' => ctrans('texts.billing_address'),
'$vendor.billing_country_label' => ctrans('texts.billing_country'),
'$purchase_order.number_label' => ctrans('texts.number'),
'$purchase_order.total_label' => ctrans('texts.total'),
'$vendor.billing_state_label' => ctrans('texts.billing_state'),
'$product.description_label' => ctrans('texts.description'),
'$product.product_key_label' => ctrans('texts.product_key'),
'$entity.public_notes_label' => ctrans('texts.public_notes'),
'$purchase_order.date_label' => ctrans('texts.date'),
'$company.postal_code_label' => ctrans('texts.postal_code'),
'$company.postal_city_label' => ctrans('texts.postal_city'),
'$vendor.billing_city_label' => ctrans('texts.billing_city'),
'$vendor.public_notes_label' => ctrans('texts.public_notes'),
'$product.line_total_label' => ctrans('texts.line_total'),
'$product.tax_amount_label' => ctrans('texts.tax_amount'),
'$vendor.postal_code_label' => ctrans('texts.postal_code'),
'$vendor.postal_city_label' => ctrans('texts.postal_city'),
'$contact.first_name_label' => ctrans('texts.first_name'),
'$company.vat_number_label' => ctrans('texts.vat_number'),
'$contact.signature_label' => ctrans('texts.signature'),
'$product.tax_name1_label' => ctrans('texts.tax_name1'),
'$product.tax_name2_label' => ctrans('texts.tax_name2'),
'$product.tax_name3_label' => ctrans('texts.tax_name3'),
'$product.unit_cost_label' => ctrans('texts.unit_cost'),
'$custom_surcharge1_label' => ctrans('texts.custom_surcharge1'),
'$custom_surcharge2_label' => ctrans('texts.custom_surcharge2'),
'$custom_surcharge3_label' => ctrans('texts.custom_surcharge3'),
'$custom_surcharge4_label' => ctrans('texts.custom_surcharge4'),
'$postal_city_state_label' => ctrans('texts.postal_city_state'),
'$company_logo_size_label' => ctrans('texts.logo'),
'$vendor.vat_number_label' => ctrans('texts.vat_number'),
'$contact.full_name_label' => ctrans('texts.full_name'),
'$city_state_postal_label' => ctrans('texts.city_state_postal'),
'$contact.last_name_label' => ctrans('texts.last_name'),
'$company.country_2_label' => ctrans('texts.country'),
'$company.id_number_label' => ctrans('texts.id_number'),
'$product.product1_label' => ctrans('texts.product1'),
'$product.product2_label' => ctrans('texts.product2'),
'$product.product3_label' => ctrans('texts.product3'),
'$product.product4_label' => ctrans('texts.product4'),
'$statement_amount_label' => ctrans('texts.amount'),
'$product.discount_label' => ctrans('texts.discount'),
'$assigned_to_user_label' => ctrans('texts.assigned_to'),
'$entity_issued_to_label' => ctrans('texts.purchase_order_issued_to'),
'$product.quantity_label' => ctrans('texts.quantity'),
'$total_tax_labels_label' => ctrans('texts.total_taxes'),
'$total_tax_label' => ctrans('texts.total_taxes'),
'$partial_due_date_label' => ctrans('texts.partial_due_date'),
'$company.address2_label' => ctrans('texts.address2'),
'$company.address1_label' => ctrans('texts.address1'),
'$vendor.id_number_label' => ctrans('texts.id_number'),
'$contact.custom1_label' => ctrans('texts.custom1'),
'$contact.custom2_label' => ctrans('texts.custom2'),
'$contact.custom3_label' => ctrans('texts.custom3'),
'$contact.custom4_label' => ctrans('texts.custom4'),
'$secondary_color_label' => ctrans('texts.secondary_color'),
'$company.custom1_label' => ctrans('texts.custom1'),
'$company.custom2_label' => ctrans('texts.custom2'),
'$company.custom3_label' => ctrans('texts.custom3'),
'$company.custom4_label' => ctrans('texts.custom4'),
'$balance_due_raw_label' => ctrans('texts.balance_due'),
'$entity.datetime_label' => ctrans('texts.datetime_format_id'),
'$vendor.address1_label' => ctrans('texts.address1'),
'$vendor.address2_label' => ctrans('texts.address2'),
'$line_tax_label' => ctrans('texts.line_taxes'),
'$line_tax_labels_label' => ctrans('texts.line_taxes'),
'$company.address_label' => ctrans('texts.address'),
'$user.first_name_label' => ctrans('texts.first_name'),
'$created_by_user_label' => ctrans('texts.created_by', ['name' => 'Manuel']),
'$vendor.currency_label' => ctrans('texts.currency'),
'$company.country_label' => ctrans('texts.country'),
'$tech_hero_image_label' => ctrans('texts.logo'),
'$company.website_label' => ctrans('texts.website'),
'$gross_subtotal_label' => ctrans('texts.subtotal'),
'$emailSignature_label' => ctrans('texts.email_signature'),
'$vendor_address_label' => ctrans('texts.address'),
'$vendor.address_label' => ctrans('texts.address'),
'$vendor.country_label' => ctrans('texts.country'),
'$vendor.custom3_label' => ctrans('texts.custom3'),
'$vendor.custom1_label' => ctrans('texts.custom1'),
'$vendor.custom4_label' => ctrans('texts.custom4'),
'$user.last_name_label' => ctrans('texts.last_name'),
'$vendor.custom2_label' => ctrans('texts.custom2'),
'$vendor.website_label' => ctrans('texts.website'),
'$dir_text_align_label' => '',
'$entity_footer_label' => ctrans('texts.footer'),
'$entity_images_label' => ctrans('texts.logo'),
'$contact.email_label' => ctrans('texts.email'),
'$primary_color_label' => ctrans('texts.primary_color'),
'$contact.phone_label' => ctrans('texts.phone'),
'$vendor.number_label' => ctrans('texts.number'),
'$company.phone_label' => ctrans('texts.phone'),
'$global_margin_label' => '',
'$company.state_label' => ctrans('texts.state'),
'$entity_number_label' => ctrans('texts.purchase_order_number'),
'$company.email_label' => ctrans('texts.email'),
'$product.date_label' => ctrans('texts.date'),
'$vendor.email_label' => ctrans('texts.email'),
'$entity.terms_label' => ctrans('texts.terms'),
'$product.item_label' => ctrans('texts.item'),
'$public_notes_label' => ctrans('texts.public_notes'),
'$paid_to_date_label' => ctrans('texts.paid_to_date'),
'$net_subtotal_label' => ctrans('texts.net_subtotal'),
'$payment.date_label' => ctrans('texts.date'),
'$vendor.phone_label' => ctrans('texts.phone'),
'$contact.name_label' => ctrans('texts.name'),
'$number_short_label' => ctrans('texts.purchase_order_number_short'),
'$company.name_label' => ctrans('texts.name'),
'$company.city_label' => ctrans('texts.city'),
'$vendor.state_label' => ctrans('texts.state'),
'$company.logo_label' => ctrans('texts.logo'),
'$company_logo_label' => ctrans('texts.logo'),
'$description_label' => ctrans('texts.description'),
'$product.tax_label' => ctrans('texts.tax'),
'$view_button_label' => ctrans('texts.link'),
'$status_logo_label' => ctrans('texts.logo'),
'$partial_due_label' => ctrans('texts.partial_due'),
'$balance_due_label' => ctrans('texts.balance_due'),
'$outstanding_label' => ctrans('texts.outstanding'),
'$payment_due_label' => ctrans('texts.payment_due'),
'$postal_city_label' => ctrans('texts.postal_city'),
'$vendor_name_label' => ctrans('texts.vendor_name'),
'$vendor.name_label' => ctrans('texts.name'),
'$vendor.city_label' => ctrans('texts.city'),
'$page_layout_label' => ctrans('texts.page_layout'),
'$viewButton_label' => ctrans('texts.view'),
'$amount_due_label' => ctrans('texts.amount_due'),
'$amount_raw_label' => ctrans('texts.amount'),
'$vat_number_label' => ctrans('texts.vat_number'),
'$portal_url_label' => ctrans('texts.link'),
'$po_number_label' => ctrans('texts.po_number'),
'$statement_label' => ctrans('texts.statement'),
'$view_link_label' => ctrans('texts.link'),
'$signature_label' => ctrans('texts.signature'),
'$font_size_label' => ctrans('texts.font_size'),
'$page_size_label' => ctrans('texts.page_size'),
'$country_2_label' => ctrans('texts.country'),
'$firstName_label' => ctrans('texts.name'),
'$id_number_label' => ctrans('texts.id_number'),
'$user.name_label' => ctrans('texts.name'),
'$font_name_label' => ctrans('texts.name'),
'$auto_bill_label' => ctrans('texts.auto_bill'),
'$poNumber_label' => ctrans('texts.po_number'),
'$payments_label' => ctrans('texts.payments'),
'$viewLink_label' => ctrans('texts.link'),
'$subtotal_label' => ctrans('texts.subtotal'),
'$company1_label' => ctrans('texts.company1'),
'$company2_label' => ctrans('texts.company2'),
'$company3_label' => ctrans('texts.company3'),
'$company4_label' => ctrans('texts.company4'),
'$due_date_label' => ctrans('texts.due_date'),
'$discount_label' => ctrans('texts.discount'),
'$address1_label' => ctrans('texts.address1'),
'$address2_label' => ctrans('texts.address2'),
'$autoBill_label' => ctrans('texts.auto_bill'),
'$view_url_label' => ctrans('texts.url'),
'$font_url_label' => ctrans('texts.url'),
'$details_label' => ctrans('texts.details'),
'$balance_label' => ctrans('texts.balance'),
'$partial_label' => ctrans('texts.partial'),
'$custom1_label' => ctrans('texts.custom1'),
'$custom2_label' => ctrans('texts.custom2'),
'$custom3_label' => ctrans('texts.custom3'),
'$custom4_label' => ctrans('texts.custom4'),
'$dueDate_label' => ctrans('texts.due_date'),
'$country_label' => ctrans('texts.country'),
'$vendor3_label' => ctrans('texts.vendor3'),
'$contact_label' => ctrans('texts.contact'),
'$account_label' => ctrans('texts.company'),
'$vendor1_label' => ctrans('texts.vendor1'),
'$vendor4_label' => ctrans('texts.vendor4'),
'$vendor2_label' => ctrans('texts.vendor2'),
'$website_label' => ctrans('texts.website'),
'$app_url_label' => ctrans('texts.url'),
'$footer_label' => ctrans('texts.footer'),
'$entity_label' => ctrans('texts.purchase_order'),
'$thanks_label' => ctrans('texts.thanks'),
'$amount_label' => ctrans('texts.amount'),
'$method_label' => ctrans('texts.method'),
'$vendor_label' => ctrans('texts.vendor'),
'$number_label' => ctrans('texts.number'),
'$email_label' => ctrans('texts.email'),
'$terms_label' => ctrans('texts.terms'),
'$notes_label' => ctrans('texts.notes'),
'$tax_rate1_label' => ctrans('texts.tax_rate1'),
'$tax_rate2_label' => ctrans('texts.tax_rate2'),
'$tax_rate3_label' => ctrans('texts.tax_rate3'),
'$total_label' => ctrans('texts.total'),
'$taxes_label' => ctrans('texts.taxes'),
'$phone_label' => ctrans('texts.phone'),
'$from_label' => ctrans('texts.from'),
'$item_label' => ctrans('texts.item'),
'$date_label' => ctrans('texts.date'),
'$tax_label' => ctrans('texts.tax'),
'$dir_label' => '',
'$to_label' => ctrans('texts.to'),
];
}
}