add support for showing related entity documents on invoice

This commit is contained in:
David Bomba 2022-07-20 09:24:38 +10:00
parent 7051048fdf
commit b3707967d8
2 changed files with 93 additions and 32 deletions

View File

@ -17,12 +17,15 @@ use App\Events\Invoice\InvoiceWasUpdated;
use App\Helpers\Invoice\InvoiceSum;
use App\Helpers\Invoice\InvoiceSumInclusive;
use App\Jobs\Entity\CreateEntityPdf;
use App\Models\Expense;
use App\Models\Presenters\InvoicePresenter;
use App\Models\Task;
use App\Services\Invoice\InvoiceService;
use App\Services\Ledger\LedgerService;
use App\Utils\Ninja;
use App\Utils\Traits\Invoice\ActionsInvoice;
use App\Utils\Traits\MakesDates;
use App\Utils\Traits\MakesHash;
use App\Utils\Traits\MakesInvoiceValues;
use App\Utils\Traits\MakesReminders;
use App\Utils\Traits\NumberFormatter;
@ -562,6 +565,60 @@ class Invoice extends BaseModel
];
}
public function expense_documents()
{
$line_items = $this->line_items;
$expense_ids = [];
foreach($line_items as $item)
{
if(property_exists($item, 'expense_id'))
{
$expense_ids[] = $item->expense_id;
}
}
nlog($line_items);
return Expense::whereIn('id', $this->transformKeys($expense_ids))
->where('invoice_documents', 1)
->where('company_id', $this->company_id)
->cursor();
}
public function task_documents()
{
$line_items = $this->line_items;
$task_ids = [];
foreach($line_items as $item)
{
if(property_exists($item, 'task_id'))
{
$task_ids[] = $item->task_id;
}
}
nlog($task_ids);
return Task::whereIn('id', $this->transformKeys($task_ids))
->whereHas('company', function($query){
$query->where('invoice_task_documents', 1);
})
->where('company_id', $this->company_id)
->cursor();
}
public function translate_entity()
{
return ctrans('texts.invoice');

View File

@ -42,8 +42,9 @@
</div>
@endforeach
@if($entity->expense && $entity->expense->invoice_documents)
@foreach ($entity->expense->documents as $document)
@if($entity instanceof App\Models\Invoice)
@foreach ($entity->expense_documents() as $expense)
@foreach($expense->documents as $document)
<div class="inline-flex items-center space-x-1">
<a href="{{ route('client.documents.show', $document->hashed_id) }}" target="_blank"
class="block text-sm button-link text-primary">{{ Illuminate\Support\Str::limit($document->name, 40) }}</a>
@ -61,10 +62,12 @@
@endif
</div>
@endforeach
@endforeach
@endif
@if($entity->task && $entity->company->invoice_task_documents)
@foreach ($entity->task->documents as $document)
@if($entity instanceof App\Models\Invoice)
@foreach ($entity->task_documents() as $task)
@foreach($task->documents as $document)
<div class="inline-flex items-center space-x-1">
<a href="{{ route('client.documents.show', $document->hashed_id) }}" target="_blank"
class="block text-sm button-link text-primary">{{ Illuminate\Support\Str::limit($document->name, 40) }}</a>
@ -82,6 +85,7 @@
@endif
</div>
@endforeach
@endforeach
@endif
</div>
</div>