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.
108 lines
3.3 KiB
108 lines
3.3 KiB
# -*- coding: utf-8 -*-
|
|
|
|
import logging
|
|
from datetime import datetime
|
|
from pytrustnfe.nfe import consulta_cadastro
|
|
#import pytrustnfe.nfe
|
|
from pytrustnfe.certificado import Certificado
|
|
from pytrustnfe.nfse.paulistana import cancelamento_nfe
|
|
from pytrustnfe.nfse.paulistana import envio_lote_rps
|
|
from pytrustnfe.nfse.carioca import gerar_nfse
|
|
|
|
|
|
logger = logging.getLogger(__name__)
|
|
dbg = 0
|
|
|
|
|
|
#certificado_path = open(b'/data/certs/23834691000124.pfx', 'rb').read()
|
|
certificado_path = open(b'/data/certs/expirado.pfx', 'rb').read()
|
|
certificado = Certificado(certificado_path, 'audaz$321')
|
|
|
|
if dbg>1 :print('type(certificado)')
|
|
if dbg>1 :print(type(certificado))
|
|
if dbg>9 :print(certificado.pfx)
|
|
if dbg>1 :print(certificado.password)
|
|
# Necessário criar um dicionário com os dados, validação dos dados deve
|
|
# ser feita pela aplicação que está utilizando a lib
|
|
|
|
#retorno = envio_lote_rps(certificado, nfse=nfse)
|
|
#retorno = gerar_nfse(certificado, nfse=rps)
|
|
|
|
#xml = { "rps" : {"rps" : { "numero" : "1" }}}
|
|
#retorno = gerar_nfse(certificado, nfse=xml)
|
|
|
|
rps = {
|
|
'ambiente': '2',
|
|
'rps': {
|
|
'ambiente': '2',
|
|
'numero': '1',
|
|
'serie': 'ABC',
|
|
'tipo_rps': '1',
|
|
'data_emissao': '2010-01-01T21:00:00',
|
|
'natureza_operacao': '1',
|
|
'optante_simples': '1',
|
|
'incentivador_cultural': '2',
|
|
'status': '1',
|
|
#'regime_tributacao': '',
|
|
#'numero_substituido': '',
|
|
'#serie_substituido': '',
|
|
'#tipo_substituido': '',
|
|
'valor_servico': '9.99',
|
|
'valor_deducao': '0',
|
|
'valor_pis': '0',
|
|
'valor_cofins': '0',
|
|
'valor_inss': '0',
|
|
'valor_ir': '0',
|
|
'valor_csll': '0',
|
|
'iss_retido': '0',
|
|
'valor_iss': '0',
|
|
'valor_iss_retido': '0',
|
|
'outras_retencoes': '0',
|
|
'base_calculo': '9.99',
|
|
'aliquota_issqn': '0.05',
|
|
'valor_liquido_nfse': '9.99',
|
|
'desconto_incondicionado': '',
|
|
'desconto_condicionado': '',
|
|
'codigo_servico': '0107',
|
|
'cnae_servico': '',
|
|
'codigo_tributacao_municipio': '010701',
|
|
'codigo_municipio': '3304557',
|
|
'descricao': 'Venda de servico',
|
|
'prestador': {
|
|
'cnpj': '123456789011213',
|
|
'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',
|
|
'complemento': '',
|
|
'bairro': 'Corrego',
|
|
'cidade': '4205407', # Código da cidade, de acordo com o IBGE
|
|
'uf': 'SC',
|
|
'cep': '88037240',
|
|
'tomador.telefone': '',
|
|
'tomador.email': ''
|
|
},
|
|
}
|
|
}
|
|
|
|
|
|
retorno = gerar_nfse(certificado, **rps)
|
|
|
|
|
|
|
|
|
|
# retorno é um dicionário { 'received_xml':'', 'sent_xml':'', 'object': object() }
|
|
if dbg>=9 :print(retorno['sent_xml'])
|
|
if dbg>=1 :print(retorno['received_xml'])
|
|
|
|
# retorno['object'] é um objeto python criado apartir do xml de resposta
|
|
if dbg>=9 :print(retorno['object'])
|
|
#print retorno['object'].Cabecalho.Sucesso
|
|
#print retorno['object'].ChaveNFeRPS.ChaveNFe.NumeroNFe
|
|
#print retorno['object'].ChaveNFeRPS.ChaveRPS.NumeroRPS
|