'integer', 'default_tax_rate' => 'decimal:2', ]; /** Always return the single settings row, creating it if absent. */ public static function instance(): self { return static::firstOrCreate([], [ 'invoice_prefix' => 'INV', 'invoice_next_number' => 1, 'accent_color' => '#FFB7C5', 'default_tax_rate' => 11, 'default_currency' => 'IDR', ]); } /** Generate the next invoice number and increment the counter. */ public static function generateNumber(): string { $settings = static::instance(); $prefix = rtrim($settings->invoice_prefix, '-'); $number = str_pad((string) $settings->invoice_next_number, 3, '0', STR_PAD_LEFT); $settings->increment('invoice_next_number'); return $prefix . '-' . $number; } }