Skip to main content

Cálculo de emolumentos de cartório do Paraná (FUNREJUS/VRCext), conforme Lei Estadual 21.869/2023.

Project description

Emolumentos PR Banner

CI Python License: MIT Ruff

Biblioteca Python para cálculo de emolumentos de cartório do Paraná, indexados por VRCext, conforme a Lei Estadual PR nº 21.869/2023 (FUNREJUS).

Entra o tipo de ato e o valor da transação; sai o emolumento detalhado, com o breakdown de cada componente — não apenas o total.

Status: 0.1.0 — alpha. O motor de cálculo está pronto; as tabelas da lei e o valor da VRCext ainda são placeholders (veja Roadmap). Os números só têm validade legal depois de preenchidos os dados oficiais.

Por que isto não é trivial

Calcular emolumento não é "multiplicar por uma alíquota". A regra do PR envolve faixas de valor do ato, indexação por uma unidade estadual (VRCext) que é reajustada periodicamente, e componentes acessórios (FUNREJUS, ISS, taxas). O mesmo conjunto de documentos apresentado por um cliente pode servir a atos diferentes, com emolumentos diferentes. Traduzir esse emaranhado jurídico-financeiro em código correto e testado é o objetivo desta biblioteca.

Instalação

pip install emolumentos-pr        # (após publicação no PyPI)
# ou, em desenvolvimento:
pip install -e ".[dev]"

Uso

Como biblioteca:

from decimal import Decimal
from emolumentos_pr import Ato, TipoAto, calcular
from emolumentos_pr.tabelas import tabela_de
from emolumentos_pr.vrcext import VRCEXT_ATUAL

ato = Ato(tipo=TipoAto.COMPRA_E_VENDA, valor=Decimal("250000.00"))
resultado = calcular(ato, tabela_de(ato.tipo), VRCEXT_ATUAL)

print(resultado.total)
for componente in resultado.componentes:
    print(componente.nome, componente.valor)

Pela linha de comando:

emolpr calcular --tipo compra_e_venda --valor 250000.00

Decisões de design

Escolhas deliberadas — cada uma tem um porquê que vale saber explicar:

  • Decimal em todo valor monetário, nunca float. Float acumula erro de arredondamento; inaceitável em cálculo financeiro/legal.
  • Núcleo sem dependências. O pacote instala e roda só com a biblioteca padrão. A CLI usa argparse.
  • Cálculo em funções puras. A regra de negócio não faz I/O e não guarda estado — mesma entrada, mesma saída. Isso é o que torna a suíte de testes confiável.
  • Resultado sempre auditável. O retorno traz o breakdown de componentes, não só a soma — dá para ver de onde veio cada centavo.
  • Dados da lei isolados. Tabelas e VRCext ficam em módulos próprios; atualizar a lei é editar dado, não caçar número mágico no meio da lógica.

Roadmap

v0.1 (COMPLETO):

  • Motor de cálculo (faixas, indexação por VRCext, truncamento, breakdown)
  • Empacotamento, CI e testes do motor
  • Tabela XI completa de faixas (valor -> VRCext) em tabelas.py
  • VRCext oficial (0,277) em vrcext.py
  • Componentes: Funrejus (0,2% e 25%), FUNDEP, ISSQN, Selo, Distribuidor
  • Compra e venda, doação (com/sem usufruto), escritura sem valor, procuração
  • Multiobjeto em CEV/doação (100% por imóvel)
  • Casos oficiais reconciliando à casa do milésimo em tests/

Todos os atos do escopo v1 reproduzem o sistema do cartório, para qualquer valor.

Atos previstos para o v1.1 (a estrutura já suporta; falta o dado e um exemplo real para reconciliar cada um):

  • Partilha (divórcio/inventário) — item X.b: bem de maior valor a 100%, cada adicional (até nove) a 80%.
  • Apartamento + garagem com matrícula autônoma — item X.c: garagem a 50%.
  • Demais atos da Tabela XI: reconhecimento de firma, autenticação, testamentos, atas notariais, certidões, pública forma, buscas.

Resíduo conhecido: o total da procuração fecha a ~0,003 (os exemplos de sem-valor e procuração discordam na 3ª casa do arredondamento do Funrejus de 25%). Um printout novo do sistema pina a regra.

Fora do escopo (propositalmente): interface web, front-end, banco de dados, múltiplos estados.

Licença

MIT — veja LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

emolumentos_pr-0.1.0.tar.gz (1.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

emolumentos_pr-0.1.0-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

Details for the file emolumentos_pr-0.1.0.tar.gz.

File metadata

  • Download URL: emolumentos_pr-0.1.0.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for emolumentos_pr-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d7bf4050b45241f1ff6d33800582866cc05a92d5942e1a3e8e23347786189633
MD5 bea740b0c45a58c55d8bac5b241cd570
BLAKE2b-256 4242fbc6465539f50b3c98f91777ad31218b5cc50eb9a8be18b569035446dfdf

See more details on using hashes here.

Provenance

The following attestation bundles were made for emolumentos_pr-0.1.0.tar.gz:

Publisher: ci.yml on jefersonbraine/emolumentos-pr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file emolumentos_pr-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: emolumentos_pr-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 12.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for emolumentos_pr-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1aa5ea62443969475d31d8abc5f0dc302640ff9108b42bb24df58cd84f983e1e
MD5 b38db98b4f51f5359574db8aaa3c4f17
BLAKE2b-256 ebbe51d43cd03ebb1d62cdfd834282fe736a6318b2d9284ee1311626ed81148e

See more details on using hashes here.

Provenance

The following attestation bundles were made for emolumentos_pr-0.1.0-py3-none-any.whl:

Publisher: ci.yml on jefersonbraine/emolumentos-pr

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page