feat: Add tenant code to value changes; implement PurchaseController and related services for tenant-specific purchase management

This commit is contained in:
2026-08-04 10:27:33 -03:00
parent 96f26e2e9d
commit 3f9bcd84c4
11 changed files with 222 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
<?php
namespace App\Domains\Purchase\Services;
use App\Domains\Logging\Models\ValueChange;
use App\Domains\Purchase\Models\Purchase;
use App\Domains\Tenant\Models\Tenant;
use Illuminate\Pagination\LengthAwarePaginator;
class AdminAppPurchaseService
{
public function confirmedSalesTotal(Tenant $tenant): string
{
$total = Purchase::query()
->where('tenant_codigo', $tenant->codigo)
->where('status', Purchase::STATUS_PAID)
->sum('total');
return number_format((float) $total, 2, '.', '');
}
/** @return LengthAwarePaginator<Purchase> */
public function purchases(Tenant $tenant): LengthAwarePaginator
{
return Purchase::query()
->where('tenant_codigo', $tenant->codigo)
->with(['items.imageAttachment'])
->withCount('tickets')
->latest()
->paginateFromRequest()
->withQueryString();
}
/** @return LengthAwarePaginator<ValueChange> */
public function modifications(Tenant $tenant): LengthAwarePaginator
{
return ValueChange::query()
->where('tenant_code', $tenant->codigo)
->where('trackable_type', (new Purchase)->getMorphClass())
->with(['trackable', 'user'])
->orderByDesc('changed_at')
->orderByDesc('id')
->paginateFromRequest()
->withQueryString();
}
}