Portal::class, 'amount_cents' => 'integer', 'tax_cents' => 'integer', 'total_cents' => 'integer', 'invoice_date' => 'date', 'due_date' => 'date', 'paid_at' => 'datetime', 'raw_snapshot' => 'array', 'pdf_payload' => 'array', 'pdf_generated_at' => 'datetime', 'imported_at' => 'datetime', ]; } public function user(): BelongsTo { return $this->belongsTo(User::class); } /** * Neueste Rechnung zuerst: nach Rechnungsdatum, dann ID als Tiebreaker. * Single Source of Truth für die „latest legacy invoice"-Ordnung. */ public function scopeLatestFirst(Builder $query): Builder { return $query->orderByDesc('invoice_date')->orderByDesc('id'); } }