diff --git a/test.py b/test.py index ee9aa7c..fc775f8 100644 --- a/test.py +++ b/test.py @@ -1,40 +1,47 @@ #!/usr/bin/env python # *-* encoding: utf8 *-* - -from decimal import Decimal - +from pynfe.processamento.comunicacao import ComunicacaoSefaz from pynfe.entidades.cliente import Cliente from pynfe.entidades.emitente import Emitente from pynfe.entidades.notafiscal import NotaFiscal from pynfe.entidades.fonte_dados import _fonte_dados -from pynfe.processamento.comunicacao import ComunicacaoSefaz from pynfe.processamento.serializacao import SerializacaoXML from pynfe.processamento.assinatura import AssinaturaA1 from pynfe.utils.flags import CODIGO_BRASIL +from decimal import Decimal import datetime +certificado = "/home/user/certificado.pfx" +senha = 'senha' +uf = 'pr' +homologacao = True + +# emitente emitente = Emitente( - razao_social='Spring Publicacoes Ltda', - nome_fantasia='Spring Publicacoes', - cnpj='08234482000156', - codigo_de_regime_tributario='3', # 1 para simples nacional ou 3 para normal - inscricao_estadual='149431130117', # numero de IE da empresa - endereco_logradouro='RUA FERREIRA DE ARAUJO', - endereco_numero='202', - endereco_complemento='9o andar - cj 91/92', - endereco_bairro='PINHEIROS', - endereco_municipio='SAO PAULO', - endereco_uf='SP', - endereco_cep='05428000', - endereco_pais=CODIGO_BRASIL, + razao_social='NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL', + nome_fantasia='Nome Fantasia da Empresa', + cnpj='99999999000199', # cnpj apenas números + codigo_de_regime_tributario='1', # 1 para simples nacional ou 3 para normal + inscricao_estadual='9999999999', # numero de IE da empresa + inscricao_municipal='12345', + cnae_fiscal='9999999', # cnae apenas números + endereco_logradouro='Rua da Paz', + endereco_numero='666', + endereco_bairro='Sossego', + endereco_municipio='Paranavaí', + endereco_uf='PR', + endereco_cep='87704000', + endereco_pais=CODIGO_BRASIL ) + +# cliente cliente = Cliente( razao_social='MARIANA CARVALHO SILVA', - tipo_documento='CPF', #CPF ou CNPJ + tipo_documento='CPF', #CPF ou CNPJ email='email@email.com', numero_documento='12345678900', # numero do cpf ou cnpj - inscricao_estadual='ISENTO', + indicador_ie=9, # 9=Não contribuinte endereco_logradouro='Rua dos Bobos', endereco_numero='Zero', endereco_complemento='Ao lado de lugar nenhum', @@ -45,76 +52,72 @@ cliente = Cliente( endereco_pais=CODIGO_BRASIL, endereco_telefone='11912341234', ) + +# Nota Fiscal nota_fiscal = NotaFiscal( emitente=emitente, cliente=cliente, uf='PR', - # NAO INFORMAR SISTEMA PREENCHE SOZINHO codigo_numerico_aleatorio=None, - natureza_operacao='VENDA', # venda, compra, transferência, devolução, importação, consignação, remessa (para fins de demonstração, de industrialização ou outra) - forma_pagamento='0', # 0=Pagamento à vista; 1=Pagamento a prazo; 2=Outros. - modelo=55, # 55=NF-e; 65=NFC-e + natureza_operacao='VENDA', # venda, compra, transferência, devolução, etc + forma_pagamento=0, # 0=Pagamento à vista; 1=Pagamento a prazo; 2=Outros. + tipo_pagamento=1, + modelo=55, # 55=NF-e; 65=NFC-e serie='1', - numero_nf='100', # Número do Documento Fiscal. ?? numero orçamento ?? + numero_nf='111', # Número do Documento Fiscal. data_emissao=datetime.datetime.now(), data_saida_entrada=datetime.datetime.now(), - #hora_saida_entrada=datetime.time(03,12,00), - tipo_documento=1, # 0=entrada; 1=saida - municipio='4118402', # buscar no banco - #municipio='3550308', - tipo_impressao_danfe=1, # nfce 4 0=Sem geração de DANFE;1=DANFE normal, Retrato;2=DANFE normal, Paisagem;3=DANFE Simplificado;4=DANFE NFC-e; - forma_emissao='1', # 1=Emissão normal (não em contingência); (NAO EMITIR EM CONTINGENCIA) - cliente_final=1, # 0=Normal;1=Consumidor final; + tipo_documento=1, # 0=entrada; 1=saida + municipio='4118402', # Código IBGE do Município + tipo_impressao_danfe=1, # 0=Sem geração de DANFE;1=DANFE normal, Retrato;2=DANFE normal Paisagem;3=DANFE Simplificado;4=DANFE NFC-e; + forma_emissao='1', # 1=Emissão normal (não em contingência); + cliente_final=1, # 0=Normal;1=Consumidor final; indicador_destino=1, indicador_presencial=1, - finalidade_emissao='1', # 1=NF-e normal;2=NF-e complementar;3=NF-e de ajuste;4=Devolução de mercadoria. - processo_emissao='0', #0=Emissão de NF-e com aplicativo do contribuinte; + finalidade_emissao='1', # 1=NF-e normal;2=NF-e complementar;3=NF-e de ajuste;4=Devolução de mercadoria. + processo_emissao='0', #0=Emissão de NF-e com aplicativo do contribuinte; transporte_modalidade_frete=1, - informacoes_adicionais_interesse_fisco='NF-e emitida de acordo com os termos do Convenio ICMS 24/2011. Assinatura Numero 8061746', - totais_tributos_aproximado=0, + informacoes_adicionais_interesse_fisco='Mensagem complementar', + totais_tributos_aproximado=Decimal('21.06'), ) -nota_fiscal.adicionar_produto_servico(codigo='000328', # id do produto (000328 era o id no antigo sistemas de assinatura) - descricao='Armacao para oculos', # nao utilizar caracteres especiais - ncm='90031100', # categoria international do prod (sempre esse para assinaturas) + +# Produto +nota_fiscal.adicionar_produto_servico( + codigo='000328', # id do produto + descricao='Produto teste', + ncm='99999999', + #cest='0100100', # NT2015/003 cfop='5102', - #ean='123', unidade_comercial='UN', - quantidade_comercial=Decimal('12'), # 12 unidades (12 revistas) - valor_unitario_comercial=Decimal('9.75'), - valor_total_bruto=Decimal('117.00'), + quantidade_comercial=Decimal('12'), # 12 unidades + valor_unitario_comercial=Decimal('9.75'), # preço unitário + valor_total_bruto=Decimal('117.00'), # preço total unidade_tributavel='UN', quantidade_tributavel=Decimal('12'), valor_unitario_tributavel=Decimal('9.75'), ind_total=1, - numero_pedido='12345', # id da ordem - numero_do_item='12345328', # id do item (pode ser o id do produto concatenado com o do pedido) icms_modalidade='102', icms_origem=0, icms_csosn='400', pis_modalidade='07', cofins_modalidade='07', - # pis_tipo_calculo='01', - # pis_valor_base_calculo=Decimal('117.00'), - # pis_aliquota_percentual=Decimal('0.65'), - # pis_valor=Decimal('0.76'), - # cofins_situacao_tributaria='01', - # cofins_valor_base_calculo=Decimal('117.00'), - # cofins_aliquota_percentual=Decimal('3.00'), - # cofins_valor=Decimal('3.51') + valor_tributos_aprox='21.06' ) -serializador = SerializacaoXML(_fonte_dados, homologacao=True) -xml = serializador.exportar(retorna_string=True) - -certificado = "/home/user/certificado.pfx" -senha = 'senha' -uf = 'pr' -homologacao = True +# serialização +serializador = SerializacaoXML(_fonte_dados, homologacao=homologacao) +nfe = serializador.exportar() # assinatura a1 = AssinaturaA1(certificado, senha) -xml = a1.assinar(xml) +xml = a1.assinar(nfe) +# envio con = ComunicacaoSefaz(uf, certificado, senha, homologacao) envio = con.autorizacao(modelo='nfe', nota_fiscal=xml) -print (envio.text) \ No newline at end of file +# em caso de sucesso o retorno será o xml autorizado +if envio[0] == 0: + print (envio[1].text) +# em caso de erro o retorno será o xml de resposta da SEFAZ +else: + print (envio[1].text)