'date', 'due_date' => 'date', 'paid_at' => 'datetime', 'auto_renew' => 'boolean', ]; public function customer() { return $this->belongsTo(Customer::class); } /** The order that originated this invoice. */ public function order() { return $this->belongsTo(Order::class, 'order_id'); } /** Line items on this invoice. */ public function invoiceItems() { return $this->hasMany(InvoiceItem::class, 'invoice_id'); } /** Uploaded payment-proof or supporting documents. */ public function attachments() { return $this->hasMany(InvoiceAttachment::class); } /** Services whose active invoice is this one (updated on each renewal). */ public function services() { return $this->hasMany(Service::class, 'invoice_id'); } /** The service this invoice upgrades, for invoice_type = 3 (upgrade). */ public function service() { return $this->belongsTo(Service::class, 'service_id'); } public function payment() { return $this->belongsTo(Payment::class, 'payment_method', 'id'); } public function getStatusLabelAttribute(): string { return InvoiceStatus::from($this->status)->label(); } }