diff --git a/pynfe/processamento/serializacao.py b/pynfe/processamento/serializacao.py index 053c13b..a800a70 100644 --- a/pynfe/processamento/serializacao.py +++ b/pynfe/processamento/serializacao.py @@ -261,7 +261,7 @@ class SerializacaoXML(Serializacao): icms = etree.SubElement(imposto, 'ICMS') icms_csosn = ('102', '103', '300', '400') if produto_servico.icms_modalidade in icms_csosn: - icms_item = etree.SubElement(icms, 'ICMSSN'+produto_servico.icms_modalidade) + icms_item = etree.SubElement(icms, 'ICMSSN102') etree.SubElement(icms_item, 'orig').text = str(produto_servico.icms_origem) etree.SubElement(icms_item, 'CSOSN').text = produto_servico.icms_csosn elif produto_servico.icms_modalidade == '101': @@ -579,40 +579,44 @@ class SerializacaoXML(Serializacao): if nota_fiscal.transporte_volumes: for volume in nota_fiscal.transporte_volumes: vol = etree.SubElement(transp, 'vol') - etree.SubElement(vol, 'qVol').text = str(volume.quantidade) - etree.SubElement(vol, 'esp').text = volume.especie - if volume.marca: - etree.SubElement(vol, 'marca').text = volume.marca - if volume.numeracao: - etree.SubElement(vol, 'nVol').text = volume.numeracao - etree.SubElement(vol, 'pesoL').text = str(volume.peso_liquido) - etree.SubElement(vol, 'pesoB').text = str(volume.peso_bruto) - - # Lacres - if volume.lacres: - lacres = etree.SubElement(vol, 'lacres') - for lacre in volume.lacres: - etree.SubElement(lacres, 'nLacre').text = lacre.numero_lacre + if volume.quantidade: + etree.SubElement(vol, 'qVol').text = str(volume.quantidade) + etree.SubElement(vol, 'esp').text = volume.especie + if volume.marca: + etree.SubElement(vol, 'marca').text = volume.marca + if volume.numeracao: + etree.SubElement(vol, 'nVol').text = volume.numeracao + etree.SubElement(vol, 'pesoL').text = str(volume.peso_liquido) + etree.SubElement(vol, 'pesoB').text = str(volume.peso_bruto) + + # Lacres + if volume.lacres: + lacres = etree.SubElement(vol, 'lacres') + for lacre in volume.lacres: + etree.SubElement(lacres, 'nLacre').text = lacre.numero_lacre # Pagamento """ Obrigatório o preenchimento do Grupo Informações de Pagamento para NF-e e NFC-e. Para as notas com finalidade de Ajuste ou Devolução o campo Forma de Pagamento deve ser preenchido com 90=Sem Pagamento. """ pag = etree.SubElement(raiz, 'pag') detpag = etree.SubElement(pag, 'detPag') - etree.SubElement(detpag, 'tPag').text = str(nota_fiscal.tipo_pagamento).zfill(2) - etree.SubElement(detpag, 'vPag').text = '{:.2f}'.format(nota_fiscal.totais_icms_total_nota) - if nota_fiscal.tipo_pagamento == 3 or nota_fiscal.tipo_pagamento == 4: - cartao = etree.SubElement(detpag, 'card') - """ Tipo de Integração do processo de pagamento com o sistema de automação da empresa: - 1=Pagamento integrado com o sistema de automação da empresa (Ex.: equipamento TEF, Comércio Eletrônico); - 2= Pagamento não integrado com o sistema de automação da empresa (Ex.: equipamento POS); - """ - etree.SubElement(cartao, 'tpIntegra').text = '2' - #etree.SubElement(cartao, 'CNPJ').text = '' # Informar o CNPJ da Credenciadora de cartão de crédito / débito - #etree.SubElement(cartao, 'tBand').text = '' # 01=Visa 02=Mastercard 03=American Express 04=Sorocred 05=Diners Club 06=Elo 07=Hipercard 08=Aura 09=Caba 99=Outros - #etree.SubElement(cartao, 'cAut').text = '' # Identifica o número da autorização da transação da operação com cartão de crédito e/ou débito - # troco - # etree.SubElement(pag, 'vTroco').text = str('') + if nota_fiscal.finalidade_emissao == 3 or nota_fiscal.finalidade_emissao == 4: + etree.SubElement(detpag, 'tPag').text = '90' + else: + etree.SubElement(detpag, 'tPag').text = str(nota_fiscal.tipo_pagamento).zfill(2) + etree.SubElement(detpag, 'vPag').text = '{:.2f}'.format(nota_fiscal.totais_icms_total_nota) + if nota_fiscal.tipo_pagamento == 3 or nota_fiscal.tipo_pagamento == 4: + cartao = etree.SubElement(detpag, 'card') + """ Tipo de Integração do processo de pagamento com o sistema de automação da empresa: + 1=Pagamento integrado com o sistema de automação da empresa (Ex.: equipamento TEF, Comércio Eletrônico); + 2= Pagamento não integrado com o sistema de automação da empresa (Ex.: equipamento POS); + """ + etree.SubElement(cartao, 'tpIntegra').text = '2' + #etree.SubElement(cartao, 'CNPJ').text = '' # Informar o CNPJ da Credenciadora de cartão de crédito / débito + #etree.SubElement(cartao, 'tBand').text = '' # 01=Visa 02=Mastercard 03=American Express 04=Sorocred 05=Diners Club 06=Elo 07=Hipercard 08=Aura 09=Caba 99=Outros + #etree.SubElement(cartao, 'cAut').text = '' # Identifica o número da autorização da transação da operação com cartão de crédito e/ou débito + # troco + # etree.SubElement(pag, 'vTroco').text = str('') # Informações adicionais if nota_fiscal.informacoes_adicionais_interesse_fisco or nota_fiscal.informacoes_complementares_interesse_contribuinte: