Browse Source

Merge remote-tracking branch 'origin/master'

pull/97/head
Flavyo Henrique 5 years ago
parent
commit
53e368ff7f
  1. 7
      README.md
  2. 3
      pynfe/entidades/__init__.py
  3. 4
      pynfe/entidades/notafiscal.py
  4. 32
      pynfe/processamento/serializacao.py

7
README.md

@ -90,10 +90,3 @@ Documentação
----------- -----------
- https://github.com/leotada/PyNFe/wiki - https://github.com/leotada/PyNFe/wiki
- http://pynfe.readthedocs.org/pt/latest/ - http://pynfe.readthedocs.org/pt/latest/
Backlog
-------
- renomeado metodo serializar_evento (_serializar_evento)
- removido metoco con.cancelar (utilizar con.evento)
- add evento carta de correção (con.evento)

3
pynfe/entidades/__init__.py

@ -6,6 +6,5 @@ from .notafiscal import NotaFiscal
from .lotes import LoteNotaFiscal from .lotes import LoteNotaFiscal
from .fonte_dados import _fonte_dados from .fonte_dados import _fonte_dados
from .certificado import CertificadoA1 from .certificado import CertificadoA1
from .evento import EventoCancelarNota
from .evento import EventoCancelarNota, EventoCartaCorrecao, EventoManifestacaoDest
from .servico import Servico from .servico import Servico

4
pynfe/entidades/notafiscal.py

@ -469,7 +469,7 @@ class NotaFiscal(Entidade):
'uf': CODIGOS_ESTADOS[self.uf], 'uf': CODIGOS_ESTADOS[self.uf],
'ano': self.data_emissao.strftime('%y'), 'ano': self.data_emissao.strftime('%y'),
'mes': self.data_emissao.strftime('%m'), 'mes': self.data_emissao.strftime('%m'),
'cnpj': so_numeros(self.emitente.cnpj),
'cnpj': so_numeros(self.emitente.cnpj).zfill(14),
'mod': self.modelo, 'mod': self.modelo,
'serie': str(self.serie).zfill(3), 'serie': str(self.serie).zfill(3),
'nNF': str(self.numero_nf).zfill(9), 'nNF': str(self.numero_nf).zfill(9),
@ -480,7 +480,7 @@ class NotaFiscal(Entidade):
'uf': CODIGOS_ESTADOS[self.uf], 'uf': CODIGOS_ESTADOS[self.uf],
'ano': self.data_emissao.strftime('%y'), 'ano': self.data_emissao.strftime('%y'),
'mes': self.data_emissao.strftime('%m'), 'mes': self.data_emissao.strftime('%m'),
'cnpj': so_numeros(self.emitente.cnpj),
'cnpj': so_numeros(self.emitente.cnpj).zfill(14),
'mod': self.modelo, 'mod': self.modelo,
'serie': str(self.serie).zfill(3), 'serie': str(self.serie).zfill(3),
'nNF': str(self.numero_nf).zfill(9), 'nNF': str(self.numero_nf).zfill(9),

32
pynfe/processamento/serializacao.py

@ -90,6 +90,9 @@ class SerializacaoXML(Serializacao):
raiz = etree.Element(tag_raiz) raiz = etree.Element(tag_raiz)
# Dados do emitente # Dados do emitente
if len(so_numeros(emitente.cnpj)) == 11:
etree.SubElement(raiz, 'CPF').text = so_numeros(emitente.cnpj)
else:
etree.SubElement(raiz, 'CNPJ').text = so_numeros(emitente.cnpj) etree.SubElement(raiz, 'CNPJ').text = so_numeros(emitente.cnpj)
etree.SubElement(raiz, 'xNome').text = emitente.razao_social etree.SubElement(raiz, 'xNome').text = emitente.razao_social
etree.SubElement(raiz, 'xFant').text = emitente.nome_fantasia etree.SubElement(raiz, 'xFant').text = emitente.nome_fantasia
@ -322,6 +325,11 @@ class SerializacaoXML(Serializacao):
icms_item = etree.SubElement(icms, 'ICMSSN'+produto_servico.icms_modalidade) icms_item = etree.SubElement(icms, 'ICMSSN'+produto_servico.icms_modalidade)
etree.SubElement(icms_item, 'orig').text = str(produto_servico.icms_origem) etree.SubElement(icms_item, 'orig').text = str(produto_servico.icms_origem)
etree.SubElement(icms_item, 'CSOSN').text = produto_servico.icms_csosn etree.SubElement(icms_item, 'CSOSN').text = produto_servico.icms_csosn
elif produto_servico.icms_modalidade == '51':
icms_item = etree.SubElement(icms, 'ICMS'+produto_servico.icms_modalidade)
etree.SubElement(icms_item, 'orig').text = str(produto_servico.icms_origem)
etree.SubElement(icms_item, 'CST').text = '51'
etree.SubElement(icms_item, 'modBC').text = str(produto_servico.icms_modalidade_determinacao_bc)
else: else:
### OUTROS TIPOS DE ICMS (00,10,20) ### OUTROS TIPOS DE ICMS (00,10,20)
icms_item = etree.SubElement(icms, 'ICMS'+produto_servico.icms_modalidade) icms_item = etree.SubElement(icms, 'ICMS'+produto_servico.icms_modalidade)
@ -364,12 +372,18 @@ class SerializacaoXML(Serializacao):
else: else:
raise NotImplementedError raise NotImplementedError
# ipi # ipi
# ipi = etree.SubElement(imposto, 'IPI')
# etree.SubElement(ipi, 'clEnq') = produto_servico.ipi_classe_enquadramento # Preenchimento conforme Atos Normativos editados pela Receita Federal (Observação 2)
# ipint = etree.SubElement(ipi, 'IPINT')
# # 01=Entrada tributada com alíquota zero 02=Entrada isenta 03=Entrada não-tributada 04=Entrada imune 05=Entrada com suspensão
# # 51=Saída tributada com alíquota zero 52=Saída isenta 53=Saída não-tributada 54=Saída imune 55=Saída com suspensão
# etree.SubElement(ipint, 'CST') = produto_servico.ipi_codigo_enquadramento
ipint_lista = ('01','02','03','04','05','51','52','53','54','55')
if produto_servico.ipi_codigo_enquadramento in ipint_lista:
ipi = etree.SubElement(imposto, 'IPI')
# Preenchimento conforme Atos Normativos editados pela Receita Federal (Observação 2)
etree.SubElement(ipi, 'cEnq').text = produto_servico.ipi_classe_enquadramento
if produto_servico.ipi_classe_enquadramento == '':
etree.SubElement(ipi, 'cEnq').text = '999'
ipint = etree.SubElement(ipi, 'IPINT')
# 01=Entrada tributada com alíquota zero 02=Entrada isenta 03=Entrada não-tributada 04=Entrada imune 05=Entrada com suspensão
# 51=Saída tributada com alíquota zero 52=Saída isenta 53=Saída não-tributada 54=Saída imune 55=Saída com suspensão
etree.SubElement(ipint, 'CST').text = produto_servico.ipi_codigo_enquadramento
# apenas nfe # apenas nfe
if modelo == 55: if modelo == 55:
@ -706,8 +720,10 @@ class SerializacaoXML(Serializacao):
e = etree.SubElement(raiz, 'infEvento', Id=evento.identificador) e = etree.SubElement(raiz, 'infEvento', Id=evento.identificador)
etree.SubElement(e, 'cOrgao').text = CODIGOS_ESTADOS[evento.uf.upper()] etree.SubElement(e, 'cOrgao').text = CODIGOS_ESTADOS[evento.uf.upper()]
etree.SubElement(e, 'tpAmb').text = str(self._ambiente) etree.SubElement(e, 'tpAmb').text = str(self._ambiente)
etree.SubElement(e, 'CNPJ').text = evento.cnpj # Empresas somente terão CNPJ
#etree.SubElement(e, 'CPF').text = ''
if len(so_numeros(evento.cnpj)) == 11:
etree.SubElement(e, 'CPF').text = evento.cnpj
else:
etree.SubElement(e, 'CNPJ').text = evento.cnpj
etree.SubElement(e, 'chNFe').text = evento.chave etree.SubElement(e, 'chNFe').text = evento.chave
etree.SubElement(e, 'dhEvento').text = evento.data_emissao.strftime('%Y-%m-%dT%H:%M:%S') + tz etree.SubElement(e, 'dhEvento').text = evento.data_emissao.strftime('%Y-%m-%dT%H:%M:%S') + tz
etree.SubElement(e, 'tpEvento').text = evento.tp_evento etree.SubElement(e, 'tpEvento').text = evento.tp_evento

Loading…
Cancel
Save