You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
martini97 7cca0686b9 Merge branch 'master' of https://github.com/danimaribeiro/PyTrustNFe 9 years ago
docs Adicionado arquivos de servicos NFe 11 years ago
pytrustnfe Adicionadas urls da NFCe 9 years ago
.gitignore Código inicial 11 years ago
.travis.yml Adicionando dependencias ao signxml 9 years ago
LICENSE.txt Adding licence headers 9 years ago
README.md Python highlight 9 years ago
requirements.txt Movendo classe que gera o danfe de lugar 9 years ago
setup.py Ajuste da versão 0.1.5 9 years ago

README.md

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

Exemplos de uso da NFe

Consulta Cadastro por CNPJ:

    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

    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',
            'total_servicos': '2.00',
            'total_deducoes': '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': 'Floripa',
                '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',
        '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:

    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