hasMany(InvoiceItem::class)->orderBy('id', 'ASC'); } public function order() { return $this->belongsTo(Order::class); } public function customer() { return $this->belongsTo(User::class, 'customer_id'); } /**************************** * Helper Functions ****************************/ // Auto calculate GST fields (you can call this in controller before saving) public function calculateTotals() { $gst = ($this->final_amount * $this->gst_percent) / 100; $this->gst_amount = $gst; $this->final_amount_with_gst = $this->final_amount + $gst; } // Check overdue status condition public function isOverdue() { return $this->status === 'pending' && now()->gt($this->due_date); } public function getShipment() { return $this->order?->shipments?->first(); } public function installments() { return $this->hasMany(InvoiceInstallment::class); } }