Skip to content

Latest commit

 

History

History
149 lines (100 loc) · 4.79 KB

README.rst

File metadata and controls

149 lines (100 loc) · 4.79 KB

IBPT Web Services

Development status Supported Python versions License Latest version
Build status

Implementa uma camada fina para acesso aos web services do IBPT, para auxiliar no cumprimento à Lei 12.741/2012, popularmente conhecida como "De Olho no Imposto". O Instituto Brasileiro de Planejamento e Tributação, IBPT, calcula e fornece os valores aproximados dos tributos para produtos e serviços com base no código NCM (Nomenclatura Comum do Mercosul, para produtos) e no código NBS (Nomenclatura Brasileira de Serviços).

Para que o acesso aos web services seja possível, é preciso cadastrar-se no IBPT para obter seu token de acesso.

Configuração e Consultas Básicas

Exemplo básico de configuração e consulta de produto:

>>> from ibptws import conf
>>> from ibptws import get_produto

>>> conf.token = 'ZyW9z...' # cadastre-se no IBPT para obter seu token
>>> conf.cnpj = '08427847000169'
>>> conf.estado = 'SP'

>>> get_produto('02091021')
Produto(codigo=u'2091021', uf=u'SP', ex=0, descricao=u'Gordura de porco,fresca,refrigerada ou congelada', nacional=4.2, estadual=12.0, importado=6.39)

Similarmente, para consultar um serviço faça:

>>> from ibptws import get_servico
>>> get_servico('0101')
Servico(codigo=u'101', uf=u'SP', descricao=u'An\xe1lise e desenvolvimento de sistemas.', tipo=u'NBS', nacional=13.45, estadual=0.0, municipal=3.9, importado=15.45)

Calculadora DeOlhoNoImposto

A calculadora De Olho no Imposto auxilia na computação dos valores aproximados dos tributos, tornando trivial a consulta por n produtos e/ou servicos e a obtenção dos cálculos parciais e totais dos tributos.

>>> from decimal import Decimal
>>> from ibptws.calculadoras import DeOlhoNoImposto

>>> calc = DeOlhoNoImposto()
>>> calc.produto('02091021', 0, Decimal('5.75'))
>>> calc.servico('0101', Decimal('73.47'))

>>> calc.carga_federal_nacional()
Decimal('10.123215')

>>> calc.carga_federal_importado()
Decimal('11.718540')

>>> calc.carga_estadual()
Decimal('0.6900')

>>> calc.carga_municipal()
Decimal('2.86533')

>>> calc.total_tributos()
Decimal('25.397085')

>>> calc.total()
Decimal('79.22')

>>> calc.percentual_sobre_total()
Decimal('0.3205893082554910376167634436')

Provisionamento de Dados

A calculadora De Olho no Imposto recorre a um proxy para realizar as consultas de produtos e serviços, possibilitando que seja implementada uma camada para provisionamento (cache) das consultas realizadas. Este projeto traz uma implementação de provisionamento baseada em Redis:

from ibptws.calculadoras import DeOlhoNoImposto
from ibptws.provisoes import ProvisaoViaRedis

calc = DeOlhoNoImposto(provisao=ProvisaoViaRedis(
        host='192.168.0.111', port=6379, db=0))

Neste exemplo, as consultas a produtos e serviços serão realizadas através do proxy e, uma vez acessado o web services do IBPT, os dados ficarão provisionados até que expire (o padrão é expirar em 24h, mas você poderá usar os seus próprios critérios).

Testes

Os testes são baseados em pytest e não há acesso real aos serviços do IBPT, portanto não há necessidade de configurar o token de acesso para executar os testes unitários:

$ python setup.py test

Isenção de Responsabilidade

Os autores deste projeto não tem qualquer relação com o Instituto Brasileiro de Planejamento e Tributação (IBPT), e este, por sua vez, não avaliza o uso desta biblioteca de código. Utilize por sua conta e risco.