Metadata-Version: 2.0
Name: PyTrustNFe
Version: 0.1.7
Summary: PyTrustNFe é uma biblioteca para envio de NF-e
Home-page: https://github.com/danimaribeiro/PyTrustNFe
Author: Danimar Ribeiro
Author-email: danimaribeiro@gmail.com
License: LGPL-v2.1+
Keywords: nfe,mdf-e
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Plugins
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Dist: Jinja2 (>=2.8)
Requires-Dist: signxml (>=2.0.0)

PyTrustNFe
==========

Biblioteca Python que tem por objetivo enviar NFe, NFCe e NFSe no Brasil

|Coverage Status| |Code Health| |Build Status|

Dependências: \* PyXmlSec \* lxml \* signxml \* suds \* suds\_requests
\* reportlab \* Jinja2

Roadmap
-------

Teste unitários

Emissão de NFCe

Compatibilidade `python 2 e
3 <https://github.com/danimaribeiro/PyTrustNFe/pull/6>`__

Implementar novos provedores de NFSe \* `Betha <cidades/betha.md>`__ -
81 cidades atendidas WIP \* `GINFES <cidades/ginfes.md>`__ - 79 cidades
atendidas \* `WebISS <cidades/webiss.md>`__ - 51 cidades atendidas \*
`ISSIntel <cidades/issintel.md>`__ - 32 cidades atendidas \*
`ISSNET <cidades/issnet.md>`__ - 32 cidades atendidas \*
`Saatri <cidades/saatri.md>`__ - 31 cidades atendidas

Exemplos de uso da NFe
----------------------

Consulta Cadastro por CNPJ:

.. code:: python

    from pytrustnfe.nfe import consulta_cadastro
    from pytrustnfe.certificado import Certificado

    certificado = open("/path/certificado.pfx", "r").read()
    certificado = Certificado(certificado, 'senha_pfx')
    obj = {'cnpj': '12345678901234', 'estado': '42'}
    resposta = consulta_cadastro(certificado, obj=obj, ambiente=1, estado='42')

Exemplo de uso da NFSe Paulistana
---------------------------------

Envio de RPS por lote

.. code:: python

    certificado = open('/path/certificado.pfx', 'r').read()
    certificado = Certificado(certificado, '123456')
    # Necessário criar um dicionário com os dados, validação dos dados deve
    # ser feita pela aplicação que está utilizando a lib
    rps = [
        {
            'assinatura': '123',
            'serie': '1',
            'numero': '1',
            'data_emissao': '2016-08-29',
            'codigo_atividade': '07498',
            'valor_servico': '2.00',
            'valor_deducao': '3.00',
            'prestador': {
                'inscricao_municipal': '123456'
            },
            'tomador': {
                'tipo_cpfcnpj': '1',
                'cpf_cnpj': '12345678923256',
                'inscricao_municipal': '123456',
                'razao_social': 'Trustcode',
                'tipo_logradouro': '1',
                'logradouro': 'Vinicius de Moraes, 42',
                'numero': '42',
                'bairro': 'Corrego',
                'cidade': '4205407',  # Código da cidade, de acordo com o IBGE
                'uf': 'SC',
                'cep': '88037240',
            },
            'codigo_atividade': '07498',
            'aliquota_atividade': '5.00',
            'descricao': 'Venda de servico'
        }
    ]
    nfse = {
        'cpf_cnpj': '12345678901234',
        'data_inicio': '2016-08-29',
        'data_fim': '2016-08-29',
        'total_servicos': '2.00',
        'total_deducoes': '3.00',
        'lista_rps': rps
    }

    retorno = envio_lote_rps(certificado, nfse=nfse)
    # retorno é um dicionário { 'received_xml':'', 'sent_xml':'', 'object': object() }
    print retorno['received_xml']
    print retorno['sent_xml']

    # retorno['object'] é um objeto python criado apartir do xml de resposta
    print retorno['object'].Cabecalho.Sucesso
    print retorno['object'].ChaveNFeRPS.ChaveNFe.NumeroNFe
    print retorno['object'].ChaveNFeRPS.ChaveRPS.NumeroRPS

Cancelamento de NFSe:

.. code:: python

    from pytrustnfe.certificado import Certificado
    from pytrustnfe.nfse.paulistana import cancelamento_nfe

    certificado = open('/path/certificado.pfx', 'r').read()
    certificado = Certificado(certificado, '123456')
    cancelamento = {
        'cnpj_remetente': '123',
        'assinatura': 'assinatura',
        'numero_nfse': '456',
        'inscricao_municipal': '654',
        'codigo_verificacao': '789',
    }

    retorno = cancelamento_nfe(certificado, cancelamento=cancelamento)

    # retorno é um dicionário { 'received_xml':'', 'sent_xml':'', 'object': object() }
    print retorno['received_xml']
    print retorno['sent_xml']

    # retorno['object'] é um objeto python criado apartir do xml de resposta
    print retorno['object'].Cabecalho.Sucesso

    if not retorno['object'].Cabecalho.Sucesso: # Cancelamento com erro
        print retorno['object'].Erro.Codigo
        print retorno['object'].Erro.Descricao

.. |Coverage Status| image:: https://coveralls.io/repos/danimaribeiro/PyTrustNFe/badge.svg?branch=master
   :target: https://coveralls.io/r/danimaribeiro/PyTrustNFe?branch=master
.. |Code Health| image:: https://landscape.io/github/danimaribeiro/PyTrustNFe/master/landscape.svg?style=flat
   :target: https://landscape.io/github/danimaribeiro/PyTrustNFe/master
.. |Build Status| image:: https://travis-ci.org/danimaribeiro/PyTrustNFe.svg?branch=master
   :target: https://travis-ci.org/danimaribeiro/PyTrustNFe


