PROCESSAMENTO - SERIALIZACAO PARA XML ===================================== Populando fonte de dados ------------------------ >>> import datetime >>> from pynfe.entidades import Emitente, Cliente, NotaFiscal, Produto,\ ... Transportadora >>> from pynfe.entidades.fontes_dados import _fonte_dados >>> from pynfe.utils.flags import CODIGO_BRASIL Popula dependentes da NF >>> emitente = Emitente( ... cnpj='12.345.678/0001-90', ... razao_social='Tarsila Calcados Ltda.', ... nome_fantasia='Tarsila Calcados Ltda.', ... inscricao_estadual='123456789012', ... endereco_logradouro='Rua 10', ... endereco_numero='15', ... endereco_complemento='qd 17, lt 10', ... endereco_bairro='Setor Oeste', ... endereco_municipio='5208806', # Goiania ... endereco_uf='GO', ... endereco_cep='75370-000', ... endereco_telefone='6242421212', ... ) >>> cliente = Cliente( ... razao_social='Jose Felipe da Silva', ... tipo_documento='CPF', ... numero_documento='123.456.789-01', ... inscricao_estadual='9876543210', ... endereco_logradouro='AV DAS ROSAS', ... endereco_numero='1777', ... endereco_complemento='10 ANDAR', ... endereco_bairro='PARQUE FONTES', ... endereco_municipio='3304557', # Rio de Janeiro ... endereco_uf='RJ', ... endereco_pais=CODIGO_BRASIL, ... endereco_cep='23950-000', ... endereco_telefone='2132011234', ... ) >>> produto1 = Produto(codigo=1, descricao='Tenis Adidas Cinza') >>> produto2 = Produto(codigo=2, descricao='Sapato Ferracini Preto') >>> transportadora = Transportadora( ... razao_social='WS Cargas S/A', ... tipo_documento='CNPJ', ... numero_documento='123.123.123/0001-12', ... inscricao_estadual='171999999119', ... endereco_logradouro='Rua Central 100 - Fundos - Distrito Industrial', ... endereco_municipio='3304557', # Rio de Janeiro ... endereco_uf='RJ', ... ) Instancia a NF >>> nota_fiscal = NotaFiscal( ... emitente=emitente, ... transporte_transportadora=transportadora, ... cliente=cliente, ... uf='GO', ... modelo=55, ... serie='1', ... numero_nf='1', ... data_emissao=datetime.date.today(), ... data_saida_entrada=datetime.date.today(), ... natureza_operacao='Venda a vista', ... forma_pagamento=0, ... tipo_impressao_danfe=1, # Retrato ... forma_emissao=1, # Normal ... finalidade_emissao=1, ... municipio='3550308', ... codigo_numerico_aleatorio='51800512', ... dv_codigo_numerico_aleatorio='3', ... ) >>> _fonte_dados.contar_objetos() 6 Gerar arquivos XML ------------------ >>> import os >>> CUR_DIR = '.' >>> CAMINHO_SAIDA = os.path.join(CUR_DIR, 'tests', 'saida') >>> from pynfe.processamento.serializacao import SerializacaoXML >>> serializador = SerializacaoXML(_fonte_dados, homologacao=True) Serializando por partes >>> print serializador._serializar_emitente(emitente) 12345678000190 Tarsila Calcados Ltda. Tarsila Calcados Ltda. 123456789012 Rua 10 15 qd 17, lt 10 Setor Oeste 5208806 Goianira GO 75370000 1058 Brasil 6242421212 >>> print serializador._serializar_cliente(cliente) 12345678901 Jose Felipe da Silva 9876543210 AV DAS ROSAS 1777 10 ANDAR PARQUE FONTES 3304557 Rio de Janeiro RJ 23950000 1058 Brasil 2132011234 >>> print serializador._serializar_transportadora(transportadora) 123123123000112 WS Cargas S/A 171999999119 Rua Central 100 - Fundos - Distrito Industrial 3304557 Rio de Janeiro RJ - Gera os arquivos XML a partir dos dados das instancias da NF-e >>> print nota_fiscal.identificador_unico NFe52100112345678000190550010000000011518005123 >>> print serializador._serializar_notas_fiscal(nota_fiscal) 52 51800512 Venda a vista 0 55 1 1 2010-01-13 2010-01-13 0 3550308 1 1 3 2 1 0 PyNFe 0.1 12345678000190 Tarsila Calcados Ltda. Tarsila Calcados Ltda. 123456789012 Rua 10 15 qd 17, lt 10 Setor Oeste 5208806 Goianira GO 75370000 1058 Brasil 6242421212 12345678901 Jose Felipe da Silva 9876543210 AV DAS ROSAS 1777 10 ANDAR PARQUE FONTES 3304557 Rio de Janeiro RJ 23950000 1058 Brasil 2132011234 99171171000194 AV PAULISTA 12345 TERREO CERQUEIRA CESAR 3550308 SAO PAULO SP 99299299000194 AV FARIA LIMA 1500 15 ANDAR PINHEIROS 3550308 SAO PAULO SP 00001 Agua Mineral 5101 dz 1000000.0000 1 10000000.00 und 12000000.0000 1 0 00 0 10000000.00 18.00 1800000.00 01 10000000.00 0.65 65000 01 10000000.00 2.00 200000.00 00002 Agua Mineral 5101 pack 5000000.0000 2 10000000.00 und 3000000.0000 0.3333 0 00 0 10000000.00 18.00 1800000.00 01 10000000.00 0.65 65000 01 10000000.00 2.00 200000.00 20000000.00 18.00 0 0 20000000.00 0 0 0 0 0 130000.00 400000.00 0 20000000.00 0 123123123000112 WS Cargas S/A 171999999119 Rua Central 100 - Fundos - Distrito Industrial 3304557 Rio de Janeiro RJ BXI1717 SP 123456789 BXI1818 SP 123456789 10000 CAIXA LINDOYA 500 1000000000.000 1200000000.000 XYZ10231486 Nota Fiscal de exemplo NF-eletronica.com - Quando gerados me lote, apenas o primeiro arquivo deve ter o cabecalho padrao do XML 1.0 - - Namespace - - A declaração do namespace da assinatura digital deverá ser realizada na própria tag , conforme exemplo abaixo. - Cada documento XML deverá ter o seu namespace individual em seu elemento raiz.