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 serializacao import SerializacaoXML
from validacao import Validacao from validacao import Validacao
from assinatura import AssinaturaA1
from comunicacao import ComunicacaoSefaz
#from assinatura import AssinaturaA1
#from comunicacao import ComunicacaoSefaz
from danfe import DANFE 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.entidades import Emitente, Cliente, Produto, Transportadora, NotaFiscal
from pynfe.excecoes import NenhumObjetoEncontrado, MuitosObjetosEncontrados 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 from pynfe.utils.flags import CODIGOS_ESTADOS, VERSAO_PADRAO
class Serializacao(object): class Serializacao(object):
@ -34,13 +34,13 @@ class Serializacao(object):
"""Gera o(s) arquivo(s) de exportacao a partir da Nofa Fiscal eletronica """Gera o(s) arquivo(s) de exportacao a partir da Nofa Fiscal eletronica
ou lista delas.""" ou lista delas."""
raise Exception('Metodo nao implementado')
raise NotImplementedError
def importar(self, origem): def importar(self, origem):
"""Fabrica que recebe o caminho ou objeto de origem e instancia os objetos """Fabrica que recebe o caminho ou objeto de origem e instancia os objetos
da PyNFe""" da PyNFe"""
raise Exception('Metodo nao implementado')
raise NotImplementedError
class SerializacaoXML(Serializacao): class SerializacaoXML(Serializacao):
_versao = VERSAO_PADRAO _versao = VERSAO_PADRAO
@ -344,3 +344,53 @@ class SerializacaoXML(Serializacao):
else: else:
return raiz 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 #!/usr/bin/env python
# *-* encoding: utf8 *-*
from pynfe.entidades.cliente import Cliente from pynfe.entidades.cliente import Cliente
from pynfe.entidades.emitente import Emitente from pynfe.entidades.emitente import Emitente
from pynfe.entidades.notafiscal import NotaFiscal 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 from pynfe.utils.flags import CODIGO_BRASIL
serializador = SerializacaoPipes(_fonte_dados, homologacao=True)
emitente = Emitente( emitente = Emitente(
razao_social='Spring Publicacoes Ltda', razao_social='Spring Publicacoes Ltda',
@ -21,6 +25,8 @@ emitente = Emitente(
endereco_pais=CODIGO_BRASIL, endereco_pais=CODIGO_BRASIL,
) )
print serializador._serializar_emitente(emitente)
cliente = Cliente( cliente = Cliente(
razao_social='MARIANA DE CARVALHO CASCELLI', razao_social='MARIANA DE CARVALHO CASCELLI',
tipo_documento='CPF', #CPF ou CNPJ tipo_documento='CPF', #CPF ou CNPJ

Loading…
Cancel
Save