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 PyPI 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.2.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.2.0-py3-none-any.whl (14.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: emolumentos_pr-0.2.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.2.0.tar.gz
Algorithm Hash digest
SHA256 9f86b880de4a678753e79d03147d30c719ddeb8054c06225249ba23bc761a6ce
MD5 28c3be96f44659c26ecfaa7815cf0a01
BLAKE2b-256 84cf51e9512dbd4c6d4c62bf6ad74948ef007d923b60f4dd56272402a33d0fbd

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: emolumentos_pr-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 14.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.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f4f6f1b2edc01123231146c87192473d44424bfd564d0323acd417a9af7ea9d9
MD5 af7a17baea87a6e9786df7eda42f1ab6
BLAKE2b-256 bb1af2bb86dfe65e0100840ab83862ad71db5dfb7bcce25694598b6aff822d9a

See more details on using hashes here.

Provenance

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