Regras são dados, com ato legal
Alíquotas, multas e índices não ficam escondidos no código. São tabelas de cada município, e cada alteração cita a lei que a autoriza.
Cada município tem as próprias tabelas, e todos os cálculos leem delas:
- Alíquotas do IPTU por uso do imóvel (residencial, comercial, industrial, territorial).
- Planta genérica de valores: valor do m² de terreno por zona fiscal e valor do m² construído por tipo de construção.
- Multa fixa, multa ao dia com teto, juros ao mês e correção monetária, separados por receita (IPTU, ISS, taxas…).
- Índice de correção monetária mês a mês.
- Feriados municipais, que empurram o vencimento para o próximo dia útil.
- Faixas de INSS e IRRF da folha, com data de início de vigência; a folha usa a última tabela vigente no mês calculado.
Toda proposta de alteração exige o ato legal (lei, decreto ou portaria) e guarda o valor anterior, para que qualquer auditor reconstitua por que um valor era o que era em determinada data.
Ninguém altera uma regra sozinho
Quem propõe não aprova. A mudança só passa a valer depois que uma segunda pessoa autorizada confere e aprova.
- O administrador propõe a alteração. Um segundo responsável (administrador ou fiscal; no caso da folha, administrador ou RH) aprova ou rejeita com justificativa.
- A regra é garantida pelo próprio banco de dados: gravar direto na tabela é recusado, mesmo por quem tenta contornar a tela.
- A aprovação e a aplicação da regra acontecem numa única operação: ou as duas se completam, ou nenhuma.
- Fica registrado quem propôs, quem decidiu, quando, o ato legal e o valor anterior.
Proposto por Ana (admin) · Aprovado por Bruno (fiscal) · Ana não consegue aprovar a própria proposta
Cálculo em funções isoladas, sem atalhos
Cada conta que gera valor fica em um único lugar, separada da tela, e todas as telas usam a mesma.
- Valor venal, IPTU, desconto de cota única, parcelas, multa, juros e correção, código de barras FEBRABAN, PIX, folha e partidas contábeis são funções puras: mesma entrada, mesmo resultado, sempre.
- Valores financeiros são calculados em centavos inteiros, o que evita os erros de arredondamento de números decimais (o clássico 0,1 + 0,2 ≠ 0,3).
- Parcelas são divididas de modo que a soma bata exatamente com o total: a diferença de centavos vai para a última parcela, nunca some.
- Pagamento parcial quita o débito original e abre um novo débito pelo saldo, preservando o histórico.
Casos de referência conferidos à mão
Mais de 200 testes automáticos comparam os cálculos com resultados conhecidos, calculados à mão a partir da regra.
- Casos fixos: por exemplo, ISS de R$ 1.420,00 a 5% tem de dar exatamente R$ 71,00; IPTU, encargos por atraso e faixas de INSS/IRRF com valores conferidos manualmente.
- Código de barras: dígitos verificadores módulo 10 e 11 conferidos conforme o padrão FEBRABAN; PIX com CRC16 conforme o manual do Banco Central.
- Testes de propriedade: centenas de combinações aleatórias confirmam regras que nunca podem falhar. As parcelas sempre somam o total, a multa nunca passa do teto e o débito contábil sempre é igual ao crédito.
- Os testes rodam a cada alteração do sistema. Se algum falha, a mudança não segue.
Recálculo independente no banco de dados
Os principais valores são calculados duas vezes, por caminhos diferentes, e comparados.
O aplicativo calcula na tela. O banco de dados refaz as contas com código próprio, escrito separadamente, e aponta qualquer diferença. São 13 conferências por município:
| CTB-01 | Contabilidade | Nenhum lançamento com débitos diferentes dos créditos |
| TRI-01 | Tributos | Nenhum débito marcado como pago sem pagamento registrado |
| TRI-02 | Tributos | Nenhum pagamento em débito que continua em aberto |
| TRI-03 | Tributos | Principal + multa + juros + correção = valor pago, em cada pagamento |
| TRI-04 | Tributos | Nenhum número de guia repetido |
| TRI-05 | Tributos | Nenhum débito com valor zero ou negativo |
| TRI-06 | Tributos | IPTU recalculado (valor venal × alíquota) = IPTU lançado |
| TRI-07 | Tributos | ISS recalculado (serviços × alíquota) = ISS destacado na NFS-e |
| TRI-08 | Tributos | Soma das parcelas = total lançado |
| ORC-01 | Orçamento | Nenhum empenho com pagamento maior que o liquidado |
| ORC-02 | Orçamento | Nenhum empenho com liquidação maior que o empenhado |
| RH-01 | Pessoal | Nenhum item de folha com valor negativo |
| RH-02 | Pessoal | Nenhum servidor com descontos maiores que os proventos |
Se os dois caminhos discordam, o mais provável é um erro de programação em um deles, e a conferência mostra exatamente quais registros divergem.
Travas que o próprio banco de dados impõe
Algumas regras não dependem da tela: o banco recusa a operação, venha de onde vier.
- Partidas dobradas: um lançamento contábil desequilibrado não é gravado.
- Fechamento mensal: depois de fechado o mês, nenhum documento gera lançamento com data nele. A reabertura exige administrador e justificativa.
- Orçamento: não se empenha além do saldo da dotação, e não se paga sem liquidar.
- Contratos: aditivos respeitam os limites legais de acréscimo; o valor só muda por aditivo registrado.
- Estoque: não fica negativo e usa custo médio ponderado; inventário aberto bloqueia movimentações.
- Folha fechada não pode ser recalculada.
- Cada município só enxerga os próprios dados, isolamento garantido em cada consulta.
Arquivos oficiais conferidos antes do download
Todo arquivo para órgão externo é gerado, lido de volta e conferido. Se a conferência encontra erro, o download é bloqueado e o motivo aparece na tela.
- NFS-e (ABRASF 2.04): o XML é lido por um leitor de XML real e conferido contra a estrutura do leiaute oficial: ordem dos campos, campos obrigatórios (como o item da lista de serviços) e formato de cada valor (alíquota em fração, valores com duas casas, código IBGE com 7 dígitos). O ISS é recalculado.
- MSC (Matriz de Saldos Contábeis): o arquivo é relido linha a linha. Para cada conta e informação complementar, saldo final = saldo inicial + débitos − créditos, e os totais batem com o balancete de origem.
- SIOPE e SIOPS: o percentual aplicado é recalculado a partir da receita-base e do valor aplicado, e o demonstrativo é bloqueado se faltar base mensal conferida.
- Publicações de compras e contratos (PNCP): itens em sequência, total = quantidade × valor unitário, documentos válidos, vigência coerente e parcelas × valor = valor global.
Arquivos congelados
Exemplos de NFS-e, MSC, publicação de compra e contrato, PIX e código de barras ficam guardados como referência, byte a byte.
Qualquer mudança no sistema que altere um desses arquivos, mesmo que por um espaço ou uma casa decimal, faz os testes falharem. A mudança só segue se alguém revisar a diferença e a aprovar conscientemente. Foi assim que o campo obrigatório "item da lista de serviços" foi incluído na NFS-e: a diferença ficou visível e foi aprovada de forma explícita.
Conferência automática toda noite
Às 2h (horário de Brasília), todas as conferências rodam para cada município, sem ninguém pedir.
- O resultado fica guardado num histórico permanente: data, regras conferidas e ocorrências.
- Se algo falha, a tela de conferências mostra um alerta para investigar antes de gerar novos arquivos oficiais.
- A equipe autorizada pode rodar a conferência a qualquer momento.
- Toda alteração em dados do município fica numa trilha de auditoria que só aceita novos registros: nada é apagado nem reescrito.
Relatório de conformidade verificável
O resultado das conferências pode ser baixado em PDF. A impressão digital do arquivo fica registrada, e qualquer pessoa pode confirmar aqui que ele não foi alterado.
A impressão digital (SHA-256) é calculada sobre o próprio PDF. Se uma única letra do arquivo mudar, a impressão digital muda e a verificação abaixo falha.
O que estas camadas não substituem
Ser transparente sobre os limites também é parte da exatidão:
- A conferência de estrutura da NFS-e segue o leiaute ABRASF, mas o autorizador do município pode ter regras próprias; a validação final é a do autorizador.
- Os arquivos para SICONFI, SIOPE, SIOPS e PNCP são conferidos pelo City+ antes do envio; a aceitação final é sempre do sistema do órgão.
- Tabelas legais (alíquotas, faixas de INSS/IRRF, índices) dependem do ato legal informado; a aprovação em dupla reduz, mas não elimina, o risco de cadastro errado.
- Recomendamos revisão periódica por contador público e pelo controle interno do município, usando o histórico e o relatório desta página.
