Skip to main content

Entidade: Contrato

Camada: Domínio — Define o que o objeto é, seus atributos e relacionamentos.

Regras de comportamento: ver Regras de Negócio/Módulo 11: Contratos & Assinaturas e Domínio/Mapeamento


1. Definição

Um Contrato é o acordo jurídico firmado entre o Cliente e o Tenant, referente à proteção de um Veículo específico. O fluxo é totalmente flexível: o cliente pode assinar o contrato antes ou depois de realizar a Vistoria do veículo. No entanto, a ativação da cobertura operacional e a validação do cadastro ativo do cliente ficam estritamente condicionadas à conclusão de ambos os requisitos: contrato assinado E vistoria aprovada (quando o plano a exigir).


2. Atributos Principais

CampoTipoObrigatórioNotas
idUUIDSimGerado pelo sistema
tenant_idUUIDSimFK → Tenant
proposta_idUUIDSimFK → Proposta que originou o contrato
cliente_idUUIDSimFK → Cliente
veiculo_idUUIDSimFK → Veículo protegido
plano_idUUIDSimFK → Plano contratado
consultor_idUUIDSimFK → Consultor responsável pela venda
numerostringSimNúmero legível e único por tenant (ex: 2024-00123)
statusenumSimGERADO, AGUARDANDO_ASSINATURA, AGUARDANDO_VISTORIA, ATIVO, CANCELADO, EM_RENOVACAO, ENCERRADO. Ver Ciclo de Vida
vigencia_iniciodateSimData de início da cobertura
vigencia_fimdateSimData de término (pode ser renovado)
valor_mensal_brutodecimalSimValor base do plano sem adicionais ou descontos
valor_opcionais_totaldecimalSimSoma dos valores mensais de todos os opcionais contratados
desconto_concedido_pctdecimalSim% de desconto aplicado na mensalidade
valor_mensalidadedecimalSimValor mensal final cobrado: (bruto + opcionais) × (1 - desconto)
valor_adesaodecimalSimValor final cobrado pela taxa de adesão (pode ser 0.00)
template_contrato_idUUIDSimFK → Template de contrato do plano
assinatura_provedorstringNãoID do documento no provedor de e-Signature (envelope_id)
documento_rascunho_urlstringNãoURL do PDF gerado a partir do template (storage interno)
documento_assinado_urlstringNãoURL do PDF assinado com o certificado (storage interno)
enviado_emtimestampNãoPreenchido quando enviado para assinatura
assinado_attimestampNãoPreenchido ao receber confirmação final da assinatura
created_attimestampSimImutável após criação

3. Agregado: Signatário do Contrato

O Contrato possui um ou mais signatários responsáveis por formalizar o documento digitalmente.

CampoTipoObrigatórioNotas
idUUIDSimGerado pelo sistema
contrato_idUUIDSimFK → Contrato
nomestringSimNome completo do assinante
emailstringSimE-mail de envio
telefonestringNãoFormato E.164. Usado para SMS Token se ativado
papelenumSimCONTRATANTE, TESTEMUNHA, REPRESENTANTE
status_assinaturaenumSimPENDENTE, VISUALIZADO, ASSINADO
data_assinaturatimestampNãoMomento do clique de assinatura
ip_assinaturastringNãoIP registrado pelo provedor de assinatura

3. Agregado: Opcionais do Contrato

Relação N:M entre o Contrato e os Serviços Opcionais/Adicionais contratados, congelando os nomes e valores cobrados no momento em que o Contrato é gerado para fins de auditoria histórica e cobrança exata.

CampoTipoNotas
contrato_idUUIDFK → Contrato
opcional_idUUIDFK → Serviço
snap_nome_opcionalstringNome do opcional contratado
snap_valor_mensaldecimalValor cobrado pelo opcional neste contrato

4. Entidade Relacionada: Proposta

A Proposta foi promovida a entidade com documento próprio. Ver: dominio/proposta.md · regras-negocio/09_propostas.md

A proposta é o estágio anterior ao contrato. Um contrato só é gerado a partir de uma proposta no status ACEITA (e com vistoria aprovada, quando o plano exige).

Proposta (ACEITA) → Contrato (GERADO)

5. Estados do Ciclo de Vida (Contrato)


6. Relacionamentos

Contrato ──── originado de ──── Proposta (1:1)
Contrato ──── protege ───────── Veículo (N:1)
Contrato ──── pertence a ─────── Cliente (N:1)
Contrato ──── usa ─────────────── Plano (N:1)
Contrato ──── vendido por ─────── Consultor (N:1 → Usuário)
Contrato ──── inclui ──────────── Opcionais (N:M → Contrato_Opcional)
Contrato ──── registra ────────── Eventos na Timeline (1:N)

Legenda de Cardinalidade:

  • 1:1 (Um para Um): Relação exclusiva e de correspondência única (ex: um contrato é originado de exatamente uma proposta).
  • N:1 (Muitos para Um): Múltiplos registros deste domínio apontam para um mesmo registro de destino (ex: vários contratos de um mesmo cliente).
  • 1:N (Um para Muitos): Um único registro deste domínio pode possuir vários registros filhos (ex: um contrato registra múltiplos eventos na timeline).
  • N:M (Muitos para Muitos): Relação de múltiplos para múltiplos intermediada por uma tabela agregada (Contrato_Opcional) para congelar valores históricos dos opcionais contratados.

7. Invariantes (Restrições Absolutas)

  • Um contrato aponta para exatamente um veículo. Frotas geram múltiplos contratos.
  • Ao aceitar uma proposta, todas as outras propostas abertas para o mesmo veículo são automaticamente marcadas como SUBSTITUIDA.
  • A assinatura do contrato e a realização da vistoria podem ocorrer em qualquer ordem. No entanto, se o plano contratado exigir vistoria, a ativação operacional (cobertura) e o status do cliente ativo dependem de ambas estarem concluídas e aprovadas.
  • Caso o contrato seja assinado, mas as fotos da vistoria não sejam enviadas pelo cliente dentro do prazo limite parametrizado pelo tenant (ex: vistoria_prazo_envio_dias), o contrato é cancelado automaticamente pelo sistema por decurso de prazo.
  • Se a vistoria realizada for reprovada definitivamente na auditoria, o contrato correspondente torna-se inválido e é automaticamente cancelado pelo sistema.
  • O PDF do contrato é gerado pelo sistema a partir do template do plano com substituição de variáveis — o texto jurídico não pode ser editado diretamente no contrato.
  • Um contrato ATIVO só pode ser cancelado mediante registro de motivo e aprovação do ADMIN ou GESTOR.