Browse Source

Implementado envio sem destinatário (apenas para NFC-e)

q
pull/1/head
Junior Tada 11 years ago
parent
commit
9285d4556b
  1. 4
      pynfe/entidades/notafiscal.py
  2. 7
      pynfe/processamento/danfe.py
  3. 10
      pynfe/processamento/serializacao.py

4
pynfe/entidades/notafiscal.py

@ -58,6 +58,10 @@ class NotaFiscal(Entidade):
# - Forma de pagamento (obrigatorio - seleciona de lista) - NF_FORMAS_PAGAMENTO # - Forma de pagamento (obrigatorio - seleciona de lista) - NF_FORMAS_PAGAMENTO
forma_pagamento = int() forma_pagamento = int()
# - Tipo de pagamento
# 01=Dinheiro 02=Cheque 03=Cartão de Crédito 04=Cartão de Débito 05=Crédito Loja 10=Vale Alimentação 11=Vale Refeição 12=Vale Presente 13=Vale Combustível 99=Outros
tipo_pagamento = int()
# - Forma de emissao (obrigatorio - seleciona de lista) - NF_FORMAS_EMISSAO # - Forma de emissao (obrigatorio - seleciona de lista) - NF_FORMAS_EMISSAO
forma_emissao = str() forma_emissao = str()

7
pynfe/processamento/danfe.py

@ -23,7 +23,10 @@ class DanfeNfce(Danfe):
chave = nfe[0].attrib['Id'].replace('NFe','') chave = nfe[0].attrib['Id'].replace('NFe','')
data = nfe.xpath('ns:infNFe/ns:ide/ns:dhEmi/text()', namespaces=ns)[0].encode() data = nfe.xpath('ns:infNFe/ns:ide/ns:dhEmi/text()', namespaces=ns)[0].encode()
tpamb = nfe.xpath('ns:infNFe/ns:ide/ns:tpAmb/text()', namespaces=ns)[0] tpamb = nfe.xpath('ns:infNFe/ns:ide/ns:tpAmb/text()', namespaces=ns)[0]
try:
cpf = nfe.xpath('ns:infNFe/ns:dest/ns:CPF/text()', namespaces=ns)[0] cpf = nfe.xpath('ns:infNFe/ns:dest/ns:CPF/text()', namespaces=ns)[0]
except IndexError:
cpf = None
total = nfe.xpath('ns:infNFe/ns:total/ns:ICMSTot/ns:vNF/text()', namespaces=ns)[0] total = nfe.xpath('ns:infNFe/ns:total/ns:ICMSTot/ns:vNF/text()', namespaces=ns)[0]
icms = nfe.xpath('ns:infNFe/ns:total/ns:ICMSTot/ns:vICMS/text()', namespaces=ns)[0] icms = nfe.xpath('ns:infNFe/ns:total/ns:ICMSTot/ns:vICMS/text()', namespaces=ns)[0]
digest = nfe.xpath('sig:Signature/sig:SignedInfo/sig:Reference/sig:DigestValue/text()', namespaces=sig)[0].encode() digest = nfe.xpath('sig:Signature/sig:SignedInfo/sig:Reference/sig:DigestValue/text()', namespaces=sig)[0].encode()
@ -31,6 +34,10 @@ class DanfeNfce(Danfe):
data = base64.b16encode(data).decode() data = base64.b16encode(data).decode()
digest = base64.b16encode(digest).decode() digest = base64.b16encode(digest).decode()
if cpf is None:
url = 'chNFe={}&nVersao={}&tpAmb={}&dhEmi={}&vNF={}&vICMS={}&digVal={}&cIdToken={}'.format(
chave, VERSAO_QRCODE, tpamb, data.lower(), total, icms, digest.lower(), token)
else:
url = 'chNFe={}&nVersao={}&tpAmb={}&cDest={}&dhEmi={}&vNF={}&vICMS={}&digVal={}&cIdToken={}'.format( url = 'chNFe={}&nVersao={}&tpAmb={}&cDest={}&dhEmi={}&vNF={}&vICMS={}&digVal={}&cIdToken={}'.format(
chave, VERSAO_QRCODE, tpamb, cpf, data.lower(), total, icms, digest.lower(), token) chave, VERSAO_QRCODE, tpamb, cpf, data.lower(), total, icms, digest.lower(), token)

10
pynfe/processamento/serializacao.py

@ -396,8 +396,14 @@ class SerializacaoXML(Serializacao):
raiz.append(self._serializar_emitente(nota_fiscal.emitente, retorna_string=False)) raiz.append(self._serializar_emitente(nota_fiscal.emitente, retorna_string=False))
# Destinatário # Destinatário
try:
raiz.append(self._serializar_cliente(nota_fiscal.cliente, modelo=nota_fiscal.modelo, retorna_string=False)) raiz.append(self._serializar_cliente(nota_fiscal.cliente, modelo=nota_fiscal.modelo, retorna_string=False))
except AttributeError as e:
# NFC-e pode ser gerada sem destinatário
if nota_fiscal.modelo == 65:
pass
else:
raise e
# Retirada # Retirada
if nota_fiscal.retirada: if nota_fiscal.retirada:
raiz.append(self._serializar_entrega_retirada( raiz.append(self._serializar_entrega_retirada(
@ -492,7 +498,7 @@ class SerializacaoXML(Serializacao):
etree.SubElement(transp, 'modFrete').text = str(9) etree.SubElement(transp, 'modFrete').text = str(9)
# Pagamento # Pagamento
pag = etree.SubElement(raiz, 'pag') pag = etree.SubElement(raiz, 'pag')
etree.SubElement(pag, 'tPag').text = '01'# 01=Dinheiro 02=Cheque 03=Cartão de Crédito 04=Cartão de Débito 05=Crédito Loja 10=Vale Alimentação 11=Vale Refeição 12=Vale Presente 13=Vale Combustível 99=Outros
etree.SubElement(pag, 'tPag').text = str(nota_fiscal.tipo_pagamento).zfill(2) # 01=Dinheiro 02=Cheque 03=Cartão de Crédito 04=Cartão de Débito 05=Crédito Loja 10=Vale Alimentação 11=Vale Refeição 12=Vale Presente 13=Vale Combustível 99=Outros
etree.SubElement(pag, 'vPag').text = str(nota_fiscal.totais_icms_total_nota) etree.SubElement(pag, 'vPag').text = str(nota_fiscal.totais_icms_total_nota)
#etree.SubElement(pag, 'card').text = '' #etree.SubElement(pag, 'card').text = ''
#etree.SubElement(pag, 'CNPJ').text = '' # Informar o CNPJ da Credenciadora de cartão de crédito / débito #etree.SubElement(pag, 'CNPJ').text = '' # Informar o CNPJ da Credenciadora de cartão de crédito / débito

Loading…
Cancel
Save