Lista de Contratos
Pré-requisitos de acesso
- Permissão (módulo):
viewContracts(para ver a listagem) OUmanageContracts(para criar/editar/excluir) - Licença/Feature: Nenhuma.
- Contêiner do menu: GERAL → grupo Contratos
O que é / quando usar
Tela central de gestão dos contratos firmados com os clientes — acordos formais com valor total, vigência, tipo de pagamento (fiat ou token) e um cronograma de parcelas. O operador busca, filtra, cria, edita e exclui contratos, e controla o débito automático de cada um. É o ponto de partida para acessar os Detalhes do contrato e o formulário de Criar/Editar contrato.
Pré-condições
- Permissão:
viewContractspara ver a listagem;manageContractspara os botões Novo, Editar e Excluir (eles aparecem condicionados por*appHasPermission="'manageContracts'"). Permissão dupla — enum CPM no backend + módulo dinâmico no DB. - Licença/Feature: Nenhuma.
- Dependências de outras telas: os Tipos de contrato precisam existir antes de criar um contrato — ver Tipos de contrato. Para débito automático em fiat, a feature
DIGITAL_BANKINGprecisa estar habilitada.
Passo a passo
- Acesse o menu Contratos → Lista de contratos.
- Use a busca (por nome ou e-mail do cliente) e os filtros de tipo e de valor (operador de comparação + valor).
- Para abrir um contrato, clique em visualizar (olho) → vai para os detalhes.
- Para editar, clique em editar (lápis). Para excluir, clique em excluir (lixeira) — disponível apenas em status permitidos.
- Para criar, clique em Novo.
- Ligue/desligue o Débito automático pelo toggle da linha; confirme no bottom-sheet.
Filtros e colunas
| Filtro/Coluna | O que mostra | Origem do dado |
|---|---|---|
| Busca (nome ou e-mail) | Filtra contratos pelo cliente | Enviada como searchInput (debounce de 1s) |
| Tipo | Filtra por tipo de contrato cadastrado | selectedFilterType (nome do tipo); "Todos" remove o filtro |
| Operador de comparação | Como comparar o valor: igual, maior, maior ou igual, menor, menor ou igual | comparisonOperator — só filtra junto com um valor preenchido |
| Filtrar por valor | Valor numérico de comparação | searchAmountInput — sozinho não filtra sem operador |
| Contrato (Título) | Nome do contrato | title |
| Valor | Total do contrato com símbolo da moeda (fiat) ou ID do token | totalValue (BigNumber; 2 casas em fiat, 6 em token) |
| Status | Estado do contrato (pendente, aceito, cancelado, negado, finalizado) | status |
| Cliente | E-mail do cliente | client.email |
| Débito automático | Toggle de débito automático por linha | automaticDebit |
| Ações | Visualizar / Editar / Excluir | — |
TIP
O filtro por valor exige operador + valor juntos. Inserir só o valor não filtra; escolher só o operador também não. Esse é o comportamento esperado, não um bug.
Ações e modais
- Novo: vai para o formulário de criação (
/manage-contracts/create). RequermanageContracts. - Visualizar (olho): abre os Detalhes do contrato.
- Editar (lápis): abre o formulário em modo edição. Requer
manageContracts. - Excluir (lixeira): só aparece quando o status é pendente ou aceito. Abre bottom-sheet de confirmação; ao confirmar, chama
deleteContract. - Débito automático (toggle): ao alternar, abre bottom-sheet de confirmação (texto distinto para ligar/desligar). Confirmando, chama
updateContract; se o operador cancelar, o toggle volta ao estado anterior.
Regras de negócio / cuidados
Atenção
- Exclusão restrita: só é possível excluir contratos em status pendente ou aceito. Após finalizado/cancelado/negado, a lixeira fica oculta.
- Débito automático = cobrança real: quando ligado, o scheduler diário debita automaticamente do saldo do cliente as parcelas com competência vencida (de contratos aceitos). Desligar transfere a responsabilidade ao cliente, que passa a pagar manualmente pela tela de contratos no app Midas.
- O scheduler só processa contratos com status aceito — um contrato pendente não é cobrado mesmo com débito automático ligado, pois o cliente ainda não aceitou.
- Valores financeiros: o total é BigNumber; a tela exibe com 2 casas para fiat e 6 para token. Não arredonde manualmente.
- Status APPROVED / saldo: o débito automático em fiat exige
DIGITAL_BANKINGativo e saldo na conta digital do cliente; se faltar saldo, a parcela vai para vencida (overdue) e o cliente/admin é notificado por e-mail.