Add UBL feature to invoices

This commit is contained in:
David Bomba 2023-03-08 20:47:13 +11:00
parent 52613b2bce
commit 594646823c
3 changed files with 15 additions and 6 deletions

View File

@ -48,10 +48,8 @@ class CreateUbl implements ShouldQueue
} }
/** /**
* Execute the job. * Execute the job
* * @return ?string
*
* @return void
*/ */
public function handle() public function handle()
{ {

View File

@ -1,4 +1,3 @@
<?php <?php
/** /**
* Invoice Ninja (https://invoiceninja.com). * Invoice Ninja (https://invoiceninja.com).

View File

@ -16,7 +16,9 @@ use App\Utils\Ninja;
use App\Models\Account; use App\Models\Account;
use App\Models\Expense; use App\Models\Expense;
use App\Models\Invoice; use App\Models\Invoice;
use App\Jobs\Invoice\CreateUbl;
use App\Utils\Traits\MakesHash; use App\Utils\Traits\MakesHash;
use Illuminate\Mail\Attachment;
use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\App;
use Illuminate\Mail\Mailables\Address; use Illuminate\Mail\Mailables\Address;
use App\DataMapper\EmailTemplateDefaults; use App\DataMapper\EmailTemplateDefaults;
@ -267,7 +269,7 @@ class EmailDefaults
{ {
$documents = []; $documents = [];
if (!$this->email->email_object->settings->document_email_attachment || $this->email->company->account->hasFeature(Account::FEATURE_DOCUMENTS)) if (!$this->email->email_object->settings->document_email_attachment || !$this->email->company->account->hasFeature(Account::FEATURE_DOCUMENTS))
return $this; return $this;
$this->email->email_object->documents = array_merge($this->email->email_object->documents, $this->email->company->documents->pluck('id')->toArray()); $this->email->email_object->documents = array_merge($this->email->email_object->documents, $this->email->company->documents->pluck('id')->toArray());
@ -318,6 +320,16 @@ class EmailDefaults
} }
if ($this->email->email_object->entity instanceof Invoice && $this->email->email_object->settings->ubl_email_attachment) {
$ubl_string = (new CreateUbl($this->email->email_object->entity))->handle();
if ($ubl_string) {
$this->email->email_object->attachments = array_merge($this->email->email_object->attachments, [Attachment::fromData(fn () => $ubl_string, $this->email->email_object->entity->getFileName('xml'))]);
}
}
return $this; return $this;
} }