Browse Source

Serializacao para emitentes

tags/0.1
Sergio Oliveira 13 years ago
parent
commit
c39b359983
  1. 4
      pynfe/processamento/__init__.py
  2. 56
      pynfe/processamento/serializacao.py
  3. 6
      test.py

4
pynfe/processamento/__init__.py

@ -1,6 +1,6 @@
from serializacao import SerializacaoXML
from validacao import Validacao
from assinatura import AssinaturaA1
from comunicacao import ComunicacaoSefaz
#from assinatura import AssinaturaA1
#from comunicacao import ComunicacaoSefaz
from danfe import DANFE

56
pynfe/processamento/serializacao.py

@ -6,7 +6,7 @@ except:
from pynfe.entidades import Emitente, Cliente, Produto, Transportadora, NotaFiscal
from pynfe.excecoes import NenhumObjetoEncontrado, MuitosObjetosEncontrados
from pynfe.utils import etree, so_numeros, obter_municipio_por_codigo, obter_pais_por_codigo
from pynfe.utils import etree, so_numeros, obter_municipio_por_codigo, obter_pais_por_codigo, obter_codigo_por_municipio
from pynfe.utils.flags import CODIGOS_ESTADOS, VERSAO_PADRAO
class Serializacao(object):
@ -34,13 +34,13 @@ class Serializacao(object):
"""Gera o(s) arquivo(s) de exportacao a partir da Nofa Fiscal eletronica
ou lista delas."""
raise Exception('Metodo nao implementado')
raise NotImplementedError
def importar(self, origem):
"""Fabrica que recebe o caminho ou objeto de origem e instancia os objetos
da PyNFe"""
raise Exception('Metodo nao implementado')
raise NotImplementedError
class SerializacaoXML(Serializacao):
_versao = VERSAO_PADRAO
@ -344,3 +344,53 @@ class SerializacaoXML(Serializacao):
else:
return raiz
class SerializacaoPipes(Serializacao):
"""Serialização utilizada pela SEFAZ-SP para a importação de notas."""
def exportar(self, destino, **kwargs):
pass
def _serializar_emitente(self, emitente):
try:
cod_municipio = int(emitente.endereco_municipio)
except ValueError:
cod_municipio = obter_codigo_por_municipio(
emitente.endereco_municipio,
emitente.endereco_uf
)
municipio = obter_municipio_por_codigo(
cod_municipio,
emitente.endereco_uf,
normalizado=True,
)
serial_emitente_list = [
'C',
emitente.razao_social,
emitente.nome_fantasia,
emitente.inscricao_estadual,
emitente.inscricao_estadual_subst_tributaria,
emitente.inscricao_municipal,
emitente.cnae_fiscal,
emitente.codigo_de_regime_tributario,
'\nC02',
emitente.cnpj,
'\nC05',
emitente.endereco_logradouro,
emitente.endereco_numero,
emitente.endereco_complemento,
emitente.endereco_bairro,
cod_municipio,
municipio,
emitente.endereco_uf,
emitente.endereco_cep,
emitente.endereco_pais,
obter_pais_por_codigo(emitente.endereco_pais),
emitente.endereco_telefone,
'\n',
]
return '|'.join(serial_emitente_list)

6
test.py

@ -1,10 +1,14 @@
#!/usr/bin/env python
# *-* encoding: utf8 *-*
from pynfe.entidades.cliente import Cliente
from pynfe.entidades.emitente import Emitente
from pynfe.entidades.notafiscal import NotaFiscal
from pynfe.entidades.fonte_dados import _fonte_dados
from pynfe.processamento.serializacao import SerializacaoPipes
from pynfe.utils.flags import CODIGO_BRASIL
serializador = SerializacaoPipes(_fonte_dados, homologacao=True)
emitente = Emitente(
razao_social='Spring Publicacoes Ltda',
@ -21,6 +25,8 @@ emitente = Emitente(
endereco_pais=CODIGO_BRASIL,
)
print serializador._serializar_emitente(emitente)
cliente = Cliente(
razao_social='MARIANA DE CARVALHO CASCELLI',
tipo_documento='CPF', #CPF ou CNPJ

Loading…
Cancel
Save