Peculium v0.10.0 — editar lançamento
Editar lançamento — e como o razão append-only permite isso sem mentir.
Duas operações, não uma
Clique em detalhes, na tela de Lançamentos. O que se pode fazer ali são duas coisas diferentes, e a diferença é a própria regra do sistema.
A observação muda no lugar. É anotação livre — "aporte do 13º", "ordem parcial", "conferido com o extrato" — e nada em posição, preço médio ou imposto depende dela. Por isso é o único campo que pode ser alterado sem mais nada. Ganhou coluna própria na tabela.
Qualquer número usa Corrigir valores. Data, quantidade, preço, custos: o formulário abre preenchido e, ao salvar, o lançamento é estornado e um novo entra no lugar.
As três linhas convivem no extrato: o original, o estorno que anula o efeito dele e o novo. O razão não sobrescreve linha — o que o imposto apurou ontem tem de continuar conferível. Se a linha fosse reescrita, a apuração de um mês fechado mudaria sozinha e não haveria como saber por quê. O motivo da correção vai para a auditoria.
O hash_origem fica com o lançamento original de propósito: assim reimportar o mesmo arquivo continua reconhecendo a linha como já vista, em vez de criar uma terceira cópia.
Dois defeitos achados construindo isso
O botão de confirmar não funcionava num diálogo aberto a partir de outro. O evento close de um <dialog> é disparado numa tarefa enfileirada, não na hora. Com um ouvinte por abertura, o close atrasado do primeiro consumia o ouvinte do segundo, e o botão do diálogo novo não fazia nada. Afetava qualquer modal encadeado, não só este. Agora o ouvinte é um só e ignora close que chegue com o diálogo já reaberto.
Corrigir preço ou quantidade não recalculava o valor. Em compra e venda o valor gravado vence o cálculo, então a correção gravaria o preço novo com o total velho. Em provento o valor continua sendo o dado principal e não é recalculado — recalcular de quantidade × preço zeraria o lançamento.
9 testes de unidade e 5 de tela novos. 401 unitários e 48 E2E.
O Windows pode barrar o executável (Smart App Control): use Peculium.cmd ou rode do código-fonte.