<?php

declare(strict_types=1);

namespace ImovelZapAi\Financial\Domain\Exceptions;

use RuntimeException;

class FinancialException extends RuntimeException
{
    public static function notFound(string $entity = 'Registro financeiro'): self
    {
        return new self("{$entity} não encontrado.");
    }

    public static function invalidState(string $detail): self
    {
        return new self("Operação inválida no financeiro: {$detail}");
    }

    public static function dealWithoutAmount(): self
    {
        return new self('A oportunidade não possui valor negociado para iniciar o financeiro.');
    }

    public static function alreadyBootstrapped(): self
    {
        return new self('Esta oportunidade já possui lançamentos financeiros.');
    }

    public static function noDefaultRule(): self
    {
        return new self('Nenhuma regra de comissão padrão configurada.');
    }

    public static function erpUnavailable(?string $detail = null): self
    {
        return new self($detail ?? 'Exportação ERP indisponível ou não configurada.');
    }
}
