diff --git a/app/Filters/ExpenseFilters.php b/app/Filters/ExpenseFilters.php index a1012afe7ad8..325606b30664 100644 --- a/app/Filters/ExpenseFilters.php +++ b/app/Filters/ExpenseFilters.php @@ -109,7 +109,7 @@ class ExpenseFilters extends QueryFilters public function has_invoices(string $value = ''): Builder { if ($value == 'true') { - return $this->builder->whereNotNull('invoice_id')->select('expenses.invoice_id'); + return $this->builder->whereNotNull('invoice_id'); } return $this->builder; diff --git a/app/Models/Expense.php b/app/Models/Expense.php index 648e1d5635e9..00a16129fc9f 100644 --- a/app/Models/Expense.php +++ b/app/Models/Expense.php @@ -225,6 +225,11 @@ class Expense extends BaseModel return $this->belongsTo(Company::class); } + public function invoice() + { + return $this->belongsTo(Invoice::class); + } + public function vendor() { return $this->belongsTo(Vendor::class); diff --git a/app/Transformers/ExpenseTransformer.php b/app/Transformers/ExpenseTransformer.php index 404e71a2f319..7fb5c8826638 100644 --- a/app/Transformers/ExpenseTransformer.php +++ b/app/Transformers/ExpenseTransformer.php @@ -13,6 +13,7 @@ namespace App\Transformers; use App\Models\Vendor; use App\Models\Expense; +use App\Models\Invoice; use App\Models\Document; use App\Models\ExpenseCategory; use App\Utils\Traits\MakesHash; @@ -39,6 +40,7 @@ class ExpenseTransformer extends EntityTransformer 'client', 'vendor', 'category', + 'invoice', ]; public function includeDocuments(Expense $expense) @@ -59,6 +61,17 @@ class ExpenseTransformer extends EntityTransformer return $this->includeItem($expense->client, $transformer, Client::class); } + public function includeInvoice(Expense $expense): ?Item + { + $transformer = new InvoiceTransformer($this->serializer); + + if (!$expense->invoice) { + return null; + } + + return $this->includeItem($expense->invoice, $transformer, Invoice::class); + } + public function includeCategory(Expense $expense): ?Item { $transformer = new ExpenseCategoryTransformer($this->serializer);