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.1.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.1-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: emolumentos_pr-0.1.1.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.1.tar.gz
Algorithm Hash digest
SHA256 650aef6db988a84a40f8863887d0e1faca62e6f61018dc8fab4904c90b7cae0a
MD5 9fbef2bd7b8168db7e77d6b899995ab0
BLAKE2b-256 c23e89655e52af379fb122505a26b1e0978f7d2f45680b2ab963c35f0d1d93da

See more details on using hashes here.

Provenance

The following attestation bundles were made for emolumentos_pr-0.1.1.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.1-py3-none-any.whl.

File metadata

  • Download URL: emolumentos_pr-0.1.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 986ec4ff175c3bb890128db4a7a601817ec6a94ce4c390b6db776c9cfb9cc51a
MD5 ad602ba4aee476bbe19afdcfe9f6c8bc
BLAKE2b-256 66a8fa0ba01c5dfe03f9f89336c48f65945126f96bc08034f4099b8b6ab89a0e

See more details on using hashes here.

Provenance

The following attestation bundles were made for emolumentos_pr-0.1.1-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