diff --git a/app/Models/Client.php b/app/Models/Client.php index 2259a449adfb..9f1906a6f123 100644 --- a/app/Models/Client.php +++ b/app/Models/Client.php @@ -474,7 +474,7 @@ class Client extends BaseModel implements HasLocalePreference * of settings which have been merged from * Client > Group > Company levels. * - * @return stdClass stdClass object of settings + * @return \stdClass stdClass object of settings */ public function getMergedSettings() :object { @@ -483,7 +483,7 @@ class Client extends BaseModel implements HasLocalePreference return ClientSettings::buildClientSettings($this->company->settings, $group_settings); } - +nlog(CompanySettings::setProperties(ClientSettings::buildClientSettings($this->company->settings, $this->settings))); return CompanySettings::setProperties(ClientSettings::buildClientSettings($this->company->settings, $this->settings)); } diff --git a/app/Services/Pdf/PdfBuilder.php b/app/Services/Pdf/PdfBuilder.php index eb2feebc3bf7..ffe2ea2b0c7b 100644 --- a/app/Services/Pdf/PdfBuilder.php +++ b/app/Services/Pdf/PdfBuilder.php @@ -445,6 +445,14 @@ class PdfBuilder return $elements; } + $_type = Str::startsWith($type, '$') ? ltrim($type, '$') : $type; + $table_type = "{$_type}_columns"; + + if ($_type == 'product' && $this->service->config->entity instanceof Quote && !$this->service->config->settings?->sync_invoice_quote_columns) { + $table_type = "product_quote_columns"; + } + + foreach ($items as $row) { $element = ['element' => 'tr', 'elements' => []]; @@ -645,7 +653,13 @@ class PdfBuilder '$task.rate' => '$task.cost', ]; - foreach ($this->service->config->pdf_variables["{$type}_columns"] as $column) { + $table_type = "{$type}_columns"; + + if ($type == 'product' && $this->service->config->entity instanceof Quote && !$this->service->config->settings_object?->sync_invoice_quote_columns) { + $table_type = "product_quote_columns"; + } + + foreach ($this->service->config->pdf_variables[$table_type] as $column) { if (array_key_exists($column, $aliases)) { $elements[] = ['element' => 'th', 'content' => $aliases[$column] . '_label', 'properties' => ['data-ref' => "{$type}_table-" . substr($aliases[$column], 1) . '-th', 'hidden' => $this->service->config->settings->hide_empty_columns_on_pdf]]; } elseif ($column == '$product.discount' && !$this->service->company->enable_product_discount) { diff --git a/app/Services/Pdf/PdfMock.php b/app/Services/Pdf/PdfMock.php index 161d74c53c99..bd26cb6ac5a4 100644 --- a/app/Services/Pdf/PdfMock.php +++ b/app/Services/Pdf/PdfMock.php @@ -11,26 +11,23 @@ namespace App\Services\Pdf; -use App\Models\Quote; +use App\DataMapper\ClientSettings; +use App\DataMapper\CompanySettings; use App\Models\Client; -use App\Models\Credit; -use App\Models\Design; -use App\Models\Vendor; use App\Models\Company; use App\Models\Country; -use App\Models\Invoice; -use App\Models\Currency; -use App\Models\PurchaseOrder; -use App\Models\QuoteInvitation; -use App\Utils\Traits\MakesHash; +use App\Models\Credit; use App\Models\CreditInvitation; -use App\Services\Pdf\PdfBuilder; -use App\Services\Pdf\PdfService; +use App\Models\Currency; +use App\Models\Design; +use App\Models\Invoice; use App\Models\InvoiceInvitation; -use App\Services\Pdf\PdfDesigner; -use App\DataMapper\ClientSettings; -use App\Services\Pdf\PdfConfiguration; +use App\Models\PurchaseOrder; use App\Models\PurchaseOrderInvitation; +use App\Models\Quote; +use App\Models\QuoteInvitation; +use App\Models\Vendor; +use App\Utils\Traits\MakesHash; class PdfMock { @@ -40,17 +37,23 @@ class PdfMock public object $settings; + private string $entity_string = 'invoice'; + public function __construct(public array $request, public Company $company) { } public function getPdf(): mixed { - $pdf_service = new PdfService($this->mock->invitation); + //need to resolve the pdf type here, ie product / purchase order + $document_type = $this->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; @@ -69,7 +72,7 @@ class PdfMock $pdf_designer = (new PdfDesigner($pdf_service))->build(); $pdf_service->designer = $pdf_designer; - $pdf_service->html_variables = $this->getStubVariables(); + $pdf_service->html_variables = $document_type == 'purchase_order' ? $this->getVendorStubVariables() : $this->getStubVariables(); $pdf_builder = (new PdfBuilder($pdf_service))->build(); $pdf_service->builder = $pdf_builder; @@ -147,6 +150,8 @@ class PdfMock default => $settings = $this->company->settings, }; + $settings = CompanySettings::setProperties($settings); + return $settings; } @@ -384,38 +389,7 @@ class PdfMock '$invoiceDate' => '25/Feb/2023', '$view_button' => 'View Invoice', '$client.city' => 'Aufderharchester', - '$spc_qr_code' => 'SPC -0200 -1 - -K -434343 - - - - -CH - - - - - - - -0.000000 -USD - - - - - - - -NON - -0029 -EPD -', + '$spc_qr_code' => '', '$client_name' => 'A Client Called Bob', '$client.name' => 'A Client Called Bob', '$paymentLink' => 'http://ninja.test:8000/client/pay/UAUY8vIPuno72igmXbbpldwo5BDDKIqs', @@ -508,301 +482,301 @@ EPD '$show_shipping_address_block' => $this->settings->show_shipping_address ? 'block' : 'none', '$show_shipping_address_visibility' => $this->settings->show_shipping_address ? 'visible' : 'hidden', ], - 'labels' => - [ - '$client.shipping_postal_code_label' => 'Shipping Postal Code', - '$client.billing_postal_code_label' => 'Postal Code', - '$company.city_state_postal_label' => 'City/State/Postal', - '$company.postal_city_state_label' => 'Postal/City/State', - '$company.postal_city_label' => 'Postal/City', - '$product.gross_line_total_label' => 'Gross line total', - '$client.postal_city_state_label' => 'Postal/City/State', - '$client.postal_city_label' => 'Postal/City', - '$client.shipping_address1_label' => 'Shipping Street', - '$client.shipping_address2_label' => 'Shipping Apt/Suite', - '$client.city_state_postal_label' => 'City/State/Postal', - '$client.shipping_address_label' => 'Shipping Address', - '$client.billing_address2_label' => 'Apt/Suite', - '$client.billing_address1_label' => 'Street', - '$client.shipping_country_label' => 'Shipping Country', - '$invoiceninja.whitelabel_label' => '', - '$client.billing_address_label' => 'Address', - '$client.billing_country_label' => 'Country', - '$task.gross_line_total_label' => 'Gross line total', - '$contact.portal_button_label' => 'view_client_portal', - '$client.shipping_state_label' => 'Shipping State/Province', - '$invoice.public_notes_label' => 'Public Notes', - '$client.shipping_city_label' => 'Shipping City', - '$client.billing_state_label' => 'State/Province', - '$product.description_label' => 'Description', - '$product.product_key_label' => 'Product', - '$entity.public_notes_label' => 'Public Notes', - '$invoice.balance_due_label' => 'Balance Due', - '$client.public_notes_label' => 'Notes', - '$company.postal_code_label' => 'Postal Code', - '$client.billing_city_label' => 'City', - '$secondary_font_name_label' => '', - '$product.line_total_label' => 'Line Total', - '$product.tax_amount_label' => 'Tax', - '$company.vat_number_label' => 'VAT Number', - '$invoice.invoice_no_label' => 'Invoice Number', - '$quote.quote_number_label' => 'Quote Number', - '$client.postal_code_label' => 'Postal Code', - '$contact.first_name_label' => 'First Name', - '$secondary_font_url_label' => '', - '$contact.signature_label' => '', - '$company_logo_size_label' => '', - '$product.tax_name1_label' => 'Tax', - '$product.tax_name2_label' => 'Tax', - '$product.tax_name3_label' => 'Tax', - '$product.unit_cost_label' => 'Unit Cost', - '$quote.valid_until_label' => 'Valid Until', - '$custom_surcharge1_label' => '', - '$custom_surcharge2_label' => '', - '$custom_surcharge3_label' => '', - '$custom_surcharge4_label' => '', - '$quote.balance_due_label' => 'Balance Due', - '$company.id_number_label' => 'ID Number', - '$invoice.po_number_label' => 'PO Number', - '$invoice_total_raw_label' => 'Invoice Total', - '$postal_city_state_label' => 'Postal/City/State', - '$client.vat_number_label' => 'VAT Number', - '$city_state_postal_label' => 'City/State/Postal', - '$contact.full_name_label' => 'Name', - '$contact.last_name_label' => 'Last Name', - '$company.country_2_label' => 'Country', - '$product.product1_label' => '', - '$product.product2_label' => '', - '$product.product3_label' => '', - '$product.product4_label' => '', - '$statement_amount_label' => 'Amount', - '$task.description_label' => 'Description', - '$product.discount_label' => 'Discount', - '$entity_issued_to_label' => 'Invoice issued to', - '$assigned_to_user_label' => 'Name', - '$product.quantity_label' => 'Quantity', - '$total_tax_labels_label' => 'Taxes', - '$total_tax_values_label' => 'Taxes', - '$invoice.discount_label' => 'Discount', - '$invoice.subtotal_label' => 'Subtotal', - '$company.address2_label' => 'Apt/Suite', - '$partial_due_date_label' => 'Due Date', - '$invoice.due_date_label' => 'Due Date', - '$client.id_number_label' => 'ID Number', - '$credit.po_number_label' => 'PO Number', - '$company.address1_label' => 'Street', - '$credit.credit_no_label' => 'Invoice Number', - '$invoice.datetime_label' => 'Date', - '$contact.custom1_label' => '', - '$contact.custom2_label' => '', - '$contact.custom3_label' => '', - '$contact.custom4_label' => '', - '$task.line_total_label' => 'Line Total', - '$line_tax_labels_label' => 'Taxes', - '$line_tax_values_label' => 'Taxes', - '$secondary_color_label' => '', - '$invoice.balance_label' => 'Balance', - '$invoice.custom1_label' => '', - '$invoice.custom2_label' => '', - '$invoice.custom3_label' => '', - '$invoice.custom4_label' => '', - '$company.custom1_label' => '', - '$company.custom2_label' => '', - '$company.custom3_label' => '', - '$company.custom4_label' => '', - '$quote.po_number_label' => 'PO Number', - '$company.website_label' => 'Website', - '$balance_due_raw_label' => 'Balance Due', - '$entity.datetime_label' => 'Date', - '$credit.datetime_label' => 'Date', - '$client.address2_label' => 'Apt/Suite', - '$client.address1_label' => 'Street', - '$user.first_name_label' => 'First Name', - '$created_by_user_label' => 'Name', - '$client.currency_label' => '', - '$company.country_label' => 'Country', - '$company.address_label' => 'Address', - '$tech_hero_image_label' => '', - '$task.tax_name1_label' => 'Tax', - '$task.tax_name2_label' => 'Tax', - '$task.tax_name3_label' => 'Tax', - '$client.balance_label' => 'Account balance', - '$client_balance_label' => 'Account balance', - '$credit.balance_label' => 'Balance', - '$credit_balance_label' => 'Credit Balance', - '$gross_subtotal_label' => 'Subtotal', - '$invoice.amount_label' => 'Total', - '$client.custom1_label' => '', - '$client.custom2_label' => '', - '$client.custom3_label' => '', - '$client.custom4_label' => '', - '$emailSignature_label' => '', - '$invoice.number_label' => 'Invoice Number', - '$quote.quote_no_label' => 'Quote Number', - '$quote.datetime_label' => 'Date', - '$client_address_label' => 'Address', - '$client.address_label' => 'Address', - '$payment_button_label' => 'Pay Now', - '$payment_qrcode_label' => 'Pay Now', - '$client.country_label' => 'Country', - '$user.last_name_label' => 'Last Name', - '$client.website_label' => 'Website', - '$dir_text_align_label' => '', - '$entity_images_label' => '', - '$task.discount_label' => 'Discount', - '$contact.email_label' => 'Email', - '$primary_color_label' => '', - '$credit_amount_label' => 'Credit Amount', - '$invoice.total_label' => 'Invoice Total', - '$invoice.taxes_label' => 'Taxes', - '$quote.custom1_label' => '', - '$quote.custom2_label' => '', - '$quote.custom3_label' => '', - '$quote.custom4_label' => '', - '$company.email_label' => 'Email', - '$client.number_label' => 'Number', - '$company.phone_label' => 'Phone', - '$company.state_label' => 'State/Province', - '$credit.number_label' => 'Credit Number', - '$entity_number_label' => 'Invoice Number', - '$credit_number_label' => 'Invoice Number', - '$global_margin_label' => '', - '$contact.phone_label' => 'Phone', - '$portal_button_label' => 'view_client_portal', - '$paymentButton_label' => 'Pay Now', - '$entity_footer_label' => '', - '$client.lang_2_label' => '', - '$product.date_label' => 'Date', - '$client.email_label' => 'Email', - '$product.item_label' => 'Item', - '$public_notes_label' => 'Public Notes', - '$task.service_label' => 'Service', - '$credit.total_label' => 'Credit Total', - '$net_subtotal_label' => 'Net', - '$paid_to_date_label' => 'Paid to Date', - '$quote.amount_label' => 'Quote Total', - '$company.city_label' => 'City', - '$payment.date_label' => 'Payment Date', - '$client.phone_label' => 'Phone', - '$number_short_label' => 'Invoice #', - '$quote.number_label' => 'Quote Number', - '$invoice.date_label' => 'Invoice Date', - '$company.name_label' => 'Company Name', - '$portalButton_label' => 'view_client_portal', - '$contact.name_label' => 'Contact Name', - '$entity.terms_label' => 'Invoice Terms', - '$client.state_label' => 'State/Province', - '$company.logo_label' => 'Logo', - '$company_logo_label' => 'Logo', - '$payment_link_label' => 'Pay Now', - '$status_logo_label' => '', - '$description_label' => 'Description', - '$product.tax_label' => 'Tax', - '$valid_until_label' => 'Valid Until', - '$your_entity_label' => 'Your Invoice', - '$shipping_label' => 'Shipping', - '$balance_due_label' => 'Balance Due', - '$outstanding_label' => 'Balance Due', - '$partial_due_label' => 'Partial Due', - '$quote.total_label' => 'Total', - '$payment_due_label' => 'Payment due', - '$credit.date_label' => 'Credit Date', - '$invoiceDate_label' => 'Invoice Date', - '$view_button_label' => 'View Invoice', - '$client.city_label' => 'City', - '$spc_qr_code_label' => '', - '$client_name_label' => 'Client Name', - '$client.name_label' => 'Client Name', - '$paymentLink_label' => 'Pay Now', - '$payment_url_label' => 'Pay Now', - '$page_layout_label' => '', - '$task.task1_label' => '', - '$task.task2_label' => '', - '$task.task3_label' => '', - '$task.task4_label' => '', - '$task.hours_label' => 'Hours', - '$amount_due_label' => 'Amount due', - '$amount_raw_label' => 'Amount', - '$invoice_no_label' => 'Invoice Number', - '$quote.date_label' => 'Quote Date', - '$vat_number_label' => 'VAT Number', - '$viewButton_label' => 'View Invoice', - '$portal_url_label' => '', - '$task.date_label' => 'Date', - '$task.rate_label' => 'Rate', - '$task.cost_label' => 'Rate', - '$statement_label' => 'Statement', - '$user_iban_label' => '', - '$signature_label' => '', - '$id_number_label' => 'ID Number', - '$credit_no_label' => 'Invoice Number', - '$font_size_label' => '', - '$view_link_label' => 'View Invoice', - '$page_size_label' => '', - '$country_2_label' => 'Country', - '$firstName_label' => 'First Name', - '$user.name_label' => 'Name', - '$font_name_label' => '', - '$auto_bill_label' => '', - '$payments_label' => 'Payments', - '$task.tax_label' => 'Tax', - '$discount_label' => 'Discount', - '$subtotal_label' => 'Subtotal', - '$company1_label' => '', - '$company2_label' => '', - '$company3_label' => '', - '$company4_label' => '', - '$due_date_label' => 'Due Date', - '$poNumber_label' => 'PO Number', - '$quote_no_label' => 'Quote Number', - '$address2_label' => 'Apt/Suite', - '$address1_label' => 'Street', - '$viewLink_label' => 'View Invoice', - '$autoBill_label' => '', - '$view_url_label' => 'View Invoice', - '$font_url_label' => '', - '$details_label' => 'Details', - '$balance_label' => 'Balance', - '$partial_label' => 'Partial Due', - '$client1_label' => '', - '$client2_label' => '', - '$client3_label' => '', - '$client4_label' => '', - '$dueDate_label' => 'Due Date', - '$invoice_label' => 'Invoice Number', - '$account_label' => 'Company Name', - '$country_label' => 'Country', - '$contact_label' => 'Name', - '$app_url_label' => '', - '$website_label' => 'Website', - '$entity_label' => 'Invoice', - '$thanks_label' => 'Thanks', - '$amount_label' => 'Total', - '$method_label' => 'Method', - '$number_label' => 'Invoice Number', - '$footer_label' => '', - '$client_label' => 'Client Name', - '$email_label' => 'Email', - '$notes_label' => 'Public Notes', - '_rate1_label' => 'Tax', - '_rate2_label' => 'Tax', - '_rate3_label' => 'Tax', - '$taxes_label' => 'Taxes', - '$total_label' => 'Total', - '$phone_label' => 'Phone', - '$terms_label' => 'Invoice Terms', - '$from_label' => 'From', - '$item_label' => 'Item', - '$date_label' => 'Invoice Date', - '$tax_label' => 'Tax', - '$dir_label' => '', - '$to_label' => 'To', - '$show_paid_stamp_label' => '', - '$status_logo_label' => '', - '$show_shipping_address_label' => '', - '$show_shipping_address_block_label' => '', - '$show_shipping_address_visibility_label' => '', - ], + 'labels' => $this->mockTranslatedLabels() +// [ +// '$client.shipping_postal_code_label' => 'Shipping Postal Code', +// '$client.billing_postal_code_label' => 'Postal Code', +// '$company.city_state_postal_label' => 'City/State/Postal', +// '$company.postal_city_state_label' => 'Postal/City/State', +// '$company.postal_city_label' => 'Postal/City', +// '$product.gross_line_total_label' => 'Gross line total', +// '$client.postal_city_state_label' => 'Postal/City/State', +// '$client.postal_city_label' => 'Postal/City', +// '$client.shipping_address1_label' => 'Shipping Street', +// '$client.shipping_address2_label' => 'Shipping Apt/Suite', +// '$client.city_state_postal_label' => 'City/State/Postal', +// '$client.shipping_address_label' => 'Shipping Address', +// '$client.billing_address2_label' => 'Apt/Suite', +// '$client.billing_address1_label' => 'Street', +// '$client.shipping_country_label' => 'Shipping Country', +// '$invoiceninja.whitelabel_label' => '', +// '$client.billing_address_label' => 'Address', +// '$client.billing_country_label' => 'Country', +// '$task.gross_line_total_label' => 'Gross line total', +// '$contact.portal_button_label' => 'view_client_portal', +// '$client.shipping_state_label' => 'Shipping State/Province', +// '$invoice.public_notes_label' => 'Public Notes', +// '$client.shipping_city_label' => 'Shipping City', +// '$client.billing_state_label' => 'State/Province', +// '$product.description_label' => 'Description', +// '$product.product_key_label' => 'Product', +// '$entity.public_notes_label' => 'Public Notes', +// '$invoice.balance_due_label' => 'Balance Due', +// '$client.public_notes_label' => 'Notes', +// '$company.postal_code_label' => 'Postal Code', +// '$client.billing_city_label' => 'City', +// '$secondary_font_name_label' => '', +// '$product.line_total_label' => 'Line Total', +// '$product.tax_amount_label' => 'Tax', +// '$company.vat_number_label' => 'VAT Number', +// '$invoice.invoice_no_label' => 'Invoice Number', +// '$quote.quote_number_label' => 'Quote Number', +// '$client.postal_code_label' => 'Postal Code', +// '$contact.first_name_label' => 'First Name', +// '$secondary_font_url_label' => '', +// '$contact.signature_label' => '', +// '$company_logo_size_label' => '', +// '$product.tax_name1_label' => 'Tax', +// '$product.tax_name2_label' => 'Tax', +// '$product.tax_name3_label' => 'Tax', +// '$product.unit_cost_label' => 'Unit Cost', +// '$quote.valid_until_label' => 'Valid Until', +// '$custom_surcharge1_label' => '', +// '$custom_surcharge2_label' => '', +// '$custom_surcharge3_label' => '', +// '$custom_surcharge4_label' => '', +// '$quote.balance_due_label' => 'Balance Due', +// '$company.id_number_label' => 'ID Number', +// '$invoice.po_number_label' => 'PO Number', +// '$invoice_total_raw_label' => 'Invoice Total', +// '$postal_city_state_label' => 'Postal/City/State', +// '$client.vat_number_label' => 'VAT Number', +// '$city_state_postal_label' => 'City/State/Postal', +// '$contact.full_name_label' => 'Name', +// '$contact.last_name_label' => 'Last Name', +// '$company.country_2_label' => 'Country', +// '$product.product1_label' => '', +// '$product.product2_label' => '', +// '$product.product3_label' => '', +// '$product.product4_label' => '', +// '$statement_amount_label' => 'Amount', +// '$task.description_label' => 'Description', +// '$product.discount_label' => 'Discount', +// '$entity_issued_to_label' => 'Invoice issued to', +// '$assigned_to_user_label' => 'Name', +// '$product.quantity_label' => 'Quantity', +// '$total_tax_labels_label' => 'Taxes', +// '$total_tax_values_label' => 'Taxes', +// '$invoice.discount_label' => 'Discount', +// '$invoice.subtotal_label' => 'Subtotal', +// '$company.address2_label' => 'Apt/Suite', +// '$partial_due_date_label' => 'Due Date', +// '$invoice.due_date_label' => 'Due Date', +// '$client.id_number_label' => 'ID Number', +// '$credit.po_number_label' => 'PO Number', +// '$company.address1_label' => 'Street', +// '$credit.credit_no_label' => 'Invoice Number', +// '$invoice.datetime_label' => 'Date', +// '$contact.custom1_label' => '', +// '$contact.custom2_label' => '', +// '$contact.custom3_label' => '', +// '$contact.custom4_label' => '', +// '$task.line_total_label' => 'Line Total', +// '$line_tax_labels_label' => 'Taxes', +// '$line_tax_values_label' => 'Taxes', +// '$secondary_color_label' => '', +// '$invoice.balance_label' => 'Balance', +// '$invoice.custom1_label' => '', +// '$invoice.custom2_label' => '', +// '$invoice.custom3_label' => '', +// '$invoice.custom4_label' => '', +// '$company.custom1_label' => '', +// '$company.custom2_label' => '', +// '$company.custom3_label' => '', +// '$company.custom4_label' => '', +// '$quote.po_number_label' => 'PO Number', +// '$company.website_label' => 'Website', +// '$balance_due_raw_label' => 'Balance Due', +// '$entity.datetime_label' => 'Date', +// '$credit.datetime_label' => 'Date', +// '$client.address2_label' => 'Apt/Suite', +// '$client.address1_label' => 'Street', +// '$user.first_name_label' => 'First Name', +// '$created_by_user_label' => 'Name', +// '$client.currency_label' => '', +// '$company.country_label' => 'Country', +// '$company.address_label' => 'Address', +// '$tech_hero_image_label' => '', +// '$task.tax_name1_label' => 'Tax', +// '$task.tax_name2_label' => 'Tax', +// '$task.tax_name3_label' => 'Tax', +// '$client.balance_label' => 'Account balance', +// '$client_balance_label' => 'Account balance', +// '$credit.balance_label' => 'Balance', +// '$credit_balance_label' => 'Credit Balance', +// '$gross_subtotal_label' => 'Subtotal', +// '$invoice.amount_label' => 'Total', +// '$client.custom1_label' => '', +// '$client.custom2_label' => '', +// '$client.custom3_label' => '', +// '$client.custom4_label' => '', +// '$emailSignature_label' => '', +// '$invoice.number_label' => 'Invoice Number', +// '$quote.quote_no_label' => 'Quote Number', +// '$quote.datetime_label' => 'Date', +// '$client_address_label' => 'Address', +// '$client.address_label' => 'Address', +// '$payment_button_label' => 'Pay Now', +// '$payment_qrcode_label' => 'Pay Now', +// '$client.country_label' => 'Country', +// '$user.last_name_label' => 'Last Name', +// '$client.website_label' => 'Website', +// '$dir_text_align_label' => '', +// '$entity_images_label' => '', +// '$task.discount_label' => 'Discount', +// '$contact.email_label' => 'Email', +// '$primary_color_label' => '', +// '$credit_amount_label' => 'Credit Amount', +// '$invoice.total_label' => 'Invoice Total', +// '$invoice.taxes_label' => 'Taxes', +// '$quote.custom1_label' => '', +// '$quote.custom2_label' => '', +// '$quote.custom3_label' => '', +// '$quote.custom4_label' => '', +// '$company.email_label' => 'Email', +// '$client.number_label' => 'Number', +// '$company.phone_label' => 'Phone', +// '$company.state_label' => 'State/Province', +// '$credit.number_label' => 'Credit Number', +// '$entity_number_label' => 'Invoice Number', +// '$credit_number_label' => 'Invoice Number', +// '$global_margin_label' => '', +// '$contact.phone_label' => 'Phone', +// '$portal_button_label' => 'view_client_portal', +// '$paymentButton_label' => 'Pay Now', +// '$entity_footer_label' => '', +// '$client.lang_2_label' => '', +// '$product.date_label' => 'Date', +// '$client.email_label' => 'Email', +// '$product.item_label' => 'Item', +// '$public_notes_label' => 'Public Notes', +// '$task.service_label' => 'Service', +// '$credit.total_label' => 'Credit Total', +// '$net_subtotal_label' => 'Net', +// '$paid_to_date_label' => 'Paid to Date', +// '$quote.amount_label' => 'Quote Total', +// '$company.city_label' => 'City', +// '$payment.date_label' => 'Payment Date', +// '$client.phone_label' => 'Phone', +// '$number_short_label' => 'Invoice #', +// '$quote.number_label' => 'Quote Number', +// '$invoice.date_label' => 'Invoice Date', +// '$company.name_label' => 'Company Name', +// '$portalButton_label' => 'view_client_portal', +// '$contact.name_label' => 'Contact Name', +// '$entity.terms_label' => 'Invoice Terms', +// '$client.state_label' => 'State/Province', +// '$company.logo_label' => 'Logo', +// '$company_logo_label' => 'Logo', +// '$payment_link_label' => 'Pay Now', +// '$status_logo_label' => '', +// '$description_label' => 'Description', +// '$product.tax_label' => 'Tax', +// '$valid_until_label' => 'Valid Until', +// '$your_entity_label' => 'Your Invoice', +// '$shipping_label' => 'Shipping', +// '$balance_due_label' => 'Balance Due', +// '$outstanding_label' => 'Balance Due', +// '$partial_due_label' => 'Partial Due', +// '$quote.total_label' => 'Total', +// '$payment_due_label' => 'Payment due', +// '$credit.date_label' => 'Credit Date', +// '$invoiceDate_label' => 'Invoice Date', +// '$view_button_label' => 'View Invoice', +// '$client.city_label' => 'City', +// '$spc_qr_code_label' => '', +// '$client_name_label' => 'Client Name', +// '$client.name_label' => 'Client Name', +// '$paymentLink_label' => 'Pay Now', +// '$payment_url_label' => 'Pay Now', +// '$page_layout_label' => '', +// '$task.task1_label' => '', +// '$task.task2_label' => '', +// '$task.task3_label' => '', +// '$task.task4_label' => '', +// '$task.hours_label' => 'Hours', +// '$amount_due_label' => 'Amount due', +// '$amount_raw_label' => 'Amount', +// '$invoice_no_label' => 'Invoice Number', +// '$quote.date_label' => 'Quote Date', +// '$vat_number_label' => 'VAT Number', +// '$viewButton_label' => 'View Invoice', +// '$portal_url_label' => '', +// '$task.date_label' => 'Date', +// '$task.rate_label' => 'Rate', +// '$task.cost_label' => 'Rate', +// '$statement_label' => 'Statement', +// '$user_iban_label' => '', +// '$signature_label' => '', +// '$id_number_label' => 'ID Number', +// '$credit_no_label' => 'Invoice Number', +// '$font_size_label' => '', +// '$view_link_label' => 'View Invoice', +// '$page_size_label' => '', +// '$country_2_label' => 'Country', +// '$firstName_label' => 'First Name', +// '$user.name_label' => 'Name', +// '$font_name_label' => '', +// '$auto_bill_label' => '', +// '$payments_label' => 'Payments', +// '$task.tax_label' => 'Tax', +// '$discount_label' => 'Discount', +// '$subtotal_label' => 'Subtotal', +// '$company1_label' => '', +// '$company2_label' => '', +// '$company3_label' => '', +// '$company4_label' => '', +// '$due_date_label' => 'Due Date', +// '$poNumber_label' => 'PO Number', +// '$quote_no_label' => 'Quote Number', +// '$address2_label' => 'Apt/Suite', +// '$address1_label' => 'Street', +// '$viewLink_label' => 'View Invoice', +// '$autoBill_label' => '', +// '$view_url_label' => 'View Invoice', +// '$font_url_label' => '', +// '$details_label' => 'Details', +// '$balance_label' => 'Balance', +// '$partial_label' => 'Partial Due', +// '$client1_label' => '', +// '$client2_label' => '', +// '$client3_label' => '', +// '$client4_label' => '', +// '$dueDate_label' => 'Due Date', +// '$invoice_label' => 'Invoice Number', +// '$account_label' => 'Company Name', +// '$country_label' => 'Country', +// '$contact_label' => 'Name', +// '$app_url_label' => '', +// '$website_label' => 'Website', +// '$entity_label' => 'Invoice', +// '$thanks_label' => 'Thanks', +// '$amount_label' => 'Total', +// '$method_label' => 'Method', +// '$number_label' => 'Invoice Number', +// '$footer_label' => '', +// '$client_label' => 'Client Name', +// '$email_label' => 'Email', +// '$notes_label' => 'Public Notes', +// '_rate1_label' => 'Tax', +// '_rate2_label' => 'Tax', +// '_rate3_label' => 'Tax', +// '$taxes_label' => 'Taxes', +// '$total_label' => 'Total', +// '$phone_label' => 'Phone', +// '$terms_label' => 'Invoice Terms', +// '$from_label' => 'From', +// '$item_label' => 'Item', +// '$date_label' => 'Invoice Date', +// '$tax_label' => 'Tax', +// '$dir_label' => '', +// '$to_label' => 'To', +// '$show_paid_stamp_label' => '', +// '$status_logo_label' => '', +// '$show_shipping_address_label' => '', +// '$show_shipping_address_block_label' => '', +// '$show_shipping_address_visibility_label' => '', +// ], ]; } @@ -1006,7 +980,7 @@ EPD '$quote.amount_label' => ctrans('texts.amount'), '$description_label' => ctrans('texts.description'), '$product.tax_label' => ctrans('texts.tax'), - '$your_entity_label' => ctrans('texts.your_quote'), + '$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'), @@ -1090,7 +1064,7 @@ EPD '$balance_label' => ctrans('texts.balance'), '$partial_label' => ctrans('texts.partial'), '$footer_label' => ctrans('texts.footer'), - '$entity_label' => ctrans('texts.quote'), + '$entity_label' => ctrans("texts.{$this->entity_string}"), '$thanks_label' => ctrans('texts.thanks'), '$method_label' => ctrans('texts.method'), '$client_label' => ctrans('texts.client'), @@ -1112,7 +1086,533 @@ EPD '$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' => 'http://ninja.test:8000/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, + '_rate1' => '', + '_rate2' => '', + '_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'), + ]; + } } diff --git a/app/Services/PdfMaker/Design.php b/app/Services/PdfMaker/Design.php index 2dba44efc7cb..eccdb0d4dfc3 100644 --- a/app/Services/PdfMaker/Design.php +++ b/app/Services/PdfMaker/Design.php @@ -681,8 +681,6 @@ class Design extends BaseDesign $table_type = "{$type}_columns"; - nlog($table_type); - if($type == 'product' && $this->entity instanceof Quote && !$this->settings_object->getSetting('sync_invoice_quote_columns')) $table_type = "product_quote_columns"; diff --git a/app/Utils/VendorHtmlEngine.php b/app/Utils/VendorHtmlEngine.php index aab9b9fb3302..4eac57ac59bc 100644 --- a/app/Utils/VendorHtmlEngine.php +++ b/app/Utils/VendorHtmlEngine.php @@ -511,7 +511,7 @@ class VendorHtmlEngine $data['values'][$key] = $value['value']; $data['labels'][$key.'_label'] = $value['label']; } - +nlog($data); return $data; }