JamesProduto · Funcionalidades · Desenvolvimento
Repositório

feature · observed

Tags financeiras

Classificação flexível de transações e itens financeiros.

Visão Geral

As Tags Financeiras substituem o conceito clássico e engessado de "Categorias". Elas oferecem liberdade para classificar transações ou itens de transação sob múltiplas perspectivas sem a necessidade de árvores complexas de "Categoria > Subcategoria".

Tabela: financial_tags

ColunaTipoDescrição
idbigintChave primária.
namestringNome identificador único da tag.
iconstringNome do componente de ícone (ex: heroicon-o-shopping-cart, tabler-basket, phosphor-coffee).
color_hexstringCódigo de cor hexadecimal associado à tag (ex: #10b981).
is_protectedbooleanFlag que impede edição ou exclusão das tags obrigatórias do sistema.
created_attimestampData de criação.
updated_attimestampData da última atualização.

Tabela Auxiliar: financial_taggables (Polimórfica)

Para garantir flexibilidade, a relação é polimórfica através da tabela financial_taggables:

  • Diretamente em uma Transação Completa (financial_transactions).
  • Apenas em um Item da Transação (financial_transaction_items), ideal para separar impostos, juros e produtos de uma única Nota Fiscal.
  • Possui a coluna booleana is_primary para definir qual tag resume a transação nos gráficos de Sankey e Fluxo de Caixa.

Diagrama Relacional (ER)

Diagram Design · Mermaid · arraste para mover · Ctrl/⌘ + scroll para zoom

100%Abrir inteiro ↗

Renderizando diagrama declarativo…

Legenda
  • Entidade
  • Chave primária
  • Chave estrangeira
  • Relacionamento
Leitura semântica

Tags financeiras são ligadas a transações ou itens por FINANCIAL_TAGGABLES, que guarda o tipo polimórfico e o marcador de tag primária.

Fonte declarativa: diagrams/sources/tags-model.mmd

Regras de Negócio e Comportamento

  • Exclusão Definitiva (Hard Deletes): Tags não possuem Lixeira (soft deletes). A exclusão é estritamente bloqueada caso a tag já esteja associada a alguma transação ou item. Se ela estiver livre, é deletada definitivamente.
  • Tags de Sistema Protegidas: As tags estruturais (ex: Transferência, Reembolso, Juros, Saldo Inicial, Pagamento Parcial) são semeadas pelo sistema com is_protected = true. O usuário não pode deletá-las nem renomeá-las.
  • Ecossistema Expandido de Ícones (Blade Icons): O sistema suporta ícones das bibliotecas Heroicons (heroicon-o-), Tabler Icons (tabler-) e Phosphor Icons (phosphor-*), validados dinamicamente através da regra ValidIcon.
  • Seeder Flexível: Ao configurar o ambiente inicial, tags comuns (como Alimentação, Mercado, Transporte, Moradia) são criadas desprotegidas via FinancialTagSeeder, permitindo personalização livre.
  • Seleção Avançada na Interface: A criação de tags disponibiliza um seletor visual de cores e uma busca rápida de ícones com autofoco e renderização instantânea via Ajax.