From adf2d3c422eff6be55772c981b0e02277d9dd753 Mon Sep 17 00:00:00 2001 From: Sergio Oliveira Date: Sat, 22 Sep 2012 03:10:45 -0300 Subject: [PATCH] Serializacao do campo I do produto --- pynfe/entidades/notafiscal.py | 12 ++++++++++++ pynfe/processamento/serializacao.py | 28 ++++++++++++++++++++++++++++ test.py | 35 +++++++++++++++++++++++++---------- 3 files changed, 65 insertions(+), 10 deletions(-) diff --git a/pynfe/entidades/notafiscal.py b/pynfe/entidades/notafiscal.py index 42c48fe..be48f39 100644 --- a/pynfe/entidades/notafiscal.py +++ b/pynfe/entidades/notafiscal.py @@ -428,9 +428,21 @@ class NotaFiscalProduto(Entidade): # - Desconto desconto = Decimal() + # - Outras despesas acessórias + outras_despesas_acessorias = Decimal() + + # - Indica se valor do Item (vProd) entra no valor total da NF-e + compoe_valor_total = 1 + # - Valor total bruto (obrigatorio) valor_total_bruto = Decimal() + # - Número do Pedido de Compra + numero_pedido = str() + + # - Item do Pedido de Compra + numero_do_item = str() + # - Produto especifico (seleciona de lista) - NF_PRODUTOS_ESPECIFICOS produto_especifico = str() diff --git a/pynfe/processamento/serializacao.py b/pynfe/processamento/serializacao.py index a8f0974..a2fa85a 100644 --- a/pynfe/processamento/serializacao.py +++ b/pynfe/processamento/serializacao.py @@ -416,3 +416,31 @@ class SerializacaoPipes(Serializacao): ] return '|'.join(serial_data) + + def _serializar_produto_servico(self, produto_servico): + serial_data = [ + 'I', + produto_servico.codigo, + produto_servico.ean, + produto_servico.descricao, + produto_servico.ncm, + produto_servico.ex_tipi, + produto_servico.cfop, + produto_servico.unidade_comercial, + str(produto_servico.quantidade_comercial), + str(produto_servico.valor_unitario_comercial), + str(produto_servico.valor_total_bruto), + produto_servico.ean_tributavel, + produto_servico.unidade_tributavel, + str(produto_servico.quantidade_tributavel), + str(produto_servico.valor_unitario_tributavel), + str(produto_servico.total_frete), + str(produto_servico.total_seguro), + str(produto_servico.desconto), + str(produto_servico.outras_despesas_acessorias), + str(produto_servico.compoe_valor_total), + produto_servico.numero_pedido, + produto_servico.numero_do_item, + '\nM', + ] + return '|'.join(serial_data) diff --git a/test.py b/test.py index 8436100..520c04f 100644 --- a/test.py +++ b/test.py @@ -1,9 +1,11 @@ #!/usr/bin/env python # *-* encoding: utf8 *-* +from decimal import Decimal + from pynfe.entidades.cliente import Cliente from pynfe.entidades.emitente import Emitente -from pynfe.entidades.notafiscal import NotaFiscal +from pynfe.entidades.notafiscal import NotaFiscal, NotaFiscalProduto from pynfe.entidades.fonte_dados import _fonte_dados from pynfe.processamento.serializacao import SerializacaoPipes from pynfe.utils.flags import CODIGO_BRASIL @@ -13,8 +15,8 @@ serializador = SerializacaoPipes(_fonte_dados, homologacao=True) emitente = Emitente( razao_social='Spring Publicacoes Ltda', cnpj='08234482000156', - codigo_de_regime_tributario='3', - inscricao_estadual='149431130117', + 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', @@ -31,7 +33,7 @@ cliente = Cliente( razao_social='MARIANA CARVALHO SILVA', tipo_documento='CPF', #CPF ou CNPJ email='email@email.com', - numero_documento='12345678900', + numero_documento='12345678900', # numero do cpf ou cnpj endereco_logradouro='Rua dos Bobos', endereco_numero='Zero', endereco_complemento='Ao lado de lugar nenhum', @@ -44,11 +46,24 @@ cliente = Cliente( ) print serializador._serializar_cliente(cliente) -nota_fiscal = NotaFiscal( - emitente=emitente, - cliente=cliente, +produto = NotaFiscalProduto( + codigo='000328', # id do produto (000328 era o id no antigo sistemas de assinatura) + descricao='Assinatura Rolling Stone', + ncm='49029000', # categoria international do prod (sempre esse para assinaturas) + cfop='6922', + unidade_comercial='UN', + quantidade_comercial=Decimal('12'), # 12 unidades (12 revistas) + valor_unitario_comercial=Decimal('9.75'), + valor_total_bruto=Decimal('117.00'), + unidade_tributavel='UN', + quantidade_tributavel=Decimal('12'), + valor_unitario_tributavel=Decimal('9.75'), + numero_pedido='12345', # id da ordem + numero_do_item='12345328', # id do item (pode ser o id do produto concatenado com o do pedido) ) +print serializador._serializar_produto_servico(produto) -import pprint -pprint.pprint(emitente.__dict__) -pprint.pprint(cliente.__dict__) +#nota_fiscal = NotaFiscal( +# emitente=emitente, +# cliente=cliente, +#)