Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # *-* encoding: utf8 *-*
- 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.serializacao import SerializacaoXML
- from pynfe.processamento.assinatura import AssinaturaA1
- from pynfe.utils.flags import CODIGO_BRASIL
- from decimal import Decimal
- import datetime
- certificado = ""
- senha = ""
- uf = 'mt'
- homologacao = True
- # emitente
- emitente = Emitente(
- razao_social='NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL',
- nome_fantasia='Nome Fantasia da Empresa',
- cnpj='', # cnpj apenas números
- codigo_de_regime_tributario='1', # 1 para simples nacional ou 3 para normal
- inscricao_estadual='', # numero de IE da empresa
- inscricao_municipal='',
- cnae_fiscal='9999999', # cnae apenas números
- endereco_logradouro='',
- endereco_numero='2254',
- endereco_bairro='Bosque da Saúde',
- endereco_municipio='CUIABA',
- endereco_uf='MT',
- endereco_cep='78098970',
- endereco_pais=CODIGO_BRASIL
- )
- # cliente
- cliente = Cliente(
- razao_social='MARIANA CARVALHO SILVA',
- tipo_documento='CPF', #CPF ou CNPJ
- email='email@email.com',
- numero_documento='12345678900', # numero do cpf ou cnpj
- indicador_ie=9, # 9=Não contribuinte
- endereco_logradouro='Rua dos Bobos',
- endereco_numero='Zero',
- endereco_complemento='Ao lado de lugar nenhum',
- endereco_bairro='Aquele Mesmo',
- endereco_municipio='Brasilia',
- endereco_uf='DF',
- endereco_cep='73015132',
- endereco_pais=CODIGO_BRASIL,
- endereco_telefone='11912341234',
- )
- # Nota Fiscal
- nota_fiscal = NotaFiscal(
- emitente=emitente,
- cliente=cliente,
- uf='MT',
- 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='111', # Número do Documento Fiscal.
- data_emissao=datetime.datetime.now(),
- data_saida_entrada=datetime.datetime.now(),
- 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;
- transporte_modalidade_frete=1,
- informacoes_adicionais_interesse_fisco='Mensagem complementar',
- totais_tributos_aproximado=Decimal('21.06'),
- )
- # Produto
- nota_fiscal.adicionar_produto_servico(
- codigo='000328', # id do produto
- descricao='Produto teste',
- ncm='99999999',
- #cest='0100100', # NT2015/003
- cfop='5102',
- unidade_comercial='UN',
- 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,
- icms_modalidade='102',
- icms_origem=0,
- icms_csosn='400',
- pis_modalidade='07',
- cofins_modalidade='07',
- valor_tributos_aprox='21.06'
- )
- # serialização
- serializador = SerializacaoXML(_fonte_dados, homologacao=homologacao)
- nfe = serializador.exportar()
- # assinatura
- a1 = AssinaturaA1(certificado, senha)
- xml = a1.assinar(nfe)
- # envio
- con = ComunicacaoSefaz(uf, certificado, senha, homologacao)
- envio = con.autorizacao(modelo='nfe', nota_fiscal=xml)
- # em caso de sucesso o retorno será o xml autorizado
- if envio[0] == 0:
- print("Autorizado")
- print (envio[1].text)
- # em caso de erro o retorno será o xml de resposta da SEFAZ
- else:
- print (envio[1].text)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement