diff --git a/app/Helpers/Email/InvoiceEmail.php b/app/Helpers/Email/InvoiceEmail.php index 58d92f747d8f..9fad11927ea8 100644 --- a/app/Helpers/Email/InvoiceEmail.php +++ b/app/Helpers/Email/InvoiceEmail.php @@ -11,6 +11,7 @@ namespace App\Helpers\Email; use App\Helpers\Email\EntityEmailInterface; use App\Models\Invoice; use App\Models\InvoiceInvitation; +use App\Utils\HtmlEngine; use App\Utils\Number; class InvoiceEmail extends EmailBuilder @@ -69,7 +70,7 @@ class InvoiceEmail extends EmailBuilder $this->setTemplate($client->getSetting('email_style')) ->setContact($contact) - ->setVariables($invoice->makeValues($contact)) + ->setVariables((new HtmlEngine($invitation))->makeValues()) ->setSubject($subject_template) ->setBody($body_template) ->setFooter("".ctrans('texts.view_invoice').'') diff --git a/app/Helpers/Email/QuoteEmail.php b/app/Helpers/Email/QuoteEmail.php index a1f91da900f2..c98f1d0532f3 100644 --- a/app/Helpers/Email/QuoteEmail.php +++ b/app/Helpers/Email/QuoteEmail.php @@ -10,6 +10,7 @@ namespace App\Helpers\Email; use App\Models\Quote; use App\Models\QuoteInvitation; +use App\Utils\HtmlEngine; class QuoteEmail extends EmailBuilder { @@ -56,7 +57,7 @@ class QuoteEmail extends EmailBuilder $this->setTemplate($quote->client->getSetting('email_style')) ->setContact($contact) ->setFooter("Quote Link") - ->setVariables($quote->makeValues($contact)) + ->setVariables((new HtmlEngine($invitation))->makeValues()) ->setSubject($subject_template) ->setBody($body_template); diff --git a/app/Jobs/Credit/EmailCredit.php b/app/Jobs/Credit/EmailCredit.php deleted file mode 100644 index 7356c4002070..000000000000 --- a/app/Jobs/Credit/EmailCredit.php +++ /dev/null @@ -1,101 +0,0 @@ -credit = $credit; - - $this->company = $company; - } - - /** - * Execute the job. - * - * - * @return void - */ - public function handle() - { - //todo - change runtime config of mail driver if necessary - MultiDB::setDb($this->company->db); - - $this->settings = $this->credit->client->getMergedSettings(); - - $template_style = $this->credit->client->getSetting('email_style'); - - $this->setMailDriver(); - - $this->credit->invitations->each(function ($invitation) use ($template_style) { - - if ($invitation->contact->send_email && $invitation->contact->email) - { - - $message_array = $this->credit->getEmailData('', $invitation->contact); - $message_array['title'] = &$message_array['subject']; - $message_array['footer'] = 'Sent to '.$invitation->contact->present()->name(); - - MailRouter::dispatch(new TemplateEmail($message_array, $template_style, $invitation->contact->user, $invitation->contact->client), $invitation->company, $invitation->contact); - - //fire any events - event(new CreditWasEmailed($this->credit, $this->company, Ninja::eventVars())); - } - - }); - } - - private function logMailError($errors) - { - SystemLogger::dispatch( - $errors, - SystemLog::CATEGORY_MAIL, - SystemLog::EVENT_MAIL_SEND, - SystemLog::TYPE_FAILURE, - $this->credit->client - ); - } -} diff --git a/app/Jobs/Invoice/EmailInvoice.php b/app/Jobs/Invoice/EmailInvoice.php deleted file mode 100644 index 8a3a92183f9b..000000000000 --- a/app/Jobs/Invoice/EmailInvoice.php +++ /dev/null @@ -1,114 +0,0 @@ -company = $company; - - $this->invoice_invitation = $invoice_invitation; - - $this->email_builder = $email_builder; - - $this->settings = $invoice_invitation->contact->client->getMergedSettings(); - } - - /** - * Execute the job. - * - * - * @return void - */ - public function handle() - { - - MultiDB::setDB($this->company->db); - - $this->setMailDriver(); - - try { - Mail::to($this->invoice_invitation->contact->email, $this->invoice_invitation->contact->present()->name()) - ->send( - new TemplateEmail( - $this->email_builder, - $this->invoice_invitation->contact->user, - $this->invoice_invitation->contact->client - ) - ); - } catch (\Swift_TransportException $e) { - event(new InvoiceWasEmailedAndFailed($this->invoice_invitation->invoice, $this->company, $e->getMessage(), Ninja::eventVars())); - } - - if (count(Mail::failures()) > 0) { - $this->logMailError(Mail::failures(), $this->invoice->client); - } else { - event(new InvoiceWasEmailed($this->invoice_invitation, $this->company, Ninja::eventVars())); - } - - /* Mark invoice sent */ - $this->invoice_invitation->invoice->service()->markSent()->save(); - } - - public function failed($exception = null) - { - info('the job failed'); - - $job_failure = new EmailInvoiceFailure(); - $job_failure->string_metric5 = get_class($this); - $job_failure->string_metric6 = $exception->getMessage(); - - LightLogs::create($job_failure) - ->batch(); - - } -} diff --git a/app/Jobs/Quote/EmailQuote.php b/app/Jobs/Quote/EmailQuote.php deleted file mode 100644 index 596944d5b12c..000000000000 --- a/app/Jobs/Quote/EmailQuote.php +++ /dev/null @@ -1,87 +0,0 @@ -quote_invitation = $quote_invitation; - $this->email_builder = $email_builder; - $this->company = $company; - } - - /** - * Execute the job. - * - * - * @return void - */ - public function handle() - { - MultiDB::setDb($this->company->db); - - $this->settings = $this->quote_invitation->contact->client->getMergedSettings(); - - $this->setMailDriver(); - - Mail::to($this->quote_invitation->contact->email, $this->quote_invitation->contact->present()->name()) - ->send( - new TemplateEmail( - $this->email_builder, - $this->quote_invitation->contact->user, - $this->quote_invitation->contact->client - ) - ); - - if (count(Mail::failures()) > 0) { - return $this->logMailError(Mail::failures()); - } - - $this->quote_invitation->quote->service()->markSent()->save(); - } - - private function logMailError($errors) - { - SystemLogger::dispatch( - $errors, - SystemLog::CATEGORY_MAIL, - SystemLog::EVENT_MAIL_SEND, - SystemLog::TYPE_FAILURE, - $this->quote->client - ); - } -} diff --git a/app/Mail/Engine/CreditEmailEngine.php b/app/Mail/Engine/CreditEmailEngine.php index 2ee6aed08493..019248b658ed 100644 --- a/app/Mail/Engine/CreditEmailEngine.php +++ b/app/Mail/Engine/CreditEmailEngine.php @@ -11,6 +11,7 @@ namespace App\Mail\Engine; +use App\Utils\HtmlEngine; use App\Utils\Number; class CreditEmailEngine extends BaseEmailEngine @@ -71,7 +72,7 @@ class CreditEmailEngine extends BaseEmailEngine $this->setTemplate($this->client->getSetting('email_style')) ->setContact($this->contact) - ->setVariables($this->credit->makeValues($this->contact))//move make values into the htmlengine + ->setVariables((new HtmlEngine($this->invitation))->makeValues())//move make values into the htmlengine ->setSubject($subject_template) ->setBody($body_template) ->setFooter("".ctrans('texts.view_credit').'') diff --git a/app/Mail/Engine/InvoiceEmailEngine.php b/app/Mail/Engine/InvoiceEmailEngine.php index 26feb3dd7ebb..90809330daa3 100644 --- a/app/Mail/Engine/InvoiceEmailEngine.php +++ b/app/Mail/Engine/InvoiceEmailEngine.php @@ -11,6 +11,7 @@ namespace App\Mail\Engine; +use App\Utils\HtmlEngine; use App\Utils\Number; class InvoiceEmailEngine extends BaseEmailEngine @@ -71,7 +72,7 @@ class InvoiceEmailEngine extends BaseEmailEngine $this->setTemplate($this->client->getSetting('email_style')) ->setContact($this->contact) - ->setVariables($this->invoice->makeValues($this->contact))//move make values into the htmlengine + ->setVariables((new HtmlEngine($this->invitation))->makeValues())//move make values into the htmlengine ->setSubject($subject_template) ->setBody($body_template) ->setFooter("".ctrans('texts.view_invoice').'') diff --git a/app/Mail/Engine/QuoteEmailEngine.php b/app/Mail/Engine/QuoteEmailEngine.php index 698127a98802..6121787c22b5 100644 --- a/app/Mail/Engine/QuoteEmailEngine.php +++ b/app/Mail/Engine/QuoteEmailEngine.php @@ -71,7 +71,7 @@ class QuoteEmailEngine extends BaseEmailEngine $this->setTemplate($this->client->getSetting('email_style')) ->setContact($this->contact) - ->setVariables($this->quote->makeValues($this->contact))//move make values into the htmlengine + ->setVariables((new HtmlEngine($this->invitation))->makeValues())//move make values into the htmlengine ->setSubject($subject_template) ->setBody($body_template) ->setFooter("".ctrans('texts.view_quote').'') diff --git a/app/Models/Invoice.php b/app/Models/Invoice.php index fb69794ccb0d..0d4f8df9f74f 100644 --- a/app/Models/Invoice.php +++ b/app/Models/Invoice.php @@ -29,7 +29,6 @@ use App\Services\Ledger\LedgerService; use App\Utils\Ninja; use App\Utils\Number; use App\Utils\Traits\Archivable; -use App\Utils\Traits\InvoiceEmailBuilder; use App\Utils\Traits\Invoice\ActionsInvoice; use App\Utils\Traits\MakesDates; use App\Utils\Traits\MakesInvoiceValues; @@ -50,7 +49,6 @@ class Invoice extends BaseModel use MakesDates; use PresentableTrait; use MakesInvoiceValues; - use InvoiceEmailBuilder; use MakesReminders; use ActionsInvoice; diff --git a/app/Utils/HtmlEngine.php b/app/Utils/HtmlEngine.php index 5b67d43da7f5..f5d0953b5284 100644 --- a/app/Utils/HtmlEngine.php +++ b/app/Utils/HtmlEngine.php @@ -374,6 +374,19 @@ class HtmlEngine return $data; } + public function makeValues() :array + { + $data = []; + + $values = $this->buildEntityDataArray(); + + foreach ($values as $key => $value) { + $data[$key] = $value['value']; + } + + return $data; + } + public function generateLabelsAndValues() { $data = []; diff --git a/app/Utils/Traits/InvoiceEmailBuilder.php b/app/Utils/Traits/InvoiceEmailBuilder.php deleted file mode 100644 index c263e0808a08..000000000000 --- a/app/Utils/Traits/InvoiceEmailBuilder.php +++ /dev/null @@ -1,134 +0,0 @@ -client; - - if (! $reminder_template) { - $reminder_template = $this->calculateTemplate('invoice'); - } - - //Need to determine which email template we are producing - return $this->generateTemplateData($reminder_template, $contact); - } - - private function generateTemplateData(string $reminder_template, $contact) :array - { - $data = []; - - $client = $this->client; - - $body_template = $client->getSetting('email_template_'.$reminder_template); - - /* Use default translations if a custom message has not been set*/ - if (iconv_strlen($body_template) == 0) { - $body_template = trans('texts.invoice_message', ['amount'=>$this->present()->amount(), 'account'=>$this->company->present()->name()], null, $this->client->locale()); - } - - $subject_template = $client->getSetting('email_subject_'.$reminder_template); - - if (iconv_strlen($subject_template) == 0) { - if ($reminder_template == 'invoice') { - $subject_template = trans('texts.invoice_subject', ['number'=>$this->present()->invoice_number(), 'account'=>$this->company->present()->name()], null, $this->client->locale()); - } else { - $subject_template = trans('texts.reminder_subject', ['number'=>$this->present()->invoice_number(), 'account'=>$this->company->present()->name()], null, $this->client->locale()); - } - } - - $data['body'] = $this->parseTemplate($body_template, true, $contact); - - $data['subject'] = $this->parseTemplate($subject_template, false, $contact); - - if ($client->getSetting('pdf_email_attachment') !== false) { - $data['files'][] = $this->pdf_file_path(); - } - - return $data; - } - - private function parseTemplate(string $template_data, bool $is_markdown = true, $contact = null) :string - { - $invoice_variables = $this->makeValues($contact); - - $data = strtr($template_data, $invoice_variables); - - //process markdown - if ($is_markdown) { - $converter = new CommonMarkConverter([ - 'html_input' => 'allow', - 'allow_unsafe_links' => true, - ]); - - $data = $converter->convertToHtml($data); - } - - return $data; - } - - // private function calculateTemplate() :string - // { - // //if invoice is currently a draft, or being marked as sent, this will be the initial email - // $client = $this->client; - - // //if the invoice - // if ($this->status_id == Invoice::STATUS_DRAFT || Carbon::parse($this->due_date) > now()) { - // return 'invoice'; - // } elseif ($client->getSetting('enable_reminder1') !== false && $this->inReminderWindow($client->getSetting('schedule_reminder1'), $client->getSetting('num_days_reminder1'))) { - // return 'template1'; - // } elseif ($client->getSetting('enable_reminder2') !== false && $this->inReminderWindow($client->getSetting('schedule_reminder2'), $client->getSetting('num_days_reminder2'))) { - // return 'template2'; - // } elseif ($client->getSetting('enable_reminder3') !== false && $this->inReminderWindow($client->getSetting('schedule_reminder3'), $client->getSetting('num_days_reminder3'))) { - // return 'template3'; - // } else { - // return 'invoice'; - // } - - // //also implement endless reminders here - // } - - // private function inReminderWindow($schedule_reminder, $num_days_reminder) - // { - // switch ($schedule_reminder) { - // case 'after_invoice_date': - // return Carbon::parse($this->date)->addDays($num_days_reminder)->startOfDay()->eq(Carbon::now()->startOfDay()); - // break; - // case 'before_due_date': - // return Carbon::parse($this->due_date)->subDays($num_days_reminder)->startOfDay()->eq(Carbon::now()->startOfDay()); - // break; - // case 'after_due_date': - // return Carbon::parse($this->due_date)->addDays($num_days_reminder)->startOfDay()->eq(Carbon::now()->startOfDay()); - // break; - // default: - // # code... - // break; - // } - // } -} diff --git a/app/Utils/Traits/MakesInvoiceHtml.php b/app/Utils/Traits/MakesInvoiceHtml.php index 72dbca2f8dc1..3c747ebb21f1 100644 --- a/app/Utils/Traits/MakesInvoiceHtml.php +++ b/app/Utils/Traits/MakesInvoiceHtml.php @@ -33,45 +33,45 @@ trait MakesInvoiceHtml * * @return string The invoice string in HTML format */ - public function generateEntityHtml(Designer $designer, $entity, $contact = null) :string - { - $entity->load('client'); + // public function generateEntityHtml(Designer $designer, $entity, $contact = null) :string + // { + // $entity->load('client'); - $client = $entity->client; + // $client = $entity->client; - App::setLocale($client->preferredLocale()); + // App::setLocale($client->preferredLocale()); - $values_and_labels = $entity->buildLabelsAndValues($contact); + // $values_and_labels = $entity->buildLabelsAndValues($contact); - $designer->build(); + // $designer->build(); - $data = []; - $data['entity'] = $entity; - $data['lang'] = $client->preferredLocale(); - $data['includes'] = $designer->getIncludes(); - $data['header'] = $designer->getHeader(); - $data['body'] = $designer->getBody(); - $data['footer'] = $designer->getFooter(); + // $data = []; + // $data['entity'] = $entity; + // $data['lang'] = $client->preferredLocale(); + // $data['includes'] = $designer->getIncludes(); + // $data['header'] = $designer->getHeader(); + // $data['body'] = $designer->getBody(); + // $data['footer'] = $designer->getFooter(); - $html = view('pdf.stub', $data)->render(); + // $html = view('pdf.stub', $data)->render(); - $html = $this->parseLabelsAndValues($values_and_labels['labels'], $values_and_labels['values'], $html); + // $html = $this->parseLabelsAndValues($values_and_labels['labels'], $values_and_labels['values'], $html); - return $html; - } + // return $html; + // } - public function generateEmailEntityHtml($entity, $content, $contact = null) :string - { - $entity->load('client'); + // public function generateEmailEntityHtml($entity, $content, $contact = null) :string + // { + // $entity->load('client'); - $client = $entity->client; + // $client = $entity->client; - App::setLocale($client->preferredLocale()); + // App::setLocale($client->preferredLocale()); - $data = $entity->buildLabelsAndValues($contact); + // $data = $entity->buildLabelsAndValues($contact); - return $this->parseLabelsAndValues($data['labels'], $data['values'], $content); - } + // return $this->parseLabelsAndValues($data['labels'], $data['values'], $content); + // } private function parseLabelsAndValues($labels, $values, $section) :string { diff --git a/app/Utils/Traits/MakesInvoiceValues.php b/app/Utils/Traits/MakesInvoiceValues.php index 6c518a981781..c4f02543c46a 100644 --- a/app/Utils/Traits/MakesInvoiceValues.php +++ b/app/Utils/Traits/MakesInvoiceValues.php @@ -157,300 +157,300 @@ trait MakesInvoiceValues return $data; } - public function buildLabelsAndValues($contact) - { - $data = []; + // public function buildLabelsAndValues($contact) + // { + // $data = []; - $values = $this->makeLabelsAndValues($contact); + // $values = $this->makeLabelsAndValues($contact); - foreach ($values as $key => $value) { - $data['values'][$key] = $value['value']; - $data['labels'][$key.'_label'] = $value['label']; - } + // foreach ($values as $key => $value) { + // $data['values'][$key] = $value['value']; + // $data['labels'][$key.'_label'] = $value['label']; + // } - return $data; - } + // return $data; + // } - private function makeLabelsAndValues($contact = null) :array - { - if (! $this->client->currency() || ! $this->client) { - throw new \Exception(debug_backtrace()[1]['function'], 1); - exit; - } + // private function makeLabelsAndValues($contact = null) :array + // { + // if (! $this->client->currency() || ! $this->client) { + // throw new \Exception(debug_backtrace()[1]['function'], 1); + // exit; + // } - $settings = $this->client->getMergedSettings(); + // $settings = $this->client->getMergedSettings(); - if (! $contact) { - $contact = $this->client->primary_contact()->first(); - } + // if (! $contact) { + // $contact = $this->client->primary_contact()->first(); + // } - $calc = $this->calc(); - $invitation = $this->invitations->where('client_contact_id', $contact->id)->first(); + // $calc = $this->calc(); + // $invitation = $this->invitations->where('client_contact_id', $contact->id)->first(); - $data = []; - $data['$tax'] = ['value' => '', 'label' => ctrans('texts.tax')]; - $data['$app_url'] = ['value' => $this->generateAppUrl(), 'label' => '']; - $data['$from'] = ['value' => '', 'label' => ctrans('texts.from')]; - $data['$to'] = ['value' => '', 'label' => ctrans('texts.to')]; - $data['$total_tax_labels'] = ['value' => $this->totalTaxLabels(), 'label' => ctrans('texts.taxes')]; - $data['$total_tax_values'] = ['value' => $this->totalTaxValues(), 'label' => ctrans('texts.taxes')]; - $data['$line_tax_labels'] = ['value' => $this->lineTaxLabels(), 'label' => ctrans('texts.taxes')]; - $data['$line_tax_values'] = ['value' => $this->lineTaxValues(), 'label' => ctrans('texts.taxes')]; - $data['$date'] = ['value' => $this->date ?: ' ', 'label' => ctrans('texts.date')]; - //$data['$invoice_date'] = ['value' => $this->date ?: ' ', 'label' => ctrans('texts.invoice_date')]; - $data['$invoice.date'] = &$data['$date']; - $data['$invoice.due_date'] = ['value' => $this->due_date ?: ' ', 'label' => ctrans('texts.due_date')]; - $data['$due_date'] = &$data['$invoice.due_date']; - $data['$invoice.number'] = ['value' => $this->number ?: ' ', 'label' => ctrans('texts.invoice_number')]; - $data['$invoice.po_number'] = ['value' => $this->po_number ?: ' ', 'label' => ctrans('texts.po_number')]; - $data['$line_taxes'] = ['value' => $this->makeLineTaxes() ?: ' ', 'label' => ctrans('texts.taxes')]; - $data['$invoice.line_taxes'] = &$data['$line_taxes']; - $data['$total_taxes'] = ['value' => $this->makeTotalTaxes() ?: ' ', 'label' => ctrans('texts.taxes')]; - $data['$invoice.total_taxes'] = &$data['$total_taxes']; + // $data = []; + // $data['$tax'] = ['value' => '', 'label' => ctrans('texts.tax')]; + // $data['$app_url'] = ['value' => $this->generateAppUrl(), 'label' => '']; + // $data['$from'] = ['value' => '', 'label' => ctrans('texts.from')]; + // $data['$to'] = ['value' => '', 'label' => ctrans('texts.to')]; + // $data['$total_tax_labels'] = ['value' => $this->totalTaxLabels(), 'label' => ctrans('texts.taxes')]; + // $data['$total_tax_values'] = ['value' => $this->totalTaxValues(), 'label' => ctrans('texts.taxes')]; + // $data['$line_tax_labels'] = ['value' => $this->lineTaxLabels(), 'label' => ctrans('texts.taxes')]; + // $data['$line_tax_values'] = ['value' => $this->lineTaxValues(), 'label' => ctrans('texts.taxes')]; + // $data['$date'] = ['value' => $this->date ?: ' ', 'label' => ctrans('texts.date')]; + // //$data['$invoice_date'] = ['value' => $this->date ?: ' ', 'label' => ctrans('texts.invoice_date')]; + // $data['$invoice.date'] = &$data['$date']; + // $data['$invoice.due_date'] = ['value' => $this->due_date ?: ' ', 'label' => ctrans('texts.due_date')]; + // $data['$due_date'] = &$data['$invoice.due_date']; + // $data['$invoice.number'] = ['value' => $this->number ?: ' ', 'label' => ctrans('texts.invoice_number')]; + // $data['$invoice.po_number'] = ['value' => $this->po_number ?: ' ', 'label' => ctrans('texts.po_number')]; + // $data['$line_taxes'] = ['value' => $this->makeLineTaxes() ?: ' ', 'label' => ctrans('texts.taxes')]; + // $data['$invoice.line_taxes'] = &$data['$line_taxes']; + // $data['$total_taxes'] = ['value' => $this->makeTotalTaxes() ?: ' ', 'label' => ctrans('texts.taxes')]; + // $data['$invoice.total_taxes'] = &$data['$total_taxes']; - if ($this instanceof Invoice) { - $data['$entity_label'] = ['value' => '', 'label' => ctrans('texts.invoice')]; - $data['$number'] = ['value' => $this->number ?: ' ', 'label' => ctrans('texts.invoice_number')]; - $data['$entity.terms'] = ['value' => $this->terms ?: ' ', 'label' => ctrans('texts.invoice_terms')]; - $data['$terms'] = &$data['$entity.terms']; + // if ($this instanceof Invoice) { + // $data['$entity_label'] = ['value' => '', 'label' => ctrans('texts.invoice')]; + // $data['$number'] = ['value' => $this->number ?: ' ', 'label' => ctrans('texts.invoice_number')]; + // $data['$entity.terms'] = ['value' => $this->terms ?: ' ', 'label' => ctrans('texts.invoice_terms')]; + // $data['$terms'] = &$data['$entity.terms']; - if($invitation) - $data['$view_link'] = ['value' => ''.ctrans('texts.view_invoice').'', 'label' => ctrans('texts.view_invoice')]; - // $data['$view_link'] = ['value' => $invitation->getLink(), 'label' => ctrans('texts.view_invoice')]; - } + // if($invitation) + // $data['$view_link'] = ['value' => ''.ctrans('texts.view_invoice').'', 'label' => ctrans('texts.view_invoice')]; + // // $data['$view_link'] = ['value' => $invitation->getLink(), 'label' => ctrans('texts.view_invoice')]; + // } - if ($this instanceof Quote) { - $data['$entity_label'] = ['value' => '', 'label' => ctrans('texts.quote')]; - $data['$number'] = ['value' => $this->number ?: ' ', 'label' => ctrans('texts.quote_number')]; - $data['$entity.terms'] = ['value' => $this->terms ?: ' ', 'label' => ctrans('texts.quote_terms')]; - $data['$terms'] = &$data['$entity.terms']; + // if ($this instanceof Quote) { + // $data['$entity_label'] = ['value' => '', 'label' => ctrans('texts.quote')]; + // $data['$number'] = ['value' => $this->number ?: ' ', 'label' => ctrans('texts.quote_number')]; + // $data['$entity.terms'] = ['value' => $this->terms ?: ' ', 'label' => ctrans('texts.quote_terms')]; + // $data['$terms'] = &$data['$entity.terms']; - if($invitation) - $data['$view_link'] = ['value' => ''.ctrans('texts.view_quote').'', 'label' => ctrans('texts.view_quote')]; - // $data['$view_link'] = ['value' => $invitation->getLink(), 'label' => ctrans('texts.view_quote')]; - } + // if($invitation) + // $data['$view_link'] = ['value' => ''.ctrans('texts.view_quote').'', 'label' => ctrans('texts.view_quote')]; + // // $data['$view_link'] = ['value' => $invitation->getLink(), 'label' => ctrans('texts.view_quote')]; + // } - if ($this instanceof Credit) { - $data['$entity_label'] = ['value' => '', 'label' => ctrans('texts.credit')]; - $data['$number'] = ['value' => $this->number ?: ' ', 'label' => ctrans('texts.credit_number')]; - $data['$entity.terms'] = ['value' => $this->terms ?: ' ', 'label' => ctrans('texts.credit_terms')]; - $data['$terms'] = &$data['$entity.terms']; + // if ($this instanceof Credit) { + // $data['$entity_label'] = ['value' => '', 'label' => ctrans('texts.credit')]; + // $data['$number'] = ['value' => $this->number ?: ' ', 'label' => ctrans('texts.credit_number')]; + // $data['$entity.terms'] = ['value' => $this->terms ?: ' ', 'label' => ctrans('texts.credit_terms')]; + // $data['$terms'] = &$data['$entity.terms']; - if($invitation) - $data['$view_link'] = ['value' => ''.ctrans('texts.view_credit').'', 'label' => ctrans('texts.view_credit')]; - // $data['$view_link'] = ['value' => $invitation->getLink(), 'label' => ctrans('texts.view_credit')]; - } + // if($invitation) + // $data['$view_link'] = ['value' => ''.ctrans('texts.view_credit').'', 'label' => ctrans('texts.view_credit')]; + // // $data['$view_link'] = ['value' => $invitation->getLink(), 'label' => ctrans('texts.view_credit')]; + // } - $data['$entity_number'] = &$data['$number']; + // $data['$entity_number'] = &$data['$number']; - $data['$invoice.discount'] = ['value' => Number::formatMoney($calc->getTotalDiscount(), $this->client) ?: ' ', 'label' => ctrans('texts.discount')]; - $data['$discount'] = &$data['$invoice.discount']; - $data['$subtotal'] = ['value' => Number::formatMoney($calc->getSubTotal(), $this->client) ?: ' ', 'label' => ctrans('texts.subtotal')]; - $data['$invoice.subtotal'] = &$data['$subtotal']; - $data['$invoice.balance_due'] = ['value' => Number::formatMoney($this->balance, $this->client) ?: ' ', 'label' => ctrans('texts.balance_due')]; - $data['$quote.balance_due'] = &$data['$invoice.balance_due']; - $data['$balance_due'] = &$data['$invoice.balance_due']; - $data['$invoice.partial_due'] = ['value' => Number::formatMoney($this->partial, $this->client) ?: ' ', 'label' => ctrans('texts.partial_due')]; - $data['$total'] = ['value' => Number::formatMoney($calc->getTotal(), $this->client) ?: ' ', 'label' => ctrans('texts.total')]; - $data['$amount'] = &$data['$total']; - $data['$quote.total'] = &$data['$total']; - $data['$invoice.total'] = ['value' => Number::formatMoney($calc->getTotal(), $this->client) ?: ' ', 'label' => ctrans('texts.invoice_total')]; - $data['$invoice.amount'] = &$data['$total']; - $data['$quote.amount'] = ['value' => Number::formatMoney($calc->getTotal(), $this->client) ?: ' ', 'label' => ctrans('texts.quote_total')]; - $data['$credit.total'] = ['value' => Number::formatMoney($calc->getTotal(), $this->client) ?: ' ', 'label' => ctrans('texts.credit_total')]; - $data['$credit.number'] = ['value' => $this->number ?: ' ', 'label' => ctrans('texts.credit_number')]; - $data['$credit.total'] = &$data['$credit.total']; - $data['$credit.po_number'] = &$data['$invoice.po_number']; - $data['$credit.date'] = ['value' => $this->date, 'label' => ctrans('texts.credit_date')]; - $data['$balance'] = ['value' => Number::formatMoney($calc->getBalance(), $this->client) ?: ' ', 'label' => ctrans('texts.balance')]; - $data['$credit.balance'] = &$data['$balance']; + // $data['$invoice.discount'] = ['value' => Number::formatMoney($calc->getTotalDiscount(), $this->client) ?: ' ', 'label' => ctrans('texts.discount')]; + // $data['$discount'] = &$data['$invoice.discount']; + // $data['$subtotal'] = ['value' => Number::formatMoney($calc->getSubTotal(), $this->client) ?: ' ', 'label' => ctrans('texts.subtotal')]; + // $data['$invoice.subtotal'] = &$data['$subtotal']; + // $data['$invoice.balance_due'] = ['value' => Number::formatMoney($this->balance, $this->client) ?: ' ', 'label' => ctrans('texts.balance_due')]; + // $data['$quote.balance_due'] = &$data['$invoice.balance_due']; + // $data['$balance_due'] = &$data['$invoice.balance_due']; + // $data['$invoice.partial_due'] = ['value' => Number::formatMoney($this->partial, $this->client) ?: ' ', 'label' => ctrans('texts.partial_due')]; + // $data['$total'] = ['value' => Number::formatMoney($calc->getTotal(), $this->client) ?: ' ', 'label' => ctrans('texts.total')]; + // $data['$amount'] = &$data['$total']; + // $data['$quote.total'] = &$data['$total']; + // $data['$invoice.total'] = ['value' => Number::formatMoney($calc->getTotal(), $this->client) ?: ' ', 'label' => ctrans('texts.invoice_total')]; + // $data['$invoice.amount'] = &$data['$total']; + // $data['$quote.amount'] = ['value' => Number::formatMoney($calc->getTotal(), $this->client) ?: ' ', 'label' => ctrans('texts.quote_total')]; + // $data['$credit.total'] = ['value' => Number::formatMoney($calc->getTotal(), $this->client) ?: ' ', 'label' => ctrans('texts.credit_total')]; + // $data['$credit.number'] = ['value' => $this->number ?: ' ', 'label' => ctrans('texts.credit_number')]; + // $data['$credit.total'] = &$data['$credit.total']; + // $data['$credit.po_number'] = &$data['$invoice.po_number']; + // $data['$credit.date'] = ['value' => $this->date, 'label' => ctrans('texts.credit_date')]; + // $data['$balance'] = ['value' => Number::formatMoney($calc->getBalance(), $this->client) ?: ' ', 'label' => ctrans('texts.balance')]; + // $data['$credit.balance'] = &$data['$balance']; - $data['$invoice.balance'] = &$data['$balance']; - $data['$taxes'] = ['value' => Number::formatMoney($calc->getItemTotalTaxes(), $this->client) ?: ' ', 'label' => ctrans('texts.taxes')]; - $data['$invoice.taxes'] = &$data['$taxes']; + // $data['$invoice.balance'] = &$data['$balance']; + // $data['$taxes'] = ['value' => Number::formatMoney($calc->getItemTotalTaxes(), $this->client) ?: ' ', 'label' => ctrans('texts.taxes')]; + // $data['$invoice.taxes'] = &$data['$taxes']; - $data['$invoice.custom1'] = ['value' => $this->custom_value1 ?: ' ', 'label' => $this->makeCustomField('invoice1')]; - $data['$invoice.custom2'] = ['value' => $this->custom_value2 ?: ' ', 'label' => $this->makeCustomField('invoice2')]; - $data['$invoice.custom3'] = ['value' => $this->custom_value3 ?: ' ', 'label' => $this->makeCustomField('invoice3')]; - $data['$invoice.custom4'] = ['value' => $this->custom_value4 ?: ' ', 'label' => $this->makeCustomField('invoice4')]; - $data['$invoice.public_notes'] = ['value' => $this->public_notes ?: ' ', 'label' => ctrans('texts.public_notes')]; - $data['$entity.public_notes'] = &$data['$invoice.public_notes']; + // $data['$invoice.custom1'] = ['value' => $this->custom_value1 ?: ' ', 'label' => $this->makeCustomField('invoice1')]; + // $data['$invoice.custom2'] = ['value' => $this->custom_value2 ?: ' ', 'label' => $this->makeCustomField('invoice2')]; + // $data['$invoice.custom3'] = ['value' => $this->custom_value3 ?: ' ', 'label' => $this->makeCustomField('invoice3')]; + // $data['$invoice.custom4'] = ['value' => $this->custom_value4 ?: ' ', 'label' => $this->makeCustomField('invoice4')]; + // $data['$invoice.public_notes'] = ['value' => $this->public_notes ?: ' ', 'label' => ctrans('texts.public_notes')]; + // $data['$entity.public_notes'] = &$data['$invoice.public_notes']; - // $data['$your_invoice'] = ; - // $data['$quote'] = ; - // $data['$your_quote'] = ; - // - $data['$quote.date'] = ['value' => $this->date ?: ' ', 'label' => ctrans('texts.quote_date')]; - $data['$quote.number'] = ['value' => $this->number ?: ' ', 'label' => ctrans('texts.quote_number')]; - $data['$quote.po_number'] = &$data['$invoice.po_number']; - $data['$quote.quote_number'] = &$data['$quote.number']; - $data['$quote_no'] = &$data['$quote.number']; - $data['$quote.quote_no'] = &$data['$quote.number']; - $data['$quote.valid_until'] = ['value' => $this->due_date, 'label' => ctrans('texts.valid_until')]; - $data['$credit_amount'] = ['value' => Number::formatMoney($calc->getTotal(), $this->client) ?: ' ', 'label' => ctrans('texts.credit_amount')]; - $data['$credit_balance'] = ['value' => Number::formatMoney($this->balance, $this->client) ?: ' ', 'label' => ctrans('texts.credit_balance')]; + // // $data['$your_invoice'] = ; + // // $data['$quote'] = ; + // // $data['$your_quote'] = ; + // // + // $data['$quote.date'] = ['value' => $this->date ?: ' ', 'label' => ctrans('texts.quote_date')]; + // $data['$quote.number'] = ['value' => $this->number ?: ' ', 'label' => ctrans('texts.quote_number')]; + // $data['$quote.po_number'] = &$data['$invoice.po_number']; + // $data['$quote.quote_number'] = &$data['$quote.number']; + // $data['$quote_no'] = &$data['$quote.number']; + // $data['$quote.quote_no'] = &$data['$quote.number']; + // $data['$quote.valid_until'] = ['value' => $this->due_date, 'label' => ctrans('texts.valid_until')]; + // $data['$credit_amount'] = ['value' => Number::formatMoney($calc->getTotal(), $this->client) ?: ' ', 'label' => ctrans('texts.credit_amount')]; + // $data['$credit_balance'] = ['value' => Number::formatMoney($this->balance, $this->client) ?: ' ', 'label' => ctrans('texts.credit_balance')]; - $data['$credit_number'] = &$data['$number']; - $data['$credit_no'] = &$data['$number']; - $data['$credit.credit_no'] = &$data['$number']; + // $data['$credit_number'] = &$data['$number']; + // $data['$credit_no'] = &$data['$number']; + // $data['$credit.credit_no'] = &$data['$number']; - // $data['$invoice_issued_to'] = ; - // $data['$quote_issued_to'] = ; - // $data['$rate'] = ; - // $data['$hours'] = ; - // $data['$from'] = ; - // $data['$to'] = ; - // $data['$invoice_to'] = ; - // $data['$quote_to'] = ; - // $data['$details'] = ; - $data['$invoice_no'] = &$data['$number']; - $data['$invoice.invoice_no'] = &$data['$number']; - $data['$client1'] = ['value' => $this->client->custom_value1 ?: ' ', 'label' => $this->makeCustomField('client1')]; - $data['$client2'] = ['value' => $this->client->custom_value2 ?: ' ', 'label' => $this->makeCustomField('client2')]; - $data['$client3'] = ['value' => $this->client->custom_value3 ?: ' ', 'label' => $this->makeCustomField('client3')]; - $data['$client4'] = ['value' => $this->client->custom_value4 ?: ' ', 'label' => $this->makeCustomField('client4')]; - $data['$address1'] = ['value' => $this->client->address1 ?: ' ', 'label' => ctrans('texts.address1')]; - $data['$address2'] = ['value' => $this->client->address2 ?: ' ', 'label' => ctrans('texts.address2')]; - $data['$id_number'] = ['value' => $this->client->id_number ?: ' ', 'label' => ctrans('texts.id_number')]; - $data['$vat_number'] = ['value' => $this->client->vat_number ?: ' ', 'label' => ctrans('texts.vat_number')]; - $data['$website'] = ['value' => $this->client->present()->website() ?: ' ', 'label' => ctrans('texts.website')]; - $data['$phone'] = ['value' => $this->client->present()->phone() ?: ' ', 'label' => ctrans('texts.phone')]; - $data['$country'] = ['value' => isset($this->client->country->name) ? $this->client->country->name : 'No Country Set', 'label' => ctrans('texts.country')]; - $data['$email'] = ['value' => isset($contact) ? $contact->email : 'no contact email on record', 'label' => ctrans('texts.email')]; - $data['$client_name'] = ['value' => $this->present()->clientName() ?: ' ', 'label' => ctrans('texts.client_name')]; - $data['$client.name'] = &$data['$client_name']; - $data['$client.balance'] = ['value' => Number::formatMoney($this->client->balance, $this->client), 'label' => ctrans('texts.account_balance')]; - $data['$outstanding'] = ['value' => Number::formatMoney($this->client->balance, $this->client), 'label' => ctrans('texts.account_balance')]; + // // $data['$invoice_issued_to'] = ; + // // $data['$quote_issued_to'] = ; + // // $data['$rate'] = ; + // // $data['$hours'] = ; + // // $data['$from'] = ; + // // $data['$to'] = ; + // // $data['$invoice_to'] = ; + // // $data['$quote_to'] = ; + // // $data['$details'] = ; + // $data['$invoice_no'] = &$data['$number']; + // $data['$invoice.invoice_no'] = &$data['$number']; + // $data['$client1'] = ['value' => $this->client->custom_value1 ?: ' ', 'label' => $this->makeCustomField('client1')]; + // $data['$client2'] = ['value' => $this->client->custom_value2 ?: ' ', 'label' => $this->makeCustomField('client2')]; + // $data['$client3'] = ['value' => $this->client->custom_value3 ?: ' ', 'label' => $this->makeCustomField('client3')]; + // $data['$client4'] = ['value' => $this->client->custom_value4 ?: ' ', 'label' => $this->makeCustomField('client4')]; + // $data['$address1'] = ['value' => $this->client->address1 ?: ' ', 'label' => ctrans('texts.address1')]; + // $data['$address2'] = ['value' => $this->client->address2 ?: ' ', 'label' => ctrans('texts.address2')]; + // $data['$id_number'] = ['value' => $this->client->id_number ?: ' ', 'label' => ctrans('texts.id_number')]; + // $data['$vat_number'] = ['value' => $this->client->vat_number ?: ' ', 'label' => ctrans('texts.vat_number')]; + // $data['$website'] = ['value' => $this->client->present()->website() ?: ' ', 'label' => ctrans('texts.website')]; + // $data['$phone'] = ['value' => $this->client->present()->phone() ?: ' ', 'label' => ctrans('texts.phone')]; + // $data['$country'] = ['value' => isset($this->client->country->name) ? $this->client->country->name : 'No Country Set', 'label' => ctrans('texts.country')]; + // $data['$email'] = ['value' => isset($contact) ? $contact->email : 'no contact email on record', 'label' => ctrans('texts.email')]; + // $data['$client_name'] = ['value' => $this->present()->clientName() ?: ' ', 'label' => ctrans('texts.client_name')]; + // $data['$client.name'] = &$data['$client_name']; + // $data['$client.balance'] = ['value' => Number::formatMoney($this->client->balance, $this->client), 'label' => ctrans('texts.account_balance')]; + // $data['$outstanding'] = ['value' => Number::formatMoney($this->client->balance, $this->client), 'label' => ctrans('texts.account_balance')]; - $data['$client_balance'] = ['value' => Number::formatMoney($this->client->balance, $this->client), 'label' => ctrans('texts.account_balance')]; + // $data['$client_balance'] = ['value' => Number::formatMoney($this->client->balance, $this->client), 'label' => ctrans('texts.account_balance')]; - $data['$paid_to_date'] = ['value' => Number::formatMoney($this->client->paid_to_date, $this->client), 'label' => ctrans('texts.paid_to_date')]; + // $data['$paid_to_date'] = ['value' => Number::formatMoney($this->client->paid_to_date, $this->client), 'label' => ctrans('texts.paid_to_date')]; - $data['$client.address1'] = &$data['$address1']; - $data['$client.address2'] = &$data['$address2']; - $data['$client_address'] = ['value' => $this->present()->address() ?: ' ', 'label' => ctrans('texts.address')]; - $data['$client.address'] = &$data['$client_address']; - $data['$client.id_number'] = &$data['$id_number']; - $data['$client.vat_number'] = &$data['$vat_number']; - $data['$client.website'] = &$data['$website']; - $data['$client.phone'] = &$data['$phone']; - $data['$city_state_postal'] = ['value' => $this->present()->cityStateZip($this->client->city, $this->client->state, $this->client->postal_code, false) ?: ' ', 'label' => ctrans('texts.city_state_postal')]; - $data['$client.city_state_postal'] = &$data['$city_state_postal']; - $data['$postal_city_state'] = ['value' => $this->present()->cityStateZip($this->client->city, $this->client->state, $this->client->postal_code, true) ?: ' ', 'label' => ctrans('texts.postal_city_state')]; - $data['$client.postal_city_state'] = &$data['$postal_city_state']; - $data['$client.country'] = &$data['$country']; - $data['$client.email'] = &$data['$email']; + // $data['$client.address1'] = &$data['$address1']; + // $data['$client.address2'] = &$data['$address2']; + // $data['$client_address'] = ['value' => $this->present()->address() ?: ' ', 'label' => ctrans('texts.address')]; + // $data['$client.address'] = &$data['$client_address']; + // $data['$client.id_number'] = &$data['$id_number']; + // $data['$client.vat_number'] = &$data['$vat_number']; + // $data['$client.website'] = &$data['$website']; + // $data['$client.phone'] = &$data['$phone']; + // $data['$city_state_postal'] = ['value' => $this->present()->cityStateZip($this->client->city, $this->client->state, $this->client->postal_code, false) ?: ' ', 'label' => ctrans('texts.city_state_postal')]; + // $data['$client.city_state_postal'] = &$data['$city_state_postal']; + // $data['$postal_city_state'] = ['value' => $this->present()->cityStateZip($this->client->city, $this->client->state, $this->client->postal_code, true) ?: ' ', 'label' => ctrans('texts.postal_city_state')]; + // $data['$client.postal_city_state'] = &$data['$postal_city_state']; + // $data['$client.country'] = &$data['$country']; + // $data['$client.email'] = &$data['$email']; - $data['$contact.full_name'] = ['value' => $contact->present()->name(), 'label' => ctrans('texts.name')]; - $data['$contact.email'] = ['value' => $contact->email, 'label' => ctrans('texts.email')]; - $data['$contact.phone'] = ['value' => $contact->phone, 'label' => ctrans('texts.phone')]; + // $data['$contact.full_name'] = ['value' => $contact->present()->name(), 'label' => ctrans('texts.name')]; + // $data['$contact.email'] = ['value' => $contact->email, 'label' => ctrans('texts.email')]; + // $data['$contact.phone'] = ['value' => $contact->phone, 'label' => ctrans('texts.phone')]; - $data['$contact.name'] = ['value' => isset($contact) ? $contact->present()->name() : 'no contact name on record', 'label' => ctrans('texts.contact_name')]; - $data['$contact.first_name'] = ['value' => isset($contact) ? $contact->first_name : '', 'label' => ctrans('texts.first_name')]; - $data['$contact.last_name'] = ['value' => isset($contact) ? $contact->last_name : '', 'label' => ctrans('texts.last_name')]; - $data['$contact.custom1'] = ['value' => isset($contact) ? $contact->custom_value1 : ' ', 'label' => $this->makeCustomField('contact1')]; - $data['$contact.custom2'] = ['value' => isset($contact) ? $contact->custom_value2 : ' ', 'label' => $this->makeCustomField('contact1')]; - $data['$contact.custom3'] = ['value' => isset($contact) ? $contact->custom_value3 : ' ', 'label' => $this->makeCustomField('contact1')]; - $data['$contact.custom4'] = ['value' => isset($contact) ? $contact->custom_value4 : ' ', 'label' => $this->makeCustomField('contact1')]; + // $data['$contact.name'] = ['value' => isset($contact) ? $contact->present()->name() : 'no contact name on record', 'label' => ctrans('texts.contact_name')]; + // $data['$contact.first_name'] = ['value' => isset($contact) ? $contact->first_name : '', 'label' => ctrans('texts.first_name')]; + // $data['$contact.last_name'] = ['value' => isset($contact) ? $contact->last_name : '', 'label' => ctrans('texts.last_name')]; + // $data['$contact.custom1'] = ['value' => isset($contact) ? $contact->custom_value1 : ' ', 'label' => $this->makeCustomField('contact1')]; + // $data['$contact.custom2'] = ['value' => isset($contact) ? $contact->custom_value2 : ' ', 'label' => $this->makeCustomField('contact1')]; + // $data['$contact.custom3'] = ['value' => isset($contact) ? $contact->custom_value3 : ' ', 'label' => $this->makeCustomField('contact1')]; + // $data['$contact.custom4'] = ['value' => isset($contact) ? $contact->custom_value4 : ' ', 'label' => $this->makeCustomField('contact1')]; - $data['$company.city_state_postal'] = ['value' => $this->company->present()->cityStateZip($settings->city, $settings->state, $settings->postal_code, false) ?: ' ', 'label' => ctrans('texts.city_state_postal')]; - $data['$company.postal_city_state'] = ['value' => $this->company->present()->cityStateZip($settings->city, $settings->state, $settings->postal_code, true) ?: ' ', 'label' => ctrans('texts.postal_city_state')]; - $data['$company.name'] = ['value' => $this->company->present()->name() ?: ' ', 'label' => ctrans('texts.company_name')]; - $data['$company.address1'] = ['value' => $settings->address1 ?: ' ', 'label' => ctrans('texts.address1')]; - $data['$company.address2'] = ['value' => $settings->address2 ?: ' ', 'label' => ctrans('texts.address2')]; - $data['$company.city'] = ['value' => $settings->city ?: ' ', 'label' => ctrans('texts.city')]; - $data['$company.state'] = ['value' => $settings->state ?: ' ', 'label' => ctrans('texts.state')]; - $data['$company.postal_code'] = ['value' => $settings->postal_code ?: ' ', 'label' => ctrans('texts.postal_code')]; - $data['$company.country'] = ['value' => Country::find($settings->country_id)->first()->name ?: ' ', 'label' => ctrans('texts.country')]; - $data['$company.phone'] = ['value' => $settings->phone ?: ' ', 'label' => ctrans('texts.phone')]; - $data['$company.email'] = ['value' => $settings->email ?: ' ', 'label' => ctrans('texts.email')]; - $data['$company.vat_number'] = ['value' => $settings->vat_number ?: ' ', 'label' => ctrans('texts.vat_number')]; - $data['$company.id_number'] = ['value' => $settings->id_number ?: ' ', 'label' => ctrans('texts.id_number')]; - $data['$company.website'] = ['value' => $settings->website ?: ' ', 'label' => ctrans('texts.website')]; - $data['$company.address'] = ['value' => $this->company->present()->address($settings) ?: ' ', 'label' => ctrans('texts.address')]; + // $data['$company.city_state_postal'] = ['value' => $this->company->present()->cityStateZip($settings->city, $settings->state, $settings->postal_code, false) ?: ' ', 'label' => ctrans('texts.city_state_postal')]; + // $data['$company.postal_city_state'] = ['value' => $this->company->present()->cityStateZip($settings->city, $settings->state, $settings->postal_code, true) ?: ' ', 'label' => ctrans('texts.postal_city_state')]; + // $data['$company.name'] = ['value' => $this->company->present()->name() ?: ' ', 'label' => ctrans('texts.company_name')]; + // $data['$company.address1'] = ['value' => $settings->address1 ?: ' ', 'label' => ctrans('texts.address1')]; + // $data['$company.address2'] = ['value' => $settings->address2 ?: ' ', 'label' => ctrans('texts.address2')]; + // $data['$company.city'] = ['value' => $settings->city ?: ' ', 'label' => ctrans('texts.city')]; + // $data['$company.state'] = ['value' => $settings->state ?: ' ', 'label' => ctrans('texts.state')]; + // $data['$company.postal_code'] = ['value' => $settings->postal_code ?: ' ', 'label' => ctrans('texts.postal_code')]; + // $data['$company.country'] = ['value' => Country::find($settings->country_id)->first()->name ?: ' ', 'label' => ctrans('texts.country')]; + // $data['$company.phone'] = ['value' => $settings->phone ?: ' ', 'label' => ctrans('texts.phone')]; + // $data['$company.email'] = ['value' => $settings->email ?: ' ', 'label' => ctrans('texts.email')]; + // $data['$company.vat_number'] = ['value' => $settings->vat_number ?: ' ', 'label' => ctrans('texts.vat_number')]; + // $data['$company.id_number'] = ['value' => $settings->id_number ?: ' ', 'label' => ctrans('texts.id_number')]; + // $data['$company.website'] = ['value' => $settings->website ?: ' ', 'label' => ctrans('texts.website')]; + // $data['$company.address'] = ['value' => $this->company->present()->address($settings) ?: ' ', 'label' => ctrans('texts.address')]; - $logo = $this->company->present()->logo($settings); + // $logo = $this->company->present()->logo($settings); - $data['$company.logo'] = ['value' => "logo" ?: ' ', 'label' => ctrans('texts.logo')]; - $data['$company_logo'] = &$data['$company.logo']; - $data['$company1'] = ['value' => $settings->custom_value1 ?: ' ', 'label' => $this->makeCustomField('company1')]; - $data['$company2'] = ['value' => $settings->custom_value2 ?: ' ', 'label' => $this->makeCustomField('company2')]; - $data['$company3'] = ['value' => $settings->custom_value3 ?: ' ', 'label' => $this->makeCustomField('company3')]; - $data['$company4'] = ['value' => $settings->custom_value4 ?: ' ', 'label' => $this->makeCustomField('company4')]; + // $data['$company.logo'] = ['value' => "logo" ?: ' ', 'label' => ctrans('texts.logo')]; + // $data['$company_logo'] = &$data['$company.logo']; + // $data['$company1'] = ['value' => $settings->custom_value1 ?: ' ', 'label' => $this->makeCustomField('company1')]; + // $data['$company2'] = ['value' => $settings->custom_value2 ?: ' ', 'label' => $this->makeCustomField('company2')]; + // $data['$company3'] = ['value' => $settings->custom_value3 ?: ' ', 'label' => $this->makeCustomField('company3')]; + // $data['$company4'] = ['value' => $settings->custom_value4 ?: ' ', 'label' => $this->makeCustomField('company4')]; - $data['$custom_surcharge1'] = ['value' => $this->custom_surcharge1, 'label' => $this->makeCustomField('custom_surcharge1')]; - $data['$custom_surcharge2'] = ['value' => $this->custom_surcharge2, 'label' => $this->makeCustomField('custom_surcharge2')]; - $data['$custom_surcharge3'] = ['value' => $this->custom_surcharge3, 'label' => $this->makeCustomField('custom_surcharge3')]; - $data['$custom_surcharge4'] = ['value' => $this->custom_surcharge4, 'label' => $this->makeCustomField('custom_surcharge4')]; + // $data['$custom_surcharge1'] = ['value' => $this->custom_surcharge1, 'label' => $this->makeCustomField('custom_surcharge1')]; + // $data['$custom_surcharge2'] = ['value' => $this->custom_surcharge2, 'label' => $this->makeCustomField('custom_surcharge2')]; + // $data['$custom_surcharge3'] = ['value' => $this->custom_surcharge3, 'label' => $this->makeCustomField('custom_surcharge3')]; + // $data['$custom_surcharge4'] = ['value' => $this->custom_surcharge4, 'label' => $this->makeCustomField('custom_surcharge4')]; - $data['$product.date'] = ['value' => '', 'label' => ctrans('texts.date')]; - $data['$product.discount'] = ['value' => '', 'label' => ctrans('texts.discount')]; - $data['$product.product_key'] = ['value' => '', 'label' => ctrans('texts.product_key')]; - $data['$product.notes'] = ['value' => '', 'label' => ctrans('texts.notes')]; - $data['$product.cost'] = ['value' => '', 'label' => ctrans('texts.cost')]; - $data['$product.quantity'] = ['value' => '', 'label' => ctrans('texts.quantity')]; - $data['$product.tax_name1'] = ['value' => '', 'label' => ctrans('texts.tax')]; - $data['$product.tax'] = ['value' => '', 'label' => ctrans('texts.tax')]; - $data['$product.tax_name2'] = ['value' => '', 'label' => ctrans('texts.tax')]; - $data['$product.tax_name3'] = ['value' => '', 'label' => ctrans('texts.tax')]; - $data['$product.line_total'] = ['value' => '', 'label' => ctrans('texts.line_total')]; + // $data['$product.date'] = ['value' => '', 'label' => ctrans('texts.date')]; + // $data['$product.discount'] = ['value' => '', 'label' => ctrans('texts.discount')]; + // $data['$product.product_key'] = ['value' => '', 'label' => ctrans('texts.product_key')]; + // $data['$product.notes'] = ['value' => '', 'label' => ctrans('texts.notes')]; + // $data['$product.cost'] = ['value' => '', 'label' => ctrans('texts.cost')]; + // $data['$product.quantity'] = ['value' => '', 'label' => ctrans('texts.quantity')]; + // $data['$product.tax_name1'] = ['value' => '', 'label' => ctrans('texts.tax')]; + // $data['$product.tax'] = ['value' => '', 'label' => ctrans('texts.tax')]; + // $data['$product.tax_name2'] = ['value' => '', 'label' => ctrans('texts.tax')]; + // $data['$product.tax_name3'] = ['value' => '', 'label' => ctrans('texts.tax')]; + // $data['$product.line_total'] = ['value' => '', 'label' => ctrans('texts.line_total')]; - $data['$task.date'] = ['value' => '', 'label' => ctrans('texts.date')]; - $data['$task.discount'] = ['value' => '', 'label' => ctrans('texts.discount')]; - $data['$task.product_key'] = ['value' => '', 'label' => ctrans('texts.product_key')]; - $data['$task.notes'] = ['value' => '', 'label' => ctrans('texts.notes')]; - $data['$task.cost'] = ['value' => '', 'label' => ctrans('texts.cost')]; - $data['$task.quantity'] = ['value' => '', 'label' => ctrans('texts.quantity')]; - $data['$task.tax'] = ['value' => '', 'label' => ctrans('texts.tax')]; - $data['$task.tax_name1'] = ['value' => '', 'label' => ctrans('texts.tax')]; - $data['$task.tax_name2'] = ['value' => '', 'label' => ctrans('texts.tax')]; - $data['$task.tax_name3'] = ['value' => '', 'label' => ctrans('texts.tax')]; - $data['$task.line_total'] = ['value' => '', 'label' => ctrans('texts.line_total')]; - //$data['$contact.signature'] + // $data['$task.date'] = ['value' => '', 'label' => ctrans('texts.date')]; + // $data['$task.discount'] = ['value' => '', 'label' => ctrans('texts.discount')]; + // $data['$task.product_key'] = ['value' => '', 'label' => ctrans('texts.product_key')]; + // $data['$task.notes'] = ['value' => '', 'label' => ctrans('texts.notes')]; + // $data['$task.cost'] = ['value' => '', 'label' => ctrans('texts.cost')]; + // $data['$task.quantity'] = ['value' => '', 'label' => ctrans('texts.quantity')]; + // $data['$task.tax'] = ['value' => '', 'label' => ctrans('texts.tax')]; + // $data['$task.tax_name1'] = ['value' => '', 'label' => ctrans('texts.tax')]; + // $data['$task.tax_name2'] = ['value' => '', 'label' => ctrans('texts.tax')]; + // $data['$task.tax_name3'] = ['value' => '', 'label' => ctrans('texts.tax')]; + // $data['$task.line_total'] = ['value' => '', 'label' => ctrans('texts.line_total')]; + // //$data['$contact.signature'] - // $data['custom_label1'] = ['value' => '', 'label' => ctrans('texts.')]; - // $data['custom_label2'] = ['value' => '', 'label' => ctrans('texts.')]; - // $data['custom_label3'] = ['value' => '', 'label' => ctrans('texts.')]; - // $data['custom_label4'] = ['value' => '', 'label' => ctrans('texts.')]; - //$data['$blank'] = ; - //$data['$surcharge'] = ; - /* - $data['$tax_invoice'] = - $data['$tax_quote'] = - $data['$statement'] = ; - $data['$statement_date'] = ; - $data['$your_statement'] = ; - $data['$statement_issued_to'] = ; - $data['$statement_to'] = ; - $data['$credit_note'] = ; - $data['$credit_date'] = ; - $data['$credit_issued_to'] = ; - $data['$credit_to'] = ; - $data['$your_credit'] = ; - $data['$phone'] = ; + // // $data['custom_label1'] = ['value' => '', 'label' => ctrans('texts.')]; + // // $data['custom_label2'] = ['value' => '', 'label' => ctrans('texts.')]; + // // $data['custom_label3'] = ['value' => '', 'label' => ctrans('texts.')]; + // // $data['custom_label4'] = ['value' => '', 'label' => ctrans('texts.')]; + // //$data['$blank'] = ; + // //$data['$surcharge'] = ; + // /* + // $data['$tax_invoice'] = + // $data['$tax_quote'] = + // $data['$statement'] = ; + // $data['$statement_date'] = ; + // $data['$your_statement'] = ; + // $data['$statement_issued_to'] = ; + // $data['$statement_to'] = ; + // $data['$credit_note'] = ; + // $data['$credit_date'] = ; + // $data['$credit_issued_to'] = ; + // $data['$credit_to'] = ; + // $data['$your_credit'] = ; + // $data['$phone'] = ; - $data['$outstanding'] = ; - $data['$invoice_due_date'] = ; - $data['$quote_due_date'] = ; - $data['$service'] = ; - $data['$product_key'] = ; - $data['$unit_cost'] = ; - $data['$custom_value1'] = ; - $data['$custom_value2'] = ; - $data['$delivery_note'] = ; - $data['$date'] = ; - $data['$method'] = ; - $data['$payment_date'] = ; - $data['$reference'] = ; - $data['$amount'] = ; - $data['$amount_paid'] =; - */ + // $data['$outstanding'] = ; + // $data['$invoice_due_date'] = ; + // $data['$quote_due_date'] = ; + // $data['$service'] = ; + // $data['$product_key'] = ; + // $data['$unit_cost'] = ; + // $data['$custom_value1'] = ; + // $data['$custom_value2'] = ; + // $data['$delivery_note'] = ; + // $data['$date'] = ; + // $data['$method'] = ; + // $data['$payment_date'] = ; + // $data['$reference'] = ; + // $data['$amount'] = ; + // $data['$amount_paid'] =; + // */ - $arrKeysLength = array_map('strlen', array_keys($data)); - array_multisort($arrKeysLength, SORT_DESC, $data); + // $arrKeysLength = array_map('strlen', array_keys($data)); + // array_multisort($arrKeysLength, SORT_DESC, $data); - return $data; - } + // return $data; + // } /** * V2 of building a table header for PDFs. diff --git a/app/Utils/Traits/PaymentEmailBuilder.php b/app/Utils/Traits/PaymentEmailBuilder.php index 825dbcf956b0..d739aea896ec 100644 --- a/app/Utils/Traits/PaymentEmailBuilder.php +++ b/app/Utils/Traits/PaymentEmailBuilder.php @@ -67,7 +67,7 @@ trait PaymentEmailBuilder private function parseTemplate(string $template_data, bool $is_markdown, $contact) :string { - $invoice_variables = $this->makeValues($contact); + //$invoice_variables = $this->makeValues($contact); //process variables //$data = str_replace(array_keys($invoice_variables), array_values($invoice_variables), $template_data); diff --git a/app/Utils/Traits/QuoteEmailBuilder.php b/app/Utils/Traits/QuoteEmailBuilder.php index 3076ba6c650b..b31f7a3c771c 100644 --- a/app/Utils/Traits/QuoteEmailBuilder.php +++ b/app/Utils/Traits/QuoteEmailBuilder.php @@ -75,7 +75,7 @@ trait QuoteEmailBuilder private function parseTemplate(string $template_data, bool $is_markdown, $contact) :string { - $quote_variables = $this->makeValues($contact); + // $quote_variables = $this->makeValues($contact); //process variables // $data = str_replace(array_keys($quote_variables), array_values($quote_variables), $template_data); diff --git a/tests/Feature/InvoiceEmailTest.php b/tests/Feature/InvoiceEmailTest.php index 1e4887a75d30..84bf117858a6 100644 --- a/tests/Feature/InvoiceEmailTest.php +++ b/tests/Feature/InvoiceEmailTest.php @@ -11,7 +11,7 @@ namespace Feature; use App\Helpers\Email\InvoiceEmail; -use App\Jobs\Invoice\EmailInvoice; +use App\Jobs\Entity\EmailEntity; use App\Mail\TemplateEmail; use App\Models\ClientContact; use App\Models\Invoice; @@ -69,11 +69,10 @@ class InvoiceEmailTest extends TestCase $this->invoice->invitations->each(function ($invitation) { if ($invitation->contact->send_email && $invitation->contact->email) { - $email_builder = (new InvoiceEmail())->build($invitation, null); - EmailInvoice::dispatchNow($email_builder, $invitation, $invitation->company); + EmailEntity::dispatchNow($invitation, $invitation->company); - $this->expectsJobs(EmailInvoice::class); + $this->expectsJobs(EmailEntity::class); } }); @@ -99,11 +98,9 @@ class InvoiceEmailTest extends TestCase $this->invoice->invitations->each(function ($invitation) { if ($invitation->contact->send_email && $invitation->contact->email) { - $email_builder = (new InvoiceEmail())->build($invitation, null); + EmailEntity::dispatchNow($invitation, $invitation->company); - EmailInvoice::dispatchNow($email_builder, $invitation, $invitation->company); - - $this->expectsJobs(EmailInvoice::class); + $this->expectsJobs(EmailEntity::class); } }); @@ -129,11 +126,9 @@ class InvoiceEmailTest extends TestCase $this->invoice->invitations->each(function ($invitation) { if ($invitation->contact->send_email && $invitation->contact->email) { - $email_builder = (new InvoiceEmail())->build($invitation, null); + EmailEntity::dispatchNow($invitation, $invitation->company); - EmailInvoice::dispatchNow($email_builder, $invitation, $invitation->company); - - $this->expectsJobs(EmailInvoice::class); + $this->expectsJobs(EmailEntity::class); } }); @@ -154,11 +149,9 @@ class InvoiceEmailTest extends TestCase $this->invoice->invitations->each(function ($invitation) { if ($invitation->contact->send_email && $invitation->contact->email) { - $email_builder = (new InvoiceEmail())->build($invitation, null); + EmailEntity::dispatchNow($invitation, $invitation->company); - EmailInvoice::dispatchNow($email_builder, $invitation, $invitation->company); - - $this->expectsJobs(EmailInvoice::class); + $this->expectsJobs(EmailEntity::class); } });