diff --git a/pynfe/processamento/__init__.py b/pynfe/processamento/__init__.py index 86cae50..e12e8ae 100644 --- a/pynfe/processamento/__init__.py +++ b/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 diff --git a/pynfe/processamento/serializacao.py b/pynfe/processamento/serializacao.py index 43e2462..f29c5b9 100644 --- a/pynfe/processamento/serializacao.py +++ b/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) + diff --git a/test.py b/test.py index a6ed5b4..ee65e37 100644 --- a/test.py +++ b/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