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' => '
View Purchase Order
', '$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' => '
View Purchase Order
', '$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' => '
View Purchase Order
', '$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' => '
View Purchase Order
', '$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'), ]; } }