*/ class InvoiceFactory extends Factory { public function definition(): array { return [ 'number' => fake()->unique()->numerify('#####'), 'amount' => fake()->randomElement(DocumentModalityEnum::cases())->price(), 'status' => InvoiceStatusEnum::Pending, 'payment_method' => null, 'paid_at' => null, 'document_id' => null, 'user_id' => User::factory(), ]; } public function paid(InvoicePaymentMethodEnum $method = InvoicePaymentMethodEnum::Wallet): static { return $this->state(fn (array $attributes) => [ 'status' => InvoiceStatusEnum::Paid, 'payment_method' => $method, 'paid_at' => now(), ]); } public function canceled(): static { return $this->state(fn (array $attributes) => [ 'status' => InvoiceStatusEnum::Canceled, ]); } }