From d9dd55d22a662e2cfe3ad47bcc8b63030469231e Mon Sep 17 00:00:00 2001 From: Wagner Pereira Date: Wed, 5 Sep 2018 07:42:22 -0300 Subject: [PATCH] [ADD] Mescla e-Social e EFD/Reinf desenvolvidos pela ABGF a pysped original --- .../efdreinf/leiaute/evtFechamento_10302.py | 10 +- .../leiaute/evtInfoContribuinte_10302.py | 10 +- .../leiaute/evtTomadorServicos_10302.py | 10 +- .../leiaute/retornoLoteEventos_10302.py | 9 +- .../retornoTotalizadorContribuinte_10302.py | 33 +- .../leiaute/retornoTotalizadorEvento_10302.py | 6 +- pysped/efdreinf/leiaute/soap_10100.py | 1 + pysped/esocial/leiaute/__init__.py | 267 ++- .../leiaute/consultaLoteEventos_10000.py | 4 +- .../esocial/leiaute/envioLoteEventos_10101.py | 5 +- pysped/esocial/leiaute/evtAdmissao_20402.py | 1465 +++++++++++++++++ pysped/esocial/leiaute/evtAfastTemp_20402.py | 453 +++++ .../esocial/leiaute/evtAltCadastral_20402.py | 810 +++++++++ .../esocial/leiaute/evtAltContratual_20402.py | 741 +++++++++ pysped/esocial/leiaute/evtBasesTrab_20402.py | 410 +++++ pysped/esocial/leiaute/evtBenPrRP_20402.py | 523 ++++++ pysped/esocial/leiaute/evtCS_20402.py | 830 ++++++++++ pysped/esocial/leiaute/evtDeslig_20402.py | 943 +++++++++++ pysped/esocial/leiaute/evtExclusao.py | 271 +++ pysped/esocial/leiaute/evtFechaEvPer_20402.py | 267 +++ .../leiaute/evtInfoEmpregador_20402.py | 67 +- pysped/esocial/leiaute/evtIrrf.py | 238 +++ pysped/esocial/leiaute/evtIrrfBenef_20402.py | 402 +++++ pysped/esocial/leiaute/evtPgtos_20402.py | 734 +++++++++ .../esocial/leiaute/evtReabreEvPer_20402.py | 196 +++ pysped/esocial/leiaute/evtRemun_20402.py | 929 +++++++++++ pysped/esocial/leiaute/evtRmnRPPS_20402.py | 647 ++++++++ .../esocial/leiaute/evtTSVAltContr_20402.py | 511 ++++++ pysped/esocial/leiaute/evtTSVInicio_20402.py | 1185 +++++++++++++ pysped/esocial/leiaute/evtTSVTermino_20402.py | 522 ++++++ pysped/esocial/leiaute/evtTabCargo_20402.py | 343 ++++ pysped/esocial/leiaute/evtTabEstab_20402.py | 538 ++++++ pysped/esocial/leiaute/evtTabHorTur_20402.py | 341 ++++ pysped/esocial/leiaute/evtTabLotacao_20402.py | 417 +++++ pysped/esocial/leiaute/evtTabRubrica_20402.py | 431 +++++ .../leiaute/retornoEnvioLoteEventos_10100.py | 12 + .../leiaute/retornoProcessamentoLote_10100.py | 621 +++++++ pysped/esocial/leiaute/soap_10100.py | 43 + pysped/esocial/processador_esocial.py | 125 +- pysped/esocial/webservices_3.py | 8 +- 40 files changed, 15275 insertions(+), 103 deletions(-) create mode 100644 pysped/esocial/leiaute/evtAdmissao_20402.py create mode 100644 pysped/esocial/leiaute/evtAfastTemp_20402.py create mode 100644 pysped/esocial/leiaute/evtAltCadastral_20402.py create mode 100644 pysped/esocial/leiaute/evtAltContratual_20402.py create mode 100644 pysped/esocial/leiaute/evtBasesTrab_20402.py create mode 100644 pysped/esocial/leiaute/evtBenPrRP_20402.py create mode 100644 pysped/esocial/leiaute/evtCS_20402.py create mode 100644 pysped/esocial/leiaute/evtDeslig_20402.py create mode 100644 pysped/esocial/leiaute/evtExclusao.py create mode 100644 pysped/esocial/leiaute/evtFechaEvPer_20402.py create mode 100644 pysped/esocial/leiaute/evtIrrf.py create mode 100644 pysped/esocial/leiaute/evtIrrfBenef_20402.py create mode 100644 pysped/esocial/leiaute/evtPgtos_20402.py create mode 100644 pysped/esocial/leiaute/evtReabreEvPer_20402.py create mode 100644 pysped/esocial/leiaute/evtRemun_20402.py create mode 100644 pysped/esocial/leiaute/evtRmnRPPS_20402.py create mode 100644 pysped/esocial/leiaute/evtTSVAltContr_20402.py create mode 100644 pysped/esocial/leiaute/evtTSVInicio_20402.py create mode 100644 pysped/esocial/leiaute/evtTSVTermino_20402.py create mode 100644 pysped/esocial/leiaute/evtTabCargo_20402.py create mode 100644 pysped/esocial/leiaute/evtTabEstab_20402.py create mode 100644 pysped/esocial/leiaute/evtTabHorTur_20402.py create mode 100644 pysped/esocial/leiaute/evtTabLotacao_20402.py create mode 100644 pysped/esocial/leiaute/evtTabRubrica_20402.py create mode 100644 pysped/esocial/leiaute/retornoProcessamentoLote_10100.py diff --git a/pysped/efdreinf/leiaute/evtFechamento_10302.py b/pysped/efdreinf/leiaute/evtFechamento_10302.py index 1b16e2d6..7ee9fefc 100644 --- a/pysped/efdreinf/leiaute/evtFechamento_10302.py +++ b/pysped/efdreinf/leiaute/evtFechamento_10302.py @@ -250,9 +250,8 @@ def set_xml(self, arquivo): if self._le_xml(arquivo): self.evtFechaEvPer.xml = arquivo self.Signature.xml = self._le_noh('//Reinf/evtFechaEvPer/sig:Signature') - return True - def gera_id_evento(self, data_hora): + def gera_id_evento(self, data_hora, sequencia=False): #A identificação única do evento (Id) é composta por 36 caracteres, conforme o que segue: IDTNNNNNNNNNNNNNNAAAAMMDDHHMMSSQQQQQ #ID - Texto Fixo "ID"; @@ -268,13 +267,16 @@ def gera_id_evento(self, data_hora): #eventos na mesma data/hora, completando com zeros à esquerda. #OBS.: No caso de pessoas jurídicas, o CNPJ informado deverá conter 8 ou 14 posições de #acordo com o enquadramento do contribuinte para preenchimento do campo {ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se necessário. - + + if not sequencia: + sequencia=1 + id_evento = 'ID' id_evento += self.evtFechaEvPer.ideContri.tpInsc.valor id_evento += str(self.evtFechaEvPer.ideContri.nrInsc.valor)[0:8] + '000000' # id_evento += str(self.evtInfoContri.ideContri.nrInsc.valor).zfill(14) id_evento += data_hora - id_evento += str(1).zfill(5) + id_evento += str(sequencia).zfill(5) # Define o Id # diff --git a/pysped/efdreinf/leiaute/evtInfoContribuinte_10302.py b/pysped/efdreinf/leiaute/evtInfoContribuinte_10302.py index 95915d0e..e6f8d286 100644 --- a/pysped/efdreinf/leiaute/evtInfoContribuinte_10302.py +++ b/pysped/efdreinf/leiaute/evtInfoContribuinte_10302.py @@ -351,9 +351,8 @@ def set_xml(self, arquivo): if self._le_xml(arquivo): self.evtInfoContri.xml = arquivo self.Signature.xml = self._le_noh('//Reinf/evtInfoContri/sig:Signature') - return True - def gera_id_evento(self, data_hora): + def gera_id_evento(self, data_hora, sequencia=False): #A identificação única do evento (Id) é composta por 36 caracteres, conforme o que segue: IDTNNNNNNNNNNNNNNAAAAMMDDHHMMSSQQQQQ #ID - Texto Fixo "ID"; @@ -369,13 +368,16 @@ def gera_id_evento(self, data_hora): #eventos na mesma data/hora, completando com zeros à esquerda. #OBS.: No caso de pessoas jurídicas, o CNPJ informado deverá conter 8 ou 14 posições de #acordo com o enquadramento do contribuinte para preenchimento do campo {ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se necessário. - + + if not sequencia: + sequencia=1 + id_evento = 'ID' id_evento += self.evtInfoContri.ideContri.tpInsc.valor id_evento += str(self.evtInfoContri.ideContri.nrInsc.valor)[0:8] + '000000' # id_evento += str(self.evtInfoContri.ideContri.nrInsc.valor).zfill(14) id_evento += data_hora - id_evento += str(1).zfill(5) + id_evento += str(sequencia).zfill(5) # Define o Id # diff --git a/pysped/efdreinf/leiaute/evtTomadorServicos_10302.py b/pysped/efdreinf/leiaute/evtTomadorServicos_10302.py index 27dc75a3..9a8c754c 100644 --- a/pysped/efdreinf/leiaute/evtTomadorServicos_10302.py +++ b/pysped/efdreinf/leiaute/evtTomadorServicos_10302.py @@ -445,9 +445,8 @@ def set_xml(self, arquivo): if self._le_xml(arquivo): self.evtServTom.xml = arquivo self.Signature.xml = self._le_noh('//Reinf/evtServTom/sig:Signature') - return True - def gera_id_evento(self, data_hora): + def gera_id_evento(self, data_hora, sequencia=False): #A identificação única do evento (Id) é composta por 36 caracteres, conforme o que segue: IDTNNNNNNNNNNNNNNAAAAMMDDHHMMSSQQQQQ #ID - Texto Fixo "ID"; @@ -463,13 +462,16 @@ def gera_id_evento(self, data_hora): #eventos na mesma data/hora, completando com zeros à esquerda. #OBS.: No caso de pessoas jurídicas, o CNPJ informado deverá conter 8 ou 14 posições de #acordo com o enquadramento do contribuinte para preenchimento do campo {ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se necessário. - + + if not sequencia: + sequencia=1 + id_evento = 'ID' id_evento += self.evtServTom.ideContri.tpInsc.valor id_evento += str(self.evtServTom.ideContri.nrInsc.valor)[0:8] + '000000' # id_evento += str(self.evtInfoContri.ideContri.nrInsc.valor).zfill(14) id_evento += data_hora - id_evento += str(1).zfill(5) + id_evento += str(sequencia).zfill(5) # Define o Id # diff --git a/pysped/efdreinf/leiaute/retornoLoteEventos_10302.py b/pysped/efdreinf/leiaute/retornoLoteEventos_10302.py index f7cc59e8..70f162bd 100644 --- a/pysped/efdreinf/leiaute/retornoLoteEventos_10302.py +++ b/pysped/efdreinf/leiaute/retornoLoteEventos_10302.py @@ -217,8 +217,11 @@ def __init__(self): self.Id = TagCaracter(nome='retornoLoteEventos', propriedade='id', raiz='//Reinf', namespace=NAMESPACE_LOTE_EFDREINF, namespace_obrigatorio=False) self.ideTransmissor = IdeTransmissor() self.retornoStatus = RetornoStatus() - # self.retornoEventos = RetornoEventos() + self.cdRetorno = '' + self.descRetorno = '' + self.ocorrencias = [] self.retornoEventos = [] + self.eventos = [] # self.caminho_esquema = os.path.join(DIRNAME, 'schema/', ESQUEMA_ATUAL + '/') # self.arquivo_esquema = 'RetornoLoteEventos.xsd' @@ -243,6 +246,10 @@ def set_xml(self, arquivo): self.ideTransmissor.xml = arquivo self.retornoStatus.xml = arquivo self.retornoEventos = self.le_grupo('//Reinf/retornoLoteEventos/retornoEventos/evento', RetornoTotalizadorEvento, namespace=NAMESPACE_LOTE_EFDREINF, sigla_ns='res') + self.eventos = self.retornoEventos + self.cdRetorno = self.retornoStatus.cdRetorno.valor + self.descRetorno = self.retornoStatus.descRetorno.valor + self.ocorrencias = self.retornoStatus.dadosRegistroOcorrenciaLote.ocorrencias return True xml = property(get_xml, set_xml) diff --git a/pysped/efdreinf/leiaute/retornoTotalizadorContribuinte_10302.py b/pysped/efdreinf/leiaute/retornoTotalizadorContribuinte_10302.py index 556d9526..0d5627fd 100644 --- a/pysped/efdreinf/leiaute/retornoTotalizadorContribuinte_10302.py +++ b/pysped/efdreinf/leiaute/retornoTotalizadorContribuinte_10302.py @@ -67,8 +67,8 @@ class RCPRB(XMLNFe): def __init__(self): super(RCPRB, self).__init__() self.CRCPRB = TagCaracter(nome='CRCPRB', tamanho=[1, 6], raiz='//Reinf/evtTotalContrib/infoTotal/RCPRB', namespace=NAMESPACE_EFDREINF, namespace_obrigatorio=False) - self.vlrCRCPRB = TagDecimal(nome='vlrCRCPRB', raiz='//Reinf/evtTotal/infoTotalContrib/RCPRB', namespace=NAMESPACE_EFDREINF, namespace_obrigatorio=False) - self.vlrCRCPRBSusp = TagDecimal(nome='vlrCRCPRBSusp', raiz='//Reinf/evtTotalContrib/infoTotal/RCPRB', namespace=NAMESPACE_EFDREINF, namespace_obrigatorio=False, obrigatorio=False) + self.vlrCRCPRB = TagDecimalVirgula(nome='vlrCRCPRB', raiz='//Reinf/evtTotal/infoTotalContrib/RCPRB', namespace=NAMESPACE_EFDREINF, namespace_obrigatorio=False) + self.vlrCRCPRBSusp = TagDecimalVirgula(nome='vlrCRCPRBSusp', raiz='//Reinf/evtTotalContrib/infoTotal/RCPRB', namespace=NAMESPACE_EFDREINF, namespace_obrigatorio=False, obrigatorio=False) def get_xml(self): xml = XMLNFe.get_xml(self) @@ -242,8 +242,8 @@ def set_xml(self, arquivo): class InfoTotalContrib(XMLNFe): def __init__(self): super(InfoTotalContrib, self).__init__() - self.nrRecArqBase = TagCaracter(nome='nrRecArqBase', raiz='//Reinf/evtTotalContrib/infoTotalContrib', namespace=NAMESPACE_EFDREINF, namespace_obrigatorio=False, obrigatorio=False) - self.indExistInfo = TagCaracter(nome='indExistInfo', raiz='//Reinf/evtTotalContrib/infoTotalContrib', namespace=NAMESPACE_EFDREINF, namespace_obrigatorio=False) + self.nrRecArqBase = TagCaracter(nome='nrRecArqBase', tamanho=[1, 52], raiz='//Reinf/evtTotalContrib/infoTotalContrib', namespace=NAMESPACE_EFDREINF, namespace_obrigatorio=False, obrigatorio=False) + self.indExistInfo = TagCaracter(nome='indExistInfo', tamanho=[1, 1], raiz='//Reinf/evtTotalContrib/infoTotalContrib', namespace=NAMESPACE_EFDREINF, namespace_obrigatorio=False) self.RTom = [] self.RPrest = [] self.RRecRepAD = [] @@ -267,7 +267,6 @@ def get_xml(self): if len(self.RComl) >= 1: for r in self.RComl: xml += r.xml - if len(self.RCPRB) >= 1: for r in self.RCPRB: xml += r.xml @@ -291,7 +290,7 @@ def set_xml(self, arquivo): class InfoRecEv(XMLNFe): def __init__(self): super(InfoRecEv, self).__init__() - self.nrProtEntr = TagCaracter(nome='nrProtEntr', tamanho=[0, 49], raiz='//Reinf/evtTotalContrib/infoRecEv', namespace=NAMESPACE_EFDREINF, namespace_obrigatorio=False, obrigatorio=False) + self.nrProtEntr = TagCaracter(nome='nrProtEntr', tamanho=[1, 49], raiz='//Reinf/evtTotalContrib/infoRecEv', namespace=NAMESPACE_EFDREINF, namespace_obrigatorio=False) self.dhProcess = TagDataHora(nome='dhProcess', raiz='//Reinf/evtTotalContrib/infoRecEv', namespace=NAMESPACE_EFDREINF, namespace_obrigatorio=False) self.tpEv = TagCaracter(nome='tpEv', tamanho=[1, 6], raiz='//Reinf/evtTotalContrib/infoRecEv', namespace=NAMESPACE_EFDREINF, namespace_obrigatorio=False) self.idEv = TagCaracter(nome='idEv', tamanho=[1, 36], raiz='//Reinf/evtTotalContrib/infoRecEv', namespace=NAMESPACE_EFDREINF, namespace_obrigatorio=False) @@ -323,10 +322,10 @@ def set_xml(self, arquivo): class Ocorrencias(XMLNFe): def __init__(self): super(Ocorrencias, self).__init__() - self.tpOcorr = TagCaracter(nome='tpOcorr' , raiz='//regOcorrs', namespace=NAMESPACE_EFDREINF, namespace_obrigatorio=False) - self.localErroAviso = TagCaracter(nome='localErroAviso', raiz='//regOcorrs', namespace=NAMESPACE_EFDREINF, namespace_obrigatorio=False) - self.codResp = TagCaracter(nome='codResp' , raiz='//regOcorrs', namespace=NAMESPACE_EFDREINF, namespace_obrigatorio=False) - self.dscResp = TagCaracter(nome='dscResp' , raiz='//regOcorrs', namespace=NAMESPACE_EFDREINF, namespace_obrigatorio=False) + self.tpOcorr = TagCaracter(nome='tpOcorr' , tamanho=[1, 1], raiz='//regOcorrs', namespace=NAMESPACE_EFDREINF, namespace_obrigatorio=False) + self.localErroAviso = TagCaracter(nome='localErroAviso', tamanho=[1, 100], raiz='//regOcorrs', namespace=NAMESPACE_EFDREINF, namespace_obrigatorio=False) + self.codResp = TagCaracter(nome='codResp' , tamanho=[1, 6], raiz='//regOcorrs', namespace=NAMESPACE_EFDREINF, namespace_obrigatorio=False) + self.dscResp = TagCaracter(nome='dscResp' , tamanho=[1, 999], raiz='//regOcorrs', namespace=NAMESPACE_EFDREINF, namespace_obrigatorio=False) def get_xml(self): xml = XMLNFe.get_xml(self) @@ -362,10 +361,10 @@ def get_xml(self): xml += self.cdRetorno.xml xml += self.descRetorno.xml if len(self.regOcorrs) >= 1: - xml += '' + # xml += '' for o in self.regOcorrs: xml += o.xml - xml += '' + # xml += '' xml += '' return xml @@ -403,7 +402,7 @@ def set_xml(self, arquivo): class IdeContri(XMLNFe): def __init__(self): super(IdeContri, self).__init__() - self.tpInsc = TagCaracter(nome='tpInsc', valor='1', raiz='//Reinf/evtTotalContrib/ideContri', namespace=NAMESPACE_EFDREINF, namespace_obrigatorio=False) + self.tpInsc = TagCaracter(nome='tpInsc', tamanho=[1, 1], raiz='//Reinf/evtTotalContrib/ideContri', namespace=NAMESPACE_EFDREINF, namespace_obrigatorio=False, valor='1') self.nrInsc = TagCaracter(nome='nrInsc', tamanho=[8, 14], raiz='//Reinf/evtTotalContrib/ideContri', namespace=NAMESPACE_EFDREINF, namespace_obrigatorio=False) def get_xml(self): @@ -426,7 +425,7 @@ def set_xml(self, arquivo): class IdeEvento(XMLNFe): def __init__(self): super(IdeEvento, self).__init__() - self.perApur = TagCaracter(nome='perApur', tamanho=[1, 7], raiz='//Reinf/evtTotalContrib/ideEvento', namespace=NAMESPACE_EFDREINF, namespace_obrigatorio=False) + self.perApur = TagCaracter(nome='perApur', tamanho=[1, 10], raiz='//Reinf/evtTotalContrib/ideEvento', namespace=NAMESPACE_EFDREINF, namespace_obrigatorio=False) def get_xml(self): xml = XMLNFe.get_xml(self) @@ -483,6 +482,9 @@ def __init__(self): self.evtTotalContrib = EvtTotalContrib() self.caminho_esquema = os.path.join(DIRNAME, 'schema/', ESQUEMA_ATUAL + '/') self.arquivo_esquema = 'retornoTotalizadorContribuinte.xsd' + self.cdResposta = '' + self.descResposta = '' + self.ocorrencias = [] self.id_evento = '' self.Signature = Signature() self.evento = self.evtTotalContrib @@ -508,6 +510,9 @@ def set_xml(self, arquivo): if self._le_xml(arquivo): self.evtTotalContrib.xml = arquivo self.Signature.xml = self._le_noh('//Reinf/evtTotalContrib/sig:Signature') + self.cdResposta = self.evtTotalContrib.ideRecRetorno.ideStatus.cdRetorno.valor + self.descResposta = self.evtTotalContrib.ideRecRetorno.ideStatus.descRetorno.valor + self.ocorrencias = self.evtTotalContrib.ideRecRetorno.ideStatus.regOcorrs return True # def gera_id_evento(self, data_hora): diff --git a/pysped/efdreinf/leiaute/retornoTotalizadorEvento_10302.py b/pysped/efdreinf/leiaute/retornoTotalizadorEvento_10302.py index efe77897..8af83f21 100644 --- a/pysped/efdreinf/leiaute/retornoTotalizadorEvento_10302.py +++ b/pysped/efdreinf/leiaute/retornoTotalizadorEvento_10302.py @@ -382,16 +382,14 @@ def __init__(self): def get_xml(self): xml = XMLNFe.get_xml(self) - xml += '' + xml += '' xml += self.cdRetorno.xml xml += self.descRetorno.xml if len(self.regOcorrs) >= 1: - xml += '' for o in self.regOcorrs: xml += o.xml - xml += '' - xml += '' + xml += '' return xml def set_xml(self, arquivo): diff --git a/pysped/efdreinf/leiaute/soap_10100.py b/pysped/efdreinf/leiaute/soap_10100.py index 46513d21..675cd39e 100644 --- a/pysped/efdreinf/leiaute/soap_10100.py +++ b/pysped/efdreinf/leiaute/soap_10100.py @@ -148,6 +148,7 @@ def get_xml(self): xml += '' xml += '%s' % self.tipoInscricaoContribuinte xml += '%s' % self.numeroInscricaoContribuinte + # xml += '%s' % self.numeroProtocoloFechamento xml += '%s' % self.numeroProtocoloFechamento xml += '' xml += '' diff --git a/pysped/esocial/leiaute/__init__.py b/pysped/esocial/leiaute/__init__.py index b5fa91fd..41ffd6ba 100644 --- a/pysped/esocial/leiaute/__init__.py +++ b/pysped/esocial/leiaute/__init__.py @@ -42,18 +42,279 @@ from __future__ import division, print_function, unicode_literals # -# Versão 2.00 +# Versão 2.04.02 # ESQUEMA_ATUAL_VERSAO_2 = 'v2.04.02' - from .soap_10100 import SOAPEnvio as SOAPEnvio_10100 from .soap_10100 import SOAPRetorno as SOAPRetorno_10100 +from .soap_10100 import SOAPConsulta as SOAPConsulta_10100 from .envioLoteEventos_10101 import LoteEventosEsocial as LoteEventosEsocial_10101 from .retornoEnvioLoteEventos_10100 import RetornoLoteEventosEsocial as RetornoLoteEventosEsocial_10100 from .consultaLoteEventos_10000 import ConsultaLoteEventosEsocial as ConsultaLoteEventosEsocial_10000 +from .retornoProcessamentoLote_10100 import RetornoProcessamentoLoteEsocial as RetornoProcessamentoLoteEsocial_10000 - +# S-1000 from .evtInfoEmpregador_20402 import S1000 as S1000_2 +# S-1005 +from .evtTabEstab_20402 import S1005 as S1005_2 +from .evtTabEstab_20402 import InfoEntEduc as InfoEntEduc_2 +from .evtTabEstab_20402 import InfoCaepf as S1005_InfoCaepf_2 +from .evtTabEstab_20402 import InfoPCD as S1005_InfoPCD_2 + +# S-1010 +from . evtTabRubrica_20402 import S1010 as S1010_2 + +# S-1020 +from .evtTabLotacao_20402 import S1020 as S1020_2 + +# S-1030 +from .evtTabCargo_20402 import S1030 as S1030_2 +from .evtTabCargo_20402 import CargoPublico as S1030_CargoPublico_2 + +# S-1050 +from .evtTabHorTur_20402 import S1050 as S1050_2 +from .evtTabHorTur_20402 import HorarioIntervalo as HorarioIntervalo_2 + +# S-2200 +from .evtAdmissao_20402 import S2200 as S2200_2 +from .evtAdmissao_20402 import CTPS as S2200_CTPS_2 +from .evtAdmissao_20402 import RIC as S2200_RIC_2 +from .evtAdmissao_20402 import RG as S2200_RG_2 +from .evtAdmissao_20402 import RNE as S2200_RNE_2 +from .evtAdmissao_20402 import OC as S2200_OC_2 +from .evtAdmissao_20402 import CNH as S2200_CNH_2 +from .evtAdmissao_20402 import Brasil as S2200_Brasil_2 +from .evtAdmissao_20402 import Dependente as S2200_Dependente_2 +from .evtAdmissao_20402 import TrabEstrangeiro as S2200_TrabEstrangeiro_2 +from .evtAdmissao_20402 import Contato as S2200_Contato_2 +from .evtAdmissao_20402 import InfoCeletista as S2200_InfoCeletista_2 +from .evtAdmissao_20402 import InfoEstatutario as S2200_InfoEstatutario_2 +from .evtAdmissao_20402 import LocalTrabGeral as S2200_LocalTrabGeral_2 +from .evtAdmissao_20402 import HorContratual as S2200_HorContratual_2 +from .evtAdmissao_20402 import Horario as S2200_Horario_2 +from .evtAdmissao_20402 import FiliacaoSindical as S2200_FiliacaoSindical_2 +from .evtAdmissao_20402 import Observacoes as S2200_Observacoes_2 +from .evtAdmissao_20402 import SucessaoVinc as S2200_SucessaoVinc_2 + +# S-2205 +from .evtAltCadastral_20402 import S2205 as S2205_2 +from .evtAltCadastral_20402 import CTPS as S2205_CTPS_2 +from .evtAltCadastral_20402 import RG as S2205_RG_2 +from .evtAltCadastral_20402 import CNH as S2205_CNH_2 +from .evtAltCadastral_20402 import Dependente as S2205_Dependente_2 +from .evtAltCadastral_20402 import TrabEstrangeiro as S2205_TrabEstrangeiro_2 + +# S-2206 +from .evtAltContratual_20402 import S2206 as S2206_2 +from .evtAltContratual_20402 import InfoCeletista as S2206_InfoCeletista_2 +from .evtAltContratual_20402 import Vinculo as S2206_Vinculo_2 +from .evtAltContratual_20402 import InfoRegimeTrab as S2206_InfoRegimeTrab_2 +from .evtAltContratual_20402 import LocalTrabGeral as S2206_LocalTrabGeral_2 +from .evtAltContratual_20402 import HorContratual as S2206_HorContratual_2 +from .evtAltContratual_20402 import Horario as S2206_Horario_2 +from .evtAltContratual_20402 import FiliacaoSindical as S2206_FiliacaoSindical_2 + +# S-2230 +from .evtAfastTemp_20402 import S2230 as S2230_2 +from .evtAfastTemp_20402 import IniAfastamento as S2230_IniAfastamento_2 +from .evtAfastTemp_20402 import FimAfastamento as S2230_FimAfastamento_2 + +# S-2299 +from .evtDeslig_20402 import S2299 as S2299_2 +from .evtDeslig_20402 import IdeEstabLot as S2299_IdeEstabLot_2 +from .evtDeslig_20402 import IdePeriodo as S2299_IdePeriodo_2 +from .evtDeslig_20402 import IdeADC as S2299_IdeADC_2 +from .evtDeslig_20402 import InfoTrabInterm as S2299_InfoTrabInterm_2 +from .evtDeslig_20402 import InfoPerAnt as S2299_InfoPerAnt_2 +from .evtDeslig_20402 import ProcCS as S2299_ProcCS_2 +from .evtDeslig_20402 import RemunOutrEmpr as S2299_RemunOutrEmpr_2 +from .evtDeslig_20402 import InfoMV as S2299_InfoMV_2 +from .evtDeslig_20402 import ProcJudTrab as S2299_ProcJudTrab_2 +from .evtDeslig_20402 import InfoSimples as S2299_InfoSimples_2 +from .evtDeslig_20402 import InfoAgNocivo as S2299_InfoAgNocivo_2 +from .evtDeslig_20402 import DetPlano as S2299_DetPlano_2 +from .evtDeslig_20402 import DetVerbas as S2299_DetVerbas_2 +from .evtDeslig_20402 import InfoPerApur as S2299_InforPerApur_2 +from .evtDeslig_20402 import ConsigFGTS as S2299_ConsigFGTS_2 +from .evtDeslig_20402 import Quarentena as S2299_Quarentena_2 +from .evtDeslig_20402 import DmDev as S2299_DmDev_2 +from .evtDeslig_20402 import TransfTit as S2299_TransfTit_2 +from .evtDeslig_20402 import SucessaoVinc as S2299_SucessaoVinc_2 +from .evtDeslig_20402 import Observacoes as S2299_Observacoes_2 +from .evtDeslig_20402 import VerbasResc as S2299_VerbasResc_2 +from .evtDeslig_20402 import InfoDeslig as S2299_InfoDeslig_2 +from .evtDeslig_20402 import IdeVinculo as S2299_IdeVinculo_2 +from .evtDeslig_20402 import EvtDeslig as S2299_EvtDeslig_2 +from .evtDeslig_20402 import DetOper as S2299_DetOper_2 +from .evtDeslig_20402 import IdeEmpregador as S2299_DetOper_2 +from .evtDeslig_20402 import IdeEstabLotApur as S2299_IdeEstabLotApur_2 +from .evtDeslig_20402 import IdeEvento as S2299_IdeEvento_2 +from .evtDeslig_20402 import InfoSaudeColet as S2299_InfoSaudeColet_2 + +# S-1200 +from .evtRemun_20402 import S1200 as S1200_2 +from .evtRemun_20402 import InfoMV as S1200_InfoMV_2 +from .evtRemun_20402 import InfoComplem as S1200_InfoComplem_2 +from .evtRemun_20402 import ProcJudTrab as S1200_ProcJudTrab_2 +from .evtRemun_20402 import InfoInterm as S1200_InfoInterm_2 +from .evtRemun_20402 import DmDev as S1200_DmDev_2 +from .evtRemun_20402 import RemunOutrEmpr as S1200_RemunOutrEmpr_2 +from .evtRemun_20402 import SucessaoVinc as S1200_SucessaoVinc_2 +from .evtRemun_20402 import InfoPerApur as S1200_InfoPerApur_2 +from .evtRemun_20402 import RemunPerApur as S1200_RemunPerApur_2 +from .evtRemun_20402 import InfoPerAnt as S1200_InfoPerAnt_2 +from .evtRemun_20402 import InfoComplCont as S1200_InfoComplCont_2 +from .evtRemun_20402 import ItensRemun as S1200_ItensRemun_2 +from .evtRemun_20402 import InfoSaudeColet as S1200_InfoSaudeColet_2 +from .evtRemun_20402 import InfoAgNocivo as S1200_InfoAgNocivo_2 +from .evtRemun_20402 import InfoTrabInterm as S1200_InfoTrabInterm_2 +from .evtRemun_20402 import DetOper as S1200_DetOper_2 +from .evtRemun_20402 import DetPlano as S1200_DetPlano_2 +from .evtRemun_20402 import IdeADC as S1200_IdeADC_2 +from .evtRemun_20402 import IdePeriodo as S1200_IdePeriodo_2 +from .evtRemun_20402 import IdePeriodoIdeEstabLot as S1200_IdePeriodoIdeEstabLot_2 +from .evtRemun_20402 import RemunPerAntItensRemun as S1200_RemunPerAntItensRemun_2 +from .evtRemun_20402 import RemunPerAntInfoAgNocivo as S1200_RemunPerAntInfoAgNocivo_2 +from .evtRemun_20402 import RemunPerAntInfoTrabInterm as S1200_RemunPerAntInfoTrabInterm_2 + +# S-1202 +from .evtRmnRPPS_20402 import S1202 as S1202_2 +from .evtRmnRPPS_20402 import ProcJudTrab as S1202_ProcJudTrab_2 +from .evtRmnRPPS_20402 import DmDev as S1202_DmDev_2 +from .evtRmnRPPS_20402 import InfoPerApur as S1202_InfoPerApur_2 +from .evtRmnRPPS_20402 import InfoPerAnt as S1202_InfoPerAnt_2 +from .evtRmnRPPS_20402 import RemunPerApur as S1202_RemunPerApur_2 +from .evtRmnRPPS_20402 import ItensRemun as S1202_ItensRemun_2 +from .evtRmnRPPS_20402 import InfoSaudeColet as InfoSaudeColet_2 +from .evtRmnRPPS_20402 import DetOper as S1202_DetOper_2 +from .evtRmnRPPS_20402 import DetPlano as S1202_DetPlano_2 +from .evtRmnRPPS_20402 import IdeADC as S1202_IdeADC_2 +from .evtRmnRPPS_20402 import IdePeriodo as S1202_IdePeriodo_2 +from .evtRmnRPPS_20402 import IdePeriodoIdeEstab as S1202_IdePeriodoIdeEstab_2 +from .evtRmnRPPS_20402 import RemunPerAntItensRemun as S1202_RemunPerAntItensRemun_2 + +# S-1207 +from .evtBenPrRP_20402 import S1207 as S1207_2 +from .evtBenPrRP_20402 import DmDev as S1207_DmDev_2 +from .evtBenPrRP_20402 import Itens as S1207_Itens_2 + +# S-1210 +from .evtPgtos_20402 import S1210 as S1210_2 +from .evtPgtos_20402 import InfoPgto as S1210_InfoPgto_2 +from .evtPgtos_20402 import DetPgtoFl as S1210_DetPgtoFl_2 +from .evtPgtos_20402 import RetPgtoTot as S1210_RetPgtoTot_2 +from .evtPgtos_20402 import PenAlim as S1210_PenAlim_2 +from .evtPgtos_20402 import InfoPgtoParc as S1210_InfoPgtoParc_2 +from .evtPgtos_20402 import DetPgtoBenPr as S1210_DetPgtoBenPr_2 +from .evtPgtos_20402 import DetPgtoBenPrRetPgtoTot as S1210_DetPgtoBenPrRetPgtoTot_2 +from .evtPgtos_20402 import DetPgtoBenPrInfoPgtoParc as S1210_DetPgtoBenPrInfoPgtoParc_2 +from .evtPgtos_20402 import DetPgtoFer as S1210_DetPgtoFer_2 +from .evtPgtos_20402 import DetRubrFer as S1210_DetRubrFer_2 +from .evtPgtos_20402 import DetRubrFerPenAlim as S1210_DetRubrFerPenAlim_2 +from .evtPgtos_20402 import DetPgtoAnt as S1210_DetPgtoAnt_2 +from .evtPgtos_20402 import IdePgtoExt as S1210_IdePgtoExt_2 +from .evtPgtos_20402 import InfoPgtoAnt as S1210_InfoPgtoAnt_2 + +# S-1298 +from .evtReabreEvPer_20402 import S1298 as S1298_2 + +# S-1299 +from .evtFechaEvPer_20402 import S1299 as S1299_2 + +# S-2300 +from .evtTSVInicio_20402 import S2300 as S2300_2 +from .evtTSVInicio_20402 import CTPS as S2300_CTPS_2 +from .evtTSVInicio_20402 import RIC as S2300_RIC_2 +from .evtTSVInicio_20402 import RG as S2300_RG_2 +from .evtTSVInicio_20402 import RNE as S2300_RNE_2 +from .evtTSVInicio_20402 import OC as S2300_OC_2 +from .evtTSVInicio_20402 import CNH as S2300_CNH_2 +from .evtTSVInicio_20402 import Brasil as S2300_Brasil_2 +from .evtTSVInicio_20402 import Dependente as S2300_Dependente_2 +from .evtTSVInicio_20402 import TrabEstrangeiro as S2300_TrabEstrangeiro_2 +from .evtTSVInicio_20402 import Contato as S2300_Contato_2 +from .evtTSVInicio_20402 import InfoComplementares as S2300_InfoComplementares_2 +from .evtTSVInicio_20402 import CargoFuncao as S2300_CargoFuncao_2 +from .evtTSVInicio_20402 import Remuneracao as S2300_Remuneracao_2 +from .evtTSVInicio_20402 import FGTS as S2300_FGTS_2 +from .evtTSVInicio_20402 import InfoDirigenteSindical as S2300_InfoDirigenteSindical_2 +from .evtTSVInicio_20402 import InfoTrabCedido as S2300_InfoTrabCedido_2 +from .evtTSVInicio_20402 import InfoEstagiario as S2300_InfoEstagiario_2 +from .evtTSVInicio_20402 import InstEnsino as S2300_InstEnsino_2 +from .evtTSVInicio_20402 import AgeIntegracao as S2300_AgeIntegracao_2 +from .evtTSVInicio_20402 import SupervisorEstagio as S2300_SupervisorEstagio_2 +from .evtTSVInicio_20402 import Afastamento as S2300_Afastamento_2 +from .evtTSVInicio_20402 import Termino as S2300_Termino_2 + +# S-2306 +from .evtTSVAltContr_20402 import S2306 as S2306_2 +from .evtTSVAltContr_20402 import CargoFuncao as S2306_CargoFuncao_2 +from .evtTSVAltContr_20402 import Remuneracao as S2306_Remuneracao_2 +from .evtTSVAltContr_20402 import InfoTrabCedido as S2306_InfoTrabCedido_2 +from .evtTSVAltContr_20402 import InfoEstagiario as S2306_InfoEstagiario_2 +from .evtTSVAltContr_20402 import InstEnsino as S2306_InstEnsino_2 +from .evtTSVAltContr_20402 import AgeIntegracao as S2306_AgeIntegracao_2 +from .evtTSVAltContr_20402 import SupervisorEstagio as S2306_SupervisorEstagio_2 + +# S-2399 +from .evtTSVTermino_20402 import S2399 as S2399_2 +from .evtTSVTermino_20402 import IdeEstabLot as S2399_IdeEstabLot_2 +from .evtTSVTermino_20402 import RemunOutrEmpr as S2399_RemunOutrEmpr_2 +from .evtTSVTermino_20402 import InfoMV as S2399_InfoMV_2 +from .evtTSVTermino_20402 import ProcJudTrab as S2399_ProcJudTrab_2 +from .evtTSVTermino_20402 import InfoSimples as S2399_InfoSimples_2 +from .evtTSVTermino_20402 import InfoAgNocivo as S2399_InfoAgNocivo_2 +from .evtTSVTermino_20402 import DetVerbas as S2399_DetVerbas_2 +from .evtTSVTermino_20402 import Quarentena as S2399_Quarentena_2 +from .evtTSVTermino_20402 import DmDev as S2399_DmDev_2 +from .evtTSVTermino_20402 import VerbasResc as S2399_VerbasResc_2 +from .evtTSVTermino_20402 import IdeEmpregador as S2399_DetOper_2 +from .evtTSVTermino_20402 import IdeEvento as S2399_IdeEvento_2 + +# S-3000 +from .evtExclusao import S3000 as S3000_2 +from .evtExclusao import IdeTrabalhador as S3000_IdeTrabalhador_2 +from .evtExclusao import IdeFolhaPagto as S3000_IdeFolhaPagto_2 + +# S-5001 +from .evtBasesTrab_20402 import S5001 as S5001_2 +from .evtBasesTrab_20402 import ProcJudTrab as S5001_ProcJudTrab_2 +from .evtBasesTrab_20402 import IdeEstabLot as S5001_IdeEstabLot_2 +from .evtBasesTrab_20402 import InfoCategIncid as S5001_InfoCategIncid_2 +from .evtBasesTrab_20402 import InfoBaseCS as S5001_InfoBaseCS_2 +from .evtBasesTrab_20402 import CalcTerc as S5001_CalcTerc_2 + +# S-5002 +from .evtIrrfBenef_20402 import S5002 as S5002_2 +from .evtIrrfBenef_20402 import InfoDep as S5002_InfoDep_2 +from .evtIrrfBenef_20402 import InfoIrrf as S5002_InfoIrrf_2 +from .evtIrrfBenef_20402 import BasesIrrf as S5002_BasesIrrf_2 +from .evtIrrfBenef_20402 import Irrf as S5002_Irr2_2 +from .evtIrrfBenef_20402 import IdePgtoExt as S5002_IdePgtoExt_2 + +# S-5011 +from .evtCS_20402 import S5011 as S5011_2 +from .evtCS_20402 import InfoCPSeg as S5011_InfoCPSeg_2 +from .evtCS_20402 import IdeEstab as S5011_IdeEstab_2 +from .evtCS_20402 import InfoCRContrib as S5011_InfoCRContrib_2 +from .evtCS_20402 import InfoPJ as S5011_InfoPJ_2 +from .evtCS_20402 import InfoAtConc as S5011_InfoAtConc_2 +from .evtCS_20402 import InfoEstab as S5011_InfoEstab_2 +from .evtCS_20402 import IdeLotacao as S5011_IdeLotacao_2 +from .evtCS_20402 import BasesAquis as S5011_BasesAquis_2 +from .evtCS_20402 import BasesComerc as S5011_BasesComerc_2 +from .evtCS_20402 import InfoComplObra as S5011_InfoComplObra_2 +from .evtCS_20402 import InfoTercSusp as S5011_InfoTercSusp_2 +from .evtCS_20402 import InfoEmprParcial as S5011_InfoEmprParcial_2 +from .evtCS_20402 import DadosOpPort as S5011_DadosOpPort_2 +from .evtCS_20402 import BasesRemun as S5011_BasesRemun_2 +from .evtCS_20402 import BasesAvNPort as S5011_BasesAvNPort_2 +from .evtCS_20402 import InfoSubstPatrOpPort as S5011_InfoSubstPatrOpPort_2 +from .evtCS_20402 import InfoCREstab as S5011_InfoCREstab_2 + +# S-5012 +from .evtIrrf import S5012 as S5012_2 +from .evtIrrf import InfoCRContrib as S5012_InfoCRContrib_2 diff --git a/pysped/esocial/leiaute/consultaLoteEventos_10000.py b/pysped/esocial/leiaute/consultaLoteEventos_10000.py index d922abd9..c2f16c5a 100644 --- a/pysped/esocial/leiaute/consultaLoteEventos_10000.py +++ b/pysped/esocial/leiaute/consultaLoteEventos_10000.py @@ -49,13 +49,13 @@ DIRNAME = os.path.dirname(__file__) -NAMESPACE_ESOCIAL = 'http://www.esocial.gov.br/schema/lote/eventos/envio/v1_1_1' +NAMESPACE_ESOCIAL = 'http://www.esocial.gov.br/schema/lote/eventos/envio/consulta/retornoProcessamento/v1_0_0' class ConsultaLoteEventos(XMLNFe): def __init__(self): super(ConsultaLoteEventos, self).__init__() - self.protocoloEnvio = TagCaracter(nome='protocoloEnvio', raiz='//envioLoteEventos', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.protocoloEnvio = TagCaracter(nome='protocoloEnvio', raiz='//consultaLoteEventos', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) def get_xml(self): xml = XMLNFe.get_xml(self) diff --git a/pysped/esocial/leiaute/envioLoteEventos_10101.py b/pysped/esocial/leiaute/envioLoteEventos_10101.py index ded3554b..8e82322b 100644 --- a/pysped/esocial/leiaute/envioLoteEventos_10101.py +++ b/pysped/esocial/leiaute/envioLoteEventos_10101.py @@ -113,7 +113,10 @@ def get_xml(self): for e in self.eventos: xml += '' - xml += e.xml + if e.xml_assinado: + xml += e.xml_assinado + else: + xml += e.xml xml += '' xml += '' diff --git a/pysped/esocial/leiaute/evtAdmissao_20402.py b/pysped/esocial/leiaute/evtAdmissao_20402.py new file mode 100644 index 00000000..6321048e --- /dev/null +++ b/pysped/esocial/leiaute/evtAdmissao_20402.py @@ -0,0 +1,1465 @@ +# -*- coding: utf-8 -*- +# +# PySPED - Python libraries to deal with Brazil's SPED Project +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Library General Public License as +# published by the Free Software Foundation, either version 2.1 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public License +# along with this program. If not, see . +# +# PySPED - Bibliotecas Python para o +# SPED - Sistema Público de Escrituração Digital +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# Este programa é um software livre: você pode redistribuir e/ou modificar +# este programa sob os termos da licença GNU Library General Public License, +# publicada pela Free Software Foundation, em sua versão 2.1 ou, de acordo +# com sua opção, qualquer versão posterior. +# +# Este programa é distribuido na esperança de que venha a ser útil, +# porém SEM QUAISQUER GARANTIAS, nem mesmo a garantia implícita de +# COMERCIABILIDADE ou ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Veja a +# GNU Library General Public License para mais detalhes. +# +# Você deve ter recebido uma cópia da GNU Library General Public License +# juntamente com este programa. Caso esse não seja o caso, acesse: +# +# + +from __future__ import (division, print_function, unicode_literals, + absolute_import) + +from builtins import str +import os +from pysped.xml_sped import * +from pysped.esocial.leiaute import ESQUEMA_ATUAL_VERSAO_2 as ESQUEMA_ATUAL + +DIRNAME = os.path.dirname(__file__) + +NAMESPACE_ESOCIAL = 'http://www.esocial.gov.br/schema/evt/evtAdmissao/v02_04_02' + + +class Observacoes(XMLNFe): + def __init__(self): + super(Observacoes, self).__init__() + self.observacao = TagCaracter(nome='observacao', tamanho=[1, 255], raiz='//observacoes', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.observacao.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.observacao.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Desligamento(XMLNFe): + def __init__(self): + super(Desligamento, self).__init__() + self.dtDeslig = TagData(nome='dtDeslig', raiz='//desligamento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.dtDeslig.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.dtDeslig.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Afastamento(XMLNFe): + def __init__(self): + super(Afastamento, self).__init__() + self.dtIniAfast = TagData( nome='dtIniAfast', raiz='//transfDom', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codMotAfast = TagCaracter(nome='codMotAfast', tamanho=[1, 11], raiz='//transfDom', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.dtIniAfast.xml + xml += self.codMotAfast.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.dtIniAfast.xml = arquivo + self.codMotAfast.xml = arquivo + + xml = property(get_xml, set_xml) + + +class TransfDom(XMLNFe): + def __init__(self): + super(TransfDom, self).__init__() + self.cpfSubstituido = TagCaracter(nome='cpfSubstituido', tamanho=[1, 11], raiz='//transfDom', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.matricAnt = TagCaracter(nome='matricAnt', tamanho=[1, 30], raiz='//transfDom', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.dtTransf = TagData( nome='dtTransf', raiz='//transfDom', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cpfSubstituido.xml + xml += self.matricAnt.xml + xml += self.dtTransf.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cpfSubstituido.xml = arquivo + self.matricAnt.xml = arquivo + self.dtTransf.xml = arquivo + + xml = property(get_xml, set_xml) + + +class SucessaoVinc(XMLNFe): + def __init__(self): + super(SucessaoVinc, self).__init__() + self.cnpjEmpregAnt = TagCaracter(nome='cnpjEmpregAnt', tamanho=[1, 14], raiz='//sucessaoVinc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.matricAnt = TagCaracter(nome='matricAnt', tamanho=[1, 30], raiz='//sucessaoVinc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.dtTransf = TagData( nome='dtTransf', raiz='//sucessaoVinc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.observacao = TagCaracter(nome='observacao', tamanho=[1, 255], raiz='//sucessaoVinc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cnpjEmpregAnt.xml + xml += self.matricAnt.xml + xml += self.dtTransf.xml + xml += self.observacao.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cnpjEmpregAnt.xml = arquivo + self.matricAnt.xml = arquivo + self.dtTransf.xml = arquivo + self.observacao.xml = arquivo + + xml = property(get_xml, set_xml) + + +class AlvaraJudicial(XMLNFe): + def __init__(self): + super(AlvaraJudicial, self).__init__() + self.nrProcJud = TagCaracter(nome='nrProcJud', tamanho=[1, 20], raiz='//alvaraJudicial', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nrProcJud.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nrProcJud.xml = arquivo + + xml = property(get_xml, set_xml) + + +class FiliacaoSindical(XMLNFe): + def __init__(self): + super(FiliacaoSindical, self).__init__() + self.cnpjSindTrab = TagCaracter(nome='cnpjSindTrab', tamanho=[1, 14], raiz='//filiacaoSindical', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cnpjSindTrab.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cnpjSindTrab.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Horario(XMLNFe): + def __init__(self): + super(Horario, self).__init__() + self.dia = TagCaracter(nome='dia', tamanho=[1, 1], raiz='//horario', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codHorContrat = TagCaracter(nome='codHorContrat', tamanho=[1, 30], raiz='//horario', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.dia.xml + xml += self.codHorContrat.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.dia.xml = arquivo + self.codHorContrat.xml = arquivo + + xml = property(get_xml, set_xml) + + +class HorContratual(XMLNFe): + def __init__(self): + super(HorContratual, self).__init__() + self.qtdHrsSem = TagDecimal( nome='qtdHrsSem', tamanho=[1, 4, 2], raiz='//horContratual', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.tpJornada = TagCaracter(nome='tpJornada', tamanho=[1, 1], raiz='//horContratual', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dscTpJorn = TagCaracter(nome='dscTpJorn', tamanho=[1, 100], raiz='//horContratual', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.tmpParc = TagCaracter(nome='tmpParc', tamanho=[1, 1], raiz='//horContratual', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.horario = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.qtdHrsSem.xml + xml += self.tpJornada.xml + xml += self.dscTpJorn.xml + xml += self.tmpParc.xml + if len(self.horario) > 0: + for h in self.horario: + xml += h.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.qtdHrsSem.xml = arquivo + self.tpJornada.xml = arquivo + self.dscTpJorn.xml = arquivo + self.tmpParc.xml = arquivo + self.horario.xml = self.le_grupo('//horContratual/horario', Horario, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class LocalTrabDom(XMLNFe): + def __init__(self): + super(LocalTrabDom, self).__init__() + self.tpLograd = TagCaracter(nome='tpLograd', tamanho=[1, 4], raiz='//localTrabDom', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dscLograd = TagCaracter(nome='dscLograd', tamanho=[1, 80], raiz='//localTrabDom', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrLograd = TagCaracter(nome='nrLograd', tamanho=[1, 10], raiz='//localTrabDom', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.complemento = TagCaracter(nome='complemento', tamanho=[1, 30], raiz='//localTrabDom', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.bairro = TagCaracter(nome='bairro', tamanho=[1, 60], raiz='//localTrabDom', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.cep = TagCaracter(nome='cep', tamanho=[1, 8], raiz='//localTrabDom', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codMunic = TagCaracter(nome='codMunic', tamanho=[1, 7], raiz='//localTrabDom', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.uf = TagCaracter(nome='uf', tamanho=[1, 2], raiz='//localTrabDom', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpLograd.xml + xml += self.dscLograd.xml + xml += self.nrLograd.xml + xml += self.complemento.xml + xml += self.bairro.xml + xml += self.cep.xml + xml += self.codMunic.xml + xml += self.uf.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpLograd.xml = arquivo + self.dscLograd.xml = arquivo + self.nrLograd.xml = arquivo + self.complemento.xml = arquivo + self.bairro.xml = arquivo + self.cep.xml = arquivo + self.codMunic.xml = arquivo + self.uf.xml = arquivo + + xml = property(get_xml, set_xml) + + +class LocalTrabGeral(XMLNFe): + def __init__(self): + super(LocalTrabGeral, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', tamanho=[1, 1], raiz='//localTrabGeral', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrInsc = TagCaracter(nome='nrInsc', tamanho=[1, 15], raiz='//localTrabGeral', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class LocalTrabalho(XMLNFe): + def __init__(self): + super(LocalTrabalho, self).__init__() + self.localTrabGeral = [] + self.localTrabDom = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + if len(self.localTrabGeral) > 0: + for l in self.localTrabGeral: + xml += l.xml + if len(self.localTrabDom) > 0: + for l in self.localTrabDom: + xml += l.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.localTrabGeral = self.le_grupo('//eSocial/evtAdmissao/vinculo/infoContrato/localTrabalho/localTrabGeral', LocalTrabGeral, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.localTrabDom = self.le_grupo('//eSocial/evtAdmissao/vinculo/infoContrato/localTrabalho/localTrabDom', LocalTrabDom, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class InfoContrato(XMLNFe): + def __init__(self): + super(InfoContrato, self).__init__() + self.codCargo = TagCaracter(nome='codCargo', tamanho=[1, 30], raiz='//eSocial/evtAdmissao/vinculo/infoContrato', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.codFuncao = TagCaracter(nome='codFuncao', tamanho=[1, 30], raiz='//eSocial/evtAdmissao/vinculo/infoContrato', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.codCateg = TagCaracter(nome='codCateg', tamanho=[1, 3], raiz='//eSocial/evtAdmissao/vinculo/infoContrato', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codCarreira = TagCaracter(nome='codCarreira', tamanho=[1, 30], raiz='//eSocial/evtAdmissao/vinculo/infoContrato', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.dtIngrCarr = TagData( nome='dtIngrCarr', raiz='//eSocial/evtAdmissao/vinculo/infoContrato', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.vrSalFx = TagDecimal( nome='vrSalFx', tamanho=[1, 14, 2], raiz='//eSocial/evtAdmissao/vinculo/infoContrato/remuneracao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.undSalFixo = TagCaracter(nome='undSalFixo', tamanho=[1, 1], raiz='//eSocial/evtAdmissao/vinculo/infoContrato/remuneracao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dscSalVar = TagCaracter(nome='dscSalVar', tamanho=[1, 255], raiz='//eSocial/evtAdmissao/vinculo/infoContrato/remuneracao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.tpContr = TagCaracter(nome='tpContr', tamanho=[1, 1], raiz='//eSocial/evtAdmissao/vinculo/infoContrato/duracao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtTerm = TagData( nome='dtTerm', raiz='//eSocial/evtAdmissao/vinculo/infoContrato/duracao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.clauAssec = TagCaracter(nome='clauAssec', tamanho=[1, 1], raiz='//eSocial/evtAdmissao/vinculo/infoContrato/duracao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.localTrabalho = LocalTrabalho() + self.horContratual = [] + self.filiacaoSindical = [] + self.alvaraJudicial = [] + self.observacoes = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.codCargo.xml + xml += self.codFuncao.xml + xml += self.codCateg.xml + xml += self.codCarreira.xml + xml += self.dtIngrCarr.xml + xml += '' + xml += self.vrSalFx.xml + xml += self.undSalFixo.xml + xml += self.dscSalVar.xml + xml += '' + xml += '' + xml += self.tpContr.xml + xml += self.dtTerm.xml + xml += self.clauAssec.xml + xml += '' + xml += self.localTrabalho.xml + if len(self.horContratual) > 0: + for h in self.horContratual: + xml += h.xml + if len(self.filiacaoSindical) > 0: + for f in self.filiacaoSindical: + xml += f.xml + if len(self.alvaraJudicial) > 0: + for a in self.alvaraJudicial: + xml += a.xml + if len(self.observacoes) > 0: + for o in self.observacoes: + xml += o.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codCargo.xml = arquivo + self.codFuncao.xml = arquivo + self.codCateg.xml = arquivo + self.codCarreira.xml = arquivo + self.dtIngrCarr.xml = arquivo + self.vrSalFx.xml = arquivo + self.undSalFixo.xml = arquivo + self.dscSalVar.xml = arquivo + self.tpContr.xml = arquivo + self.dtTerm.xml = arquivo + self.clauAssec.xml = arquivo + self.localTrabalho.xml = arquivo + self.horContratual = self.le_grupo('//eSocial/evtAdmissao/vinculo/infoContrato/horContratual', HorContratual, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.filiacaoSindical = self.le_grupo('//eSocial/evtAdmissao/vinculo/infoContrato/filiacaoSindical', FiliacaoSindical, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.alvaraJudicial = self.le_grupo('//eSocial/evtAdmissao/vinculo/infoContrato/alvaraJudicial', AlvaraJudicial, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.observacoes = self.le_grupo('//eSocial/evtAdmissao/vinculo/infoContrato/observacoes', Observacoes, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class InfoDecJud(XMLNFe): + def __init__(self): + super(InfoDecJud, self).__init__() + self.nrProcJud = TagCaracter(nome='nrProcJud', tamanho=[1, 20], raiz='//infoDecJud', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nrProcJud.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nrProcJud.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoEstatutario(XMLNFe): + def __init__(self): + super(InfoEstatutario, self).__init__() + self.indProvim = TagCaracter(nome='indProvim' , tamanho=[1, 1], raiz='//infoEstatutario', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.tpProvim = TagCaracter(nome='tpProvim' , tamanho=[1, 2], raiz='//infoEstatutario', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtNomeacao = TagData( nome='dtNomeacao' , raiz='//infoEstatutario', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtPosse = TagData( nome='dtPosse' , raiz='//infoEstatutario', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtExercicio = TagData( nome='dtExercicio' , raiz='//infoEstatutario', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.infoDecJud = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.indProvim.xml + xml += self.tpProvim.xml + xml += self.dtNomeacao.xml + xml += self.dtPosse.xml + xml += self.dtExercicio.xml + if len(self.infoDecJud) > 0: + for d in self.infoDecJud: + xml += d.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.indProvim.xml = arquivo + self.tpProvim.xml = arquivo + self.dtNomeacao.xml = arquivo + self.dtPosse.xml = arquivo + self.dtExercicio.xml = arquivo + self.infoDecJud = self.le_grupo('//infoEstatutario/infoDecJud', InfoDecJud, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class Aprend(XMLNFe): + def __init__(self): + super(Aprend, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', tamanho=[1, 1], raiz='//aprend', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrInsc = TagCaracter(nome='nrInsc', tamanho=[1, 15], raiz='//aprend', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeTrabSubstituido(XMLNFe): + def __init__(self): + super(IdeTrabSubstituido, self).__init__() + self.cpfTrabSubst = TagCaracter(nome='cpfTrabSubst', tamanho=[1, 11], raiz='//ideTrabSubstituido', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cpfTrabSubst.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cpfTrabSubst.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEstabVinc(XMLNFe): + def __init__(self): + super(IdeEstabVinc, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', tamanho=[1, 1], raiz='//ideEstabVinc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrInsc = TagCaracter(nome='nrInsc', tamanho=[1, 15], raiz='//ideEstabVinc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class TrabTemporario(XMLNFe): + def __init__(self): + super(TrabTemporario, self).__init__() + self.hipLeg = TagCaracter(nome='higLeg' , tamanho=[1, 1], raiz='//infoCeletista/trabTemporario' , namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.justContr = TagCaracter(nome='justContr' , tamanho=[1, 999], raiz='//infoCeletista/trabTemporario' , namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.tpInclContr = TagCaracter(nome='tpInclContr', tamanho=[1, 1], raiz='//infoCeletista/trabTemporario' , namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.tpInsc = TagCaracter(nome='tpInsc' , tamanho=[1, 1], raiz='//infoCeletista/trabTemporario/ideTomadorServ', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrInsc = TagCaracter(nome='nrInsc' , tamanho=[1, 15], raiz='//infoCeletista/trabTemporario/ideTomadorServ', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideEstabVinc = [] + self.ideTrabSubstituido = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.hipLeg.xml + xml += self.justContr.xml + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc + if len(self.ideEstabVinc) > 0: + for e in self.ideEstabVinc: + xml += e.xml + xml += '' + if len(self.ideTrabSubstituido) > 0: + for t in self.ideTrabSubstituido: + xml += t.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.hipLeg.xml = arquivo + self.justContr.xml = arquivo + self.tpInclContr.xml = arquivo + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + self.ideEstabVinc = self.le_grupo('//infoCeletista/trabTemporario/ideTomadorServ/ideEstabVinc', IdeEstabVinc, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.ideTrabSubstituido = self.le_grupo('//infoCeletista/trabTemporario/ideTrabSubstituido', IdeEstabVinc, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class FGTS(XMLNFe): + def __init__(self): + super(FGTS, self).__init__() + self.opcFGTS = TagCaracter(nome='opcFGTS' , tamanho=[1, 1], raiz='//infoCeletista/FGTS', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtOpcFGTS = TagCaracter(nome='dtOpcFGTS', raiz='//infoCeletista/FGTS', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.opcFGTS.xml + xml += self.dtOpcFGTS.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.opcFGTS.xml = arquivo + self.dtOpcFGTS.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoCeletista(XMLNFe): + def __init__(self): + super(InfoCeletista, self).__init__() + self.dtAdm = TagData( nome='dtAdm' , raiz='//infoCeletista', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.tpAdmissao = TagCaracter(nome='tpAdmissao' , tamanho=[1, 1], raiz='//infoCeletista', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.indAdmissao = TagCaracter(nome='indAdmissao' , tamanho=[1, 1], raiz='//infoCeletista', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.tpRegJor = TagCaracter(nome='tpRegJor' , tamanho=[1, 1], raiz='//infoCeletista', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.natAtividade = TagCaracter(nome='natAtividade' , tamanho=[1, 1], raiz='//infoCeletista', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtBase = TagInteiro( nome='dtBase' , tamanho=[1, 2], raiz='//infoCeletista', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.cnpjSindCategProf = TagCaracter(nome='cnpjSindCategProf', tamanho=[1, 14], raiz='//infoCeletista', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.FGTS = FGTS() + self.trabTemporario = [] + self.aprend = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.dtAdm.xml + xml += self.tpAdmissao.xml + xml += self.indAdmissao.xml + xml += self.tpRegJor.xml + xml += self.natAtividade.xml + xml += self.dtBase.xml + xml += self.cnpjSindCategProf.xml + xml += self.FGTS.xml + if len(self.trabTemporario) > 0: + for t in self.trabTemporario: + xml += t.xml + if len(self.aprend) > 0: + for a in self.aprend: + xml += a.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.dtAdm.xml = arquivo + self.tpAdmissao.xml = arquivo + self.indAdmissao.xml = arquivo + self.tpRegJor.xml = arquivo + self.natAtividade.xml = arquivo + self.dtBase.xml = arquivo + self.cnpjSindCategProf.xml = arquivo + self.FGTS.xml = arquivo + self.trabTemporario = self.le_grupo('//infoCeletista/trabTemporario', TrabTemporario, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.aprend = self.le_grupo('//infoCeletista/aprend', Aprend, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class InfoRegimeTrab(XMLNFe): + def __init__(self): + super(InfoRegimeTrab, self).__init__() + self.infoCeletista = [] + self.infoEstatutario = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + if len(self.infoCeletista) > 0: + for c in self.infoCeletista: + xml += c.xml + if len(self.infoEstatutario) > 0: + for e in self.infoEstatutario: + xml += e.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.infoCeletista = self.le_grupo('//eSocial/evtAdmissao/vinculo/infoRegimeTrab/infoCeletista', InfoCeletista, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoEstatutario = self.le_grupo('//eSocial/evtAdmissao/vinculo/infoRegimeTrab/infoEstatutario', InfoEstatutario, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class Vinculo(XMLNFe): + def __init__(self): + super(Vinculo, self).__init__() + self.matricula = TagCaracter(nome='matricula' , tamanho=[1, 30], raiz='//eSocial/evtAdmissao/vinculo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.tpRegTrab = TagCaracter(nome='tpRegTrab' , tamanho=[1, 1], raiz='//eSocial/evtAdmissao/vinculo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.tpRegPrev = TagCaracter(nome='tpRegPrev' , tamanho=[1, 1], raiz='//eSocial/evtAdmissao/vinculo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrRecInfPrelim = TagCaracter(nome='nrRecInfPrelim', tamanho=[1, 40], raiz='//eSocial/evtAdmissao/vinculo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.cadIni = TagCaracter(nome='cadIni' , tamanho=[1, 1], raiz='//eSocial/evtAdmissao/vinculo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.infoRegimeTrab = InfoRegimeTrab() + self.infoContrato = InfoContrato() + self.sucessaoVinc = [] + self.transfDom = [] + self.afastamento = [] + self.desligamento = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.matricula.xml + xml += self.tpRegTrab.xml + xml += self.tpRegPrev.xml + xml += self.nrRecInfPrelim.xml + xml += self.cadIni.xml + xml += self.infoRegimeTrab.xml + xml += self.infoContrato.xml + if len(self.sucessaoVinc) > 0: + for s in self.sucessaoVinc: + xml += s.xml + if len(self.transfDom) > 0: + for d in self.transfDom: + xml += d.xml + if len(self.afastamento) > 0: + for a in self.afastamento: + xml += a.xml + if len(self.desligamento) > 0: + for d in self.desligamento: + xml += d.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.matricula.xml = arquivo + self.tpRegTrab.xml = arquivo + self.tpRegPrev.xml = arquivo + self.nrRecInfPrelim.xml = arquivo + self.cadIni.xml = arquivo + self.infoRegimeTrab.xml = arquivo + self.infoContrato.xml = arquivo + self.sucessaoVinc = self.le_grupo('//eSocial/evtAdmissao/vinculo/sucessaoVinc', SucessaoVinc, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.transfDom = self.le_grupo('//eSocial/evtAdmissao/vinculo/transDom', TransfDom, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.afastamento = self.le_grupo('//eSocial/evtAdmissao/vinculo/afastamento', Afastamento, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.desligamento = self.le_grupo('//eSocial/evtAdmissao/vinculo/desligamento', Desligamento, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class Contato(XMLNFe): + def __init__(self): + super(Contato, self).__init__() + self.fonePrinc = TagCaracter(nome='fonePrinc' , tamanho=[1, 13], raiz='//contato', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.foneAlternat = TagCaracter(nome='foneAlternat' , tamanho=[1, 13], raiz='//contato', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.emailPrinc = TagCaracter(nome='emailPrinc' , tamanho=[1, 60], raiz='//contato', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.emailAlternat = TagCaracter(nome='emailAlternat', tamanho=[1, 60], raiz='//contato', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.fonePrinc.xml + xml += self.foneAlternat.xml + xml += self.emailPrinc.xml + xml += self.emailAlternat.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.fonePrinc.xml = arquivo + self.foneAlternat.xml = arquivo + self.emailPrinc.xml = arquivo + self.emailAlternat.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Aposentadoria(XMLNFe): + def __init__(self): + super(Aposentadoria, self).__init__() + self.trabAposent = TagCaracter(nome='trabAposent', tamanho=[1, 1], raiz='//aposentadoria', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.trabAposent.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.trabAposent.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Dependente(XMLNFe): + def __init__(self): + super(Dependente, self).__init__() + self.tpDep = TagCaracter(nome='tpDep' , tamanho=[1, 2], raiz='//dependente', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nmDep = TagCaracter(nome='nmDep' , tamanho=[1, 70], raiz='//dependente', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtNascto = TagData( nome='dtNascto' , raiz='//dependente', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.cpfDep = TagCaracter(nome='cpfDep' , tamanho=[1, 11], raiz='//dependente', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.depIRRF = TagCaracter(nome='depIRRF' , tamanho=[1, 1], raiz='//dependente', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.depSF = TagCaracter(nome='depSF' , tamanho=[1, 1], raiz='//dependente', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.incTrab = TagCaracter(nome='incTrab' , tamanho=[1, 1], raiz='//dependente', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpDep.xml + xml += self.nmDep.xml + xml += self.dtNascto.xml + xml += self.cpfDep.xml + xml += self.depIRRF.xml + xml += self.depSF.xml + xml += self.incTrab.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpDep.xml = arquivo + self.nmDep.xml = arquivo + self.dtNascto.xml = arquivo + self.cpfDep.xml = arquivo + self.depIRRF.xml = arquivo + self.depSF.xml = arquivo + self.incTrab.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoDeficiencia(XMLNFe): + def __init__(self): + super(InfoDeficiencia, self).__init__() + self.defFisica = TagCaracter(nome='defFisica' , tamanho=[1, 1], raiz='//infoDeficiencia', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.defVisual = TagCaracter(nome='defVisual' , tamanho=[1, 1], raiz='//infoDeficiencia', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.defAuditiva = TagCaracter(nome='defAuditiva' , tamanho=[1, 1], raiz='//infoDeficiencia', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.defMental = TagCaracter(nome='defMental' , tamanho=[1, 1], raiz='//infoDeficiencia', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.defIntelectual = TagCaracter(nome='defIntelectual' , tamanho=[1, 1], raiz='//infoDeficiencia', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.reabReadp = TagCaracter(nome='reabReadp' , tamanho=[1, 1], raiz='//infoDeficiencia', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.infoCota = TagCaracter(nome='infoCota' , tamanho=[1, 1], raiz='//infoDeficiencia', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.observacao = TagCaracter(nome='observacao' , tamanho=[1, 255], raiz='//infoDeficiencia', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.defFisica.xml + xml += self.defVisual.xml + xml += self.defAuditiva.xml + xml += self.defMental.xml + xml += self.defIntelectual.xml + xml += self.reabReadp.xml + xml += self.infoCota.xml + xml += self.observacao.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.defFisica.xml = arquivo + self.defVisual.xml = arquivo + self.defAuditiva.xml = arquivo + self.defMental.xml = arquivo + self.defIntelectual.xml = arquivo + self.reabReadp.xml = arquivo + self.infoCota.xml = arquivo + self.observacao.xml = arquivo + + xml = property(get_xml, set_xml) + + +class TrabEstrangeiro(XMLNFe): + def __init__(self): + super(TrabEstrangeiro, self).__init__() + self.dtChegada = TagData( nome='dtChegada' , raiz='//trabEstrangeiro', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.classTrabEstrang = TagCaracter(nome='classTrabEstrang', tamanho=[1, 2], raiz='//trabEstrangeiro', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.casadoBr = TagCaracter(nome='casadoBr' , tamanho=[1, 1], raiz='//trabEstrangeiro', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.filhosBr = TagCaracter(nome='filhosBr' , tamanho=[1, 1], raiz='//trabEstrangeiro', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.dtChegada.xml + xml += self.classTrabEstrang.xml + xml += self.casadoBr.xml + xml += self.filhosBr.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.dtChegada.xml = arquivo + self.classTrabEstrang.xml = arquivo + self.casadoBr.xml = arquivo + self.filhosBr.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Exterior(XMLNFe): + def __init__(self): + super(Exterior, self).__init__() + self.paisResid = TagCaracter(nome='paisResid' , tamanho=[1, 3], raiz='//Exterior', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dscLograd = TagCaracter(nome='dscLograd' , tamanho=[1, 80], raiz='//Exterior', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrLograd = TagCaracter(nome='nrLograd' , tamanho=[1, 10], raiz='//Exterior', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.complemento = TagCaracter(nome='complemento' , tamanho=[1, 30], raiz='//Exterior', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.bairro = TagCaracter(nome='bairro' , tamanho=[1, 60], raiz='//Exterior', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.nmCid = TagCaracter(nome='nmCid' , tamanho=[1, 50], raiz='//Exterior', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codPostal = TagCaracter(nome='codPostal' , tamanho=[1, 12], raiz='//Exterior', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.paisResid.xml + xml += self.dscLograd.xml + xml += self.nrLograd.xml + xml += self.complemento.xml + xml += self.bairro.xml + xml += self.nmCid.xml + xml += self.codPostal.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.paisResid.xml = arquivo + self.dscLograd.xml = arquivo + self.nrLograd.xml = arquivo + self.complemento.xml = arquivo + self.bairro.xml = arquivo + self.nmCid.xml = arquivo + self.codPostal.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Brasil(XMLNFe): + def __init__(self): + super(Brasil, self).__init__() + self.tpLograd = TagCaracter(nome='tpLograd' , tamanho=[1, 4], raiz='//Brasil', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dscLograd = TagCaracter(nome='dscLograd' , tamanho=[1, 80], raiz='//Brasil', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrLograd = TagCaracter(nome='nrLograd' , tamanho=[1, 10], raiz='//Brasil', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.complemento = TagCaracter(nome='complemento' , tamanho=[1, 30], raiz='//Brasil', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.bairro = TagCaracter(nome='bairro' , tamanho=[1, 60], raiz='//Brasil', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.cep = TagCaracter(nome='cep' , tamanho=[1, 8], raiz='//Brasil', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codMunic = TagCaracter(nome='codMunic' , tamanho=[1, 7], raiz='//Brasil', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.uf = TagCaracter(nome='uf' , tamanho=[1, 2], raiz='//Brasil', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpLograd.xml + xml += self.dscLograd.xml + xml += self.nrLograd.xml + xml += self.complemento.xml + xml += self.bairro.xml + xml += self.cep.xml + xml += self.codMunic.xml + xml += self.uf.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpLograd.xml = arquivo + self.dscLograd.xml = arquivo + self.nrLograd.xml = arquivo + self.complemento.xml = arquivo + self.bairro.xml = arquivo + self.cep.xml = arquivo + self.codMunic.xml = arquivo + self.uf.xml = arquivo + + xml = property(get_xml, set_xml) + + +class CNH(XMLNFe): + def __init__(self): + super(CNH, self).__init__() + self.nrRegCnh = TagCaracter(nome='nrRegCnh' , tamanho=[1, 12], raiz='//CNH', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtExped = TagData( nome='dtExped' , raiz='//CNH', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.ufCnh = TagCaracter(nome='ufCnh' , tamanho=[1, 2], raiz='//CNH', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtValid = TagData( nome='dtValid' , raiz='//CNH', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtPriHab = TagData( nome='dtPriHab' , raiz='//CNH', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.categoriaCnh = TagCaracter(nome='categoriaCnh', tamanho=[1, 2], raiz='//CNH', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nrRegCnh.xml + xml += self.dtExped.xml + xml += self.ufCnh.xml + xml += self.dtValid.xml + xml += self.dtPriHab.xml + xml += self.categoriaCnh.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nrRegCnh.xml = arquivo + self.dtExped.xml = arquivo + self.ufCnh.xml = arquivo + self.dtValid.xml = arquivo + self.dtPriHab.xml = arquivo + self.categoriaCnh.xml = arquivo + + xml = property(get_xml, set_xml) + + +class OC(XMLNFe): + def __init__(self): + super(OC, self).__init__() + self.nrOc = TagCaracter(nome='nrOc' , tamanho=[1, 14], raiz='//OC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.orgaoEmissor = TagCaracter(nome='orgaoEmissor', tamanho=[1, 20], raiz='//OC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtExped = TagData( nome='dtExped' , raiz='//OC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.dtValid = TagData( nome='dtValid' , raiz='//OC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nrOc.xml + xml += self.orgaoEmissor.xml + xml += self.dtExped.xml + xml += self.dtValid.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nrOc.xml = arquivo + self.orgaoEmissor.xml = arquivo + self.dtExped.xml = arquivo + self.dtValid.xml = arquivo + + xml = property(get_xml, set_xml) + + +class RNE(XMLNFe): + def __init__(self): + super(RNE, self).__init__() + self.nrRne = TagCaracter(nome='nrRne' , tamanho=[1, 14], raiz='//RNE', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.orgaoEmissor = TagCaracter(nome='orgaoEmissor', tamanho=[1, 20], raiz='//RNE', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtExped = TagData( nome='dtExped' , raiz='//RNE', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nrRne.xml + xml += self.orgaoEmissor.xml + xml += self.dtExped.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nrRne.xml = arquivo + self.orgaoEmissor.xml = arquivo + self.dtExped.xml = arquivo + + xml = property(get_xml, set_xml) + + +class RG(XMLNFe): + def __init__(self): + super(RG, self).__init__() + self.nrRg = TagCaracter(nome='nrRg' , tamanho=[1, 14], raiz='//RG', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.orgaoEmissor = TagCaracter(nome='orgaoEmissor', tamanho=[1, 20], raiz='//RG', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtExped = TagData( nome='dtExped' , raiz='//RG', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nrRg.xml + xml += self.orgaoEmissor.xml + xml += self.dtExped.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nrRg.xml = arquivo + self.orgaoEmissor.xml = arquivo + self.dtExped.xml = arquivo + + xml = property(get_xml, set_xml) + + +class RIC(XMLNFe): + def __init__(self): + super(RIC, self).__init__() + self.nrRic = TagCaracter(nome='nrRic' , tamanho=[1, 14], raiz='//RIC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.orgaoEmissor = TagCaracter(nome='orgaoEmissor', tamanho=[1, 20], raiz='//RIC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtExped = TagData( nome='dtExped' , raiz='//RIC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nrRic.xml + xml += self.orgaoEmissor.xml + xml += self.dtExped.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nrRic.xml = arquivo + self.orgaoEmissor.xml = arquivo + self.dtExped.xml = arquivo + + xml = property(get_xml, set_xml) + + +class CTPS(XMLNFe): + def __init__(self): + super(CTPS, self).__init__() + self.nrCtps = TagCaracter(nome='nrCtps' , tamanho=[1, 11], raiz='//CTPS', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.serieCtps = TagCaracter(nome='serieCtps', tamanho=[1, 5], raiz='//CTPS', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ufCtps = TagCaracter(nome='ufCtps' , tamanho=[1, 2], raiz='//CTPS', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nrCtps.xml + xml += self.serieCtps.xml + xml += self.ufCtps.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nrCtps.xml = arquivo + self.serieCtps.xml = arquivo + self.ufCtps.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Endereco(XMLNFe): + def __init__(self): + super(Endereco, self).__init__() + self.brasil = [] + self.exterior = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + if len(self.brasil) > 0: + for b in self.brasil: + xml += b.xml + if len(self.exterior) > 0: + for e in self.exterior: + xml += e.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.brasil = self.le_grupo('//eSocial/evtAdmissao/trabalhador/endereco/brasil', CTPS, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.exterior = self.le_grupo('//eSocial/evtAdmissao/trabalhador/endereco/exterior', CTPS, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class Documentos(XMLNFe): + def __init__(self): + super(Documentos, self).__init__() + self.CTPS = [] + self.RIC = [] + self.RG = [] + self.RNE = [] + self.OC = [] + self.CNH = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + if len(self.CTPS) > 0: + for c in self.CTPS: + xml += c.xml + if len(self.RIC) > 0: + for r in self.RIC: + xml += r.xml + if len(self.RG) > 0: + for r in self.RG: + xml += r.xml + if len(self.RNE) > 0: + for r in self.RNE: + xml += r.xml + if len(self.OC) > 0: + for o in self.OC: + xml += o.xml + if len(self.CNH) > 0: + for c in self.CNH: + xml += c.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.CTPS = self.le_grupo('//eSocial/evtAdmissao/trabalhador/documentos/CTPS', CTPS, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.RIC = self.le_grupo('//eSocial/evtAdmissao/trabalhador/documentos/RIC' , RIC , namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.RG = self.le_grupo('//eSocial/evtAdmissao/trabalhador/documentos/RG' , RG , namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.RNE = self.le_grupo('//eSocial/evtAdmissao/trabalhador/documentos/RNE' , RNE , namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.OC = self.le_grupo('//eSocial/evtAdmissao/trabalhador/documentos/OC' , OC , namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.CNH = self.le_grupo('//eSocial/evtAdmissao/trabalhador/documentos/CNH' , CNH , namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class Nascimento(XMLNFe): + def __init__(self): + super(Nascimento, self).__init__() + self.dtNascto = TagData( nome='dtNascto' , raiz='//eSocial/evtAdmissao/trabalhador/nascimento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codMunic = TagCaracter(nome='codMunic' , tamanho=[1, 7] , raiz='//eSocial/evtAdmissao/trabalhador/nascimento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.uf = TagCaracter(nome='uf' , tamanho=[1, 2] , raiz='//eSocial/evtAdmissao/trabalhador/nascimento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.paisNascto = TagCaracter(nome='paisNascto', tamanho=[1, 3] , raiz='//eSocial/evtAdmissao/trabalhador/nascimento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.paisNac = TagCaracter(nome='paisNac' , tamanho=[1, 3] , raiz='//eSocial/evtAdmissao/trabalhador/nascimento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nmMae = TagCaracter(nome='nmMae' , tamanho=[1, 70], raiz='//eSocial/evtAdmissao/trabalhador/nascimento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.nmPai = TagCaracter(nome='nmPai' , tamanho=[1, 70], raiz='//eSocial/evtAdmissao/trabalhador/nascimento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.dtNascto.xml + xml += self.codMunic.xml + xml += self.uf.xml + xml += self.paisNascto.xml + xml += self.paisNac.xml + xml += self.nmMae.xml + xml += self.nmPai.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.dtNascto.xml = arquivo + self.codMunic.xml = arquivo + self.uf.xml = arquivo + self.paisNascto.xml = arquivo + self.paisNac.xml = arquivo + self.nmMae.xml = arquivo + self.nmPai.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Trabalhador(XMLNFe): + def __init__(self): + super(Trabalhador, self).__init__() + self.cpfTrab = TagCaracter(nome='cpfTrab' , tamanho=[1, 11], raiz='//eSocial/evtAdmissao/trabalhador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nisTrab = TagCaracter(nome='nisTrab' , tamanho=[1, 11], raiz='//eSocial/evtAdmissao/trabalhador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nmTrab = TagCaracter(nome='nmTrab' , tamanho=[1, 70], raiz='//eSocial/evtAdmissao/trabalhador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.sexo = TagCaracter(nome='sexo' , tamanho=[1, 1] , raiz='//eSocial/evtAdmissao/trabalhador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.racaCor = TagCaracter(nome='racaCor' , tamanho=[1, 1] , raiz='//eSocial/evtAdmissao/trabalhador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.estCiv = TagCaracter(nome='estCiv' , tamanho=[1, 1] , raiz='//eSocial/evtAdmissao/trabalhador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.grauInstr = TagCaracter(nome='grauInstr' , tamanho=[1, 2] , raiz='//eSocial/evtAdmissao/trabalhador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.indPriEmpr = TagCaracter(nome='indPriEmpr', tamanho=[1, 1] , raiz='//eSocial/evtAdmissao/trabalhador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.nmSoc = TagCaracter(nome='nmSoc' , tamanho=[1, 70], raiz='//eSocial/evtAdmissao/trabalhador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.nascimento = Nascimento() + self.documentos = Documentos() + self.endereco = Endereco() + self.trabEstrangeiro = [] + self.infoDeficiencia = [] + self.dependente = [] + self.aposentadoria = [] + self.contato = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cpfTrab.xml + xml += self.nisTrab.xml + xml += self.nmTrab.xml + xml += self.sexo.xml + xml += self.racaCor.xml + xml += self.estCiv.xml + xml += self.grauInstr.xml + xml += self.indPriEmpr.xml + xml += self.nmSoc.xml + xml += self.nascimento.xml + xml += self.documentos.xml + xml += self.endereco.xml + if len(self.trabEstrangeiro) > 0: + for t in self.trabEstrangeiro: + xml += t.xml + if len(self.infoDeficiencia) > 0: + for i in self.infoDeficiencia: + xml += i.xml + if len(self.dependente) > 0: + for d in self.dependente: + xml += d.xml + if len(self.aposentadoria) > 0: + for a in self.aposentadoria: + xml += a.xml + if len(self.contato) > 0: + for c in self.contato: + xml += c.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cpfTrab.xml = arquivo + self.nisTrab.xml = arquivo + self.nmTrab.xml = arquivo + self.sexo.xml = arquivo + self.racaCor.xml = arquivo + self.estCivil.xml = arquivo + self.grauInstr.xml = arquivo + self.indPriEmpr.xml = arquivo + self.nmSoc.xml = arquivo + self.nascimento.xml = arquivo + self.documentos.xml = arquivo + self.endereco.xml = arquivo + self.trabEstrangeiro = self.le_grupo('//eSocial/evtAdmissao/trabalhador/trabEstrangeiro', TrabEstrangeiro, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoDeficiencia = self.le_grupo('//eSocial/evtAdmissao/trabalhador/infoDeficiencia', InfoDeficiencia, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.dependente = self.le_grupo('//eSocial/evtAdmissao/trabalhador/dependente', Dependente, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.aposentadoria = self.le_grupo('//eSocial/evtAdmissao/trabalhador/aposentadoria', Aposentadoria, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.contato = self.le_grupo('//eSocial/evtAdmissao/trabalhador/contato', Contato, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class IdeEmpregador(XMLNFe): + def __init__(self): + super(IdeEmpregador, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', raiz='//eSocial/evtAdmissao/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='1') + self.nrInsc = TagCaracter(nome='nrInsc', raiz='//eSocial/evtAdmissao/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEvento(XMLNFe): + def __init__(self): + super(IdeEvento, self).__init__() + self.indRetif = TagInteiro( nome='indRetif', raiz='//eSocial/evtAdmissao/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=1) + self.nrRecibo = TagCaracter(nome='nrRecibo', raiz='//eSocial/evtAdmissao/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.tpAmb = TagInteiro( nome='tpAmb' , raiz='//eSocial/evtAdmissao/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=2) + self.procEmi = TagInteiro( nome='procEmi' , raiz='//eSocial/evtAdmissao/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=1) + self.verProc = TagCaracter(nome='verProc' , raiz='//eSocial/evtAdmissao/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.indRetif.xml + xml += self.nrRecibo.xml + xml += self.tpAmb.xml + xml += self.procEmi.xml + xml += self.verProc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.indRetif.xml = arquivo + self.nrRecibo.xml = arquivo + self.tpAmb.xml = arquivo + self.procEmi.xml = arquivo + self.verProc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class EvtAdmissao(XMLNFe): + def __init__(self): + super(EvtAdmissao, self).__init__() + self.Id = TagCaracter(nome='evtAdmissao', propriedade='Id', raiz='//eSocial/evtAdmissao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideEvento = IdeEvento() + self.ideEmpregador = IdeEmpregador() + self.trabalhador = Trabalhador() + self.vinculo = Vinculo() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += self.Id.xml + xml += self.ideEvento.xml + xml += self.ideEmpregador.xml + xml += self.trabalhador.xml + xml += self.vinculo.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.Id.xml = arquivo + self.ideEvento.xml = arquivo + self.ideEmpregador.xml = arquivo + self.trabalhador.xml = arquivo + self.vinculo.xml = arquivo + + xml = property(get_xml, set_xml) + + +class S2200(XMLNFe): + def __init__(self): + super(S2200, self).__init__() + self.evtAdmissao = EvtAdmissao() + self.caminho_esquema = os.path.join(DIRNAME, 'schema/', ESQUEMA_ATUAL + '/') + self.arquivo_esquema = 'evtAdmissao.xsd' + self.id_evento = '' + self.tpInsc = '' + self.nrInsc = '' + # self.Signature = Signature() + self.evento = self.evtAdmissao + self.xml_assinado = '' + + def get_xml(self): + xml = XMLNFe.get_xml(self) + #xml += ABERTURA + xml += '' + xml += self.evtAdmissao.xml + + # + # Define a URI a ser assinada + # + # self.Signature.URI = '#' + self.evtInfoEmpregador.Id.valor + # xml += self.Signature.xml + xml += '' + + # Define o método de assinatura + # self.Signature.metodo = 'sha256' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.evtAdmissao.xml = arquivo + # self.Signature.xml = self._le_noh('//eSocial/sig:Signature') + + def gera_id_evento(self, data_hora, sequencia=False): + #A identificação única do evento (Id) é composta por 36 caracteres, conforme o que segue: IDTNNNNNNNNNNNNNNAAAAMMDDHHMMSSQQQQQ + #ID - Texto Fixo "ID"; + #T - Tipo de Inscrição do Empregador (1 - CNPJ; 2 - CPF); + #NNNNNNNNNNNNNN - Número do CNPJ ou CPF do empregador - Completar com + #zeros à direita. No caso de pessoas jurídicas, o CNPJ informado deve conter 8 ou 14 + #posições de acordo com o enquadramento do contribuinte para preenchimento do campo + #{ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se + #necessário. + #AAAAMMDD - Ano, mês e dia da geração do evento; + #HHMMSS - Hora, minuto e segundo da geração do evento; + #QQQQQ - Número sequencial da chave. Incrementar somente quando ocorrer geração de + #eventos na mesma data/hora, completando com zeros à esquerda. + #OBS.: No caso de pessoas jurídicas, o CNPJ informado deverá conter 8 ou 14 posições de + #acordo com o enquadramento do contribuinte para preenchimento do campo {ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se necessário. + + if not sequencia: + sequencia=1 + + id_evento = 'ID' + id_evento += self.tpInsc + id_evento += self.nrInsc[0:8] + '000000' + id_evento += data_hora + id_evento += str(sequencia).zfill(5) + + # Define o Id + # + self.evtAdmissao.Id.valor = id_evento + self.id_evento = id_evento + + xml = property(get_xml, set_xml) diff --git a/pysped/esocial/leiaute/evtAfastTemp_20402.py b/pysped/esocial/leiaute/evtAfastTemp_20402.py new file mode 100644 index 00000000..cccba595 --- /dev/null +++ b/pysped/esocial/leiaute/evtAfastTemp_20402.py @@ -0,0 +1,453 @@ +# -*- coding: utf-8 -*- +# +# PySPED - Python libraries to deal with Brazil's SPED Project +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Library General Public License as +# published by the Free Software Foundation, either version 2.1 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public License +# along with this program. If not, see . +# +# PySPED - Bibliotecas Python para o +# SPED - Sistema Público de Escrituração Digital +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# Este programa é um software livre: você pode redistribuir e/ou modificar +# este programa sob os termos da licença GNU Library General Public License, +# publicada pela Free Software Foundation, em sua versão 2.1 ou, de acordo +# com sua opção, qualquer versão posterior. +# +# Este programa é distribuido na esperança de que venha a ser útil, +# porém SEM QUAISQUER GARANTIAS, nem mesmo a garantia implícita de +# COMERCIABILIDADE ou ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Veja a +# GNU Library General Public License para mais detalhes. +# +# Você deve ter recebido uma cópia da GNU Library General Public License +# juntamente com este programa. Caso esse não seja o caso, acesse: +# +# + +from __future__ import (division, print_function, unicode_literals, + absolute_import) + +from builtins import str +import os +from pysped.xml_sped import * +from pysped.esocial.leiaute import ESQUEMA_ATUAL_VERSAO_2 as ESQUEMA_ATUAL + +DIRNAME = os.path.dirname(__file__) + +NAMESPACE_ESOCIAL = 'http://www.esocial.gov.br/schema/evt/evtAfastTemp/v02_04_02' + + +class FimAfastamento(XMLNFe): + def __init__(self): + super(FimAfastamento, self).__init__() + self.dtTermAfast = TagData(nome='dtTermAfast', raiz='//fimAfastamento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.dtTermAfast.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.dtTermAfast.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoRetif(XMLNFe): + def __init__(self): + super(InfoRetif, self).__init__() + self.origRetif = TagInteiro(nome='origRetif', raiz='//infoRetif', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.tpProc = TagInteiro(nome='origRetif', raiz='//infoRetif', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.origRetif.xml + xml += self.tpProc.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.origRetif.xml = arquivo + self.tpProc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoMandSind(XMLNFe): + def __init__(self): + super(InfoMandSind, self).__init__() + self.cnpjSind = TagCaracter(nome='cnpjSind', tamanho=[1, 14], raiz='//infoMandSind', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.infOnusRemun = TagInteiro(nome='infOnusRemun', raiz='//infoMandSind', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cnpjSind.xml + xml += self.infOnusRemun.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cnpjSind.xml = arquivo + self.infOnusRemun.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoCessao(XMLNFe): + def __init__(self): + super(InfoCessao, self).__init__() + self.cnpjCess = TagCaracter(nome='cnpjCess', tamanho=[1, 14], raiz='//infoCessao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.infOnus = TagInteiro(nome='infOnus', raiz='//infoCessao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cnpjCess.xml + xml += self.infOnus.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cnpjCess.xml = arquivo + self.infOnus.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Emitente(XMLNFe): + def __init__(self): + super(Emitente, self).__init__() + self.nmEmit = TagCaracter(nome='nmEmit', tamanho=[1, 70], raiz='//emitente', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideOC = TagInteiro(nome='ideOC', raiz='//emitente', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrOc = TagCaracter(nome='nrOc', tamanho=[1, 14], raiz='//emitente', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ufOC = TagCaracter(nome='nrOc', tamanho=[1, 2], raiz='//emitente', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nmEmit.xml + xml += self.ideOC.xml + xml += self.nrOc.xml + xml += self.ufOC.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nmEmit.xml = arquivo + self.ideOC.xml = arquivo + self.nrOc.xml = arquivo + self.ufOC.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoAtestado(XMLNFe): + def __init__(self): + super(InfoAtestado, self).__init__() + self.codCID = TagCaracter(nome='codCID', tamanho=[1, 4], raiz='//infoAtestado', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.qtdDiasAfast = TagInteiro(nome='qtdDiasAfast', raiz='//infoAtestado', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.emitente = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.codCID.xml + xml += self.qtdDiasAfast.xml + for emitente in self.emitente: + xml += emitente.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codCID.xml = arquivo + self.qtdDiasAfast.xml = arquivo + self.emitente.xml = self.le_grupo('//eSocial/evtAfastTemp/infoAfastamento/iniAfastamento/infoAtestado/emitente', Emitente, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class IniAfastamento(XMLNFe): + def __init__(self): + super(IniAfastamento, self).__init__() + self.dtIniAfast = TagData(nome='dtIniAfast', raiz='//iniAfastamento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codMotAfast = TagCaracter(nome='codMotAfast', tamanho=[1, 2], raiz='//iniAfastamento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.infoMesmoMtv = TagCaracter(nome='infoMesmoMtv', tamanho=[1, 1], raiz='//iniAfastamento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.tpAcidTransito = TagInteiro(nome='iniAfastamento', raiz='//iniAfastamento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.observacao = TagCaracter(nome='observacao', raiz='//iniAfastamento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.infoAtestado = [] + self.infoCessao = [] + self.infoMandSind = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.dtIniAfast.xml + xml += self.codMotAfast.xml + xml += self.infoMesmoMtv.xml + xml += self.tpAcidTransito.xml + xml += self.observacao.xml + for info_atestado in self.infoAtestado: + xml += info_atestado.xml + for info_cessao in self.infoCessao: + xml += info_cessao.xml + for info_mandato_sindical in self.infoMandSind: + xml += info_mandato_sindical.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.dtIniAfast.xml = arquivo + self.codMotAfast.xml = arquivo + self.infoMesmoMtv.xml = arquivo + self.tpAcidTransito.xml = arquivo + self.observacao.xml = arquivo + self.infoAtestado.xml = self.le_grupo('//eSocial/evtAfastTemp/infoAfastamento/iniAfastamento/infoAtestado', InfoAtestado, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoCessao.xml = self.le_grupo('//eSocial/evtAfastTemp/infoAfastamento/iniAfastamento/infoCessao', InfoCessao, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoMandSind.xml = self.le_grupo('//eSocial/evtAfastTemp/infoAfastamento/iniAfastamento/infoMandSind', InfoMandSind, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class InfoAfastamento(XMLNFe): + def __init__(self): + super(InfoAfastamento, self).__init__() + self.iniAfastamento = [] + self.infoRetif = [] + self.fimAfastamento = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + for inicio_afastamento in self.iniAfastamento: + xml += inicio_afastamento.xml + for info_retificacao in self.infoRetif: + xml += info_retificacao.xml + for fim_afastamento in self.fimAfastamento: + xml += fim_afastamento.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.iniAfastamento = self.le_grupo('//eSocial/evtAfastTemp/infoAfastamento/iniAfastamento', IniAfastamento, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoRetif = self.le_grupo('//eSocial/evtAfastTemp/infoAfastamento/infoRetif', InfoRetif, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.fimAfastamento = self.le_grupo('//eSocial/evtAfastTemp/infoAfastamento/fimAfastamento', FimAfastamento, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class IdeVinculo(XMLNFe): + def __init__(self): + super(IdeVinculo, self).__init__() + self.cpfTrab = TagCaracter(nome='cpfTrab', tamanho=[1, 11], raiz='//eSocial/evtAfastTemp/ideVinculo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nisTrab = TagCaracter(nome='nisTrab', tamanho=[1, 11], raiz='//eSocial/evtAfastTemp/ideVinculo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.matricula = TagCaracter(nome='matricula', tamanho=[1, 30], raiz='//eSocial/evtAfastTemp/ideVinculo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.codCateg = TagCaracter(nome='matricula', tamanho=[1, 30], raiz='//eSocial/evtAfastTemp/ideVinculo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cpfTrab.xml + xml += self.nisTrab.xml + xml += self.matricula.xml + xml += self.codCateg.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cpfTrab.xml = arquivo + self.nisTrab.xml = arquivo + self.matricula.xml = arquivo + self.codCateg.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEmpregador(XMLNFe): + def __init__(self): + super(IdeEmpregador, self).__init__() + self.tpInsc = TagInteiro(nome='tpInsc', raiz='//eSocial/evtAfastTemp/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrInsc = TagCaracter(nome='nrInsc', raiz='//eSocial/evtAfastTemp/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEvento(XMLNFe): + def __init__(self): + super(IdeEvento, self).__init__() + self.indRetif = TagInteiro(nome='indRetif', raiz='//eSocial/evtAfastTemp/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrRecibo = TagCaracter(nome='nrRecibo', tamanho=[1, 40], raiz='//eSocial/evtAfastTemp/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.tpAmb = TagInteiro(nome='tpAmb', raiz='//eSocial/evtAfastTemp/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.procEmi = TagInteiro(nome='procEmi', raiz='//eSocial/evtAfastTemp/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.verProc = TagCaracter(nome='verProc', tamanho=[1, 20], raiz='//eSocial/evtAfastTemp/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.indRetif.xml + xml += self.nrRecibo.xml + xml += self.tpAmb.xml + xml += self.procEmi.xml + xml += self.verProc.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.indRetif.xml = arquivo + self.nrRecibo.xml = arquivo + self.tpAmb.xml = arquivo + self.procEmi.xml = arquivo + self.verProc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class EvtAfastTemp(XMLNFe): + def __init__(self): + super(EvtAfastTemp, self).__init__() + self.Id = TagCaracter(nome='evtAfastTemp', propriedade='Id', raiz='//eSocial/evtAfastTemp', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideEvento = IdeEvento() + self.ideEmpregador = IdeEmpregador() + self.ideVinculo = IdeVinculo() + self.infoAfastamento = InfoAfastamento() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += self.Id.xml + xml += self.ideEvento.xml + xml += self.ideEmpregador.xml + xml += self.ideVinculo.xml + xml += self.infoAfastamento.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.Id.xml = arquivo + self.ideEvento.xml = arquivo + self.ideEmpregador.xml = arquivo + self.ideVinculo.xml = arquivo + self.infoAfastamento.xml = arquivo + + xml = property(get_xml, set_xml) + + +class S2230(XMLNFe): + def __init__(self): + super(S2230, self).__init__() + self.evtAfastTemp = EvtAfastTemp() + self.caminho_esquema = os.path.join(DIRNAME, 'schema/', ESQUEMA_ATUAL + '/') + self.arquivo_esquema = 'evtAfastTemp.xsd' + self.id_evento = '' + self.tpInsc = '' + self.nrInsc = '' + # self.Signature = Signature() + self.evento = self.evtAfastTemp + self.xml_assinado = '' + + def get_xml(self): + xml = XMLNFe.get_xml(self) + #xml += ABERTURA + xml += '' + xml += self.evtAfastTemp.xml + + # + # Define a URI a ser assinada + # + # self.Signature.URI = '#' + self.evtInfoEmpregador.Id.valor + # xml += self.Signature.xml + xml += '' + + # Define o método de assinatura + # self.Signature.metodo = 'sha256' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.evtAfastTemp.xml = arquivo + # self.Signature.xml = self._le_noh('//eSocial/sig:Signature') + + def gera_id_evento(self, data_hora, sequencia=False): + #A identificação única do evento (Id) é composta por 36 caracteres, conforme o que segue: IDTNNNNNNNNNNNNNNAAAAMMDDHHMMSSQQQQQ + #ID - Texto Fixo "ID"; + #T - Tipo de Inscrição do Empregador (1 - CNPJ; 2 - CPF); + #NNNNNNNNNNNNNN - Número do CNPJ ou CPF do empregador - Completar com + #zeros à direita. No caso de pessoas jurídicas, o CNPJ informado deve conter 8 ou 14 + #posições de acordo com o enquadramento do contribuinte para preenchimento do campo + #{ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se + #necessário. + #AAAAMMDD - Ano, mês e dia da geração do evento; + #HHMMSS - Hora, minuto e segundo da geração do evento; + #QQQQQ - Número sequencial da chave. Incrementar somente quando ocorrer geração de + #eventos na mesma data/hora, completando com zeros à esquerda. + #OBS.: No caso de pessoas jurídicas, o CNPJ informado deverá conter 8 ou 14 posições de + #acordo com o enquadramento do contribuinte para preenchimento do campo {ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se necessário. + + if not sequencia: + sequencia=1 + + id_evento = 'ID' + id_evento += self.tpInsc + id_evento += self.nrInsc[0:8] + '000000' + id_evento += data_hora + id_evento += str(sequencia).zfill(5) + + # Define o Id + # + self.evtAfastTemp.Id.valor = id_evento + self.id_evento = id_evento + + xml = property(get_xml, set_xml) diff --git a/pysped/esocial/leiaute/evtAltCadastral_20402.py b/pysped/esocial/leiaute/evtAltCadastral_20402.py new file mode 100644 index 00000000..143def83 --- /dev/null +++ b/pysped/esocial/leiaute/evtAltCadastral_20402.py @@ -0,0 +1,810 @@ +# -*- coding: utf-8 -*- +# +# PySPED - Python libraries to deal with Brazil's SPED Project +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Library General Public License as +# published by the Free Software Foundation, either version 2.1 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public License +# along with this program. If not, see . +# +# PySPED - Bibliotecas Python para o +# SPED - Sistema Público de Escrituração Digital +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# Este programa é um software livre: você pode redistribuir e/ou modificar +# este programa sob os termos da licença GNU Library General Public License, +# publicada pela Free Software Foundation, em sua versão 2.1 ou, de acordo +# com sua opção, qualquer versão posterior. +# +# Este programa é distribuido na esperança de que venha a ser útil, +# porém SEM QUAISQUER GARANTIAS, nem mesmo a garantia implícita de +# COMERCIABILIDADE ou ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Veja a +# GNU Library General Public License para mais detalhes. +# +# Você deve ter recebido uma cópia da GNU Library General Public License +# juntamente com este programa. Caso esse não seja o caso, acesse: +# +# + +from __future__ import (division, print_function, unicode_literals, + absolute_import) + +from builtins import str +import os +from pysped.xml_sped import * +from pysped.esocial.leiaute import ESQUEMA_ATUAL_VERSAO_2 as ESQUEMA_ATUAL + +DIRNAME = os.path.dirname(__file__) + +NAMESPACE_ESOCIAL = 'http://www.esocial.gov.br/schema/evt/evtAltCadastral/v02_04_02' + + +class Contato(XMLNFe): + def __init__(self): + super(Contato, self).__init__() + self.fonePrinc = TagCaracter(nome='fonePrinc' , tamanho=[1, 13], raiz='//contato', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.foneAlternat = TagCaracter(nome='foneAlternat' , tamanho=[1, 13], raiz='//contato', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.emailPrinc = TagCaracter(nome='emailPrinc' , tamanho=[1, 60], raiz='//contato', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.emailAlternat = TagCaracter(nome='emailAlternat', tamanho=[1, 60], raiz='//contato', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.fonePrinc.xml + xml += self.foneAlternat.xml + xml += self.emailPrinc.xml + xml += self.emailAlternat.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.fonePrinc.xml = arquivo + self.foneAlternat.xml = arquivo + self.emailPrinc.xml = arquivo + self.emailAlternat.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Aposentadoria(XMLNFe): + def __init__(self): + super(Aposentadoria, self).__init__() + self.trabAposent = TagCaracter(nome='trabAposent', tamanho=[1, 1], raiz='//aposentadoria', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.trabAposent.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.trabAposent.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Dependente(XMLNFe): + def __init__(self): + super(Dependente, self).__init__() + self.tpDep = TagCaracter(nome='tpDep' , tamanho=[1, 2], raiz='//dependente', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nmDep = TagCaracter(nome='nmDep' , tamanho=[1, 70], raiz='//dependente', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtNascto = TagData( nome='dtNascto' , raiz='//dependente', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.cpfDep = TagCaracter(nome='cpfDep' , tamanho=[1, 11], raiz='//dependente', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.depIRRF = TagCaracter(nome='depIRRF' , tamanho=[1, 1], raiz='//dependente', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.depSF = TagCaracter(nome='depSF' , tamanho=[1, 1], raiz='//dependente', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.incTrab = TagCaracter(nome='incTrab' , tamanho=[1, 1], raiz='//dependente', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpDep.xml + xml += self.nmDep.xml + xml += self.dtNascto.xml + xml += self.cpfDep.xml + xml += self.depIRRF.xml + xml += self.depSF.xml + xml += self.incTrab.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpDep.xml = arquivo + self.nmDep.xml = arquivo + self.dtNascto.xml = arquivo + self.cpfDep.xml = arquivo + self.depIRRF.xml = arquivo + self.depSF.xml = arquivo + self.incTrab.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoDeficiencia(XMLNFe): + def __init__(self): + super(InfoDeficiencia, self).__init__() + self.defFisica = TagCaracter(nome='defFisica' , tamanho=[1, 1], raiz='//infoDeficiencia', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.defVisual = TagCaracter(nome='defVisual' , tamanho=[1, 1], raiz='//infoDeficiencia', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.defAuditiva = TagCaracter(nome='defAuditiva' , tamanho=[1, 1], raiz='//infoDeficiencia', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.defMental = TagCaracter(nome='defMental' , tamanho=[1, 1], raiz='//infoDeficiencia', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.defIntelectual = TagCaracter(nome='defIntelectual' , tamanho=[1, 1], raiz='//infoDeficiencia', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.reabReadp = TagCaracter(nome='reabReadp' , tamanho=[1, 1], raiz='//infoDeficiencia', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.infoCota = TagCaracter(nome='infoCota' , tamanho=[1, 1], raiz='//infoDeficiencia', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.observacao = TagCaracter(nome='observacao' , tamanho=[1, 255], raiz='//infoDeficiencia', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.defFisica.xml + xml += self.defVisual.xml + xml += self.defAuditiva.xml + xml += self.defMental.xml + xml += self.defIntelectual.xml + xml += self.reabReadp.xml + xml += self.infoCota.xml + xml += self.observacao.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.defFisica.xml = arquivo + self.defVisual.xml = arquivo + self.defAuditiva.xml = arquivo + self.defMental.xml = arquivo + self.defIntelectual.xml = arquivo + self.reabReadp.xml = arquivo + self.infoCota.xml = arquivo + self.observacao.xml = arquivo + + xml = property(get_xml, set_xml) + + +class TrabEstrangeiro(XMLNFe): + def __init__(self): + super(TrabEstrangeiro, self).__init__() + self.dtChegada = TagData( nome='dtChegada' , raiz='//trabEstrangeiro', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.classTrabEstrang = TagCaracter(nome='classTrabEstrang', tamanho=[1, 2], raiz='//trabEstrangeiro', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.casadoBr = TagCaracter(nome='casadoBr' , tamanho=[1, 1], raiz='//trabEstrangeiro', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.filhosBr = TagCaracter(nome='filhosBr' , tamanho=[1, 1], raiz='//trabEstrangeiro', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.dtChegada.xml + xml += self.classTrabEstrang.xml + xml += self.casadoBr.xml + xml += self.filhosBr.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.dtChegada.xml = arquivo + self.classTrabEstrang.xml = arquivo + self.casadoBr.xml = arquivo + self.filhosBr.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Exterior(XMLNFe): + def __init__(self): + super(Exterior, self).__init__() + self.paisResid = TagCaracter(nome='paisResid' , tamanho=[1, 3], raiz='//Exterior', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dscLograd = TagCaracter(nome='dscLograd' , tamanho=[1, 80], raiz='//Exterior', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrLograd = TagCaracter(nome='nrLograd' , tamanho=[1, 10], raiz='//Exterior', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.complemento = TagCaracter(nome='complemento' , tamanho=[1, 30], raiz='//Exterior', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.bairro = TagCaracter(nome='bairro' , tamanho=[1, 60], raiz='//Exterior', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.nmCid = TagCaracter(nome='nmCid' , tamanho=[1, 50], raiz='//Exterior', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codPostal = TagCaracter(nome='codPostal' , tamanho=[1, 12], raiz='//Exterior', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.paisResid.xml + xml += self.dscLograd.xml + xml += self.nrLograd.xml + xml += self.complemento.xml + xml += self.bairro.xml + xml += self.nmCid.xml + xml += self.codPostal.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.paisResid.xml = arquivo + self.dscLograd.xml = arquivo + self.nrLograd.xml = arquivo + self.complemento.xml = arquivo + self.bairro.xml = arquivo + self.nmCid.xml = arquivo + self.codPostal.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Brasil(XMLNFe): + def __init__(self): + super(Brasil, self).__init__() + self.tpLograd = TagCaracter(nome='tpLograd' , tamanho=[1, 4], raiz='//Brasil', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dscLograd = TagCaracter(nome='dscLograd' , tamanho=[1, 80], raiz='//Brasil', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrLograd = TagCaracter(nome='nrLograd' , tamanho=[1, 10], raiz='//Brasil', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.complemento = TagCaracter(nome='complemento' , tamanho=[1, 30], raiz='//Brasil', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.bairro = TagCaracter(nome='bairro' , tamanho=[1, 60], raiz='//Brasil', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.cep = TagCaracter(nome='cep' , tamanho=[1, 8], raiz='//Brasil', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codMunic = TagCaracter(nome='codMunic' , tamanho=[1, 7], raiz='//Brasil', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.uf = TagCaracter(nome='uf' , tamanho=[1, 2], raiz='//Brasil', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpLograd.xml + xml += self.dscLograd.xml + xml += self.nrLograd.xml + xml += self.complemento.xml + xml += self.bairro.xml + xml += self.cep.xml + xml += self.codMunic.xml + xml += self.uf.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpLograd.xml = arquivo + self.dscLograd.xml = arquivo + self.nrLograd.xml = arquivo + self.complemento.xml = arquivo + self.bairro.xml = arquivo + self.cep.xml = arquivo + self.codMunic.xml = arquivo + self.uf.xml = arquivo + + xml = property(get_xml, set_xml) + + +class CNH(XMLNFe): + def __init__(self): + super(CNH, self).__init__() + self.nrRegCnh = TagCaracter(nome='nrRegCnh' , tamanho=[1, 12], raiz='//CNH', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtExped = TagData( nome='dtExped' , raiz='//CNH', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.ufCnh = TagCaracter(nome='ufCnh' , tamanho=[1, 2], raiz='//CNH', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtValid = TagData( nome='dtValid' , raiz='//CNH', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtPriHab = TagData( nome='dtPriHab' , raiz='//CNH', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.categoriaCnh = TagCaracter(nome='categoriaCnh', tamanho=[1, 2], raiz='//CNH', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nrRegCnh.xml + xml += self.dtExped.xml + xml += self.ufCnh.xml + xml += self.dtValid.xml + xml += self.dtPriHab.xml + xml += self.categoriaCnh.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nrRegCnh.xml = arquivo + self.dtExped.xml = arquivo + self.ufCnh.xml = arquivo + self.dtValid.xml = arquivo + self.dtPriHab.xml = arquivo + self.categoriaCnh.xml = arquivo + + xml = property(get_xml, set_xml) + + +class OC(XMLNFe): + def __init__(self): + super(OC, self).__init__() + self.nrOc = TagCaracter(nome='nrOc' , tamanho=[1, 14], raiz='//OC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.orgaoEmissor = TagCaracter(nome='orgaoEmissor', tamanho=[1, 20], raiz='//OC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtExped = TagData( nome='dtExped' , raiz='//OC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.dtValid = TagData( nome='dtValid' , raiz='//OC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nrOc.xml + xml += self.orgaoEmissor.xml + xml += self.dtExped.xml + xml += self.dtValid.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nrOc.xml = arquivo + self.orgaoEmissor.xml = arquivo + self.dtExped.xml = arquivo + self.dtValid.xml = arquivo + + xml = property(get_xml, set_xml) + + +class RNE(XMLNFe): + def __init__(self): + super(RNE, self).__init__() + self.nrRne = TagCaracter(nome='nrRne' , tamanho=[1, 14], raiz='//RNE', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.orgaoEmissor = TagCaracter(nome='orgaoEmissor', tamanho=[1, 20], raiz='//RNE', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtExped = TagData( nome='dtExped' , raiz='//RNE', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nrRne.xml + xml += self.orgaoEmissor.xml + xml += self.dtExped.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nrRne.xml = arquivo + self.orgaoEmissor.xml = arquivo + self.dtExped.xml = arquivo + + xml = property(get_xml, set_xml) + + +class RG(XMLNFe): + def __init__(self): + super(RG, self).__init__() + self.nrRg = TagCaracter(nome='nrRg' , tamanho=[1, 14], raiz='//RG', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.orgaoEmissor = TagCaracter(nome='orgaoEmissor', tamanho=[1, 20], raiz='//RG', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtExped = TagData( nome='dtExped' , raiz='//RG', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nrRg.xml + xml += self.orgaoEmissor.xml + xml += self.dtExped.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nrRg.xml = arquivo + self.orgaoEmissor.xml = arquivo + self.dtExped.xml = arquivo + + xml = property(get_xml, set_xml) + + +class RIC(XMLNFe): + def __init__(self): + super(RIC, self).__init__() + self.nrRic = TagCaracter(nome='nrRic' , tamanho=[1, 14], raiz='//RIC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.orgaoEmissor = TagCaracter(nome='orgaoEmissor', tamanho=[1, 20], raiz='//RIC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtExped = TagData( nome='dtExped' , raiz='//RIC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nrRic.xml + xml += self.orgaoEmissor.xml + xml += self.dtExped.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nrRic.xml = arquivo + self.orgaoEmissor.xml = arquivo + self.dtExped.xml = arquivo + + xml = property(get_xml, set_xml) + + +class CTPS(XMLNFe): + def __init__(self): + super(CTPS, self).__init__() + self.nrCtps = TagCaracter(nome='nrCtps' , tamanho=[1, 11], raiz='//CTPS', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.serieCtps = TagCaracter(nome='serieCtps', tamanho=[1, 5], raiz='//CTPS', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ufCtps = TagCaracter(nome='ufCtps' , tamanho=[1, 2], raiz='//CTPS', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nrCtps.xml + xml += self.serieCtps.xml + xml += self.ufCtps.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nrCtps.xml = arquivo + self.serieCtps.xml = arquivo + self.ufCtps.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Endereco(XMLNFe): + def __init__(self): + super(Endereco, self).__init__() + self.brasil = Brasil() + self.exterior = Exterior() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.brasil.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.brasil = self.le_grupo('//eSocial/evtAltContratual/trabalhador/endereco/brasil', CTPS, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.exterior = self.le_grupo('//eSocial/evtAltContratual/trabalhador/endereco/exterior', CTPS, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class Documentos(XMLNFe): + def __init__(self): + super(Documentos, self).__init__() + self.CTPS = [] + self.RIC = [] + self.RG = [] + self.RNE = [] + self.OC = [] + self.CNH = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + if len(self.CTPS) > 0: + for c in self.CTPS: + xml += c.xml + if len(self.RIC) > 0: + for r in self.RIC: + xml += r.xml + if len(self.RG) > 0: + for r in self.RG: + xml += r.xml + if len(self.RNE) > 0: + for r in self.RNE: + xml += r.xml + if len(self.OC) > 0: + for o in self.OC: + xml += o.xml + if len(self.CNH) > 0: + for c in self.CNH: + xml += c.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.CTPS = self.le_grupo('//eSocial/evtAltContratual/trabalhador/documentos/CTPS', CTPS, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.RIC = self.le_grupo('//eSocial/evtAltContratual/trabalhador/documentos/RIC' , RIC , namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.RG = self.le_grupo('//eSocial/evtAltContratual/trabalhador/documentos/RG' , RG , namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.RNE = self.le_grupo('//eSocial/evtAltContratual/trabalhador/documentos/RNE' , RNE , namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.OC = self.le_grupo('//eSocial/evtAltContratual/trabalhador/documentos/OC' , OC , namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.CNH = self.le_grupo('//eSocial/evtAltContratual/trabalhador/documentos/CNH' , CNH , namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class Nascimento(XMLNFe): + def __init__(self): + super(Nascimento, self).__init__() + self.dtNascto = TagData( nome='dtNascto' , raiz='//eSocial/evtAltContratual/trabalhador/nascimento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codMunic = TagCaracter(nome='codMunic' , tamanho=[1, 7] , raiz='//eSocial/evtAltContratual/trabalhador/nascimento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.uf = TagCaracter(nome='uf' , tamanho=[1, 2] , raiz='//eSocial/evtAltContratual/trabalhador/nascimento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.paisNascto = TagCaracter(nome='paisNascto', tamanho=[1, 3] , raiz='//eSocial/evtAltContratual/trabalhador/nascimento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.paisNac = TagCaracter(nome='paisNac' , tamanho=[1, 3] , raiz='//eSocial/evtAltContratual/trabalhador/nascimento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nmMae = TagCaracter(nome='nmMae' , tamanho=[1, 70], raiz='//eSocial/evtAltContratual/trabalhador/nascimento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.nmPai = TagCaracter(nome='nmPai' , tamanho=[1, 70], raiz='//eSocial/evtAltContratual/trabalhador/nascimento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.dtNascto.xml + xml += self.codMunic.xml + xml += self.uf.xml + xml += self.paisNascto.xml + xml += self.paisNac.xml + xml += self.nmMae.xml + xml += self.nmPai.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.dtNascto.xml = arquivo + self.codMunic.xml = arquivo + self.uf.xml = arquivo + self.paisNascto.xml = arquivo + self.paisNac.xml = arquivo + self.nmMae.xml = arquivo + self.nmPai.xml = arquivo + + xml = property(get_xml, set_xml) + + +class DadosTrabalhador(XMLNFe): + def __init__(self): + super(DadosTrabalhador, self).__init__() + self.nisTrab = TagCaracter(nome='nisTrab', tamanho=[1, 11], raiz='//eSocial/evtAltContratual/alteracao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nmTrab = TagCaracter(nome='nmTrab', tamanho=[1, 70], raiz='//eSocial/evtAltContratual/alteracao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.sexo = TagCaracter(nome='sexo', tamanho=[1, 1], raiz='//eSocial/evtAltContratual/alteracao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.racaCor = TagCaracter(nome='racaCor', tamanho=[1, 1], raiz='//eSocial/evtAltContratual/alteracao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.estCiv = TagCaracter(nome='estCiv', tamanho=[1, 1], raiz='//eSocial/evtAltContratual/alteracao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False,obrigatorio=False) + self.grauInstr = TagCaracter(nome='grauInstr', tamanho=[1, 2], raiz='//eSocial/evtAltContratual/alteracao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nmSoc = TagCaracter(nome='nmSoc', tamanho=[1, 70], raiz='//eSocial/evtAltContratual/alteracao/', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.nascimento = Nascimento() + self.documentos = Documentos() + self.endereco = Endereco() + self.trabEstrangeiro = [] + self.infoDeficiencia = [] + self.dependente = [] + self.aposentadoria = [] + self.contato = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nisTrab.xml + xml += self.nmTrab.xml + xml += self.sexo.xml + xml += self.racaCor.xml + xml += self.estCiv.xml + xml += self.grauInstr.xml + xml += self.nmSoc.xml + xml += self.nascimento.xml + xml += self.documentos.xml + xml += self.endereco.xml + if len(self.trabEstrangeiro) > 0: + for t in self.trabEstrangeiro: + xml += t.xml + if len(self.infoDeficiencia) > 0: + for i in self.infoDeficiencia: + xml += i.xml + if len(self.dependente) > 0: + for d in self.dependente: + xml += d.xml + if len(self.aposentadoria) > 0: + for a in self.aposentadoria: + xml += a.xml + if len(self.contato) > 0: + for c in self.contato: + xml += c.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nisTrab.xml = arquivo + self.nmTrab.xml = arquivo + self.sexo.xml = arquivo + self.racaCor.xml = arquivo + self.estCiv.xml = arquivo + self.grauInstr.xml = arquivo + self.nmSoc.xml = arquivo + self.nascimento.xml = arquivo + self.documentos.xml = arquivo + self.endereco.xml = arquivo + self.trabEstrangeiro = self.le_grupo( + '//eSocial/evtAltContratual/alteracao/trabEstrangeiro', + TrabEstrangeiro, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoDeficiencia = self.le_grupo( + '//eSocial/evtAltContratual/alteracao/infoDeficiencia', + InfoDeficiencia, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.dependente = self.le_grupo( + '//eSocial/evtAltContratual/alteracao/dependente', Dependente, + namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.aposentadoria = self.le_grupo( + '//eSocial/evtAltContratual/alteracao/aposentadoria', + Aposentadoria, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.contato = self.le_grupo( + '//eSocial/evtAltContratual/alteracao/contato', Contato, + namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class Alteracao(XMLNFe): + def __init__(self): + super(Alteracao, self).__init__() + self.dtAlteracao = TagData(nome='dtAlteracao', raiz='//eSocial/evtAltContratual/alteracao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dadosTrabalhador = DadosTrabalhador() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.dtAlteracao.xml + xml += self.dadosTrabalhador.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.dtAlteracao.xml = arquivo + self.dadosTrabalhador.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeTrabalhador(XMLNFe): + def __init__(self): + super(IdeTrabalhador, self).__init__() + self.cpfTrab = TagCaracter(nome='cpfTrab' , tamanho=[1, 11], raiz='//eSocial/evtAltContratual/ideTrabalhador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cpfTrab.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cpfTrab.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEmpregador(XMLNFe): + def __init__(self): + super(IdeEmpregador, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', raiz='//eSocial/evtAltContratual/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='1') + self.nrInsc = TagCaracter(nome='nrInsc', raiz='//eSocial/evtAltContratual/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEvento(XMLNFe): + def __init__(self): + super(IdeEvento, self).__init__() + self.indRetif = TagInteiro( nome='indRetif', raiz='//eSocial/evtAltCadastral/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=1) + self.nrRecibo = TagCaracter(nome='nrRecibo', raiz='//eSocial/evtAltCadastral/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.tpAmb = TagInteiro( nome='tpAmb' , raiz='//eSocial/evtAltCadastral/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=2) + self.procEmi = TagInteiro( nome='procEmi' , raiz='//eSocial/evtAltCadastral/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=1) + self.verProc = TagCaracter(nome='verProc' , raiz='//eSocial/evtAltCadastral/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.indRetif.xml + xml += self.nrRecibo.xml + xml += self.tpAmb.xml + xml += self.procEmi.xml + xml += self.verProc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.indRetif.xml = arquivo + self.nrRecibo.xml = arquivo + self.tpAmb.xml = arquivo + self.procEmi.xml = arquivo + self.verProc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class EvtAltCadastral(XMLNFe): + def __init__(self): + super(EvtAltCadastral, self).__init__() + self.Id = TagCaracter(nome='evtAltCadastral', propriedade='Id', raiz='//eSocial/evtAltCadastral', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideEvento = IdeEvento() + self.ideEmpregador = IdeEmpregador() + self.ideTrabalhador = IdeTrabalhador() + self.alteracao = Alteracao() + # self.vinculo = Vinculo() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += self.Id.xml + xml += self.ideEvento.xml + xml += self.ideEmpregador.xml + xml += self.ideTrabalhador.xml + xml += self.alteracao.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.Id.xml = arquivo + self.ideEvento.xml = arquivo + self.ideEmpregador.xml = arquivo + self.ideTrabalhador.xml = arquivo + self.alteracao.xml = arquivo + + xml = property(get_xml, set_xml) + + +class S2205(XMLNFe): + def __init__(self): + super(S2205, self).__init__() + self.evtAltCadastral = EvtAltCadastral() + self.caminho_esquema = os.path.join(DIRNAME, 'schema/', ESQUEMA_ATUAL + '/') + self.arquivo_esquema = 'evtAltCadastral.xsd' + self.id_evento = '' + self.tpInsc = '' + self.nrInsc = '' + # self.Signature = Signature() + self.evento = self.evtAltCadastral + self.xml_assinado = '' + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.evtAltCadastral.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.evtAltCadastral.xml = arquivo + + def gera_id_evento(self, data_hora, sequencia=False): + #A identificação única do evento (Id) é composta por 36 caracteres, conforme o que segue: IDTNNNNNNNNNNNNNNAAAAMMDDHHMMSSQQQQQ + #ID - Texto Fixo "ID"; + #T - Tipo de Inscrição do Empregador (1 - CNPJ; 2 - CPF); + #NNNNNNNNNNNNNN - Número do CNPJ ou CPF do empregador - Completar com + #zeros à direita. No caso de pessoas jurídicas, o CNPJ informado deve conter 8 ou 14 + #posições de acordo com o enquadramento do contribuinte para preenchimento do campo + #{ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se + #necessário. + #AAAAMMDD - Ano, mês e dia da geração do evento; + #HHMMSS - Hora, minuto e segundo da geração do evento; + #QQQQQ - Número sequencial da chave. Incrementar somente quando ocorrer geração de + #eventos na mesma data/hora, completando com zeros à esquerda. + #OBS.: No caso de pessoas jurídicas, o CNPJ informado deverá conter 8 ou 14 posições de + #acordo com o enquadramento do contribuinte para preenchimento do campo {ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se necessário. + + if not sequencia: + sequencia=1 + + id_evento = 'ID' + id_evento += self.tpInsc + id_evento += self.nrInsc[0:8] + '000000' + id_evento += data_hora + id_evento += str(sequencia).zfill(5) + + # Define o Id + # + self.evtAltCadastral.Id.valor = id_evento + self.id_evento = id_evento + + xml = property(get_xml, set_xml) diff --git a/pysped/esocial/leiaute/evtAltContratual_20402.py b/pysped/esocial/leiaute/evtAltContratual_20402.py new file mode 100644 index 00000000..120c89fe --- /dev/null +++ b/pysped/esocial/leiaute/evtAltContratual_20402.py @@ -0,0 +1,741 @@ +# -*- coding: utf-8 -*- +# +# PySPED - Python libraries to deal with Brazil's SPED Project +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Library General Public License as +# published by the Free Software Foundation, either version 2.1 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public License +# along with this program. If not, see . +# +# PySPED - Bibliotecas Python para o +# SPED - Sistema Público de Escrituração Digital +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# Este programa é um software livre: você pode redistribuir e/ou modificar +# este programa sob os termos da licença GNU Library General Public License, +# publicada pela Free Software Foundation, em sua versão 2.1 ou, de acordo +# com sua opção, qualquer versão posterior. +# +# Este programa é distribuido na esperança de que venha a ser útil, +# porém SEM QUAISQUER GARANTIAS, nem mesmo a garantia implícita de +# COMERCIABILIDADE ou ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Veja a +# GNU Library General Public License para mais detalhes. +# +# Você deve ter recebido uma cópia da GNU Library General Public License +# juntamente com este programa. Caso esse não seja o caso, acesse: +# +# + +from __future__ import (division, print_function, unicode_literals, + absolute_import) + +from builtins import str +import os +from pysped.xml_sped import * +from pysped.esocial.leiaute import ESQUEMA_ATUAL_VERSAO_2 as ESQUEMA_ATUAL + +DIRNAME = os.path.dirname(__file__) + +NAMESPACE_ESOCIAL = 'http://www.esocial.gov.br/schema/evt/evtAltContratual/v02_04_02' + + +class ServPubl(XMLNFe): + def __init__(self): + super(ServPubl, self).__init__() + self.mtvAlter = TagInteiro(nome='mtvAlter', raiz='//servPubl', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.mtvAlter.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.mtvAlter.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Observacoes(XMLNFe): + def __init__(self): + super(Observacoes, self).__init__() + self.observacao = TagCaracter(nome='observacao', tamanho=[1, 255], raiz='//observacoes', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.observacao.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.observacao.xml = arquivo + + xml = property(get_xml, set_xml) + + +class AlvaraJudicial(XMLNFe): + def __init__(self): + super(AlvaraJudicial, self).__init__() + self.nrProcJud = TagCaracter(nome='nrProcJud', tamanho=[1, 20], raiz='//alvaraJudicial', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nrProcJud.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nrProcJud.xml = arquivo + + xml = property(get_xml, set_xml) + + +class FiliacaoSindical(XMLNFe): + def __init__(self): + super(FiliacaoSindical, self).__init__() + self.cnpjSindTrab = TagCaracter(nome='cnpjSindTrab', tamanho=[1, 14], raiz='//filiacaoSindical', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cnpjSindTrab.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cnpjSindTrab.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Horario(XMLNFe): + def __init__(self): + super(Horario, self).__init__() + self.dia = TagInteiro(nome='dia', raiz='//horario', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codHorContrat = TagCaracter(nome='codHorContrat', tamanho=[1, 30], raiz='//horario', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.dia.xml + xml += self.codHorContrat.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.dia.xml = arquivo + self.codHorContrat.xml = arquivo + + xml = property(get_xml, set_xml) + + +class HorContratual(XMLNFe): + def __init__(self): + super(HorContratual, self).__init__() + self.qtdHrsSem = TagInteiro(nome='qtdHrsSem', raiz='//horContratual', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.tpJornada = TagInteiro(nome='tpJornada', raiz='//horContratual', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dscTpJorn = TagCaracter(nome='dscTpJorn', tamanh=[1, 100], raiz='//horContratual', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.tmpParc = TagCaracter(nome='tmpParc', tamanho=[1, 1], raiz='//horContratual', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.horario = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.qtdHrsSem.xml + xml += self.tpJornada.xml + xml += self.dscTpJorn.xml + xml += self.tmpParc.xml + for horario in self.horario: + xml += horario.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.qtdHrsSem.xml = arquivo + self.tpJornada.xml = arquivo + self.dscTpJorn.xml = arquivo + self.tmpParc.xml = arquivo + self.horario = self.le_grupo('//eSocial/evtAltContratual/altContratual/infoContrato/horContratual/horario', Horario, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class LocalTrabDom(XMLNFe): + def __init__(self): + super(LocalTrabDom, self).__init__() + self.tpLograd = TagCaracter(nome='tpLograd', tamanho=[1, 4], raiz='//localTrabDom', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dscLograd = TagCaracter(nome='dscLograd', tamanho=[1, 80], raiz='//localTrabDom', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrLograd = TagCaracter(nome='nrLograd', tamanho=[1, 10], raiz='//localTrabDom', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.complemento = TagCaracter(nome='complemento', tamanho=[1, 30], raiz='//localTrabDom', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.bairro = TagCaracter(nome='bairro', tamanho=[1, 60], raiz='//localTrabDom', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.cep = TagCaracter(nome='cep', tamanho=[1, 60], raiz='//localTrabDom', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codMunic = TagInteiro(nome='codMunic', raiz='//localTrabDom', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.uf = TagCaracter(nome='uf', tamanho=[1, 2], raiz='//localTrabDom', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpLograd.xml + xml += self.dscLograd.xml + xml += self.nrLograd.xml + xml += self.complemento.xml + xml += self.bairro.xml + xml += self.cep.xml + xml += self.codMunic.xml + xml += self.uf.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpLograd.xml = arquivo + self.dscLograd.xml = arquivo + self.nrLograd.xml = arquivo + self.complemento.xml = arquivo + self.bairro.xml = arquivo + self.cep.xml = arquivo + self.codMunic.xml = arquivo + self.uf.xml = arquivo + + xml = property(get_xml, set_xml) + + +class LocalTrabGeral(XMLNFe): + def __init__(self): + super(LocalTrabGeral, self).__init__() + self.tpInsc = TagInteiro(nome='tpInsc', raiz='//localTrabGeral', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrInsc = TagCaracter(nome='nrInsc', tamanho=[1, 15], raiz='//localTrabGeral', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.descComp = TagCaracter(nome='descComp', tamanho=[1, 80], raiz='//localTrabGeral', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += self.descComp.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + self.descComp.xml = arquivo + + xml = property(get_xml, set_xml) + + +class LocalTrabalho(XMLNFe): + def __init__(self): + super(LocalTrabalho, self).__init__() + self.localTrabGeral = [] + self.localTrabDom = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + for geral in self.localTrabGeral: + xml += geral.xml + for domestico in self.localTrabDom: + xml += domestico.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.localTrabGeral = self.le_grupo('//eSocial/evtAltContratual/altContratual/infoContrato/localTrabalho/localTrabGeral', LocalTrabGeral, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.localTrabDom = self.le_grupo('//eSocial/evtAltContratual/altContratual/infoContrato/localTrabalho/localTrabDom', LocalTrabDom, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class Duracao(XMLNFe): + def __init__(self): + super(Duracao, self).__init__() + self.tpContr = TagInteiro(nome='tpContr', raiz='//duracao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtTerm = TagData(nome='dtTerm', raiz='//duracao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpContr.xml + xml += self.dtTerm.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(self, arquivo): + self.tpContr.xml = arquivo + self.dtTerm.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Remuneracao(XMLNFe): + def __init__(self): + super(Remuneracao, self).__init__() + self.vrSalFx = TagDecimal(nome='vrSalFx', tamanho=[1, 14, 2], raiz='//remuneracao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.undSalFixo = TagInteiro(nome='undSalFixo', raiz='//remuneracao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.descSalVar = TagCaracter(nome='descSalVar', tamanho=[1, 255], raiz='//remuneracao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.vrSalFx.xml + xml += self.undSalFixo.xml + xml += self.descSalVar.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.vrSalFx.xml = arquivo + self.undSalFixo.xml = arquivo + self.descSalVar.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoContrato(XMLNFe): + def __init__(self): + super(InfoContrato, self).__init__() + self.codCargo = TagCaracter(nome='codCargo', tamanho=[1, 30], raiz='//infoContrato', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.codFuncao = TagCaracter(nome='codFuncao', tamanho=[1, 30], raiz='//infoContrato', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.codCateg = TagInteiro(nome='codCateg', raiz='//infoContrato', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codCarreira = TagCaracter(nome='codCarreira', tamanho=[1, 30], raiz='//infoContrato', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.dtIngrCarr = TagData(nome='dtIngrCarr', raiz='//infoContrato', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.remuneracao = Remuneracao() + self.duracao = Duracao() + self.localTrabalho = LocalTrabalho() + self.horContratual = [] + self.filiacaoSindical = [] + self.alvaraJudicial = [] + self.observacoes = [] + self.servPubl = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.codCargo.xml + xml += self.codFuncao.xml + xml += self.codCateg.xml + xml += self.codCarreira.xml + xml += self.dtIngrCarr.xml + xml += self.remuneracao.xml + xml += self.duracao.xml + xml += self.localTrabalho.xml + for horario in self.horContratual: + xml += horario.xml + for filiacao in self.filiacaoSindical: + xml += filiacao.xml + for alvara in self.alvaraJudicial: + xml += alvara.xml + for observacao in self.observacoes: + xml += observacao.xml + for serv in self.servPubl: + xml += serv.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codCargo.xml = arquivo + self.codFuncao.xml = arquivo + self.codCateg.xml = arquivo + self.codCarreira.xml = arquivo + self.dtIngrCarr.xml = arquivo + self.remuneracao.xml = arquivo + self.duracao.xml = arquivo + self.localTrabalho.xml = arquivo + self.horContratual.xml = self.le_grupo('//eSocial/evtAltContratual/altContratual/infoContrato/horContratual', HorContratual, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.filiacaoSindical.xml = self.le_grupo('//eSocial/evtAltContratual/altContratual/infoContrato/filiacaoSindical', FiliacaoSindical, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.alvaraJudicial.xml = self.le_grupo('//eSocial/evtAltContratual/altContratual/infoContrato/alvaraJudicial', AlvaraJudicial, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.observacoes.xml = self.le_grupo('//eSocial/evtAltContratual/altContratual/infoContrato/observacoes', Observacoes, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.servPubl.xml = self.le_grupo('//eSocial/evtAltContratual/altContratual/infoContrato/servPubl', ServPubl, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class InfoEstatutario(XMLNFe): + def __init__(self): + super(InfoEstatutario, self).__init__() + self.tpPlanRP = TagInteiro(nome='tpPlanRP', raiz='//tpPlanRP', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpPlanRP.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpPlanRP.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Aprend(XMLNFe): + def __init__(self): + super(Aprend, self).__init__() + self.tpInsc = TagInteiro(nome='tpInsc', raiz='//aprend', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrInsc = TagCaracter(nome='nrInsc', tamanho=[1, 15], raiz='//aprend', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class TrabTemp(XMLNFe): + def __init__(self): + super(TrabTemp, self).__init__() + self.justProrr = TagCaracter(nome='justProrr', tamanho=[1, 999], raiz='//trabTemp', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.justProrr.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.justProrr.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoCeletista(XMLNFe): + def __init__(self): + super(InfoCeletista, self).__init__() + self.tpRegJor = TagInteiro(nome='tpRegJor', raiz='//infoCeletista', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.natAtividade = TagInteiro(nome='natAtividade', raiz='//infoCeletista', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtBase = TagInteiro(nome='dtBase', raiz='//infoCeletista', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.cnpjSindCategProf = TagCaracter(nome='cnpjSindCategProf', tamanho=[1, 14], raiz='//infoCeletista', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.trabTemp = [] + self.aprend = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpRegJor.xml + xml += self.natAtividade.xml + xml += self.dtBase.xml + xml += self.cnpjSindCategProf.xml + for temporario in self.trabTemp: + xml += temporario.xml + for aprendiz in self.aprend: + xml += aprendiz.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpRegJor.xml = arquivo + self.natAtividade.xml = arquivo + self.dtBase.xml = arquivo + self.cnpjSindCategProf.xml = arquivo + self.trabTemp = self.le_grupo('//eSocial/evtAltContratual/altContratual/vinculo/infoCeletista/trabTemp', TrabTemp, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.aprend = self.le_grupo('//eSocial/evtAltContratual/altContratual/vinculo/infoCeletista/aprend', Aprend, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class InfoRegimeTrab(XMLNFe): + def __init__(self): + super(InfoRegimeTrab, self).__init__() + self.infoCeletista = [] + self.infoEstatutario = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + for infoCele in self.infoCeletista: + xml += infoCele.xml + for infoEsta in self.infoEstatutario: + xml += infoEsta.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.infoCeletista = self.le_grupo('//eSocial/evtAltContratual/altContratual/vinculo/infoCeletista', InfoCeletista, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoEstatutario = self.le_grupo('//eSocial/evtAltContratual/altContratual/vinculo/infoEstatutario', InfoEstatutario, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class Vinculo(XMLNFe): + def __init__(self): + super(Vinculo, self).__init__() + self.tpRegPrev = TagInteiro(nome='tpRegPrev', raiz='//vinculo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpRegPrev.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpRegPrev.xml = arquivo + + xml = property(get_xml, set_xml) + + +class AltContratual(XMLNFe): + def __init__(self): + super(AltContratual, self).__init__() + self.dtAlteracao = TagData(nome='dtAlteracao', raiz='//eSocial/evtAltContratual/altContratual', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtEf = TagData(nome='dtEf', raiz='//eSocial/evtAltContratual/altContratual', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.dscAlt = TagCaracter(nome='dscAlt', tamanho=[1, 150], raiz='//eSocial/evtAltContratual/altContratual', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.vinculo = [] + self.infoRegimeTrab = [] + self.infoContrato = InfoContrato() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.dtAlteracao.xml + xml += self.dtEf.xml + xml += self.dscAlt.xml + for vinculo in self.vinculo: + xml += vinculo.xml + for infoReg in self.infoRegimeTrab: + xml += infoReg.xml + xml += self.infoContrato.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.dtAlteracao.xml = arquivo + self.dtEf.xml = arquivo + self.dscAlt.xml = arquivo + self.vinculo = self.le_grupo('//eSocial/evtAltContratual/altContratual/vinculo', Vinculo, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoRegimeTrab = self.le_grupo('//eSocial/evtAltContratual/altContratual/infoRegimeTrab', InfoRegimeTrab, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoContrato = arquivo + + xml = property(get_xml, set_xml) + + +class IdeVinculo(XMLNFe): + def __init__(self): + super(IdeVinculo, self).__init__() + self.cpfTrab = TagCaracter(nome='cpfTrab', tamanho=[1, 11], raiz='//eSocial/evtAltContratual/ideVinculo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nisTrab = TagCaracter(nome='nisTrab', tamanho=[1, 11], raiz='//eSocial/evtAltContratual/ideVinculo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.matricula = TagCaracter(nome='matricula', tamanho=[1, 30], raiz='//eSocial/evtAltContratual/ideVinculo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cpfTrab.xml + xml += self.nisTrab.xml + xml += self.matricula.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cpfTrab.xml = arquivo + self.nisTrab.xml = arquivo + self.matricula.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEmpregador(XMLNFe): + def __init__(self): + super(IdeEmpregador, self).__init__() + self.tpInsc = TagInteiro(nome='tpInsc', raiz='//eSocial/evtAltContratual/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrInsc = TagCaracter(nome='nrInsc', tamanho=[1, 15], raiz='//eSocial/evtAltContratual/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEvento(XMLNFe): + def __init__(self): + super(IdeEvento, self).__init__() + self.indRetif = TagInteiro(nome='indRetif', raiz='//eSocial/evtAltContratual/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrRecibo = TagCaracter(nome='nrRecibo', tamanho=[1, 40], raiz='//eSocial/evtAltContratual/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.tpAmb = TagInteiro(nome='tpAmb', raiz='//eSocial/evtAltContratual/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.procEmi = TagInteiro(nome='procEmi', raiz='//eSocial/evtAltContratual/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.verProc = TagCaracter(nome='verProc', raiz='//eSocial/evtAltContratual/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.indRetif.xml + xml += self.nrRecibo.xml + xml += self.tpAmb.xml + xml += self.procEmi.xml + xml += self.verProc.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.indRetif.xml = arquivo + self.nrRecibo.xml = arquivo + self.tpAmb.xml = arquivo + self.procEmi.xml = arquivo + self.verProc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class EvtAltContratual(XMLNFe): + def __init__(self): + super(EvtAltContratual, self).__init__() + self.Id = TagCaracter(nome='evtAltContratual', propriedade='Id', raiz='//eSocial/evtAltContratual', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideEvento = IdeEvento() + self.ideEmpregador = IdeEmpregador() + self.ideVinculo = IdeVinculo() + self.altContratual = AltContratual() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += self.Id.xml + xml += self.ideEvento.xml + xml += self.ideEmpregador.xml + xml += self.ideVinculo.xml + xml += self.altContratual.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_arquivo(arquivo): + self.Id.xml = arquivo + self.ideEvento.xml = self.le_grupo('//eSocial/evtAltContratual/ideEvento', IdeEvento, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.ideEmpregador.xml = self.le_grupo('//eSocial/evtAltContratual/ideEmpregador', IdeEmpregador, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.ideVinculo.xml = self.le_grupo('//eSocial/evtAltContratual/ideVinculo', IdeVinculo, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.altContratual = self.le_grupo('//eSocial/evtAltContratual/altContratual', AltContratual, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class S2206(XMLNFe): + def __init__(self): + super(S2206, self).__init__() + self.evtAltCadastral = EvtAltContratual() + self.caminho_esquema = os.path.join(DIRNAME, 'schema/', ESQUEMA_ATUAL + '/') + self.arquivo_esquema = 'evtAltContratual.xsd' + self.id_evento = '' + self.tpInsc = '' + self.nrInsc = '' + # self.Signature = Signature() + self.evento = self.evtAltCadastral + self.xml_assinado = '' + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.evtAltCadastral.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.evtAltCadastral.xml = arquivo + + def gera_id_evento(self, data_hora, sequencia=False): + #A identificação única do evento (Id) é composta por 36 caracteres, conforme o que segue: IDTNNNNNNNNNNNNNNAAAAMMDDHHMMSSQQQQQ + #ID - Texto Fixo "ID"; + #T - Tipo de Inscrição do Empregador (1 - CNPJ; 2 - CPF); + #NNNNNNNNNNNNNN - Número do CNPJ ou CPF do empregador - Completar com + #zeros à direita. No caso de pessoas jurídicas, o CNPJ informado deve conter 8 ou 14 + #posições de acordo com o enquadramento do contribuinte para preenchimento do campo + #{ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se + #necessário. + #AAAAMMDD - Ano, mês e dia da geração do evento; + #HHMMSS - Hora, minuto e segundo da geração do evento; + #QQQQQ - Número sequencial da chave. Incrementar somente quando ocorrer geração de + #eventos na mesma data/hora, completando com zeros à esquerda. + #OBS.: No caso de pessoas jurídicas, o CNPJ informado deverá conter 8 ou 14 posições de + #acordo com o enquadramento do contribuinte para preenchimento do campo {ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se necessário. + + if not sequencia: + sequencia=1 + + id_evento = 'ID' + id_evento += self.tpInsc + id_evento += self.nrInsc[0:8] + '000000' + id_evento += data_hora + id_evento += str(sequencia).zfill(5) + + # Define o Id + # + self.evtAltCadastral.Id.valor = id_evento + self.id_evento = id_evento + + xml = property(get_xml, set_xml) diff --git a/pysped/esocial/leiaute/evtBasesTrab_20402.py b/pysped/esocial/leiaute/evtBasesTrab_20402.py new file mode 100644 index 00000000..6f7eb9ac --- /dev/null +++ b/pysped/esocial/leiaute/evtBasesTrab_20402.py @@ -0,0 +1,410 @@ +# -*- coding: utf-8 -*- +# -*- coding: utf-8 -*- +# +# PySPED - Python libraries to deal with Brazil's SPED Project +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Library General Public License as +# published by the Free Software Foundation, either version 2.1 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public License +# along with this program. If not, see . +# +# PySPED - Bibliotecas Python para o +# SPED - Sistema Público de Escrituração Digital +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# Este programa é um software livre: você pode redistribuir e/ou modificar +# este programa sob os termos da licença GNU Library General Public License, +# publicada pela Free Software Foundation, em sua versão 2.1 ou, de acordo +# com sua opção, qualquer versão posterior. +# +# Este programa é distribuido na esperança de que venha a ser útil, +# porém SEM QUAISQUER GARANTIAS, nem mesmo a garantia implícita de +# COMERCIABILIDADE ou ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Veja a +# GNU Library General Public License para mais detalhes. +# +# Você deve ter recebido uma cópia da GNU Library General Public License +# juntamente com este programa. Caso esse não seja o caso, acesse: +# +# + +from __future__ import (division, print_function, unicode_literals, + absolute_import) + +from builtins import str +import os +from pysped.xml_sped import * +from pysped.esocial.leiaute import ESQUEMA_ATUAL_VERSAO_2 as ESQUEMA_ATUAL + +DIRNAME = os.path.dirname(__file__) + +NAMESPACE_ESOCIAL = 'http://www.esocial.gov.br/schema/evt/evtBasesTrab/v02_04_02' + + +class CalcTerc(XMLNFe): + def __init__(self): + super(CalcTerc, self).__init__() + self.tpCR = TagCaracter(nome='tpCR', tamanho=[1, 6], raiz='//calcTerc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrCsSegTerc = TagCaracter(nome='vrCsSegTerc', tamanho=[1, 14, 2], raiz='//calcTerc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrDescTerc = TagDecimal( nome='vrDescTerc', tamanho=[1, 14, 2], raiz='//calcTerc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpCR.xml + xml += self.vrCsSegTerc.xml + xml += self.vrDescTerc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpCR.xml = arquivo + self.vrCsSegTerc.xml = arquivo + self.vrDescTerc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoBaseCS(XMLNFe): + def __init__(self): + super(InfoBaseCS, self).__init__() + self.ind13 = TagCaracter(nome='ind13', tamanho=[1, 1], raiz='//infoBaseCS', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.tpValor = TagCaracter(nome='tpValor', tamanho=[1, 2], raiz='//infoBaseCS', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.valor = TagDecimal( nome='valor', tamanho=[1, 14, 2], raiz='//infoBaseCS', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.ind13.xml + xml += self.tpValor.xml + xml += self.valor.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.ind13.xml = arquivo + self.tpValor.xml = arquivo + self.valor.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoCategIncid(XMLNFe): + def __init__(self): + super(InfoCategIncid, self).__init__() + self.matricula = TagCaracter(nome='matricula', tamanho=[1, 30], raiz='//infoCategIncid', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.codCateg = TagCaracter(nome='codCateg', tamanho=[1, 3], raiz='//infoCategIncid', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.indSimples = TagCaracter(nome='indSimples', tamanho=[1, 1], raiz='//infoCategIncid', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.infoBaseCS = [] + self.calcTerc = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.matricula.xml + xml += self.codCateg.xml + xml += self.indSimples.xml + if len(self.infoBaseCS): + for i in self.infoBaseCS: + xml += i.xml + if len(self.calcTerc): + for c in self.calcTerc: + xml += c.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.matricula.xml = arquivo + self.codCateg.xml = arquivo + self.indSimples.xml = arquivo + self.infoBaseCS = self.le_grupo('//infoCategIncid/infoBaseCS', InfoBaseCS, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.calcTerc = self.le_grupo('//infoCategIncid/calcTerc', CalcTerc, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class IdeEstabLot(XMLNFe): + def __init__(self): + super(IdeEstabLot, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', tamanho=[1, 1], raiz='//ideEstabLot', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='1') + self.nrInsc = TagCaracter(nome='nrInsc', tamanho=[1, 15], raiz='//ideEstabLot', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codLotacao = TagCaracter(nome='codLotacao', tamanho=[1, 30], raiz='//ideEstabLot', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.infoCategIncid = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += self.codLotacao.xml + if len(self.infoCategIncid) > 0: + for i in self.infoCategIncid: + xml += i.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + self.codLotacao.xml = arquivo + self.infoCategIncid = self.le_grupo('//ideEstabLot/infoCategIncid', InfoCategIncid, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class InfoCp(XMLNFe): + def __init__(self): + super(InfoCp, self).__init__() + self.ideEstabLot = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + if len(self.ideEstabLot) > 0: + for p in self.ideEstabLot: + xml += p.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.ideEstabLot = self.le_grupo('//eSocial/evtBasesTrab/infoCp/ideEstabLot', IdeEstabLot, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class InfoCpCalc(XMLNFe): + def __init__(self): + super(InfoCpCalc, self).__init__() + self.tpCR = TagCaracter(nome='tpCR', tamanho=[1, 6], raiz='//infoCpCalc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrCpSeg = TagDecimal( nome='vrCpSeg', tamanho=[1, 14, 2], raiz='//infoCpCalc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrDescSeg = TagDecimal( nome='vrDescSeg', tamanho=[1, 14, 2], raiz='//infoCpCalc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpCR.xml + xml += self.vrCpSeg.xml + xml += self.vrDescSeg.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpCR.xml = arquivo + self.vrCpSeg.xml = arquivo + self.vrDescSeg.xml = arquivo + + xml = property(get_xml, set_xml) + + +class ProcJudTrab(XMLNFe): + def __init__(self): + super(ProcJudTrab, self).__init__() + self.nrProcJud = TagCaracter(nome='nrProdJuc', tamanho=[1, 20], raiz='//procJudTrab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codSusp = TagCaracter(nome='codSusp', tamanho=[1, 14], raiz='//procJudTrab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nrProcJud.xml + xml += self.codSusp.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nrProcJud.xml = arquivo + self.codSusp.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeTrabalhador(XMLNFe): + def __init__(self): + super(IdeTrabalhador, self).__init__() + self.cpfTrab = TagCaracter(nome='cpfTrab', tamanho=[1, 11], raiz='//eSocial/evtBasesTrab/ideTrabalhador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.procJudTrab = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cpfTrab.xml + if len(self.procJudTrab) > 0: + for p in self.procJudTrab: + xml += p.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cpfTrab.xml = arquivo + self.procJudTrab = self.le_grupo('//eSocial/evtBasesTrab/ideTrabalhador/procJudTrab', ProcJudTrab, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class IdeEmpregador(XMLNFe): + def __init__(self): + super(IdeEmpregador, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', tamanho=[1, 1], raiz='//eSocial/evtBasesTrab/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='1') + self.nrInsc = TagCaracter(nome='nrInsc', tamanho=[1, 15], raiz='//eSocial/evtBasesTrab/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEvento(XMLNFe): + def __init__(self): + super(IdeEvento, self).__init__() + self.nrRecArqBase = TagCaracter(nome='nrRecArqBase', tamanho=[1, 40], raiz='//eSocial/evtBasesTrab/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.indApuracao = TagCaracter(nome='indApuracao', tamanho=[1, 1], raiz='//eSocial/evtBasesTrab/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.perApur = TagCaracter(nome='perApur', tamanho=[1, 7], raiz='//eSocial/evtBasesTrab/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nrRecArqBase.xml + xml += self.indApuracao.xml + xml += self.perApur.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nrRecArqBase.xml = arquivo + self.indApuracao.xml = arquivo + self.perApur.xml = arquivo + + xml = property(get_xml, set_xml) + + +class EvtBasesTrab(XMLNFe): + def __init__(self): + super(EvtBasesTrab, self).__init__() + self.Id = TagCaracter(nome='evtBasesTrab', propriedade='Id', raiz='//eSocial', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideEvento = IdeEvento() + self.ideEmpregador = IdeEmpregador() + self.ideTrabalhador = IdeTrabalhador() + self.infoCpCalc = [] + self.infoCp = InfoCp() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += self.Id.xml + xml += self.ideEvento.xml + xml += self.ideEmpregador.xml + xml += self.ideTrabalhador.xml + if len(self.infoCpCalc): + for i in self.infoCpCalc: + xml += i.xml + xml += self.infoCp.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.Id.xml = arquivo + self.ideEvento.xml = arquivo + self.ideEmpregador.xml = arquivo + self.ideTrabalhador.xml = arquivo + self.infoCpCalc = self.le_grupo('//eSocial/evtBasesTrab/infoCpCalc', InfoCpCalc, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoCp.xml = arquivo + + xml = property(get_xml, set_xml) + + +class S5001(XMLNFe): + def __init__(self): + super(S5001, self).__init__() + self.evtBasesTrab = EvtBasesTrab() + self.caminho_esquema = os.path.join(DIRNAME, 'schema/', ESQUEMA_ATUAL + '/') + self.arquivo_esquema = 'evtBasesTrab.xsd' + self.id_evento = '' + self.tpInsc = '' + self.nrInsc = '' + self.Signature = Signature() + self.evento = self.evtBasesTrab + self.xml_assinado = '' + + def get_xml(self): + xml = XMLNFe.get_xml(self) + #xml += ABERTURA + xml += '' + xml += self.evtBasesTrab.xml + + # + # Define a URI a ser assinada + # + self.Signature.URI = '#' + self.evtBasesTrab.Id.valor + xml += self.Signature.xml + xml += '' + + # Define o método de assinatura + # self.Signature.metodo = 'sha256' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.evtBasesTrab.xml = arquivo + self.Signature.xml = self._le_noh('//eSocial/sig:Signature') + + def gera_id_evento(self, data_hora, sequencia=False): + #A identificação única do evento (Id) é composta por 36 caracteres, conforme o que segue: IDTNNNNNNNNNNNNNNAAAAMMDDHHMMSSQQQQQ + #ID - Texto Fixo "ID"; + #T - Tipo de Inscrição do Empregador (1 - CNPJ; 2 - CPF); + #NNNNNNNNNNNNNN - Número do CNPJ ou CPF do empregador - Completar com + #zeros à direita. No caso de pessoas jurídicas, o CNPJ informado deve conter 8 ou 14 + #posições de acordo com o enquadramento do contribuinte para preenchimento do campo + #{ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se + #necessário. + #AAAAMMDD - Ano, mês e dia da geração do evento; + #HHMMSS - Hora, minuto e segundo da geração do evento; + #QQQQQ - Número sequencial da chave. Incrementar somente quando ocorrer geração de + #eventos na mesma data/hora, completando com zeros à esquerda. + #OBS.: No caso de pessoas jurídicas, o CNPJ informado deverá conter 8 ou 14 posições de + #acordo com o enquadramento do contribuinte para preenchimento do campo {ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se necessário. + + if not sequencia: + sequencia=1 + + id_evento = 'ID' + id_evento += self.tpInsc + id_evento += self.nrInsc[0:8] + '000000' + id_evento += data_hora + id_evento += str(sequencia).zfill(5) + + # Define o Id + # + self.evtBasesTrab.Id.valor = id_evento + self.id_evento = id_evento + + xml = property(get_xml, set_xml) diff --git a/pysped/esocial/leiaute/evtBenPrRP_20402.py b/pysped/esocial/leiaute/evtBenPrRP_20402.py new file mode 100644 index 00000000..5158c8fe --- /dev/null +++ b/pysped/esocial/leiaute/evtBenPrRP_20402.py @@ -0,0 +1,523 @@ +# -*- coding: utf-8 -*- +# +# PySPED - Python libraries to deal with Brazil's SPED Project +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Library General Public License as +# published by the Free Software Foundation, either version 2.1 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public License +# along with this program. If not, see . +# +# PySPED - Bibliotecas Python para o +# SPED - Sistema Público de Escrituração Digital +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# Este programa é um software livre: você pode redistribuir e/ou modificar +# este programa sob os termos da licença GNU Library General Public License, +# publicada pela Free Software Foundation, em sua versão 2.1 ou, de acordo +# com sua opção, qualquer versão posterior. +# +# Este programa é distribuido na esperança de que venha a ser útil, +# porém SEM QUAISQUER GARANTIAS, nem mesmo a garantia implícita de +# COMERCIABILIDADE ou ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Veja a +# GNU Library General Public License para mais detalhes. +# +# Você deve ter recebido uma cópia da GNU Library General Public License +# juntamente com este programa. Caso esse não seja o caso, acesse: +# +# + +from __future__ import (division, print_function, unicode_literals, + absolute_import) + +from builtins import str +import os +from pysped.xml_sped import * +from pysped.esocial.leiaute import ESQUEMA_ATUAL_VERSAO_2 as ESQUEMA_ATUAL + +DIRNAME = os.path.dirname(__file__) + +NAMESPACE_ESOCIAL = 'http://www.esocial.gov.br/schema/evt/evtBenPrRP/v02_04_02' + + +class RemunPerAntItensRemun(XMLNFe): + def __init__(self): + super(RemunPerAntItensRemun, self).__init__() + self.codRubr = TagCaracter(nome='codRubr', tamanho=[1, 30], raiz='//itensRemun', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideTabRubr = TagCaracter(nome='ideTabRubr', tamanho=[1, 8], raiz='//itensRemun', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.qtdRubr = TagInteiro( nome='qtdRubr', tamanho=[1, 6], raiz='//itensRemun', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.fatorRubr = TagInteiro( nome='fatorRubr', tamanho=[1, 5, 2], raiz='//itensRemun', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.vrUnit = TagDecimal( nome='vrUnit', tamanho=[1, 14, 2], raiz='//itensRemun', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.vrRubr = TagDecimal( nome='vrRubr', tamanho=[1, 14, 2], raiz='//itensRemun', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.codRubr.xml + xml += self.ideTabRubr.xml + xml += self.qtdRubr.xml + xml += self.fatorRubr.xml + xml += self.vrUnit.xml + xml += self.vrRubr.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codRubr.xml = arquivo + self.ideTabRubr.xml = arquivo + self.qtdRubr.xml = arquivo + self.fatorRubr.xml = arquivo + self.vrUnit.xml = arquivo + self.vrRubr.xml = arquivo + + xml = property(get_xml, set_xml) + + +class RemunPerAnt(XMLNFe): + def __init__(self): + super(RemunPerAnt, self).__init__() + self.matricula = TagCaracter(nome='matricula', tamanho=[1, 30], raiz='//ideEstab/remunPerApur', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.codCateg = TagCaracter(nome='codCateg', tamanho=[1, 3], raiz='//ideEstab/remunPerApur', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.itensRemun = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.matricula.xml + xml += self.codCateg.xml + if len(self.itensRemun) > 0: + for r in self.itensRemun: + xml += r.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.matricula.xml = arquivo + self.codCateg.xml = arquivo + self.itensRemun = self.le_grupo('//eSocial/evtRmnRPPS/dmDev/infoPerAnt/ideADC/idePeriodo/ideEstab/remunPerAnt/itensRemun', RemunPerAntItensRemun, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class IdePeriodoIdeEstab(XMLNFe): + def __init__(self): + super(IdePeriodoIdeEstab, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', tamanho=[1, 1], raiz='//ideEstab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='1') + self.nrInsc = TagCaracter(nome='nrInsc', tamanho=[1, 15], raiz='//ideEstab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.remunPerAnt = RemunPerAnt() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += self.remunPerAnt.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + self.remunPerAnt.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdePeriodo(XMLNFe): + def __init__(self): + super(IdePeriodo, self).__init__() + self.perRef = TagCaracter(nome='perRef', tamanho=[1, 7], raiz='//idePeriodo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideEstab = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.perRef.xml + if len(self.ideEstab) > 0: + for e in self.ideEstab: + xml += e.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.perRef.xml = arquivo + self.ideEstab = self.le_grupo('//eSocial/evtRmnRPPS/dmDev/infoPerAnt/ideADC/idePeriodo/ideEstab', IdePeriodoIdeEstab, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class IdeADC(XMLNFe): + def __init__(self): + super(IdeADC, self).__init__() + self.dtLei = TagData( nome='dtLei', raiz='//ideADC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrLei = TagCaracter(nome='nrLei', tamanho=[1, 12], raiz='//ideADC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtEf = TagData( nome='dtEf', raiz='//ideADC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.idePeriodo = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.dtLei.xml + xml += self.nrLei.xml + xml += self.dtEf.xml + if len(self.idePeriodo) > 0: + for p in self.idePeriodo: + xml += p.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.idePeriodo = self.le_grupo('//eSocial/evtRmnRPPS/dmDev/infoPerAnt/ideADC/idePeriodo', IdePeriodo, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class InfoPerAnt(XMLNFe): + def __init__(self): + super(InfoPerAnt, self).__init__() + self.ideADC = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + if len(self.ideADC) > 0: + for i in self.ideADC: + xml += i.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.ideADC = self.le_grupo('//eSocial/evtRmnRPPS/dmDev/infoPerAnt/ideADC', IdeADC, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class DetPlano(XMLNFe): + def __init__(self): + super(DetPlano, self).__init__() + self.tpDep = TagCaracter(nome='tpDep', tamanho=[1, 1], raiz='//detPlano', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.cpfDep = TagCaracter(nome='cpfDep', tamanho=[1, 11], raiz='//detPlano', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.nmDep = TagCaracter(nome='nmDep', tamanho=[1, 70], raiz='//detPlano', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtNascto = TagData( nome='dtNascto', tamanho=[1, 70], raiz='//detPlano', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrPgDep = TagDecimal( nome='vrPgDep', tamanho=[1, 14, 2], raiz='//detPlano', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpDep.xml + xml += self.cpfDep.xml + xml += self.nmDep.xml + xml += self.dtNascto.xml + xml += self.vrPgDep.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpDep.xml = arquivo + self.cpfDep.xml = arquivo + self.nmDep.xml = arquivo + self.dtNascto.xml = arquivo + self.vrPgDep.xml = arquivo + + xml = property(get_xml, set_xml) + + +class DetOper(XMLNFe): + def __init__(self): + super(DetOper, self).__init__() + self.cnpjOper = TagCaracter(nome='cnpjOper', tamanho=[1, 14], raiz='//detOper', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.regANS = TagCaracter(nome='regANS', tamanho=[1, 6], raiz='//detOper', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrPgTit = TagDecimal( nome='vrPgTit', tamanho=[1, 14, 2], raiz='//detOper', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.detPlano = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cnpjOper.xml + xml += self.regANS.xml + xml += self.vrPgTit.xml + if len(self.detPlano) > 0: + for d in self.detPlano: + xml += d.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cnpjOper.xml = arquivo + self.regANS.xml = arquivo + self.vrPgTit.xml = arquivo + self.detPlano = self.le_grupo('//eSocial/evtRmnRPPS/dmDev/ideEstab/remunPerApur/infoSaudeColet/detOper/detPlano', DetPlano, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class InfoSaudeColet(XMLNFe): + def __init__(self): + super(InfoSaudeColet, self).__init__() + self.detOper = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + if len(self.detOper) > 0: + for d in self.detOper: + xml += d.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.detOper = self.le_grupo('//eSocial/evtRmnRPPS/dmDev/ideEstab/remunPerApur/infoSaudeColet/detOper', DetOper, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class Itens(XMLNFe): + def __init__(self): + super(Itens, self).__init__() + self.codRubr = TagCaracter(nome='codRubr', tamanho=[1, 30], raiz='//itens', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideTabRubr = TagCaracter(nome='ideTabRubr', tamanho=[1, 8], raiz='//itens', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrRubr = TagDecimal( nome='vrUnit', tamanho=[1, 14, 2], raiz='//itens', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.codRubr.xml + xml += self.ideTabRubr.xml + xml += self.vrRubr.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codRubr.xml = arquivo + self.ideTabRubr.xml = arquivo + self.vrRubr.xml = arquivo + + xml = property(get_xml, set_xml) + + +class DmDev(XMLNFe): + def __init__(self): + super(DmDev, self).__init__() + self.tpBenef = TagCaracter(nome='tpBenef', tamanho=[1, 2], raiz='//eSocial/evtBenPrRP/dmDev', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrBenef = TagCaracter(nome='nrBenef', tamanho=[1, 20], raiz='//eSocial/evtBenPrRP/dmDev', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideDmDev = TagCaracter(nome='ideDmDev', tamanho=[1, 30], raiz='//eSocial/evtBenPrRP/dmDev', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.itens = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpBenef.xml + xml += self.nrBenef.xml + xml += self.ideDmDev.xml + if len(self.itens) > 0: + for i in self.itens: + xml += i.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpBenef.xml = arquivo + self.nrBenef.xml = arquivo + self.ideDmDev.xml = arquivo + self.itens = self.le_grupo('//eSocial/evtBenPrRP/dmDev/itens', Itens, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class IdeBenef(XMLNFe): + def __init__(self): + super(IdeBenef, self).__init__() + self.cpfBenef = TagCaracter(nome='cpfBenef', tamanho=[1, 11], raiz='//eSocial/evtBenPrRP/ideBenef', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cpfBenef.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cpfBenef.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEmpregador(XMLNFe): + def __init__(self): + super(IdeEmpregador, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', tamanho=[1, 1], raiz='//eSocial/evtBenPrRP/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='1') + self.nrInsc = TagCaracter(nome='nrInsc', tamanho=[1, 15], raiz='//eSocial/evtBenPrRP/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEvento(XMLNFe): + def __init__(self): + super(IdeEvento, self).__init__() + self.indRetif = TagInteiro( nome='indRetif', tamanho=[1, 1], raiz='//eSocial/evtBenPrRP/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=1) + self.nrRecibo = TagCaracter(nome='nrRecibo', tamanho=[1, 40], raiz='//eSocial/evtBenPrRP/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.indApuracao = TagCaracter(nome='indApuracao', tamanho=[1, 1], raiz='//eSocial/evtBenPrRP/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.perApur = TagCaracter(nome='perApur', tamanho=[1, 7], raiz='//eSocial/evtBenPrRP/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.tpAmb = TagInteiro( nome='tpAmb', tamanho=[1, 1], raiz='//eSocial/evtBenPrRP/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=2) + self.procEmi = TagInteiro( nome='procEmi', tamanho=[1, 1], raiz='//eSocial/evtBenPrRP/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=1) + self.verProc = TagCaracter(nome='verProc', tamanho=[1, 20], raiz='//eSocial/evtBenPrRP/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.indRetif.xml + xml += self.nrRecibo.xml + xml += self.indApuracao.xml + xml += self.perApur.xml + xml += self.tpAmb.xml + xml += self.procEmi.xml + xml += self.verProc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.indRetif.xml = arquivo + self.nrRecibo.xml = arquivo + self.indApuracao.xml = arquivo + self.perApur.xml = arquivo + self.tpAmb.xml = arquivo + self.procEmi.xml = arquivo + self.verProc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class EvtBenPrRP(XMLNFe): + def __init__(self): + super(EvtBenPrRP, self).__init__() + self.Id = TagCaracter(nome='evtBenPrRP', propriedade='Id', raiz='//eSocial/evtBenPrRP', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideEvento = IdeEvento() + self.ideEmpregador = IdeEmpregador() + self.ideBenef = IdeBenef() + self.dmDev = DmDev() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += self.Id.xml + xml += self.ideEvento.xml + xml += self.ideEmpregador.xml + xml += self.ideBenef.xml + xml += self.dmDev.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.Id.xml = arquivo + self.ideEvento.xml = arquivo + self.ideEmpregador.xml = arquivo + self.ideBenef.xml = arquivo + self.dmDev.xml = arquivo + + xml = property(get_xml, set_xml) + + +class S1207(XMLNFe): + def __init__(self): + super(S1207, self).__init__() + self.evtBenPrRP = EvtBenPrRP() + self.caminho_esquema = os.path.join(DIRNAME, 'schema/', ESQUEMA_ATUAL + '/') + self.arquivo_esquema = 'evtBenPrRP.xsd' + self.id_evento = '' + self.tpInsc = '' + self.nrInsc = '' + # self.Signature = Signature() + self.evento = self.evtBenPrRP + self.xml_assinado = '' + + def get_xml(self): + xml = XMLNFe.get_xml(self) + #xml += ABERTURA + xml += '' + xml += self.evtBenPrRP.xml + + # + # Define a URI a ser assinada + # + # self.Signature.URI = '#' + self.evtInfoEmpregador.Id.valor + # xml += self.Signature.xml + xml += '' + + # Define o método de assinatura + # self.Signature.metodo = 'sha256' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.evtBenPrRP.xml = arquivo + # self.Signature.xml = self._le_noh('//eSocial/sig:Signature') + + def gera_id_evento(self, data_hora, sequencia=False): + #A identificação única do evento (Id) é composta por 36 caracteres, conforme o que segue: IDTNNNNNNNNNNNNNNAAAAMMDDHHMMSSQQQQQ + #ID - Texto Fixo "ID"; + #T - Tipo de Inscrição do Empregador (1 - CNPJ; 2 - CPF); + #NNNNNNNNNNNNNN - Número do CNPJ ou CPF do empregador - Completar com + #zeros à direita. No caso de pessoas jurídicas, o CNPJ informado deve conter 8 ou 14 + #posições de acordo com o enquadramento do contribuinte para preenchimento do campo + #{ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se + #necessário. + #AAAAMMDD - Ano, mês e dia da geração do evento; + #HHMMSS - Hora, minuto e segundo da geração do evento; + #QQQQQ - Número sequencial da chave. Incrementar somente quando ocorrer geração de + #eventos na mesma data/hora, completando com zeros à esquerda. + #OBS.: No caso de pessoas jurídicas, o CNPJ informado deverá conter 8 ou 14 posições de + #acordo com o enquadramento do contribuinte para preenchimento do campo {ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se necessário. + + if not sequencia: + sequencia=1 + + id_evento = 'ID' + id_evento += self.tpInsc + id_evento += self.nrInsc[0:8] + '000000' + id_evento += data_hora + id_evento += str(sequencia).zfill(5) + + # Define o Id + # + self.evtBenPrRP.Id.valor = id_evento + self.id_evento = id_evento + + xml = property(get_xml, set_xml) diff --git a/pysped/esocial/leiaute/evtCS_20402.py b/pysped/esocial/leiaute/evtCS_20402.py new file mode 100644 index 00000000..5597ebac --- /dev/null +++ b/pysped/esocial/leiaute/evtCS_20402.py @@ -0,0 +1,830 @@ +# -*- coding: utf-8 -*- +# -*- coding: utf-8 -*- +# +# PySPED - Python libraries to deal with Brazil's SPED Project +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Library General Public License as +# published by the Free Software Foundation, either version 2.1 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public License +# along with this program. If not, see . +# +# PySPED - Bibliotecas Python para o +# SPED - Sistema Público de Escrituração Digital +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# Este programa é um software livre: você pode redistribuir e/ou modificar +# este programa sob os termos da licença GNU Library General Public License, +# publicada pela Free Software Foundation, em sua versão 2.1 ou, de acordo +# com sua opção, qualquer versão posterior. +# +# Este programa é distribuido na esperança de que venha a ser útil, +# porém SEM QUAISQUER GARANTIAS, nem mesmo a garantia implícita de +# COMERCIABILIDADE ou ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Veja a +# GNU Library General Public License para mais detalhes. +# +# Você deve ter recebido uma cópia da GNU Library General Public License +# juntamente com este programa. Caso esse não seja o caso, acesse: +# +# + +from __future__ import (division, print_function, unicode_literals, + absolute_import) + +from builtins import str +import os +from pysped.xml_sped import * +from pysped.esocial.leiaute import ESQUEMA_ATUAL_VERSAO_2 as ESQUEMA_ATUAL + +DIRNAME = os.path.dirname(__file__) + +NAMESPACE_ESOCIAL = 'http://www.esocial.gov.br/schema/evt/evtCS/v02_04_02' + + +class InfoCRContrib(XMLNFe): + def __init__(self): + super(InfoCRContrib, self).__init__() + self.tpCR = TagCaracter(nome='tpCR', tamanho=[1, 6], raiz='//infoCRContrib', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrCR = TagDecimal(nome='vrCR', tamanho=[1, 14, 2], raiz='//infoCRContrib', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrSuspCR = TagDecimal(nome='vrSuspCR', tamanho=[1, 14, 2], raiz='//infoCRContrib', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpCR.xml + xml += self.vrCR.xml + xml += self.vrSuspCR.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpCR.xml = arquivo + self.vrCR.xml = arquivo + self.vrSuspCR.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoCREstab(XMLNFe): + def __init__(self): + super(InfoCREstab, self).__init__() + self.tpCR = TagCaracter(nome='tpCR', tamanho=[1, 6], raiz='//infoCREstab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrCR = TagDecimal(nome='vrCR', tamanho=[1, 14, 2], raiz='//infoCREstab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrSuspCR = TagDecimal(nome='vrSuspCR', tamanho=[1, 14, 2], raiz='//infoCREstab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpCR.xml + xml += self.vrCR.xml + xml += self.vrSuspCR.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpCR.xml = arquivo + self.vrCR.xml = arquivo + self.vrSuspCR.xml = arquivo + + xml = property(get_xml, set_xml) + + +class BasesComerc(XMLNFe): + def __init__(self): + super(BasesComerc, self).__init__() + self.indComerc = TagCaracter(nome='indComerc', tamanho=[1, 1], raiz='//basesComerc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrBcComPR = TagDecimal(nome='vrBcComPR', tamanho=[1, 14, 2], raiz='//basesComerc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrCPSusp = TagDecimal(nome='vrCPSusp', tamanho=[1, 14, 2], raiz='//basesComerc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.vrRatSusp = TagDecimal(nome='vrRatSusp', tamanho=[1, 14, 2], raiz='//basesComerc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.vrSenarSusp = TagDecimal(nome='vrSenarSusp', tamanho=[1, 14, 2], raiz='//basesComerc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.indComerc.xml + xml += self.vrBcComPR.xml + xml += self.vrCPSusp.xml + xml += self.vrRatSusp.xml + xml += self.vrSenarSusp.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.indComerc.xml = arquivo + self.vrBcComPR.xml = arquivo + self.vrCPSusp.xml = arquivo + self.vrRatSusp.xml = arquivo + self.vrSenarSusp.xml = arquivo + + xml = property(get_xml, set_xml) + + +class BasesAquis(XMLNFe): + def __init__(self): + super(BasesAquis, self).__init__() + self.indAquis = TagCaracter(nome='indAquis', tamanho=[1, 1], raiz='//basesAquis', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vlrAquis = TagDecimal(nome='vlrAquis', tamanho=[1, 14, 2], raiz='//basesAquis', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrCPDescPR = TagDecimal(nome='vrCPDescPR', tamanho=[1, 14, 2], raiz='//basesAquis', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrRatNRet = TagDecimal(nome='vrRatNRet', tamanho=[1, 14, 2], raiz='//basesAquis', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrSenarNRet = TagDecimal(nome='vrSenarNRet', tamanho=[1, 14, 2], raiz='//basesAquis', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrCPCalcPR = TagDecimal(nome='vrCPCalcPR', tamanho=[1, 14, 2], raiz='//basesAquis', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrRatDescPR = TagDecimal(nome='vrRatDescPR', tamanho=[1, 14, 2], raiz='//basesAquis', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrRatCalcPR = TagDecimal(nome='vrRatCalcPR', tamanho=[1, 14, 2], raiz='//basesAquis', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrSenarDesc = TagDecimal(nome='vrSenarDesc', tamanho=[1, 14, 2], raiz='//basesAquis', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrSenarCalc = TagDecimal(nome='vrSenarCalc', tamanho=[1, 14, 2], raiz='//basesAquis', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.indAquis.xml + xml += self.vlrAquis.xml + xml += self.vrCPDescPR.xml + xml += self.vrRatNRet.xml + xml += self.vrSenarNRet.xml + xml += self.vrCPCalcPR.xml + xml += self.vrRatDescPR.xml + xml += self.vrRatCalcPR.xml + xml += self.vrSenarDesc.xml + xml += self.vrSenarCalc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.indAquis.xml = arquivo + self.vlrAquis.xml = arquivo + self.vrCPDescPR.xml = arquivo + self.vrRatNRet.xml = arquivo + self.vrSenarNRet.xml = arquivo + self.vrCPCalcPR.xml = arquivo + self.vrRatDescPR.xml = arquivo + self.vrRatCalcPR.xml = arquivo + self.vrSenarDesc.xml = arquivo + self.vrSenarCalc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoSubstPatrOpPort(XMLNFe): + def __init__(self): + super(InfoSubstPatrOpPort, self).__init__() + self.cnpjOpPortuario = TagCaracter(nome='cnpjOpPortuario', tamanho=[1, 14], raiz='//infoSubstPatrOpPort', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cnpjOpPortuario.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cnpjOpPortuario.xml = arquivo + + xml = property(get_xml, set_xml) + + +class BasesAvNPort(XMLNFe): + def __init__(self): + super(BasesAvNPort, self).__init__() + self.vrBcCp00 = TagDecimal(nome='vrBcCp00', tamanho=[1, 14, 2], raiz='//basesANPort', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrBcCp15 = TagDecimal(nome='vrBcCp15', tamanho=[1, 14, 2], raiz='//basesANPort', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrBcCp20 = TagDecimal(nome='vrBcCp20', tamanho=[1, 14, 2], raiz='//basesANPort', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrBcCp25 = TagDecimal(nome='vrBcCp25', tamanho=[1, 14, 2], raiz='//basesANPort', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrBcCp13 = TagDecimal(nome='vrBcCp13', tamanho=[1, 14, 2], raiz='//basesANPort', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrBcFgts = TagDecimal(nome='vrBcFgts', tamanho=[1, 14, 2], raiz='//basesANPort', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrDescCP = TagDecimal(nome='vrDescCP', tamanho=[1, 14, 2], raiz='//basesANPort', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.vrBcCp00.xml + xml += self.vrBcCp15.xml + xml += self.vrBcCp20.xml + xml += self.vrBcCp25.xml + xml += self.vrBcCp13.xml + xml += self.vrBcFgts.xml + xml += self.vrDescCP.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.vrBcCp00.xml = arquivo + self.vrBcCp15.xml = arquivo + self.vrBcCp20.xml = arquivo + self.vrBcCp25.xml = arquivo + self.vrBcCp13.xml = arquivo + self.vrBcFgts.xml = arquivo + self.vrDescCP.xml = arquivo + + xml = property(get_xml, set_xml) + + +class BasesCp(XMLNFe): + def __init__(self): + super(BasesCp, self).__init__() + self.vrBcCp00 = TagDecimal(nome='vrBcCp00' , tamanho=[1, 14, 2], raiz='//basesRemun/basesCp', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrBcCp15 = TagDecimal(nome='vrBcCp15' , tamanho=[1, 14, 2], raiz='//basesRemun/basesCp', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrBcCp20 = TagDecimal(nome='vrBcCp20' , tamanho=[1, 14, 2], raiz='//basesRemun/basesCp', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrBcCp25 = TagDecimal(nome='vrBcCp25' , tamanho=[1, 14, 2], raiz='//basesRemun/basesCp', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrSuspBcCp00 = TagDecimal(nome='vrSuspBcCp00', tamanho=[1, 14, 2], raiz='//basesRemun/basesCp', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrSuspBcCp15 = TagDecimal(nome='vrSuspBcCp15', tamanho=[1, 14, 2], raiz='//basesRemun/basesCp', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrSuspBcCp20 = TagDecimal(nome='vrSuspBcCp20', tamanho=[1, 14, 2], raiz='//basesRemun/basesCp', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrSuspBcCp25 = TagDecimal(nome='vrSuspBcCp25', tamanho=[1, 14, 2], raiz='//basesRemun/basesCp', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrDescSest = TagDecimal(nome='vrDescSest' , tamanho=[1, 14, 2], raiz='//basesRemun/basesCp', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrCalcSest = TagDecimal(nome='vrCalcSest' , tamanho=[1, 14, 2], raiz='//basesRemun/basesCp', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrDescSenat = TagDecimal(nome='vrDescSenat' , tamanho=[1, 14, 2], raiz='//basesRemun/basesCp', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrCalcSenat = TagDecimal(nome='vrCalcSenat' , tamanho=[1, 14, 2], raiz='//basesRemun/basesCp', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrSalFam = TagDecimal(nome='vrSalFam' , tamanho=[1, 14, 2], raiz='//basesRemun/basesCp', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrSalMat = TagDecimal(nome='vrSalMat' , tamanho=[1, 14, 2], raiz='//basesRemun/basesCp', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.vrBcCp00.xml + xml += self.vrBcCp15.xml + xml += self.vrBcCp20.xml + xml += self.vrBcCp25.xml + xml += self.vrSuspBcCp00.xml + xml += self.vrSuspBcCp15.xml + xml += self.vrSuspBcCp20.xml + xml += self.vrSuspBcCp25.xml + xml += self.vrDescSest.xml + xml += self.vrCalcSest.xml + xml += self.vrDescSenat.xml + xml += self.vrCalcSenat.xml + xml += self.vrSalFam.xml + xml += self.vrSalMat.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.vrBcCp00.xml = arquivo + self.vrBcCp15.xml = arquivo + self.vrBcCp20.xml = arquivo + self.vrBcCp25.xml = arquivo + self.vrSuspBcCp00.xml = arquivo + self.vrSuspBcCp15.xml = arquivo + self.vrSuspBcCp20.xml = arquivo + self.vrSuspBcCp25.xml = arquivo + self.vrDescSest.xml = arquivo + self.vrCalcSest.xml = arquivo + self.vrDescSenat.xml = arquivo + self.vrCalcSenat.xml = arquivo + self.vrSalFam.xml = arquivo + self.vrSalMat.xml = arquivo + + xml = property(get_xml, set_xml) + + +class BasesRemun(XMLNFe): + def __init__(self): + super(BasesRemun, self).__init__() + self.indIncid = TagCaracter(nome='indIncid', tamanho=[1, 1], raiz='//basesRemun', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codCateg = TagDecimal( nome='codCateg', tamanho=[1, 3], raiz='//basesRemun', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.basesCp = BasesCp() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.indIncid.xml + xml += self.codCateg.xml + xml += self.basesCp.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.indIncid.xml = arquivo + self.codCateg.xml = arquivo + self.basesCp.xml = arquivo + + xml = property(get_xml, set_xml) + + +class DadosOpPort(XMLNFe): + def __init__(self): + super(DadosOpPort, self).__init__() + self.cnpjOpPortuario = TagCaracter(nome='cnpjOpPortuario', tamanho=[1, 14], raiz='//dadosOpPort', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.aliqRat = TagDecimal( nome='aliqRat', tamanho=[1, 1], raiz='//dadosOpPort', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.fap = TagDecimal( nome='fap', tamanho=[1, 5, 4], raiz='//dadosOpPort', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.aliqRatAjust = TagDecimal( nome='aliqRatAjust', tamanho=[1, 5, 4], raiz='//dadosOpPort', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cnpjOpPortuario.xml + xml += self.aliqRat.xml + xml += self.fap.xml + xml += self.aliqRatAjust.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cnpjOpPortuario.xml = arquivo + self.aliqRat.xml = arquivo + self.fap.xml = arquivo + self.aliqRatAjust.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoEmprParcial(XMLNFe): + def __init__(self): + super(InfoEmprParcial, self).__init__() + self.tpInscContrat = TagCaracter(nome='tpInscContrat', tamanho=[1, 1], raiz='//infoEmprParcial', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrInscContrat = TagCaracter(nome='nrInscContrat', tamanho=[1, 14], raiz='//infoEmprParcial', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.tpInscProp = TagCaracter(nome='tpInscProp', tamanho=[1, 1], raiz='//infoEmprParcial', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrInscProp = TagCaracter(nome='nrInscProp', tamanho=[1, 14], raiz='//infoEmprParcial', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInscContrat.xml + xml += self.nrInscContrat.xml + xml += self.tpInscProp.xml + xml += self.nrInscProp.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInscContrat.xml = arquivo + self.nrInscContrat.xml = arquivo + self.tpInscProp.xml = arquivo + self.nrInscProp.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoTercSusp(XMLNFe): + def __init__(self): + super(InfoTercSusp, self).__init__() + self.codTerc = TagCaracter(nome='codTerc', tamanho=[1, 4], raiz='//infoTercSusp', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.codTerc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codTerc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeLotacao(XMLNFe): + def __init__(self): + super(IdeLotacao, self).__init__() + self.codLotacao = TagCaracter(nome='codLotacao', tamanho=[1, 30], raiz='//ideLotacao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.fpas = TagCaracter(nome='fpas', tamanho=[1, 3], raiz='//ideLotacao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codTercs = TagCaracter(nome='codTercs', tamanho=[1, 4], raiz='//ideLotacao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codTercsSusp = TagCaracter(nome='codTercSsusp', tamanho=[1, 4], raiz='//ideLotacao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.infoTercSusp = [] + self.infoEmprParcial = [] + self.dadosOpPort = [] + self.basesRemun = [] + self.basesAvNPort = [] + self.infoSubstPatrOpPort = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.codLotacao.xml + xml += self.fpas.xml + xml += self.codTercs.xml + xml += self.codTercsSusp.xml + if len(self.infoTercSusp) > 0: + for i in self.infoTercSusp: + xml += i.xml + if len(self.infoEmprParcial) > 0: + for i in self.infoEmprParcial: + xml += i.xml + if len(self.dadosOpPort) > 0: + for i in self.dadosOpPort: + xml += i.xml + if len(self.basesRemun) > 0: + for i in self.basesRemun: + xml += i.xml + if len(self.basesAvNPort) > 0: + for i in self.basesAvNPort: + xml += i.xml + if len(self.infoSubstPatrOpPort) > 0: + for i in self.infoSubstPatrOpPort: + xml += i.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codLotacao.xml = arquivo + self.fpas.xml = arquivo + self.codTercs.xml = arquivo + self.codTercsSusp.xml = arquivo + self.infoTercSusp = self.le_grupo('//ideLotacao/infoTercSusp', InfoTercSusp, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoEmprParcial = self.le_grupo('//ideLotacao/infoEmprParcial', InfoEmprParcial, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.dadosOpPort = self.le_grupo('//ideLotacao/dadosOpPort', DadosOpPort, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.basesRemun = self.le_grupo('//ideLotacao/basesRemun', BasesRemun, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.basesAvNPort = self.le_grupo('//ideLotacao/basesAvNPort', BasesAvNPort, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoSubstPatrOpPort = self.le_grupo('//ideLotacao/infoSubstPatrOpPort', InfoSubstPatrOpPort, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class InfoComplObra(XMLNFe): + def __init__(self): + super(InfoComplObra, self).__init__() + self.indSubstPatrObra = TagCaracter(nome='indSubstPatrObra', tamanho=[1, 1], raiz='//infoComplObra', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.indSubstPatrObra.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.indSubstPatrObra.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoEstab(XMLNFe): + def __init__(self): + super(InfoEstab, self).__init__() + self.cnaePrep = TagCaracter(nome='cnaePrep', tamanho=[1, 7], raiz='//infoEstab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.aliqRat = TagDecimal( nome='aliqRat', tamanho=[1, 1], raiz='//infoEstab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.fap = TagDecimal( nome='fap', tamanho=[1, 5, 4], raiz='//infoEstab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.aliqRatAjust = TagDecimal( nome='aliqRatAjust', tamanho=[1, 5, 4], raiz='//infoEstab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.infoComplObra = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cnaePrep.xml + xml += self.aliqRat.xml + xml += self.fap.xml + xml += self.aliqRatAjust.xml + if len(self.infoComplObra): + for i in self.infoComplObra: + xml += i.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cnaePrep.xml = arquivo + self.aliqRat.xml = arquivo + self.fap.xml = arquivo + self.aliqRatAjust.xml = arquivo + self.infoComplObra = self.le_grupo('//infoEstab/infoComplObra', InfoComplObra, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class IdeEstab(XMLNFe): + def __init__(self): + super(IdeEstab, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', tamanho=[1, 1], raiz='//ideEstab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='1') + self.nrInsc = TagCaracter(nome='nrInsc', tamanho=[1, 15], raiz='//ideEstab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.infoEstab = [] + self.ideLotacao = [] + self.basesAquis = [] + self.basesComerc = [] + self.infoCREstab = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + if len(self.infoEstab) > 0: + for i in self.infoEstab: + xml += i.xml + if len(self.ideLotacao) > 0: + for i in self.ideLotacao: + xml += i.xml + if len(self.basesAquis) > 0: + for b in self.basesAquis: + xml += b.xml + if len(self.basesComerc) > 0: + for b in self.basesComerc: + xml += b.xml + if len(self.infoCREstab) > 0: + for i in self.infoCREstab: + xml += i.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + self.infoEstab = self.le_grupo('//ideEstab/infoEstab', InfoEstab, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.ideLotacao = self.le_grupo('//ideEstab/ideLotacao', IdeLotacao, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.basesAquis = self.le_grupo('//ideEstab/basesAquis', BasesAquis, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.basesComerc = self.le_grupo('//ideEstab/basesComerc', BasesComerc, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class InfoAtConc(XMLNFe): + def __init__(self): + super(InfoAtConc, self).__init__() + self.fatorMes = TagCaracter(nome='fatorMes', tamanho=[1, 1], raiz='//infoAtConc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.fator13 = TagCaracter(nome='fator13', tamanho=[1, 1], raiz='//infoAtConc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.fatorMes.xml + xml += self.fator13.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.fatorMes.xml = arquivo + self.fator13.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoPJ(XMLNFe): + def __init__(self): + super(InfoPJ, self).__init__() + self.indCoop = TagCaracter(nome='indCoop', tamanho=[1, 1], raiz='//infoPJ', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.indConstr = TagCaracter(nome='indConstr', tamanho=[1, 1], raiz='//infoPJ', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.indSubstPatr = TagCaracter(nome='indSubstPatr', tamanho=[1, 1], raiz='//infoPJ', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.percRedContrib = TagDecimal( nome='percRedContrib', tamanho=[1, 5, 2], raiz='//infoPJ', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.infoAtConc = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.indCoop.xml + xml += self.indConstr.xml + xml += self.indSubstPatr.xml + xml += self.percRedContrib.xml + if len(self.infoAtConc) > 0: + for p in self.infoAtConc: + xml += p.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.indCoop.xml = arquivo + self.indConstr.xml = arquivo + self.indSubstPatr.xml = arquivo + self.percRedContrib.xml = arquivo + self.infoAtConc = self.le_grupo('//infoPJ/infoAtConc', InfoAtConc, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class InfoContrib(XMLNFe): + def __init__(self): + super(InfoContrib, self).__init__() + self.classTrib = TagCaracter(nome='classTrib', tamanho=[1, 2], raiz='//eSocial/evtCS/infoCS/infoContrib', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.infoPJ = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.classTrib.xml + if len(self.infoPJ) > 0: + for i in self.infoPJ: + xml += i.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.classTrib.xml = arquivo + self.infoPJ = self.le_grupo('//eSocial/evtCS/infoCS/infoContrib/infoPJ', InfoPJ, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class InfoCPSeg(XMLNFe): + def __init__(self): + super(InfoCPSeg, self).__init__() + self.vrDescCP = TagDecimal(nome='vrDescCP', tamanho=[1, 14, 2], raiz='//infoCPSeg', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrCpSeg = TagDecimal(nome='vrCpSeg', tamanho=[1, 14, 2], raiz='//infoCPSeg', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.vrDescCP.xml + xml += self.vrCpSeg.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.vrDescCP.xml = arquivo + self.vrCpSeg.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoCS(XMLNFe): + def __init__(self): + super(InfoCS, self).__init__() + self.nrRecArqBase = TagCaracter(nome='nrRecArqBase', tamanho=[1, 40], raiz='//eSocial/evtCS/infoCS', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.indExistInfo = TagCaracter(nome='indExistInfo', tamanho=[1, 1], raiz='//eSocial/evtCS/infoCS', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.infoCPSeg = [] + self.infoContrib = InfoContrib() + self.ideEstab = [] + self.infoCRContrib = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nrRecArqBase.xml + xml += self.indExistInfo.xml + if len(self.infoCPSeg) > 0: + for i in self.infoCPSeg: + xml += i.xml + xml += self.infoContrib.xml + if len(self.ideEstab) > 0: + for i in self.ideEstab: + xml += i.xml + if len(self.infoCRContrib) > 0: + for i in self.infoCRContrib: + xml += i.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nrRecArqBase.xml = arquivo + self.indExistInfo.xml = arquivo + self.infoCPSeg = self.le_grupo('//eSocial/evtCS/infoCS/infoCPSeg', InfoCPSeg, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoContrib.xml = arquivo + self.ideEstab = self.le_grupo('//eSocial/evtCS/infoCS/ideEstab', IdeEstab, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoCRContrib = self.le_grupo('//eSocial/evtCS/infoCS/infoCRContrib', InfoCRContrib, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class IdeEmpregador(XMLNFe): + def __init__(self): + super(IdeEmpregador, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', tamanho=[1, 1], raiz='//eSocial/evtCS/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='1') + self.nrInsc = TagCaracter(nome='nrInsc', tamanho=[1, 15], raiz='//eSocial/evtCS/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEvento(XMLNFe): + def __init__(self): + super(IdeEvento, self).__init__() + self.indApuracao = TagCaracter(nome='indApuracao', tamanho=[1, 1], raiz='//eSocial/evtCS/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.perApur = TagCaracter(nome='perApur', tamanho=[1, 7], raiz='//eSocial/evtCS/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.indApuracao.xml + xml += self.perApur.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.indApuracao.xml = arquivo + self.perApur.xml = arquivo + + xml = property(get_xml, set_xml) + + +class EvtCS(XMLNFe): + def __init__(self): + super(EvtCS, self).__init__() + self.Id = TagCaracter(nome='evtCS', propriedade='Id', raiz='//eSocial', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideEvento = IdeEvento() + self.ideEmpregador = IdeEmpregador() + self.infoCS = InfoCS() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += self.Id.xml + xml += self.ideEvento.xml + xml += self.ideEmpregador.xml + xml += self.infoCS.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.Id.xml = arquivo + self.ideEvento.xml = arquivo + self.ideEmpregador.xml = arquivo + self.infoCS.xml = arquivo + + xml = property(get_xml, set_xml) + + +class S5011(XMLNFe): + def __init__(self): + super(S5011, self).__init__() + self.evtCS = EvtCS() + self.caminho_esquema = os.path.join(DIRNAME, 'schema/', ESQUEMA_ATUAL + '/') + self.arquivo_esquema = 'evtCS.xsd' + self.id_evento = '' + self.tpInsc = '' + self.nrInsc = '' + self.Signature = Signature() + self.evento = self.evtCS + self.xml_assinado = '' + + def get_xml(self): + xml = XMLNFe.get_xml(self) + #xml += ABERTURA + xml += '' + xml += self.evtCS.xml + + # + # Define a URI a ser assinada + # + self.Signature.URI = '#' + self.evtCS.Id.valor + xml += self.Signature.xml + xml += '' + + # Define o método de assinatura + # self.Signature.metodo = 'sha256' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.evtCS.xml = arquivo + self.Signature.xml = self._le_noh('//sig:Signature') + + def gera_id_evento(self, data_hora, sequencia=False): + #A identificação única do evento (Id) é composta por 36 caracteres, conforme o que segue: IDTNNNNNNNNNNNNNNAAAAMMDDHHMMSSQQQQQ + #ID - Texto Fixo "ID"; + #T - Tipo de Inscrição do Empregador (1 - CNPJ; 2 - CPF); + #NNNNNNNNNNNNNN - Número do CNPJ ou CPF do empregador - Completar com + #zeros à direita. No caso de pessoas jurídicas, o CNPJ informado deve conter 8 ou 14 + #posições de acordo com o enquadramento do contribuinte para preenchimento do campo + #{ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se + #necessário. + #AAAAMMDD - Ano, mês e dia da geração do evento; + #HHMMSS - Hora, minuto e segundo da geração do evento; + #QQQQQ - Número sequencial da chave. Incrementar somente quando ocorrer geração de + #eventos na mesma data/hora, completando com zeros à esquerda. + #OBS.: No caso de pessoas jurídicas, o CNPJ informado deverá conter 8 ou 14 posições de + #acordo com o enquadramento do contribuinte para preenchimento do campo {ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se necessário. + + if not sequencia: + sequencia=1 + + id_evento = 'ID' + id_evento += self.tpInsc + id_evento += self.nrInsc[0:8] + '000000' + id_evento += data_hora + id_evento += str(sequencia).zfill(5) + + # Define o Id + # + self.evtCS.Id.valor = id_evento + self.id_evento = id_evento + + xml = property(get_xml, set_xml) diff --git a/pysped/esocial/leiaute/evtDeslig_20402.py b/pysped/esocial/leiaute/evtDeslig_20402.py new file mode 100644 index 00000000..fecd7dea --- /dev/null +++ b/pysped/esocial/leiaute/evtDeslig_20402.py @@ -0,0 +1,943 @@ +# -*- coding: utf-8 -*- +# +# PySPED - Python libraries to deal with Brazil's SPED Project +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Library General Public License as +# published by the Free Software Foundation, either version 2.1 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public License +# along with this program. If not, see . +# +# PySPED - Bibliotecas Python para o +# SPED - Sistema Público de Escrituração Digital +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# Copyright (C) Luiz Felipe do Divino +# +# Este programa é um software livre: você pode redistribuir e/ou modificar +# este programa sob os termos da licença GNU Library General Public License, +# publicada pela Free Software Foundation, em sua versão 2.1 ou, de acordo +# com sua opção, qualquer versão posterior. +# +# Este programa é distribuido na esperança de que venha a ser útil, +# porém SEM QUAISQUER GARANTIAS, nem mesmo a garantia implícita de +# COMERCIABILIDADE ou ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Veja a +# GNU Library General Public License para mais detalhes. +# +# Você deve ter recebido uma cópia da GNU Library General Public License +# juntamente com este programa. Caso esse não seja o caso, acesse: +# + +from __future__ import (division, print_function, unicode_literals, + absolute_import) + +from builtins import str +import os +from pysped.xml_sped import * +from pysped.esocial.leiaute import ESQUEMA_ATUAL_VERSAO_2 as ESQUEMA_ATUAL + +DIRNAME = os.path.dirname(__file__) + +NAMESPACE_ESOCIAL = 'http://www.esocial.gov.br/schema/evt/evtDeslig/v02_04_02' + + +class DetVerbas(XMLNFe): + def __init__(self): + super(DetVerbas, self).__init__() + self.codRubr = TagCaracter(nome='codRubr', tamanho=[1, 30], raiz='//detVerbas', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideTabRubr = TagCaracter(nome='ideTabRubr', tamanho=[1, 8], raiz='//detVerbas', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.qtdRubr = TagInteiro(nome='qtdRubr', raiz='//detVerbas', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.fatorRubr = TagInteiro(nome='fatorRubr', raiz='//detVerbas', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.vrUnit = TagInteiro(nome='vrUnit', raiz='//detVerbas', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.vrRubr = TagDecimal(nome='vrRubr', raiz='//detVerbas', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.codRubr.xml + xml += self.ideTabRubr.xml + xml += self.qtdRubr.xml + xml += self.fatorRubr.xml + xml += self.vrUnit.xml + xml += self.vrRubr.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codRubr.xml = arquivo + self.ideTabRubr.xml = arquivo + self.qtdRubr.xml = arquivo + self.fatorRubr.xml = arquivo + self.vrUnit.xml = arquivo + self.vrRubr.xml = arquivo + + xml = property(get_xml, set_xml) + + +class DetPlano(XMLNFe): + def __init__(self): + super(DetPlano, self).__init__() + self.tpDep = TagCaracter(name='tpDep', tamanho=[1, 2], raiz='//dtPlano', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.cpfDep = TagCaracter(name='cpfDep', tamanho=[1, 11], raiz='//dtPlano', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.nmDep = TagCaracter(name='nmDep', tamanho=[1, 70], raiz='//dtPlano', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtNascto = TagData(name='dtNascto', raiz='//dtPlano', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vlorPgDep = TagInteiro(name='vlorPgDep', raiz='//dtPlano', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpDep.xml + xml += self.cpfDep.xml + xml += self.nmDep.xml + xml += self.dtNascto.xml + xml += self.vlorPgDep.xml + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpDep.xml = arquivo + self.cpfDep.xml = arquivo + self.nmDep.xml = arquivo + self.dtNascto.xml = arquivo + self.vlorPgDep.xml = arquivo + + xml = property(get_xml, set_xml) + + +class DetOper(XMLNFe): + def __init__(self): + super(DetOper, self).__init__() + self.cnpjOper = TagCaracter(name='cnpjOper', tamanho=[1, 14], raiz='//detOper', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.regANS = TagCaracter(name='regANS', tamanho=[1, 6], raiz='//detOper', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrPgTit = TagInteiro(name='vrPgTit', raiz='//detOper', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.detPlano = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cnpjOper.xml + xml += self.regANS.xml + xml += self.vrPgTit.xml + if self.detPlano: + for plano in self.detPlano: + xml += plano.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cnpjOper.xml = arquivo + self.regANS.xml = arquivo + self.vrPgTit.xml = arquivo + self.detPlano = self.le_grupo('//eSocial/evtDeslig/inforDeslig/verbasResc/dmDev/infoPerApur/ideEstabLot/infoSaudeCelet/detOper/detPlano', DetPlano, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class InfoSaudeColet(XMLNFe): + def __init__(self): + super(InfoSaudeColet, self).__init__() + self.detOper = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + if self.detOper: + for detalhamento in self.detOper: + xml += detalhamento.xml + xml += '' + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.detOper = self.infoSaudeCelet = self.le_grupo('//eSocial/evtDeslig/inforDeslig/verbasResc/dmDev/infoPerApur/ideEstabLot/infoSaudeCelet/detOper', DetOper, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class InfoAgNocivo(XMLNFe): + def __init__(self): + super(InfoAgNocivo, self).__init__() + self.grauExp = TagInteiro(nome='grauExp', raiz='//grauExp', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.grauExp.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.grauExp.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoSimples(XMLNFe): + def __init__(self): + super(InfoSimples, self).__init__() + self.indSimples = TagInteiro(name='indSimples', raiz='//indSimples', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.indSimples.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.indSimples.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEstabLotApur(XMLNFe): + def __init__(self): + super(IdeEstabLotApur, self).__init__() + self.tpInsc = TagInteiro(nome='tpInsc', raiz='//ideEstabLot', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrInsc = TagCaracter(nome='nrInsc', tamanho=[1, 15], raiz='//ideEstabLot', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codLotacao = TagCaracter(nome='codLotacao', tamanho=[1, 30], raiz='//ideEstabLot', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.detVerbas = [] + self.infoSaudeColet = [] + self.infoAgNocivo = [] + self.infoSimples = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += self.codLotacao.xml + if self.detVerbas: + for verba in self.detVerbas: + xml += verba.xml + if self.infoAgNocivo: + for agente in self.infoAgNocivo: + xml += agente.xml + if self.infoSaudeColet: + for info in self.infoSaudeColet: + xml += info.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + self.codLotacao.xml = arquivo + self.detVerbas = self.le_grupo('//eSocial/evtDeslig/inforDeslig/verbasResc/dmDev/infoPerApur/ideEstabLot/detVerbas', DetVerbas, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoSaudeColet = self.le_grupo('//eSocial/evtDeslig/inforDeslig/verbasResc/dmDev/infoPerApur/ideEstabLot/infoSaudeCelet', InfoSaudeColet, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoAgNocivo = self.le_grupo('//eSocial/evtDeslig/inforDeslig/verbasResc/dmDev/infoPerApur/ideEstabLot/infoAgNocivo', InfoAgNocivo, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoSimples = self.le_grupo('//eSocial/evtDeslig/inforDeslig/verbasResc/dmDev/infoPerApur/ideEstabLot/infoSimples', InfoSimples, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class InfoPerApur(XMLNFe): + def __init__(self): + super(InfoPerApur, self).__init__() + self.ideEstabLot = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + if self.ideEstabLot: + for ide in self.ideEstabLot: + xml += ide.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.ideEstabLot = self.le_grupo('//eSocial/evtDeslig/inforDeslig/verbasResc/dmDev/infoPerApur/ideEstabLot', IdeEstabLotApur, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class IdeEstabLot(XMLNFe): + def __init__(self): + super(IdeEstabLot, self).__init__() + self.tpInsc = TagInteiro(nome='tpInsc', raiz='//ideEstabLot', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrInsc = TagCaracter(nome='nrInsc', tamanho=[1, 15], raiz='//ideEstabLot', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codLotacao = TagCaracter(nome='codLotacao', tamanho=[1, 30], raiz='//ideEstabLot', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.detVerbas = [] + self.infoAgNocivo = [] + self.infoSimples = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += self.codLotacao.xml + if self.detVerbas: + for verba in self.detVerbas: + xml += verba.xml + if self.infoAgNocivo: + for info in self.infoAgNocivo: + xml += info.xml + if self.infoSimples: + for info_simples in self.infoSimples: + xml += info_simples.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + self.codLotacao.xml = arquivo + self.detVerbas = self.le_grupo('//eSocial/evtDeslig/inforDeslig/verbasResc/dmDev/infoPerApur/ideEstabLot/detVerbas', DetVerbas, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + +class IdePeriodo(XMLNFe): + def __init__(self): + super(IdePeriodo, self).__init__() + self.perRef = TagCaracter(nome='perRef', tamanho=[1, 7], raiz='//idePeriodo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideEstabLot = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.perRef.xml + if self.ideEstabLot: + for estabelecimento in self.ideEstabLot: + xml += estabelecimento.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.perRef.xml = arquivo + self.ideEstabLot = self.le_grupo('//eSocial/evtDeslig/inforDeslig/verbasResc/dmDev/infoPerAnt/ideADC/idePeriodo/ideEstabLot', IdeEstabLot, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + +class IdeADC(XMLNFe): + def __init__(self): + super(IdeADC, self).__init__() + self.dtAcConv = TagData(name='dtAcConv', raiz='//ideADC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.tpAcConv = TagCaracter(name='tpAcConv', tamanho=[1, 1], raiz='//ideADC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.compAcConv = TagCaracter(name='compAcConv', tamanho=[1, 7], raiz='//ideADC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.dtEfAcConv = TagData(name='dtEfAcConv', raiz='//ideADC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dsc = TagCaracter(name='dsc', tamanho=[1, 255], raiz='//ideADC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.idePeriodo = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.dtAcConv.xml + xml += self.tpAcConv.xml + xml += self.compAcConv.xml + xml += self.dtEfAcConv.xml + xml += self.dsc.xml + if self.idePeriodo: + for periodo in self.idePeriodo: + xml += periodo.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.dtAcConv.xml = arquivo + self.tpAcConv.xml = arquivo + self.compAcConv.xml = arquivo + self.dtEfAcConv.xml = arquivo + self.dsc.xml = arquivo + self.idePeriodo = self.le_grupo('//eSocial/evtDeslig/inforDeslig/verbasResc/dmDev/infoPerAnt/ideADC/idePeriodo', IdePeriodo, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + +class InfoPerAnt(XMLNFe): + def __init__(self): + super(InfoPerAnt, self).__init__() + self.ideADC = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + if self.ideADC: + for ide in self.ideADC: + xml += ide.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.ideADC = self.le_grupo('//eSocial/evtDeslig/inforDeslig/verbasResc/dmDev/infoPerAnt/ideADC', IdeADC, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + +class InfoTrabInterm(XMLNFe): + def __init__(self): + super(InfoTrabInterm, self).__init__() + self.codConv = TagCaracter(name='codConv', tamanho=[1, 30], raiz='//codConv', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.codConv.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codConv.xml = arquivo + + xml = property(get_xml, set_xml) + + +class DmDev(XMLNFe): + def __init__(self): + super(DmDev, self).__init__() + self.ideDmDev = TagCaracter(nome='ideDmDev', tamanho=[1, 30], raiz='//dmDev', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.infoPerApur = [] + self.infoPerAnt = [] + self.infoTrabInterm = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.ideDmDev.xml + if self.infoPerApur: + for info in self.infoPerApur: + xml += info.xml + if self.infoPerAnt: + for ant in self.infoPerAnt: + xml += ant.xml + if self.infoTrabInterm: + for trabalho_intermitente in self.infoTrabInterm: + xml += trabalho_intermitente.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.ideDmDev.xml = arquivo + self.infoPerApur = self.le_grupo('//eSocial/evtDeslig/inforDeslig/verbasResc/dmDev/infoPerApur', InfoPerApur, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoPerAnt = self.le_grupo('//eSocial/evtDeslig/inforDeslig/verbasResc/dmDev/infoPerAnt', InfoPerAnt, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoTrabInterm = self.le_grupo('//eSocial/evtDeslig/inforDeslig/verbasResc/dmDev/infoTrabInterm', InfoTrabInterm, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class ProcJudTrab(XMLNFe): + def __init__(self): + super(ProcJudTrab, self).__init__() + self.tpTrib = TagInteiro(name='tpTrib', raiz='//procJudTrab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrProcJud = TagCaracter(name='nrProcJud', tamanho=[1, 20], raiz='//procJudTrab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codSusp = TagInteiro(name='codSusp', raiz='//procJudTrab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpTrib.xml + xml += self.nrProcJud.xml + xml += self.codSusp.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpTrib.xml = arquivo + self.nrProcJud.xml = arquivo + self.codSusp.xml = arquivo + + xml = property(get_xml, set_xml) + + +class RemunOutrEmpr(XMLNFe): + def __init__(self): + super(RemunOutrEmpr, self).__init__() + self.tpInsc = TagInteiro(name='tpInsc', raiz='//remunOutrEmpr', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrInsc = TagCaracter(name='nrInsc', tamanho=[1, 15], raiz='//remunOutrEmpr', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codCateg = TagInteiro(name='codCateg', raiz='//remunOutrEmpr', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vlrRemunOE = TagInteiro(name='vlrRemunOE', raiz='//remunOutrEmpr', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += self.codCateg.xml + xml += self.vlrRemunOE.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + self.codCateg.xml = arquivo + self.vlrRemunOE.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoMV(XMLNFe): + def __init__(self): + super(InfoMV, self).__init__() + self.indMV = TagInteiro(name='indMV', raiz='//infoMV', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.remunOutrEmpr = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.indMV.xml + if self.remunOutrEmpr: + for remuneracao in self.remunOutrEmpr: + xml += remuneracao.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.indMV.xml = arquivo + self.remunOutrEmpr = self.le_grupo('//eSocial/evtDeslig/inforDeslig/verbasResc/infoMV/remunOutrEmpr', RemunOutrEmpr, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class ProcCS(XMLNFe): + def __init__(self): + super(ProcCS, self).__init__() + self.nrProcJud = TagCaracter(nome='nrProcJud', tamanho=[1, 20], raiz='//procCS', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nrProcJud.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nrProcJud.xml = arquivo + + xml = property(get_xml, set_xml) + + +class VerbasResc(XMLNFe): + def __init__(self): + super(VerbasResc, self).__init__() + self.dmDev = [] + self.procJudTrab = [] + self.infoMV = [] + self.procCS = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + if len(self.dmDev) > 0: + for demostrativo in self.dmDev: + xml += demostrativo.xml + if len(self.procJudTrab) > 0: + for processoJud in self.procJudTrab: + xml += processoJud.xml + if len(self.infoMV) > 0: + for info in self.infoMV: + xml += info.xml + if len(self.procCS) > 0: + for processo in self.procCS: + xml += processo.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.dmDev = self.le_grupo('//eSocial/evtDeslig/inforDeslig/verbasResc/dmDev', DmDev, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.procJudTrab = self.le_grupo('//eSocial/evtDeslig/inforDeslig/verbasResc/procJudTrab', ProcJudTrab, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoMV = self.le_grupo('//eSocial/evtDeslig/inforDeslig/verbasResc/infoMV', HorarioIntervalo, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.procCS = self.le_grupo('//eSocial/evtDeslig/inforDeslig/verbasResc/procCs', HorarioIntervalo, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class Observacoes(XMLNFe): + def __init__(self): + super(Observacoes, self).__init__() + self.observacao = TagCaracter(nome='observacao', tamanho=[1, 255], raiz='//observacoes', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.observacao.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.observacao.xml = arquivo + + xml = property(get_xml, set_xml) + + +class SucessaoVinc(XMLNFe): + def __init__(self): + super(SucessaoVinc, self).__init__() + self.cnpjSucessora = TagCaracter(nome='cnpjSucessora', tamanho=[1, 14], raiz='//sucessaoVinc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cnpjSucessora.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cnpjSucessora.xml = arquivo + + xml = property(get_xml, set_xml) + + +class TransfTit(XMLNFe): + def __init__(self): + super(TransfTit, self).__init__() + self.cpfSubstituto = TagCaracter(name='cpfSubstituto', tamanho=[1, 11], raiz='//transfTit', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtNascto = TagData(name='dtNascto', raiz='//transfTit', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cpfSubstituto.xml + xml += self.dtNascto.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cpfSubstituto.xml = arquivo + self.dtNascto.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Quarentena(XMLNFe): + def __init__(self): + super(Quarentena, self).__init__() + self.dtFimQuar = TagData(name='dtFimQuar', raiz='//quarentena', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.dtFimQuar.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.dtFimQuar.xml = arquivo + + xml = property(get_xml, set_xml) + + +class ConsigFGTS(XMLNFe): + def __init__(self): + super(ConsigFGTS, self).__init__() + self.insConsig = TagCaracter(nome='insConsig', tamanho=[1, 5], raiz='//consigFGTS', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrContr = TagCaracter(nome='nrContr', tamanho=[1, 40], raiz='//consigFGTS', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.insConsig.xml + xml += self.nrContr + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.insConsig.xml = arquivo + self.nrContr.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoDeslig(XMLNFe): + def __init__(self): + super(InfoDeslig, self).__init__() + self.mtvDeslig = TagCaracter(nome='mtvDeslig', tamanho=[1, 2], raiz='//eSocial/evtDeslig/inforDeslig', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtDeslig = TagData(nome='dtDeslig', raiz='//eSocial/evtDeslig/inforDeslig', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.indPagtoAPI = TagCaracter(nome='indPagtoAPI', tamanho=[1, 1], raiz='//eSocial/evtDeslig/inforDeslig', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtProjFimAPI = TagData(nome='dtProjFimAPI', raiz='//eSocial/evtDeslig/inforDeslig', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.pensAlim = TagCaracter(nome='pensAlim', tamanho=[1, 1], raiz='//eSocial/evtDeslig/inforDeslig', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.percAliment = TagInteiro(nome='percAliment', raiz='//eSocial/evtDeslig/inforDeslig', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.vrAlim = TagInteiro(nome='vrAlim', raiz='//eSocial/evtDeslig/inforDeslig', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.nrCertObito = TagCaracter(nome='nrCertObito', raiz='//eSocial/evtDeslig/inforDeslig', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.nrProcTrab = TagCaracter(nome='nrProcTrab', tamanho=[1, 20], raiz='//eSocial/evtDeslig/inforDeslig', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.indCumprParc = TagInteiro(nome='indCumprParc', raiz='//eSocial/evtDeslig/inforDeslig', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.qtdDiasInterm = TagInteiro(nome='qtdDiasInterm', raiz='//eSocial/evtDeslig/inforDeslig', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.observacoes = [] + self.sucessaoVinc = [] + self.transfTit = [] + self.verbaResc = [] + self.quarentena = [] + self.consigFGTS = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.mtvDeslig.xml + xml += self.dtDeslig.xml + xml += self.indPagtoAPI.xml + xml += self.dtProjFimAPI.xml + xml += self.pensAlim.xml + xml += self.percAliment.xml + xml += self.vrAlim.xml + xml += self.nrCertObito.xml + xml += self.nrProcTrab.xml + xml += self.indCumprParc.xml + xml += self.qtdDiasInterm.xml + if len(self.observacoes) > 0: + for observacao in self.observacoes: + xml += observacao.xml + if len(self.sucessaoVinc) > 0: + for sucessao in self.sucessaoVinc: + xml += sucessao.xml + if len(self.transfTit) > 0: + for transferencia in self.transfTit: + xml += transferencia.xml + if len(self.verbaResc) > 0: + for verba in self.verbaResc: + xml += verba.xml + if len(self.quarentena) > 0: + for quaren in self.quarentena: + xml += quaren.xml + if len(self.consigFGTS) > 0: + for consig in self.consigFGTS: + xml += consig.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.mtvDeslig.xml = arquivo + self.dtDeslig.xml = arquivo + self.indPagtoAPI.xml = arquivo + self.dtProjFimAPI.xml = arquivo + self.pensAlim.xml = arquivo + self.percAliment.xml = arquivo + self.vrAlim.xml = arquivo + self.nrCertObito.xml = arquivo + self.nrProcTrab.xml = arquivo + self.indCumprParc.xml = arquivo + self.qtdDiasInterm.xml = arquivo + self.observacoes = self.le_grupo('//eSocial/evtDeslig/inforDeslig/observacoes', Observacoes, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.sucessaoVinc = self.le_grupo('//eSocial/evtDeslig/inforDeslig/sucessaoVinc', SucessaoVinc, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.transfTit = self.le_grupo('//eSocial/evtDeslig/inforDeslig/transfTit', TransfTit, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.quarentena = self.le_grupo('//eSocial/evtDeslig/inforDeslig/quarentena', Quarentena, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.consigFGTS = self.le_grupo('//eSocial/evtDeslig/inforDeslig/consigFGTS', ConsigFGTS, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class IdeVinculo(XMLNFe): + def __init__(self): + super(IdeVinculo, self).__init__() + self.cpfTrab = TagCaracter(nome='cpfTrab', tamanho=[1, 11], raiz='//eSocial/evtDeslig/ideVinculo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nisTrab = TagCaracter(nome='nisTrab', tamanho=[1, 11], raiz='//eSocial/evtDeslig/ideVinculo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.matricula = TagCaracter(nome='matricula', tamanho=[1, 30], raiz='//eSocial/evtDeslig/ideVinculo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cpfTrab.xml + xml += self.nisTrab.xml + xml += self.matricula.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cpfTrab.xml = arquivo + self.nisTrab.xml = arquivo + self.matricula.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEmpregador(XMLNFe): + def __init__(self): + super(IdeEmpregador, self).__init__() + self.tpInsc = TagInteiro(nome='tpInsc', raiz='//eSocial/evtDeslig/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='1') + self.nrInsc = TagCaracter(nome='nrInsc', tamanho=[1, 15], raiz='//eSocial/evtDeslig/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEvento(XMLNFe): + def __init__(self): + super(IdeEvento, self).__init__() + self.indRetif = TagInteiro(nome='indRetif', raiz='//eSocial/evtDeslig/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=1) + self.nrRecibo = TagCaracter(nome='nrRecibo', tamanho=[1, 40], raiz='//eSocial/evtDeslig/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.tpAmb = TagInteiro(nome='tpAmb' , raiz='//eSocial/evtDeslig/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=2) + self.procEmi = TagInteiro(nome='procEmi' , raiz='//eSocial/evtDeslig/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=1) + self.verProc = TagCaracter(nome='verProc', tamanho=[1, 20], raiz='//eSocial/evtDeslig/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.indRetif.xml + xml += self.nrRecibo.xml + xml += self.tpAmb.xml + xml += self.procEmi.xml + xml += self.verProc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.indRetif.xml = arquivo + self.nrRecibo.xml = arquivo + self.tpAmb.xml = arquivo + self.procEmi.xml = arquivo + self.verProc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class EvtDeslig(XMLNFe): + def __init__(self): + super(EvtDeslig, self).__init__() + self.ideEvento = IdeEvento() + self.ideEmpregador = IdeEmpregador() + self.ideVinculo = IdeVinculo() + self.infoDeslig = InfoDeslig() + self.Id = TagCaracter(nome='evtDeslig', propriedade='Id', tamanho=[1, 36], raiz='//eSocial/evtDeslig', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += self.Id.xml + xml += self.ideEvento.xml + xml += self.ideEmpregador.xml + xml += self.ideVinculo.xml + xml += self.infoDeslig.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.Id.xml = arquivo + self.ideEvento.xml = arquivo + self.ideEmpregador.xml = arquivo + self.infoDeslig.xml = arquivo + + xml = property(get_xml, set_xml) + + +class S2299(XMLNFe): + def __init__(self): + super(S2299, self).__init__() + self.evtDeslig = EvtDeslig() + self.caminho_esquema = os.path.join(DIRNAME, 'schema/', ESQUEMA_ATUAL + '/') + self.arquivo_esquema = 'evtDeslig.xsd' + self.id_evento = '' + self.tpInsc = '' + self.nrInsc = '' + # self.Signature = Signature() + self.evento = self.evtDeslig + self.xml_assinado = '' + + def get_xml(self): + xml = XMLNFe.get_xml(self) + # xml += ABERTURA + xml += '' + xml += self.evtDeslig.xml + + # + # Define a URI a ser assinada + # + # self.Signature.URI = '#' + self.evtInfoEmpregador.Id.valor + # xml += self.Signature.xml + xml += '' + + # Define o método de assinatura + # self.Signature.metodo = 'sha256' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.evtTabHorTur.xml = arquivo + # self.Signature.xml = self._le_noh('//eSocial/sig:Signature') + + def gera_id_evento(self, data_hora, sequencia=False): + # A identificação única do evento (Id) é composta por 36 caracteres, conforme o que segue: IDTNNNNNNNNNNNNNNAAAAMMDDHHMMSSQQQQQ + # ID - Texto Fixo "ID"; + # T - Tipo de Inscrição do Empregador (1 - CNPJ; 2 - CPF); + # NNNNNNNNNNNNNN - Número do CNPJ ou CPF do empregador - Completar com + # zeros à direita. No caso de pessoas jurídicas, o CNPJ informado deve conter 8 ou 14 + # posições de acordo com o enquadramento do contribuinte para preenchimento do campo + # {ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se + # necessário. + # AAAAMMDD - Ano, mês e dia da geração do evento; + # HHMMSS - Hora, minuto e segundo da geração do evento; + # QQQQQ - Número sequencial da chave. Incrementar somente quando ocorrer geração de + # eventos na mesma data/hora, completando com zeros à esquerda. + # OBS.: No caso de pessoas jurídicas, o CNPJ informado deverá conter 8 ou 14 posições de + # acordo com o enquadramento do contribuinte para preenchimento do campo {ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se necessário. + + if not sequencia: + sequencia=1 + + id_evento = 'ID' + id_evento += self.tpInsc + id_evento += self.nrInsc[0:8] + '000000' + id_evento += data_hora + id_evento += str(sequencia).zfill(5) + + # Define o Id + # + self.evtDeslig.Id.valor = id_evento + self.id_evento = id_evento + + xml = property(get_xml, set_xml) diff --git a/pysped/esocial/leiaute/evtExclusao.py b/pysped/esocial/leiaute/evtExclusao.py new file mode 100644 index 00000000..54bb5580 --- /dev/null +++ b/pysped/esocial/leiaute/evtExclusao.py @@ -0,0 +1,271 @@ +# -*- coding: utf-8 -*- +# -*- coding: utf-8 -*- +# +# PySPED - Python libraries to deal with Brazil's SPED Project +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Library General Public License as +# published by the Free Software Foundation, either version 2.1 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public License +# along with this program. If not, see . +# +# PySPED - Bibliotecas Python para o +# SPED - Sistema Público de Escrituração Digital +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# Este programa é um software livre: você pode redistribuir e/ou modificar +# este programa sob os termos da licença GNU Library General Public License, +# publicada pela Free Software Foundation, em sua versão 2.1 ou, de acordo +# com sua opção, qualquer versão posterior. +# +# Este programa é distribuido na esperança de que venha a ser útil, +# porém SEM QUAISQUER GARANTIAS, nem mesmo a garantia implícita de +# COMERCIABILIDADE ou ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Veja a +# GNU Library General Public License para mais detalhes. +# +# Você deve ter recebido uma cópia da GNU Library General Public License +# juntamente com este programa. Caso esse não seja o caso, acesse: +# +# + +from __future__ import (division, print_function, unicode_literals, + absolute_import) + +from builtins import str +import os +from pysped.xml_sped import * +from pysped.esocial.leiaute import ESQUEMA_ATUAL_VERSAO_2 as ESQUEMA_ATUAL + +DIRNAME = os.path.dirname(__file__) + +NAMESPACE_ESOCIAL = 'http://www.esocial.gov.br/schema/evt/evtExclusao/v02_04_02' + + +class IdeFolhaPagto(XMLNFe): + def __init__(self): + super(IdeFolhaPagto, self).__init__() + self.indApuracao = TagCaracter(nome='indApuracao', tamanho=[1, 1], raiz='//ideFolhaPagto', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.perApur = TagCaracter(nome='perApur', tamanho=[1, 7], raiz='//ideFolhaPagto', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.indApuracao.xml + xml += self.perApur.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.indApuracao.xml = arquivo + self.perApur.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeTrabalhador(XMLNFe): + def __init__(self): + super(IdeTrabalhador, self).__init__() + self.cpfTrab = TagCaracter(nome='cpfTrab', tamanho=[1, 11], raiz='//ideTrabalhador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nisTrab = TagCaracter(nome='nisTrab', tamanho=[1, 11], raiz='//ideTrabalhador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cpfTrab.xml + xml += self.nisTrab.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cpfTrab.xml = arquivo + self.nisTrab.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoExclusao(XMLNFe): + def __init__(self): + super(InfoExclusao, self).__init__() + self.tpEvento = TagCaracter(nome='tpEvento', tamanho=[1, 6], raiz='//eSocial/evtExclusao/infoExclusao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrRecEvt = TagCaracter(nome='nrRecEvt', tamanho=[1, 40], raiz='//eSocial/evtExclusao/infoExclusao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideTrabalhador = [] + self.ideFolhaPagto = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpEvento.xml + xml += self.nrRecEvt.xml + if len(self.ideTrabalhador) > 0: + for i in self.ideTrabalhador: + xml += i.xml + if len(self.ideFolhaPagto) > 0: + for i in self.ideFolhaPagto: + xml += i.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpEvento.xml = arquivo + self.nrRecEvt.xml = arquivo + self.ideTrabalhador = self.le_grupo('//eSocial/evtExclusao/infoExclusao/ideTrabalhador', IdeTrabalhador, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.ideFolhaPagto = self.le_grupo('//eSocial/evtExclusao/infoExclusao/ideFolhaPagto', IdeFolhaPagto, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class IdeEmpregador(XMLNFe): + def __init__(self): + super(IdeEmpregador, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', tamanho=[1, 1], raiz='//eSocial/evtExclusao/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='1') + self.nrInsc = TagCaracter(nome='nrInsc', tamanho=[1, 15], raiz='//eSocial/evtExclusao/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEvento(XMLNFe): + def __init__(self): + super(IdeEvento, self).__init__() + self.tpAmb = TagCaracter(nome='tpAmb', tamanho=[1, 1], raiz='//eSocial/evtExclusao/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='2') + self.procEmi = TagCaracter(nome='procEmi', tamanho=[1, 1], raiz='//eSocial/evtExclusao/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='1') + self.verProc = TagCaracter(nome='verProc', tamanho=[1, 20], raiz='//eSocial/evtExclusao/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpAmb.xml + xml += self.procEmi.xml + xml += self.verProc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpAmb.xml = arquivo + self.procEmi.xml = arquivo + self.verProc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class EvtExclusao(XMLNFe): + def __init__(self): + super(EvtExclusao, self).__init__() + self.Id = TagCaracter(nome='evtExclusao', propriedade='Id', raiz='//eSocial', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideEvento = IdeEvento() + self.ideEmpregador = IdeEmpregador() + self.infoExclusao = InfoExclusao() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += self.Id.xml + xml += self.ideEvento.xml + xml += self.ideEmpregador.xml + xml += self.infoExclusao.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.Id.xml = arquivo + self.ideEvento.xml = arquivo + self.ideEmpregador.xml = arquivo + self.infoExclusao.xml = arquivo + + xml = property(get_xml, set_xml) + + +class S3000(XMLNFe): + def __init__(self): + super(S3000, self).__init__() + self.evtExclusao = EvtExclusao() + self.caminho_esquema = os.path.join(DIRNAME, 'schema/', ESQUEMA_ATUAL + '/') + self.arquivo_esquema = 'evtExclusao.xsd' + self.id_evento = '' + self.tpInsc = '' + self.nrInsc = '' + # self.Signature = Signature() + self.evento = self.evtExclusao + self.xml_assinado = '' + + def get_xml(self): + xml = XMLNFe.get_xml(self) + #xml += ABERTURA + xml += '' + xml += self.evtExclusao.xml + + # + # Define a URI a ser assinada + # + # self.Signature.URI = '#' + self.evtInfoEmpregador.Id.valor + # xml += self.Signature.xml + xml += '' + + # Define o método de assinatura + # self.Signature.metodo = 'sha256' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.evtExclusao.xml = arquivo + # self.Signature.xml = self._le_noh('//eSocial/sig:Signature') + + def gera_id_evento(self, data_hora, sequencia=False): + #A identificação única do evento (Id) é composta por 36 caracteres, conforme o que segue: IDTNNNNNNNNNNNNNNAAAAMMDDHHMMSSQQQQQ + #ID - Texto Fixo "ID"; + #T - Tipo de Inscrição do Empregador (1 - CNPJ; 2 - CPF); + #NNNNNNNNNNNNNN - Número do CNPJ ou CPF do empregador - Completar com + #zeros à direita. No caso de pessoas jurídicas, o CNPJ informado deve conter 8 ou 14 + #posições de acordo com o enquadramento do contribuinte para preenchimento do campo + #{ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se + #necessário. + #AAAAMMDD - Ano, mês e dia da geração do evento; + #HHMMSS - Hora, minuto e segundo da geração do evento; + #QQQQQ - Número sequencial da chave. Incrementar somente quando ocorrer geração de + #eventos na mesma data/hora, completando com zeros à esquerda. + #OBS.: No caso de pessoas jurídicas, o CNPJ informado deverá conter 8 ou 14 posições de + #acordo com o enquadramento do contribuinte para preenchimento do campo {ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se necessário. + + if not sequencia: + sequencia=1 + + id_evento = 'ID' + id_evento += self.tpInsc + id_evento += self.nrInsc[0:8] + '000000' + id_evento += data_hora + id_evento += str(sequencia).zfill(5) + + # Define o Id + # + self.evtExclusao.Id.valor = id_evento + self.id_evento = id_evento + + xml = property(get_xml, set_xml) diff --git a/pysped/esocial/leiaute/evtFechaEvPer_20402.py b/pysped/esocial/leiaute/evtFechaEvPer_20402.py new file mode 100644 index 00000000..d00784fa --- /dev/null +++ b/pysped/esocial/leiaute/evtFechaEvPer_20402.py @@ -0,0 +1,267 @@ +# -*- coding: utf-8 -*- +# +# PySPED - Python libraries to deal with Brazil's SPED Project +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Library General Public License as +# published by the Free Software Foundation, either version 2.1 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public License +# along with this program. If not, see . +# +# PySPED - Bibliotecas Python para o +# SPED - Sistema Público de Escrituração Digital +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# Este programa é um software livre: você pode redistribuir e/ou modificar +# este programa sob os termos da licença GNU Library General Public License, +# publicada pela Free Software Foundation, em sua versão 2.1 ou, de acordo +# com sua opção, qualquer versão posterior. +# +# Este programa é distribuido na esperança de que venha a ser útil, +# porém SEM QUAISQUER GARANTIAS, nem mesmo a garantia implícita de +# COMERCIABILIDADE ou ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Veja a +# GNU Library General Public License para mais detalhes. +# +# Você deve ter recebido uma cópia da GNU Library General Public License +# juntamente com este programa. Caso esse não seja o caso, acesse: +# +# + +from __future__ import (division, print_function, unicode_literals, + absolute_import) + +from builtins import str +import os +from pysped.xml_sped import * +from pysped.esocial.leiaute import ESQUEMA_ATUAL_VERSAO_2 as ESQUEMA_ATUAL + +DIRNAME = os.path.dirname(__file__) + +NAMESPACE_ESOCIAL = 'http://www.esocial.gov.br/schema/evt/evtFechaEvPer/v02_04_02' + + +class InfoFech(XMLNFe): + def __init__(self): + super(InfoFech, self).__init__() + self.evtRemun = TagCaracter(nome='evtRemun', tamanho=[1, 1], raiz='//eSocial/evrFechaEvPer/infoFech', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.evtPgtos = TagCaracter(nome='evtPgtos', tamanho=[1, 1], raiz='//eSocial/evrFechaEvPer/infoFech', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.evtAqProd = TagCaracter(nome='evtAqProd', tamanho=[1, 1], raiz='//eSocial/evrFechaEvPer/infoFech', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.evtComProd = TagCaracter(nome='evtComProd', tamanho=[1, 1], raiz='//eSocial/evrFechaEvPer/infoFech', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.evtContratAvNP = TagCaracter(nome='evtContratAvNP', tamanho=[1, 1], raiz='//eSocial/evrFechaEvPer/infoFech', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.evtInfoComplPer = TagCaracter(nome='evtInfoComplPer', tamanho=[1, 1], raiz='//eSocial/evrFechaEvPer/infoFech', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.compSemMovto = TagCaracter(nome='compSemMovto', tamanho=[1, 1], raiz='//eSocial/evrFechaEvPer/infoFech', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.evtRemun.xml + xml += self.evtPgtos.xml + xml += self.evtAqProd.xml + xml += self.evtComProd.xml + xml += self.evtContratAvNP.xml + xml += self.evtInfoComplPer.xml + xml += self.compSemMovto.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.evtRemun.xml = arquivo + self.evtPgtos.xml = arquivo + self.evtAqProd.xml = arquivo + self.evtComProd.xml = arquivo + self.evtContratAvNP.xml = arquivo + self.evtInfoComplPer.xml = arquivo + self.compSemMovto.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeRespInf(XMLNFe): + def __init__(self): + super(IdeRespInf, self).__init__() + self.nmResp = TagCaracter(nome='nmResp', tamanho=[1, 60], raiz='//eSocial/evtFechaEvPer/ideRespInf', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.cpfResp = TagCaracter(nome='cpfResp', tamanho=[1, 11], raiz='//eSocial/evtFechaEvPer/ideRespInf', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.telefone = TagCaracter(nome='telefone', tamanho=[1, 13], raiz='//eSocial/evtFechaEvPer/ideRespInf', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.email = TagCaracter(nome='email', tamanho=[1, 60], raiz='//eSocial/evtFechaEvPer/ideRespInf', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nmResp.xml + xml += self.cpfResp.xml + xml += self.telefone.xml + xml += self.email.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nmResp.xml = arquivo + self.cpfResp.xml = arquivo + self.telefone.xml = arquivo + self.email.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEmpregador(XMLNFe): + def __init__(self): + super(IdeEmpregador, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', tamanho=[1, 1], raiz='//eSocial/evtFechaEvPer/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='1') + self.nrInsc = TagCaracter(nome='nrInsc', tamanho=[1, 15], raiz='//eSocial/evtFechaEvPer/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEvento(XMLNFe): + def __init__(self): + super(IdeEvento, self).__init__() + self.indApuracao = TagCaracter(nome='indApuracao', tamanho=[1, 1], raiz='//eSocial/evtFechaEvPer/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.perApur = TagCaracter(nome='perApur', tamanho=[1, 7], raiz='//eSocial/evtFechaEvPer/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.tpAmb = TagInteiro( nome='tpAmb', tamanho=[1, 1], raiz='//eSocial/evtFechaEvPer/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=2) + self.procEmi = TagInteiro( nome='procEmi', tamanho=[1, 1], raiz='//eSocial/evtFechaEvPer/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=1) + self.verProc = TagCaracter(nome='verProc', tamanho=[1, 20], raiz='//eSocial/evtFechaEvPer/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.indApuracao.xml + xml += self.perApur.xml + xml += self.tpAmb.xml + xml += self.procEmi.xml + xml += self.verProc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.indApuracao.xml = arquivo + self.perApur.xml = arquivo + self.tpAmb.xml = arquivo + self.procEmi.xml = arquivo + self.verProc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class EvtFechaEvPer(XMLNFe): + def __init__(self): + super(EvtFechaEvPer, self).__init__() + self.Id = TagCaracter(nome='evtFechaEvPer', propriedade='Id', raiz='//eSocial/evtFechaEvPer', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideEvento = IdeEvento() + self.ideEmpregador = IdeEmpregador() + self.ideRespInf = IdeRespInf() + self.infoFech = InfoFech() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += self.Id.xml + xml += self.ideEvento.xml + xml += self.ideEmpregador.xml + xml += self.ideRespInf.xml + xml += self.infoFech.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.Id.xml = arquivo + self.ideEvento.xml = arquivo + self.ideEmpregador.xml = arquivo + self.infoEmpregador.xml = arquivo + + xml = property(get_xml, set_xml) + + +class S1299(XMLNFe): + def __init__(self): + super(S1299, self).__init__() + self.evtFechaEvPer = EvtFechaEvPer() + self.caminho_esquema = os.path.join(DIRNAME, 'schema/', ESQUEMA_ATUAL + '/') + self.arquivo_esquema = 'evtFechaEvPer.xsd' + self.id_evento = '' + self.tpInsc = '' + self.nrInsc = '' + # self.Signature = Signature() + self.evento = self.evtFechaEvPer + self.xml_assinado = '' + + def get_xml(self): + xml = XMLNFe.get_xml(self) + #xml += ABERTURA + xml += '' + xml += self.evtFechaEvPer.xml + + # + # Define a URI a ser assinada + # + # self.Signature.URI = '#' + self.evtInfoEmpregador.Id.valor + # xml += self.Signature.xml + xml += '' + + # Define o método de assinatura + # self.Signature.metodo = 'sha256' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.evtFechaEvPer.xml = arquivo + # self.Signature.xml = self._le_noh('//eSocial/sig:Signature') + + def gera_id_evento(self, data_hora, sequencia=False): + #A identificação única do evento (Id) é composta por 36 caracteres, conforme o que segue: IDTNNNNNNNNNNNNNNAAAAMMDDHHMMSSQQQQQ + #ID - Texto Fixo "ID"; + #T - Tipo de Inscrição do Empregador (1 - CNPJ; 2 - CPF); + #NNNNNNNNNNNNNN - Número do CNPJ ou CPF do empregador - Completar com + #zeros à direita. No caso de pessoas jurídicas, o CNPJ informado deve conter 8 ou 14 + #posições de acordo com o enquadramento do contribuinte para preenchimento do campo + #{ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se + #necessário. + #AAAAMMDD - Ano, mês e dia da geração do evento; + #HHMMSS - Hora, minuto e segundo da geração do evento; + #QQQQQ - Número sequencial da chave. Incrementar somente quando ocorrer geração de + #eventos na mesma data/hora, completando com zeros à esquerda. + #OBS.: No caso de pessoas jurídicas, o CNPJ informado deverá conter 8 ou 14 posições de + #acordo com o enquadramento do contribuinte para preenchimento do campo {ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se necessário. + + if not sequencia: + sequencia=1 + + id_evento = 'ID' + id_evento += self.tpInsc + id_evento += self.nrInsc[0:8] + '000000' + id_evento += data_hora + id_evento += str(sequencia).zfill(5) + + # Define o Id + # + self.evtFechaEvPer.Id.valor = id_evento + self.id_evento = id_evento + + xml = property(get_xml, set_xml) diff --git a/pysped/esocial/leiaute/evtInfoEmpregador_20402.py b/pysped/esocial/leiaute/evtInfoEmpregador_20402.py index 82f88d27..18c77fa1 100644 --- a/pysped/esocial/leiaute/evtInfoEmpregador_20402.py +++ b/pysped/esocial/leiaute/evtInfoEmpregador_20402.py @@ -57,8 +57,9 @@ def __init__(self): super(Contato, self).__init__() self.nmCtt = TagCaracter(nome='nmCtt', tamanho=[ 1, 70] , raiz='//eSocial/evtInfoEmpregador/infoEmpregador/infoCadastro/contato', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) self.cpfCtt = TagCaracter(nome='cpfCtt', tamanho=[ 1, 11] , raiz='//eSocial/evtInfoEmpregador/infoEmpregador/infoCadastro/contato', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) - self.foneFixo = TagCaracter(nome='foneFixo', tamanho=[ 1, 11] , raiz='//eSocial/evtInfoEmpregador/infoEmpregador/infoCadastro/contato', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) - self.email = TagCaracter(nome='email', tamanho=[ 1, 11] , raiz='//eSocial/evtInfoEmpregador/infoEmpregador/infoCadastro/contato', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.foneFixo = TagCaracter(nome='foneFixo', tamanho=[1, 13] , raiz='//eSocial/evtInfoEmpregador/infoEmpregador/infoCadastro/contato', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.foneCel = TagCaracter(nome='foneCel', tamanho=[0, 13] , raiz='//eSocial/evtInfoEmpregador/infoEmpregador/infoCadastro/contato', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.email = TagCaracter(nome='email', tamanho=[0, 60] , raiz='//eSocial/evtInfoEmpregador/infoEmpregador/infoCadastro/contato', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) def get_xml(self): xml = XMLNFe.get_xml(self) @@ -66,6 +67,7 @@ def get_xml(self): xml += self.nmCtt.xml xml += self.cpfCtt.xml xml += self.foneFixo.xml + xml += self.foneCel.xml xml += self.email.xml xml += '' return xml @@ -75,6 +77,7 @@ def set_xml(self, arquivo): self.nmCtt.xml = arquivo self.cpfCtt.xml = arquivo self.foneFixo.xml = arquivo + self.foneCel.xml = arquivo self.email.xml = arquivo xml = property(get_xml, set_xml) @@ -110,11 +113,11 @@ def get_xml(self): xml += self.indEtt.xml xml += self.nrRegEtt.xml xml += self.contato.xml - xml += '' - #xml += '' - #xml += self.indSitPJ.xml - #xml += '' - #xml += '' + xml += '' + xml += '' + xml += self.indSitPJ.xml + xml += '' + xml += '' xml += '' return xml @@ -136,6 +139,28 @@ def set_xml(self, arquivo): xml = property(get_xml, set_xml) +class NovaValidade(XMLNFe): + def __init__(self): + super(NovaValidade, self).__init__() + self.iniValid = TagCaracter(nome='iniValid', raiz='//eSocial/evtInfoEmpregador/infoEmpregador/novaValidade', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.fimValid = TagCaracter(nome='fimValid', raiz='//eSocial/evtInfoEmpregador/infoEmpregador/novaValidade', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.iniValid.xml + xml += self.fimValid.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.iniValid.xml = arquivo + self.fimValid.xml = arquivo + + xml = property(get_xml, set_xml) + + class IdePeriodo(XMLNFe): def __init__(self): super(IdePeriodo, self).__init__() @@ -163,7 +188,7 @@ def __init__(self): super(InfoEmpregador, self).__init__() self.idePeriodo = IdePeriodo() self.infoCadastro = InfoCadastro() - self.novaValidade = IdePeriodo() + self.novaValidade = NovaValidade() self.operacao = 'I' def get_xml(self): @@ -180,7 +205,6 @@ def get_xml(self): xml += self.infoCadastro.xml xml += self.novaValidade.xml xml += '' - elif self.operacao == 'E': xml += '' xml += self.idePeriodo.xml @@ -278,8 +302,11 @@ def __init__(self): self.caminho_esquema = os.path.join(DIRNAME, 'schema/', ESQUEMA_ATUAL + '/') self.arquivo_esquema = 'evtInfoEmpregador.xsd' self.id_evento = '' - self.Signature = Signature() + self.tpInsc = '' + self.nrInsc = '' + # self.Signature = Signature() self.evento = self.evtInfoEmpregador + self.xml_assinado = '' def get_xml(self): xml = XMLNFe.get_xml(self) @@ -290,17 +317,20 @@ def get_xml(self): # # Define a URI a ser assinada # - self.Signature.URI = '#' + self.evtInfoEmpregador.Id.valor - xml += self.Signature.xml + # self.Signature.URI = '#' + self.evtInfoEmpregador.Id.valor + # xml += self.Signature.xml xml += '' + + # Define o método de assinatura + # self.Signature.metodo = 'sha256' return xml def set_xml(self, arquivo): if self._le_xml(arquivo): self.evtInfoEmpregador.xml = arquivo - self.Signature.xml = self._le_noh('//eSocial/sig:Signature') + # self.Signature.xml = self._le_noh('//eSocial/sig:Signature') - def gera_id_evento(self, data_hora): + def gera_id_evento(self, data_hora, sequencia=False): #A identificação única do evento (Id) é composta por 36 caracteres, conforme o que segue: IDTNNNNNNNNNNNNNNAAAAMMDDHHMMSSQQQQQ #ID - Texto Fixo "ID"; #T - Tipo de Inscrição do Empregador (1 - CNPJ; 2 - CPF); @@ -316,11 +346,14 @@ def gera_id_evento(self, data_hora): #OBS.: No caso de pessoas jurídicas, o CNPJ informado deverá conter 8 ou 14 posições de #acordo com o enquadramento do contribuinte para preenchimento do campo {ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se necessário. + if not sequencia: + sequencia=1 + id_evento = 'ID' - id_evento += self.evtInfoEmpregador.ideEmpregador.tpInsc.valor - id_evento += str(self.evtInfoEmpregador.ideEmpregador.nrInsc.valor).zfill(14) + id_evento += self.tpInsc + id_evento += self.nrInsc[0:8] + '000000' id_evento += data_hora - id_evento += str(1).zfill(5) + id_evento += str(sequencia).zfill(5) # Define o Id # diff --git a/pysped/esocial/leiaute/evtIrrf.py b/pysped/esocial/leiaute/evtIrrf.py new file mode 100644 index 00000000..c4847b9f --- /dev/null +++ b/pysped/esocial/leiaute/evtIrrf.py @@ -0,0 +1,238 @@ +# -*- coding: utf-8 -*- +# -*- coding: utf-8 -*- +# +# PySPED - Python libraries to deal with Brazil's SPED Project +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Library General Public License as +# published by the Free Software Foundation, either version 2.1 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public License +# along with this program. If not, see . +# +# PySPED - Bibliotecas Python para o +# SPED - Sistema Público de Escrituração Digital +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# Este programa é um software livre: você pode redistribuir e/ou modificar +# este programa sob os termos da licença GNU Library General Public License, +# publicada pela Free Software Foundation, em sua versão 2.1 ou, de acordo +# com sua opção, qualquer versão posterior. +# +# Este programa é distribuido na esperança de que venha a ser útil, +# porém SEM QUAISQUER GARANTIAS, nem mesmo a garantia implícita de +# COMERCIABILIDADE ou ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Veja a +# GNU Library General Public License para mais detalhes. +# +# Você deve ter recebido uma cópia da GNU Library General Public License +# juntamente com este programa. Caso esse não seja o caso, acesse: +# +# + +from __future__ import (division, print_function, unicode_literals, + absolute_import) + +from builtins import str +import os +from pysped.xml_sped import * +from pysped.esocial.leiaute import ESQUEMA_ATUAL_VERSAO_2 as ESQUEMA_ATUAL + +DIRNAME = os.path.dirname(__file__) + +NAMESPACE_ESOCIAL = 'http://www.esocial.gov.br/schema/evt/evtIrrf/v02_04_02' + + +class InfoCRContrib(XMLNFe): + def __init__(self): + super(InfoCRContrib, self).__init__() + self.tpCR = TagCaracter(nome='tpCR', tamanho=[1, 6], raiz='//infoCRContrib', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrCR = TagDecimal(nome='vrCR', tamanho=[1, 14, 2], raiz='//infoCRContrib', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpCR.xml + xml += self.vrCR.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpCR.xml = arquivo + self.vrCR.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoIRRF(XMLNFe): + def __init__(self): + super(InfoIRRF, self).__init__() + self.nrRecArqBase = TagCaracter(nome='nrRecArqBase', tamanho=[1, 40], raiz='//eSocial/evtIrrf/infoIRRF', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.indExistInfo = TagCaracter(nome='indExistInfo', tamanho=[1, 1], raiz='//eSocial/evtIrrf/infoIRRF', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.infoCRContrib = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nrRecArqBase.xml + xml += self.indExistInfo.xml + if len(self.infoCRContrib) > 0: + for i in self.infoCRContrib: + xml += i.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nrRecArqBase.xml = arquivo + self.indExistInfo.xml = arquivo + self.infoCRContrib = self.le_grupo('//eSocial/evtIrrf/infoIRRF/infoCRContrib', InfoCRContrib, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class IdeEmpregador(XMLNFe): + def __init__(self): + super(IdeEmpregador, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', tamanho=[1, 1], raiz='//eSocial/evtIrrf/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='1') + self.nrInsc = TagCaracter(nome='nrInsc', tamanho=[1, 15], raiz='//eSocial/evtIrrf/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEvento(XMLNFe): + def __init__(self): + super(IdeEvento, self).__init__() + self.perApur = TagCaracter(nome='perApur', tamanho=[1, 7], raiz='//eSocial/evtIrrf/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.perApur.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.perApur.xml = arquivo + + xml = property(get_xml, set_xml) + + +class EvtIrrf(XMLNFe): + def __init__(self): + super(EvtIrrf, self).__init__() + self.Id = TagCaracter(nome='evtIrrf', propriedade='Id', raiz='//eSocial', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideEvento = IdeEvento() + self.ideEmpregador = IdeEmpregador() + self.infoIRRF = InfoIRRF() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += self.Id.xml + xml += self.ideEvento.xml + xml += self.ideEmpregador.xml + xml += self.infoIRRF.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.Id.xml = arquivo + self.ideEvento.xml = arquivo + self.ideEmpregador.xml = arquivo + self.infoIRRF.xml = arquivo + + xml = property(get_xml, set_xml) + + +class S5012(XMLNFe): + def __init__(self): + super(S5012, self).__init__() + self.evtIrrf = EvtIrrf() + self.caminho_esquema = os.path.join(DIRNAME, 'schema/', ESQUEMA_ATUAL + '/') + self.arquivo_esquema = 'evtIrrf.xsd' + self.id_evento = '' + self.tpInsc = '' + self.nrInsc = '' + self.Signature = Signature() + self.evento = self.evtIrrf + self.xml_assinado = '' + + def get_xml(self): + xml = XMLNFe.get_xml(self) + #xml += ABERTURA + xml += '' + xml += self.evtIrrf.xml + + # + # Define a URI a ser assinada + # + self.Signature.URI = '#' + self.evtIrrf.Id.valor + xml += self.Signature.xml + xml += '' + + # Define o método de assinatura + # self.Signature.metodo = 'sha256' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.evtIrrf.xml = arquivo + self.Signature.xml = self._le_noh('//sig:Signature') + + def gera_id_evento(self, data_hora, sequencia=False): + #A identificação única do evento (Id) é composta por 36 caracteres, conforme o que segue: IDTNNNNNNNNNNNNNNAAAAMMDDHHMMSSQQQQQ + #ID - Texto Fixo "ID"; + #T - Tipo de Inscrição do Empregador (1 - CNPJ; 2 - CPF); + #NNNNNNNNNNNNNN - Número do CNPJ ou CPF do empregador - Completar com + #zeros à direita. No caso de pessoas jurídicas, o CNPJ informado deve conter 8 ou 14 + #posições de acordo com o enquadramento do contribuinte para preenchimento do campo + #{ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se + #necessário. + #AAAAMMDD - Ano, mês e dia da geração do evento; + #HHMMSS - Hora, minuto e segundo da geração do evento; + #QQQQQ - Número sequencial da chave. Incrementar somente quando ocorrer geração de + #eventos na mesma data/hora, completando com zeros à esquerda. + #OBS.: No caso de pessoas jurídicas, o CNPJ informado deverá conter 8 ou 14 posições de + #acordo com o enquadramento do contribuinte para preenchimento do campo {ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se necessário. + + if not sequencia: + sequencia=1 + + id_evento = 'ID' + id_evento += self.tpInsc + id_evento += self.nrInsc[0:8] + '000000' + id_evento += data_hora + id_evento += str(sequencia).zfill(5) + + # Define o Id + # + self.evtIrrf.Id.valor = id_evento + self.id_evento = id_evento + + xml = property(get_xml, set_xml) diff --git a/pysped/esocial/leiaute/evtIrrfBenef_20402.py b/pysped/esocial/leiaute/evtIrrfBenef_20402.py new file mode 100644 index 00000000..5628cf35 --- /dev/null +++ b/pysped/esocial/leiaute/evtIrrfBenef_20402.py @@ -0,0 +1,402 @@ +# -*- coding: utf-8 -*- +# -*- coding: utf-8 -*- +# +# PySPED - Python libraries to deal with Brazil's SPED Project +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Library General Public License as +# published by the Free Software Foundation, either version 2.1 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public License +# along with this program. If not, see . +# +# PySPED - Bibliotecas Python para o +# SPED - Sistema Público de Escrituração Digital +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# Este programa é um software livre: você pode redistribuir e/ou modificar +# este programa sob os termos da licença GNU Library General Public License, +# publicada pela Free Software Foundation, em sua versão 2.1 ou, de acordo +# com sua opção, qualquer versão posterior. +# +# Este programa é distribuido na esperança de que venha a ser útil, +# porém SEM QUAISQUER GARANTIAS, nem mesmo a garantia implícita de +# COMERCIABILIDADE ou ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Veja a +# GNU Library General Public License para mais detalhes. +# +# Você deve ter recebido uma cópia da GNU Library General Public License +# juntamente com este programa. Caso esse não seja o caso, acesse: +# +# + +from __future__ import (division, print_function, unicode_literals, + absolute_import) + +from builtins import str +import os +from pysped.xml_sped import * +from pysped.esocial.leiaute import ESQUEMA_ATUAL_VERSAO_2 as ESQUEMA_ATUAL + +DIRNAME = os.path.dirname(__file__) + +NAMESPACE_ESOCIAL = 'http://www.esocial.gov.br/schema/evt/evtIrrfBenef/v02_04_02' + + +class EndExt(XMLNFe): + def __init__(self): + super(EndExt, self).__init__() + self.dscLograd = TagCaracter(nome='dscLograd', tamanho=[1, 80], raiz='//idePgtoExt/endExt', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrLograd = TagCaracter(nome='nrLograd', tamanho=[1, 10], raiz='//idePgtoExt/endExt', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.complem = TagCaracter(nome='complem', tamanho=[1, 30], raiz='//idePgtoExt/endExt', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.bairro = TagCaracter(nome='bairro', tamanho=[1, 60], raiz='//idePgtoExt/endExt', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.nmCid = TagCaracter(nome='nmCid', tamanho=[1, 50], raiz='//idePgtoExt/endExt', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codPostal = TagCaracter(nome='codPostal', tamanho=[1, 12], raiz='//idePgtoExt/endExt', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.dscLograd.xml + xml += self.nrLograd.xml + xml += self.complem.xml + xml += self.bairro.xml + xml += self.nmCid.xml + xml += self.codPostal.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.dscLograd.xml = arquivo + self.nrLograd.xml = arquivo + self.complem.xml = arquivo + self.bairro.xml = arquivo + self.nmCid.xml = arquivo + self.codPostal.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdePais(XMLNFe): + def __init__(self): + super(IdePais, self).__init__() + self.codPais = TagCaracter(nome='codPais', tamanho=[1, 30], raiz='//idePgtoExt/idePais', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.indNIF = TagCaracter(nome='indNIF', tamanho=[1, 1], raiz='//idePgtoExt/idePais', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nifBenif = TagCaracter(nome='nifBenif', tamanho=[1, 20], raiz='//idePgtoExt/idePais', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.codPais.xml + xml += self.indNIF.xml + xml += self.nifBenif.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codPais.xml = arquivo + self.indNIF.xml = arquivo + self.nifBenif.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdePgtoExt(XMLNFe): + def __init__(self): + super(IdePgtoExt, self).__init__() + self.idePais = IdePais() + self.endExt = EndExt() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.idePais.xml + xml += self.endExt.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.idePais.xml = arquivo + self.endExt.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Irrf(XMLNFe): + def __init__(self): + super(Irrf, self).__init__() + self.tpCR = TagCaracter(nome='tpCR', raiz='//irrf', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrIrrfDesc = TagDecimal( nome='vrIrrfDesc', tamanho=[1, 14, 2], raiz='//irrf', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpCR.xml + xml += self.vrIrrfDesc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpCR.xml = arquivo + self.vrIrrfDesc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class BasesIrrf(XMLNFe): + def __init__(self): + super(BasesIrrf, self).__init__() + self.tpValor = TagCaracter(nome='tpValor', tamanho=[1, 2], raiz='//basesIrrf', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.valor = TagDecimal( nome='valor', tamanho=[1, 14, 2], raiz='//basesIrrf', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpValor.xml + xml += self.valor.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpValor.xml = arquivo + self.valor.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoIrrf(XMLNFe): + def __init__(self): + super(InfoIrrf, self).__init__() + self.codCateg = TagCaracter(nome='codCateg', tamanho=[1, 3], raiz='//infoIrrf', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.indResBr = TagCaracter(nome='indResBr', tamanho=[1, 1], raiz='//infoIrrf', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.basesIrrf = [] + self.irrf = [] + self.idePgtoExt = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.codCateg.xml + xml += self.indResBr.xml + if len(self.basesIrrf): + for b in self.basesIrrf: + xml += b.xml + if len(self.irrf): + for i in self.irrf: + xml += i.xml + if len(self.idePgtoExt): + for i in self.idePgtoExt: + xml += i.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codCateg.xml = arquivo + self.indResBr.xml = arquivo + self.basesIrrf = self.le_grupo('//infoIrrf/basesIrrf', BasesIrrf, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.irrf = self.le_grupo('//infoIrrf/irrf', Irrf, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.idePgtoExt = self.le_grupo('//infoIrrf/idePgtoExt', IdePgtoExt, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class InfoDep(XMLNFe): + def __init__(self): + super(InfoDep, self).__init__() + self.vrDedDep = TagDecimal(nome='vrDedDep', tamanho=[1, 14, 2], raiz='//infoDep', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.vrDedDep.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.vrDedDep.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeTrabalhador(XMLNFe): + def __init__(self): + super(IdeTrabalhador, self).__init__() + self.cpfTrab = TagCaracter(nome='cpfTrab', tamanho=[1, 11], raiz='//eSocial/evtIrrfBenef/ideTrabalhador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cpfTrab.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cpfTrab.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEmpregador(XMLNFe): + def __init__(self): + super(IdeEmpregador, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', tamanho=[1, 1], raiz='//eSocial/evtIrrfBenef/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='1') + self.nrInsc = TagCaracter(nome='nrInsc', tamanho=[1, 15], raiz='//eSocial/evtIrrfBenef/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEvento(XMLNFe): + def __init__(self): + super(IdeEvento, self).__init__() + self.nrRecArqBase = TagCaracter(nome='nrRecArqBase', tamanho=[1, 40], raiz='//eSocial/evtIrrfBenef/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.perApur = TagCaracter(nome='perApur', tamanho=[1, 7], raiz='//eSocial/evtIrrfBenef/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nrRecArqBase.xml + xml += self.perApur.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nrRecArqBase.xml = arquivo + self.perApur.xml = arquivo + + xml = property(get_xml, set_xml) + + +class EvtIrrfBenef(XMLNFe): + def __init__(self): + super(EvtIrrfBenef, self).__init__() + self.Id = TagCaracter(nome='evtIrrfBenef', propriedade='Id', raiz='//eSocial', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideEvento = IdeEvento() + self.ideEmpregador = IdeEmpregador() + self.ideTrabalhador = IdeTrabalhador() + self.infoDep = [] + self.infoIrrf = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += self.Id.xml + xml += self.ideEvento.xml + xml += self.ideEmpregador.xml + xml += self.ideTrabalhador.xml + if len(self.infoDep): + for i in self.infoDep: + xml += i.xml + if len(self.infoIrrf): + for i in self.infoIrrf: + xml += i.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.Id.xml = arquivo + self.ideEvento.xml = arquivo + self.ideEmpregador.xml = arquivo + self.ideTrabalhador.xml = arquivo + self.infoDep = self.le_grupo('//eSocial/evtIrrfBenef/infoDep', InfoDep, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoIrrf = self.le_grupo('//eSocial/evtIrrfBenef/infoIrrf', InfoIrrf, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class S5002(XMLNFe): + def __init__(self): + super(S5002, self).__init__() + self.evtIrrfBenef = EvtIrrfBenef() + self.caminho_esquema = os.path.join(DIRNAME, 'schema/', ESQUEMA_ATUAL + '/') + self.arquivo_esquema = 'evtIrrfBenef.xsd' + self.id_evento = '' + self.tpInsc = '' + self.nrInsc = '' + self.Signature = Signature() + self.evento = self.evtIrrfBenef + self.xml_assinado = '' + + def get_xml(self): + xml = XMLNFe.get_xml(self) + #xml += ABERTURA + xml += '' + xml += self.evtIrrfBenef.xml + + # + # Define a URI a ser assinada + # + self.Signature.URI = '#' + self.evtIrrfBenef.Id.valor + xml += self.Signature.xml + xml += '' + + # Define o método de assinatura + # self.Signature.metodo = 'sha256' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.evtIrrfBenef.xml = arquivo + self.Signature.xml = self._le_noh('//sig:Signature') + + def gera_id_evento(self, data_hora, sequencia=False): + #A identificação única do evento (Id) é composta por 36 caracteres, conforme o que segue: IDTNNNNNNNNNNNNNNAAAAMMDDHHMMSSQQQQQ + #ID - Texto Fixo "ID"; + #T - Tipo de Inscrição do Empregador (1 - CNPJ; 2 - CPF); + #NNNNNNNNNNNNNN - Número do CNPJ ou CPF do empregador - Completar com + #zeros à direita. No caso de pessoas jurídicas, o CNPJ informado deve conter 8 ou 14 + #posições de acordo com o enquadramento do contribuinte para preenchimento do campo + #{ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se + #necessário. + #AAAAMMDD - Ano, mês e dia da geração do evento; + #HHMMSS - Hora, minuto e segundo da geração do evento; + #QQQQQ - Número sequencial da chave. Incrementar somente quando ocorrer geração de + #eventos na mesma data/hora, completando com zeros à esquerda. + #OBS.: No caso de pessoas jurídicas, o CNPJ informado deverá conter 8 ou 14 posições de + #acordo com o enquadramento do contribuinte para preenchimento do campo {ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se necessário. + + if not sequencia: + sequencia=1 + + id_evento = 'ID' + id_evento += self.tpInsc + id_evento += self.nrInsc[0:8] + '000000' + id_evento += data_hora + id_evento += str(sequencia).zfill(5) + + # Define o Id + # + self.evtIrrfBenef.Id.valor = id_evento + self.id_evento = id_evento + + xml = property(get_xml, set_xml) diff --git a/pysped/esocial/leiaute/evtPgtos_20402.py b/pysped/esocial/leiaute/evtPgtos_20402.py new file mode 100644 index 00000000..25b799b5 --- /dev/null +++ b/pysped/esocial/leiaute/evtPgtos_20402.py @@ -0,0 +1,734 @@ +# -*- coding: utf-8 -*- +# -*- coding: utf-8 -*- +# +# PySPED - Python libraries to deal with Brazil's SPED Project +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Library General Public License as +# published by the Free Software Foundation, either version 2.1 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public License +# along with this program. If not, see . +# +# PySPED - Bibliotecas Python para o +# SPED - Sistema Público de Escrituração Digital +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# Este programa é um software livre: você pode redistribuir e/ou modificar +# este programa sob os termos da licença GNU Library General Public License, +# publicada pela Free Software Foundation, em sua versão 2.1 ou, de acordo +# com sua opção, qualquer versão posterior. +# +# Este programa é distribuido na esperança de que venha a ser útil, +# porém SEM QUAISQUER GARANTIAS, nem mesmo a garantia implícita de +# COMERCIABILIDADE ou ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Veja a +# GNU Library General Public License para mais detalhes. +# +# Você deve ter recebido uma cópia da GNU Library General Public License +# juntamente com este programa. Caso esse não seja o caso, acesse: +# +# + +from __future__ import (division, print_function, unicode_literals, + absolute_import) + +from builtins import str +import os +from pysped.xml_sped import * +from pysped.esocial.leiaute import ESQUEMA_ATUAL_VERSAO_2 as ESQUEMA_ATUAL + +DIRNAME = os.path.dirname(__file__) + +NAMESPACE_ESOCIAL = 'http://www.esocial.gov.br/schema/evt/evtPgtos/v02_04_02' + + +class IdePgtoExt(XMLNFe): + def __init__(self): + super(IdePgtoExt, self).__init__() + self.codPais = TagCaracter(nome='codPais', tamanho=[1, 3], raiz='//idePgtoExt/idePais', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.indNIF = TagCaracter(nome='indNIF', tamanho=[1, 1], raiz='//idePgtoExt/idePais', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nifBenef = TagCaracter(nome='nifBenef', tamanho=[1, 1], raiz='//idePgtoExt/idePais', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.dscLograd = TagCaracter(nome='dscLograd', tamanho=[1, 80], raiz='//idePgtoExt/endExt', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrLograd = TagCaracter(nome='nrLograd', tamanho=[1, 10], raiz='//idePgtoExt/endExt', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.complem = TagCaracter(nome='complem', tamanho=[1, 30], raiz='//idePgtoExt/endExt', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.bairro = TagCaracter(nome='bairro', tamanho=[1, 60], raiz='//idePgtoExt/endExt', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.nmCid = TagCaracter(nome='nmCid', tamanho=[1, 50], raiz='//idePgtoExt/endExt', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codPostal = TagCaracter(nome='codPostal', tamanho=[1, 12], raiz='//idePgtoExt/endExt', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += '' + xml += self.codPais.xml + xml += self.indNIF.xml + xml += self.nifBenef.xml + xml += '' + xml += '' + xml += self.dscLograd.xml + xml += self.nrLograd.xml + xml += self.complem.xml + xml += self.bairro.xml + xml += self.nmCid.xml + xml += self.codPostal.xml + xml += '' + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codPais.xml = arquivo + self.indNIF.xml = arquivo + self.nifBenef.xml = arquivo + self.dscLograd.xml = arquivo + self.nrLograd.xml = arquivo + self.complem.xml = arquivo + self.bairro.xml = arquivo + self.nmCid.xml = arquivo + self.codPostal.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoPgtoAnt(XMLNFe): + def __init__(self): + super(InfoPgtoAnt, self).__init__() + self.tpBcIRRF = TagCaracter(nome='tpBcIRRF', tamanho=[1, 2], raiz='//infoPgtoAnt', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrBcIRRF = TagDecimal( nome='vrBcIRRF', tamanho=[1, 14, 2], raiz='//infoPgtoAnt', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpBcIRRF.xml + xml += self.vrBcIRRF.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpBcIRRF.xml = arquivo + self.vrBcIRRF.xml = arquivo + + xml = property(get_xml, set_xml) + + +class DetPgtoAnt(XMLNFe): + def __init__(self): + super(DetPgtoAnt, self).__init__() + self.codCateg = TagCaracter(nome='codCateg', tamanho=[1, 3], raiz='//detPgtoAnt', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.infoPgtoAnt = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.codCateg.xml + if len(self.infoPgtoAnt) > 0 : + for r in self.infoPgtoAnt: + xml += r.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codCateg.xml = arquivo + self.infoPgtoAnt = self.le_grupo('//eSocial/evtPgtos/ideBenef/infoPgto/detPgtoAnt/infoPgtoAnt', InfoPgtoAnt, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class DetRubrFerPenAlim(XMLNFe): + def __init__(self): + super(DetRubrFerPenAlim, self).__init__() + self.cpfBenef = TagCaracter(nome='cpfBenef', tamanho=[1, 11], raiz='//penAlim', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtNasctoBenef = TagData( nome='dtNasctoBenef', raiz='//penAlim', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.nmBenefic = TagCaracter(nome='nmBenefic', tamanho=[1, 70], raiz='//penAlim', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vlrPensao = TagDecimal( nome='vlrPensao', tamanho=[1, 14, 2], raiz='//penAlim', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cpfBenef.xml + xml += self.dtNasctoBenef.xml + xml += self.nmBenefic.xml + xml += self.vlrPensao.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cpfBenef.xml = arquivo + self.dtNasctoBenef.xml = arquivo + self.nmBenefic.xml = arquivo + self.vlrPensao.xml = arquivo + + xml = property(get_xml, set_xml) + + +class DetRubrFer(XMLNFe): + def __init__(self): + super(DetRubrFer, self).__init__() + self.codRubr = TagCaracter(nome='codRubr', tamanho=[1, 30], raiz='//detRubrFer', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideTabRubr = TagCaracter(nome='ideTabRubr', tamanho=[1, 8], raiz='//detRubrFer', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.qtdRubr = TagDecimal( nome='qtdRubr', tamanho=[1, 6, 2], raiz='//detRubrFer', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.fatorRubr = TagDecimal( nome='fatorRubr' , tamanho=[1, 5, 2], raiz='//detRubrFer', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.vrUnit = TagDecimal( nome='vrUnit' , tamanho=[1, 14, 2], raiz='//detRubrFer', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.vrRubr = TagDecimal( nome='vrRubr' , tamanho=[1, 14, 2], raiz='//detRubrFer', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.penAlim = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.codRubr.xml + xml += self.ideTabRubr.xml + xml += self.qtdRubr.xml + xml += self.fatorRubr.xml + xml += self.vrUnit.xml + xml += self.vrRubr.xml + if len(self.penAlim) > 0: + for p in self.penAlim: + xml += p.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codRubr.xml = arquivo + self.ideTabRubr.xml = arquivo + self.qtdRubr.xml = arquivo + self.fatorRubr.xml = arquivo + self.vrUnit.xml = arquivo + self.vrRubr.xml = arquivo + self.penAlim = self.le_grupo('//eSocial/evtPgtos/ideBenef/infoPgto/detPgtoFer/detRubrFer/penAlim', DetRubrFerPenAlim, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class DetPgtoFer(XMLNFe): + def __init__(self): + super(DetPgtoFer, self).__init__() + self.codCateg = TagCaracter(nome='codCateg', tamanho=[1, 3], raiz='//detPgtoFer', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.matricula = TagCaracter(nome='matricula', tamanho=[1, 30], raiz='//detPgtoFer', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.dtIniGoz = TagData( nome='dtIniGoz', raiz='//detPgtoFer', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.qtDias = TagCaracter(nome='qtDias', tamanho=[1, 2], raiz='//detPgtoFer', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrLiq = TagDecimal( nome='vrLiq', tamanho=[1, 14, 2], raiz='//detPgtoFer', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.detRubrFer = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.codCateg.xml + xml += self.matricula.xml + xml += self.dtIniGoz.xml + xml += self.qtDias.xml + xml += self.vrLiq.xml + if len(self.detRubrFer) > 0 : + for r in self.detRubrFer: + xml += r.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codCateg.xml = arquivo + self.matricula.xml = arquivo + self.dtIniGoz.xml = arquivo + self.qtDias.xml = arquivo + self.vrLiq.xml = arquivo + self.detRubrFer = self.le_grupo('//eSocial/evtPgtos/ideBenef/infoPgto/detPgtoFer/detRubrFer', DetRubrFer, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class DetPgtoBenPrInfoPgtoParc(XMLNFe): + def __init__(self): + super(DetPgtoBenPrInfoPgtoParc, self).__init__() + self.codRubr = TagCaracter(nome='codRubr', tamanho=[1, 30], raiz='//infoPgtoParc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideTabRubr = TagCaracter(nome='ideTabRubr', tamanho=[1, 8], raiz='//infoPgtoParc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.qtdRubr = TagDecimal( nome='qtdRubr', tamanho=[1, 6, 2], raiz='//infoPgtoParc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.fatorRubr = TagDecimal( nome='fatorRubr' , tamanho=[1, 5, 2], raiz='//infoPgtoParc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.vrUnit = TagDecimal( nome='vrUnit' , tamanho=[1, 14, 2], raiz='//infoPgtoParc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.vrRubr = TagDecimal( nome='vrRubr' , tamanho=[1, 14, 2], raiz='//infoPgtoParc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.codRubr.xml + xml += self.ideTabRubr.xml + xml += self.qtdRubr.xml + xml += self.fatorRubr.xml + xml += self.vrUnit.xml + xml += self.vrRubr.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codRubr.xml = arquivo + self.ideTabRubr.xml = arquivo + self.qtdRubr.xml = arquivo + self.fatorRubr.xml = arquivo + self.vrUnit.xml = arquivo + self.vrRubr.xml = arquivo + + xml = property(get_xml, set_xml) + + +class DetPgtoBenPrRetPgtoTot(XMLNFe): + def __init__(self): + super(DetPgtoBenPrRetPgtoTot, self).__init__() + self.codRubr = TagCaracter(nome='codRubr', tamanho=[1, 30], raiz='//retPgtoTot', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideTabRubr = TagCaracter(nome='ideTabRubr', tamanho=[1, 8], raiz='//retPgtoTot', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.qtdRubr = TagDecimal( nome='qtdRubr', tamanho=[1, 6, 2], raiz='//retPgtoTot', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.fatorRubr = TagDecimal( nome='fatorRubr', tamanho=[1, 5, 2], raiz='//retPgtoTot', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.vrUnit = TagCaracter(nome='vrUnit', tamanho=[1, 40], raiz='//retPgtoTot', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.vrRubr = TagDecimal( nome='vrRubr', tamanho=[1, 14, 2], raiz='//retPgtoTot', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.codRubr.xml + xml += self.ideTabRubr.xml + xml += self.qtdRubr.xml + xml += self.fatorRubr.xml + xml += self.vrUnit.xml + xml += self.vrRubr.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codRubr.xml = arquivo + self.ideTabRubr.xml = arquivo + self.qtdRubr.xml = arquivo + self.fatorRubr.xml = arquivo + self.vrUnit.xml = arquivo + self.vrRubr.xml = arquivo + + xml = property(get_xml, set_xml) + + +class DetPgtoBenPr(XMLNFe): + def __init__(self): + super(DetPgtoBenPr, self).__init__() + self.perRef = TagCaracter(nome='perRef', tamanho=[1, 7], raiz='//detPgtoBenPr', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideDmDev = TagCaracter(nome='ideDmDev', tamanho=[1, 30], raiz='//detPgtoBenPr', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.indPgtoTt = TagCaracter(nome='indPgtoTt', tamanho=[1, 1], raiz='//detPgtoBenPr', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrLiq = TagDecimal( nome='vrLiq', tamanho=[1, 14, 2], raiz='//detPgtoBenPr', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.retPgtoTot = [] + self.infoPgtoParc = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.perRef.xml + xml += self.ideDmDev.xml + xml += self.indPgtoTt.xml + xml += self.vrLiq.xml + if len(self.retPgtoTot) > 0 : + for p in self.retPgtoTot: + xml += p.xml + if len(self.infoPgtoParc) > 0: + for p in self.infoPgtoParc: + xml += p.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.perRef.xml = arquivo + self.ideDmDev.xml = arquivo + self.indPgtoTt.xml = arquivo + self.vrLiq.xml = arquivo + self.retPgtoTot = self.le_grupo('//eSocial/evtPgtos/ideBenef/infoPgto/detPgtoBenPr/retPgtoTot', DetPgtoBenPrRetPgtoTot, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoPgtoParc = self.le_grupo('//eSocial/evtPgtos/ideBenef/infoPgto/detPgtoBenPr/infoPgtoParc', DetPgtoBenPrInfoPgtoParc, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class InfoPgtoParc(XMLNFe): + def __init__(self): + super(InfoPgtoParc, self).__init__() + self.matricula = TagCaracter(nome='matricula', tamanho=[1, 30], raiz='//infoPgtoParc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.codRubr = TagCaracter(nome='codRubr', tamanho=[1, 30], raiz='//infoPgtoParc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideTabRubr = TagCaracter(nome='ideTabRubr', tamanho=[1, 8], raiz='//infoPgtoParc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.qtdRubr = TagDecimal( nome='qtdRubr', tamanho=[1, 6, 2], raiz='//infoPgtoParc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.fatorRubr = TagDecimal( nome='fatorRubr' , tamanho=[1, 5, 2], raiz='//infoPgtoParc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.vrUnit = TagDecimal( nome='vrUnit' , tamanho=[1, 14, 2], raiz='//infoPgtoParc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.vrRubr = TagDecimal( nome='vrRubr' , tamanho=[1, 14, 2], raiz='//infoPgtoParc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.matricula.xml + xml += self.codRubr.xml + xml += self.ideTabRubr.xml + xml += self.qtdRubr.xml + xml += self.fatorRubr.xml + xml += self.vrUnit.xml + xml += self.vrRubr.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.matricula.xml = arquivo + self.codRubr.xml = arquivo + self.ideTabRubr.xml = arquivo + self.qtdRubr.xml = arquivo + self.fatorRubr.xml = arquivo + self.vrUnit.xml = arquivo + self.vrRubr.xml = arquivo + + xml = property(get_xml, set_xml) + + +class PenAlim(XMLNFe): + def __init__(self): + super(PenAlim, self).__init__() + self.cpfBenef = TagCaracter(nome='cpfBenef', tamanho=[1, 11], raiz='//penAlim', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtNasctoBenef = TagData( nome='dtNasctoBenef', raiz='//penAlim', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.nmBenefic = TagCaracter(nome='nmBenefic', tamanho=[1, 70], raiz='//penAlim', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vlrPensao = TagDecimal( nome='vlrPensao', tamanho=[1, 14, 2], raiz='//penAlim', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cpfBenef.xml + xml += self.dtNasctoBenef.xml + xml += self.nmBenefic.xml + xml += self.vlrPensao.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cpfBenef.xml = arquivo + self.dtNasctoBenef.xml = arquivo + self.nmBenefic.xml = arquivo + self.vlrPensao.xml = arquivo + + xml = property(get_xml, set_xml) + + +class RetPgtoTot(XMLNFe): + def __init__(self): + super(RetPgtoTot, self).__init__() + self.codRubr = TagCaracter(nome='codRubr', tamanho=[1, 30], raiz='//retPgtoTot', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideTabRubr = TagCaracter(nome='ideTabRubr', tamanho=[1, 8], raiz='//retPgtoTot', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.qtdRubr = TagDecimal( nome='qtdRubr', tamanho=[1, 6, 2], raiz='//retPgtoTot', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.fatorRubr = TagDecimal( nome='fatorRubr', tamanho=[1, 5, 2], raiz='//retPgtoTot', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.vrUnit = TagCaracter(nome='vrUnit', tamanho=[1, 40], raiz='//retPgtoTot', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.vrRubr = TagDecimal( nome='vrRubr', tamanho=[1, 14, 2], raiz='//retPgtoTot', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.penAlim = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.codRubr.xml + xml += self.ideTabRubr.xml + xml += self.qtdRubr.xml + xml += self.fatorRubr.xml + xml += self.vrUnit.xml + xml += self.vrRubr.xml + if len(self.penAlim) > 0: + for p in self.penAlim: + xml += p.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codRubr.xml = arquivo + self.ideTabRubr.xml = arquivo + self.qtdRubr.xml = arquivo + self.fatorRubr.xml = arquivo + self.vrUnit.xml = arquivo + self.vrRubr.xml = arquivo + self.penAlim = self.le_grupo('//eSocial/evtPgtos/ideBenef/infoPgto/detPgtoFl/retPgtoTot/penAlim', PenAlim, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class DetPgtoFl(XMLNFe): + def __init__(self): + super(DetPgtoFl, self).__init__() + self.perRef = TagCaracter(nome='perRef', tamanho=[1, 7], raiz='//detPgtoFl', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.ideDmDev = TagCaracter(nome='ideDmDev', tamanho=[1, 30], raiz='//detPgtoFl', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.indPgtoTt = TagCaracter(nome='indPgtoTt', tamanho=[1, 1], raiz='//detPgtoFl', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrLiq = TagDecimal( nome='vrLiq', tamanho=[1, 14, 2], raiz='//detPgtoFl', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrRecArq = TagCaracter(nome='nrRecArq', tamanho=[1, 40], raiz='//detPgtoFl', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.retPgtoTot = [] + self.infoPgtoParc = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.perRef.xml + xml += self.ideDmDev.xml + xml += self.indPgtoTt.xml + xml += self.vrLiq.xml + xml += self.nrRecArq.xml + if len(self.retPgtoTot) > 0: + for p in self.retPgtoTot: + xml += p.xml + if len(self.infoPgtoParc) > 0: + for p in self.infoPgtoParc: + xml += p.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.perRef.xml = arquivo + self.ideDmDev.xml = arquivo + self.indPgtoTt.xml = arquivo + self.vrLiq.xml = arquivo + self.nrRecArq.xml = arquivo + self.retPgtoTot = self.le_grupo('//eSocial/evtPgtos/ideBenef/infoPgto/detPgtoFl/retPgtoTot', RetPgtoTot, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoPgtoParc = self.le_grupo('//eSocial/evtPgtos/ideBenef/infoPgto/detPgtoFl/infoPgtoParc', InfoPgtoParc, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class InfoPgto(XMLNFe): + def __init__(self): + super(InfoPgto, self).__init__() + self.dtPgto = TagData( nome='dtPgto', raiz='//infoPgto', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.tpPgto = TagCaracter(nome='tpPgto', tamanho=[1, 2], raiz='//infoPgto', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.indResBr = TagCaracter(nome='indResBr', tamanho=[1, 1], raiz='//infoPgto', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.detPgtoFl = [] + self.detPgtoBenPr = [] + self.detPgtoFer = [] + self.detPgtoAnt = [] + self.idePgtoExt = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.dtPgto.xml + xml += self.tpPgto.xml + xml += self.indResBr.xml + if len(self.detPgtoFl) > 0: + for p in self.detPgtoFl: + xml += p.xml + if len(self.detPgtoBenPr) > 0: + for p in self.detPgtoBenPr: + xml += p.xml + if len(self.detPgtoFer) > 0: + for p in self.detPgtoFer: + xml += p.xml + if len(self.detPgtoAnt) > 0: + for p in self.detPgtoAnt: + xml += p.xml + if len(self.idePgtoExt) > 0: + for p in self.idePgtoExt: + xml += p.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.dtPgto.xml = arquivo + self.tpPgto.xml = arquivo + self.indResBr.xml = arquivo + self.detPgtoFl = self.le_grupo('//eSocial/evtPgtos/ideBenef/infoPgto/detPgtoFl', DetPgtoFl, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.detPgtoBenPr = self.le_grupo('//eSocial/evtPgtos/ideBenef/infoPgto/detPgtoBenPr', DetPgtoBenPr, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.detPgtoFer = self.le_grupo('//eSocial/evtPgtos/ideBenef/infoPgto/detPgtoFer', DetPgtoFer, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.detPgtoAnt = self.le_grupo('//eSocial/evtPgtos/ideBenef/infoPgto/detPgtoAnt', DetPgtoAnt, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.idePgtoExt = self.le_grupo('//eSocial/evtPgtos/ideBenef/infoPgto/idePgtoExt', IdePgtoExt, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class IdeBenef(XMLNFe): + def __init__(self): + super(IdeBenef, self).__init__() + self.cpfBenef = TagCaracter(nome='cpfBenef', tamanho=[1, 11], raiz='//eSocial/evtPgtos/ideBenef', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrDedDep = TagDecimal( nome='vrDedDep', tamanho=[1, 14, 2], raiz='//eSocial/evtPgtos/ideBenef/deps', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.infoPgto = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cpfBenef.xml + if self.vrDedDep.valor: + xml += '' + xml += self.vrDedDep.xml + xml += '' + if len(self.infoPgto) > 0: + for p in self.infoPgto: + xml += p.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cpfBenef.xml = arquivo + self.vrDedDep.xml = arquivo + self.infoPgto = self.le_grupo('//eSocial/evtPgtos/ideBenef/infoPgto', InfoPgto, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class IdeEmpregador(XMLNFe): + def __init__(self): + super(IdeEmpregador, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', tamanho=[1, 1], raiz='//eSocial/evtPgtos/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='1') + self.nrInsc = TagCaracter(nome='nrInsc', tamanho=[1, 15], raiz='//eSocial/evtPgtos/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEvento(XMLNFe): + def __init__(self): + super(IdeEvento, self).__init__() + self.indRetif = TagInteiro( nome='indRetif', tamanho=[1, 1], raiz='//eSocial/evtPgtos/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=1) + self.nrRecibo = TagCaracter(nome='nrRecibo', tamanho=[1, 40], raiz='//eSocial/evtPgtos/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.indApuracao = TagCaracter(nome='indApuracao', tamanho=[1, 1], raiz='//eSocial/evtPgtos/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.perApur = TagCaracter(nome='perApur', tamanho=[1, 7], raiz='//eSocial/evtPgtos/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.tpAmb = TagInteiro( nome='tpAmb', tamanho=[1, 1], raiz='//eSocial/evtPgtos/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=2) + self.procEmi = TagInteiro( nome='procEmi', tamanho=[1, 1], raiz='//eSocial/evtPgtos/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=1) + self.verProc = TagCaracter(nome='verProc', tamanho=[1, 20], raiz='//eSocial/evtPgtos/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.indRetif.xml + xml += self.nrRecibo.xml + xml += self.indApuracao.xml + xml += self.perApur.xml + xml += self.tpAmb.xml + xml += self.procEmi.xml + xml += self.verProc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.indRetif.xml = arquivo + self.nrRecibo.xml = arquivo + self.indApuracao.xml = arquivo + self.perApur.xml = arquivo + self.tpAmb.xml = arquivo + self.procEmi.xml = arquivo + self.verProc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class EvtPgtos(XMLNFe): + def __init__(self): + super(EvtPgtos, self).__init__() + self.Id = TagCaracter(nome='evtPgtos', propriedade='Id', raiz='//eSocial/evtPgtos', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideEvento = IdeEvento() + self.ideEmpregador = IdeEmpregador() + self.ideBenef = IdeBenef() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += self.Id.xml + xml += self.ideEvento.xml + xml += self.ideEmpregador.xml + xml += self.ideBenef.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.Id.xml = arquivo + self.ideEvento.xml = arquivo + self.ideEmpregador.xml = arquivo + self.ideBenef.xml = arquivo + + xml = property(get_xml, set_xml) + + +class S1210(XMLNFe): + def __init__(self): + super(S1210, self).__init__() + self.evtPgtos = EvtPgtos() + self.caminho_esquema = os.path.join(DIRNAME, 'schema/', ESQUEMA_ATUAL + '/') + self.arquivo_esquema = 'evtPgtos.xsd' + self.id_evento = '' + self.tpInsc = '' + self.nrInsc = '' + # self.Signature = Signature() + self.evento = self.evtPgtos + self.xml_assinado = '' + + def get_xml(self): + xml = XMLNFe.get_xml(self) + #xml += ABERTURA + xml += '' + xml += self.evtPgtos.xml + + # + # Define a URI a ser assinada + # + # self.Signature.URI = '#' + self.evtInfoEmpregador.Id.valor + # xml += self.Signature.xml + xml += '' + + # Define o método de assinatura + # self.Signature.metodo = 'sha256' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.evtPgtos.xml = arquivo + # self.Signature.xml = self._le_noh('//eSocial/sig:Signature') + + def gera_id_evento(self, data_hora, sequencia=False): + #A identificação única do evento (Id) é composta por 36 caracteres, conforme o que segue: IDTNNNNNNNNNNNNNNAAAAMMDDHHMMSSQQQQQ + #ID - Texto Fixo "ID"; + #T - Tipo de Inscrição do Empregador (1 - CNPJ; 2 - CPF); + #NNNNNNNNNNNNNN - Número do CNPJ ou CPF do empregador - Completar com + #zeros à direita. No caso de pessoas jurídicas, o CNPJ informado deve conter 8 ou 14 + #posições de acordo com o enquadramento do contribuinte para preenchimento do campo + #{ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se + #necessário. + #AAAAMMDD - Ano, mês e dia da geração do evento; + #HHMMSS - Hora, minuto e segundo da geração do evento; + #QQQQQ - Número sequencial da chave. Incrementar somente quando ocorrer geração de + #eventos na mesma data/hora, completando com zeros à esquerda. + #OBS.: No caso de pessoas jurídicas, o CNPJ informado deverá conter 8 ou 14 posições de + #acordo com o enquadramento do contribuinte para preenchimento do campo {ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se necessário. + + if not sequencia: + sequencia=1 + + id_evento = 'ID' + id_evento += self.tpInsc + id_evento += self.nrInsc[0:8] + '000000' + id_evento += data_hora + id_evento += str(sequencia).zfill(5) + + # Define o Id + # + self.evtPgtos.Id.valor = id_evento + self.id_evento = id_evento + + xml = property(get_xml, set_xml) diff --git a/pysped/esocial/leiaute/evtReabreEvPer_20402.py b/pysped/esocial/leiaute/evtReabreEvPer_20402.py new file mode 100644 index 00000000..dd25209a --- /dev/null +++ b/pysped/esocial/leiaute/evtReabreEvPer_20402.py @@ -0,0 +1,196 @@ +# -*- coding: utf-8 -*- +# +# PySPED - Python libraries to deal with Brazil's SPED Project +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Library General Public License as +# published by the Free Software Foundation, either version 2.1 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public License +# along with this program. If not, see . +# +# PySPED - Bibliotecas Python para o +# SPED - Sistema Público de Escrituração Digital +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# Este programa é um software livre: você pode redistribuir e/ou modificar +# este programa sob os termos da licença GNU Library General Public License, +# publicada pela Free Software Foundation, em sua versão 2.1 ou, de acordo +# com sua opção, qualquer versão posterior. +# +# Este programa é distribuido na esperança de que venha a ser útil, +# porém SEM QUAISQUER GARANTIAS, nem mesmo a garantia implícita de +# COMERCIABILIDADE ou ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Veja a +# GNU Library General Public License para mais detalhes. +# +# Você deve ter recebido uma cópia da GNU Library General Public License +# juntamente com este programa. Caso esse não seja o caso, acesse: +# +# + +from __future__ import (division, print_function, unicode_literals, + absolute_import) + +from builtins import str +import os +from pysped.xml_sped import * +from pysped.esocial.leiaute import ESQUEMA_ATUAL_VERSAO_2 as ESQUEMA_ATUAL + +DIRNAME = os.path.dirname(__file__) + +NAMESPACE_ESOCIAL = 'http://www.esocial.gov.br/schema/evt/evtReabreEvPer/v02_04_02' + + +class IdeEmpregador(XMLNFe): + def __init__(self): + super(IdeEmpregador, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', tamanho=[1, 1], raiz='//eSocial/evtReabreEvPer/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='1') + self.nrInsc = TagCaracter(nome='nrInsc', tamanho=[1, 15], raiz='//eSocial/evtReabreEvPer/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEvento(XMLNFe): + def __init__(self): + super(IdeEvento, self).__init__() + self.indApuracao = TagCaracter(nome='indApuracao', tamanho=[1, 1], raiz='//eSocial/evtReabreEvPer/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.perApur = TagCaracter(nome='perApur', tamanho=[1, 7], raiz='//eSocial/evtReabreEvPer/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.tpAmb = TagInteiro( nome='tpAmb', tamanho=[1, 1], raiz='//eSocial/evtReabreEvPer/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=2) + self.procEmi = TagInteiro( nome='procEmi', tamanho=[1, 1], raiz='//eSocial/evtReabreEvPer/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=1) + self.verProc = TagCaracter(nome='verProc', tamanho=[1, 20], raiz='//eSocial/evtReabreEvPer/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.indApuracao.xml + xml += self.perApur.xml + xml += self.tpAmb.xml + xml += self.procEmi.xml + xml += self.verProc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.indApuracao.xml = arquivo + self.perApur.xml = arquivo + self.tpAmb.xml = arquivo + self.procEmi.xml = arquivo + self.verProc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class EvtReabreEvPer(XMLNFe): + def __init__(self): + super(EvtReabreEvPer, self).__init__() + self.Id = TagCaracter(nome='evtReabreEvPer', propriedade='Id', raiz='//eSocial/evtReabreEvPer', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideEvento = IdeEvento() + self.ideEmpregador = IdeEmpregador() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += self.Id.xml + xml += self.ideEvento.xml + xml += self.ideEmpregador.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.Id.xml = arquivo + self.ideEvento.xml = arquivo + + xml = property(get_xml, set_xml) + + +class S1298(XMLNFe): + def __init__(self): + super(S1298, self).__init__() + self.evtReabreEvPer = EvtReabreEvPer() + self.caminho_esquema = os.path.join(DIRNAME, 'schema/', ESQUEMA_ATUAL + '/') + self.arquivo_esquema = 'evtReabreEvPer.xsd' + self.id_evento = '' + self.tpInsc = '' + self.nrInsc = '' + # self.Signature = Signature() + self.evento = self.evtReabreEvPer + self.xml_assinado = '' + + def get_xml(self): + xml = XMLNFe.get_xml(self) + #xml += ABERTURA + xml += '' + xml += self.evtReabreEvPer.xml + + # + # Define a URI a ser assinada + # + # self.Signature.URI = '#' + self.evtReabreEvPer.Id.valor + # xml += self.Signature.xml + xml += '' + + # Define o método de assinatura + # self.Signature.metodo = 'sha256' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.evtReabreEvPer.xml = arquivo + # self.Signature.xml = self._le_noh('//eSocial/sig:Signature') + + def gera_id_evento(self, data_hora, sequencia=False): + #A identificação única do evento (Id) é composta por 36 caracteres, conforme o que segue: IDTNNNNNNNNNNNNNNAAAAMMDDHHMMSSQQQQQ + #ID - Texto Fixo "ID"; + #T - Tipo de Inscrição do Empregador (1 - CNPJ; 2 - CPF); + #NNNNNNNNNNNNNN - Número do CNPJ ou CPF do empregador - Completar com + #zeros à direita. No caso de pessoas jurídicas, o CNPJ informado deve conter 8 ou 14 + #posições de acordo com o enquadramento do contribuinte para preenchimento do campo + #{ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se + #necessário. + #AAAAMMDD - Ano, mês e dia da geração do evento; + #HHMMSS - Hora, minuto e segundo da geração do evento; + #QQQQQ - Número sequencial da chave. Incrementar somente quando ocorrer geração de + #eventos na mesma data/hora, completando com zeros à esquerda. + #OBS.: No caso de pessoas jurídicas, o CNPJ informado deverá conter 8 ou 14 posições de + #acordo com o enquadramento do contribuinte para preenchimento do campo {ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se necessário. + + if not sequencia: + sequencia=1 + + id_evento = 'ID' + id_evento += self.tpInsc + id_evento += self.nrInsc[0:8] + '000000' + id_evento += data_hora + id_evento += str(sequencia).zfill(5) + + # Define o Id + # + self.evtReabreEvPer.Id.valor = id_evento + self.id_evento = id_evento + + xml = property(get_xml, set_xml) diff --git a/pysped/esocial/leiaute/evtRemun_20402.py b/pysped/esocial/leiaute/evtRemun_20402.py new file mode 100644 index 00000000..30c5103b --- /dev/null +++ b/pysped/esocial/leiaute/evtRemun_20402.py @@ -0,0 +1,929 @@ +# -*- coding: utf-8 -*- +# +# PySPED - Python libraries to deal with Brazil's SPED Project +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Library General Public License as +# published by the Free Software Foundation, either version 2.1 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public License +# along with this program. If not, see . +# +# PySPED - Bibliotecas Python para o +# SPED - Sistema Público de Escrituração Digital +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# Este programa é um software livre: você pode redistribuir e/ou modificar +# este programa sob os termos da licença GNU Library General Public License, +# publicada pela Free Software Foundation, em sua versão 2.1 ou, de acordo +# com sua opção, qualquer versão posterior. +# +# Este programa é distribuido na esperança de que venha a ser útil, +# porém SEM QUAISQUER GARANTIAS, nem mesmo a garantia implícita de +# COMERCIABILIDADE ou ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Veja a +# GNU Library General Public License para mais detalhes. +# +# Você deve ter recebido uma cópia da GNU Library General Public License +# juntamente com este programa. Caso esse não seja o caso, acesse: +# +# + +from __future__ import (division, print_function, unicode_literals, + absolute_import) + +from builtins import str +import os +from pysped.xml_sped import * +from pysped.esocial.leiaute import ESQUEMA_ATUAL_VERSAO_2 as ESQUEMA_ATUAL + +DIRNAME = os.path.dirname(__file__) + +NAMESPACE_ESOCIAL = 'http://www.esocial.gov.br/schema/evt/evtRemun/v02_04_02' + + +class InfoComplCont(XMLNFe): + def __init__(self): + super(InfoComplCont, self).__init__() + self.codCBO = TagCaracter(nome='codCBO', tamanho=[1, 6], raiz='//infoComplCont', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.natAtividade = TagCaracter(nome='natAtividade', tamanho=[1, 1], raiz='//infoComplCont', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.qtdDiasTrab = TagInteiro( nome='qtdDiasTrab', tamanho=[1, 2], raiz='//infoComplCont', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.codCBO.xml + xml += self.natAtividade + xml += self.qtdDiasTrab + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codCBO.xml = arquivo + self.natAtividade.xml = arquivo + self.qtdDiasTrab.xml = arquivo + + xml = property(get_xml, set_xml) + + +class RemunPerAntInfoTrabInterm(XMLNFe): + def __init__(self): + super(RemunPerAntInfoTrabInterm, self).__init__() + self.codConv = TagCaracter(nome='codConv', tamanho=[1, 30], raiz='//infoTrabInterm', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.codConv.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codConv.xml = arquivo + + xml = property(get_xml, set_xml) + + +class RemunPerAntInfoAgNocivo(XMLNFe): + def __init__(self): + super(RemunPerAntInfoAgNocivo, self).__init__() + self.grauExp = TagInteiro(nome='grauExp', tamanho=[1, 1], raiz='//infoAgNocivo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.grauExp.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.grauExp.xml = arquivo + + xml = property(get_xml, set_xml) + + +class RemunPerAntItensRemun(XMLNFe): + def __init__(self): + super(RemunPerAntItensRemun, self).__init__() + self.codRubr = TagCaracter(nome='codRubr', tamanho=[1, 30], raiz='//itensRemun', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideTabRubr = TagCaracter(nome='ideTabRubr', tamanho=[1, 8], raiz='//itensRemun', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.qtdRubr = TagInteiro( nome='qtdRubr', tamanho=[1, 6, 2], raiz='//itensRemun', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.fatorRubr = TagInteiro( nome='fatorRubr', tamanho=[1, 5, 2], raiz='//itensRemun', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.vrUnit = TagDecimal( nome='vrUnit', tamanho=[1, 14, 2], raiz='//itensRemun', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.vrRubr = TagDecimal( nome='vrRubr', tamanho=[1, 14, 2], raiz='//itensRemun', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.codRubr.xml + xml += self.ideTabRubr.xml + xml += self.qtdRubr.xml + xml += self.fatorRubr.xml + xml += self.vrUnit.xml + xml += self.vrRubr.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codRubr.xml = arquivo + self.ideTabRubr.xml = arquivo + self.qtdRubr.xml = arquivo + self.fatorRubr.xml = arquivo + self.vrUnit.xml = arquivo + self.vrRubr.xml = arquivo + + xml = property(get_xml, set_xml) + + +class RemunPerAnt(XMLNFe): + def __init__(self): + super(RemunPerAnt, self).__init__() + self.matricula = TagCaracter(nome='matricula', tamanho=[1, 30], raiz='//ideEstabLot/remunPerApur', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.indSimples = TagCaracter(nome='indSimples', tamanho=[1, 1], raiz='//ideEstabLot/remunPerApur', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.itensRemun = [] + self.infoAgNocivo = [] + self.infoTrabInterm = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.matricula.xml + xml += self.indSimples.xml + if len(self.itensRemun) > 0: + for r in self.itensRemun: + xml += r.xml + if len(self.infoAgNocivo) > 0: + for r in self.infoAgNocivo: + xml += r.xml + if len(self.infoTrabInterm) > 0: + for r in self.infoTrabInterm: + xml += r.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.matricula.xml = arquivo + self.indSimples.xml = arquivo + self.itensRemun = self.le_grupo('//eSocial/evtRemun/dmDev/infoPerAnt/ideADC/idePeriodo/ideEstabLot/remunPerAnt/itensRemun', RemunPerAntItensRemun, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoAgNocivo = self.le_grupo('//eSocial/evtRemun/dmDev/infoPerAnt/ideADC/idePeriodo/ideEstabLot/remunPerAnt/infoAgNocivo', RemunPerAntInfoAgNocivo, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoTrabInterm = self.le_grupo('//eSocial/evtRemun/dmDev/infoPerAnt/ideADC/idePeriodo/ideEstabLot/remunPerAnt/infoTrabInterm', RemunPerAntInfoTrabInterm, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class IdePeriodoIdeEstabLot(XMLNFe): + def __init__(self): + super(IdePeriodoIdeEstabLot, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', tamanho=[1, 1], raiz='//ideEstabLot', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='1') + self.nrInsc = TagCaracter(nome='nrInsc', tamanho=[1, 15], raiz='//ideEstabLot', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codLotacao = TagCaracter(nome='codLotacao', tamanho=[1, 30], raiz='//ideEstabLot', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.remunPerAnt = RemunPerAnt() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += self.codLotacao.xml + xml += self.remunPerAnt.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + self.codLotacao.xml = arquivo + self.remunPerAnt.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdePeriodo(XMLNFe): + def __init__(self): + super(IdePeriodo, self).__init__() + self.perRef = TagCaracter(nome='perRef', tamanho=[1, 7], raiz='//idePeriodo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideEstabLot = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.perRef.xml + if len(self.ideEstabLot) > 0: + for e in self.ideEstabLot: + xml += e.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.perRef.xml = arquivo + self.ideEstabLot = self.le_grupo('//eSocial/evtRemun/dmDev/infoPerAnt/ideADC/idePeriodo/ideEstabLot', IdePeriodoIdeEstabLot, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class IdeADC(XMLNFe): + def __init__(self): + super(IdeADC, self).__init__() + self.dtAcConv = TagData( nome='dtAcConv', raiz='//ideADC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.tpAcConv = TagCaracter(nome='tpAcConv', tamanho=[1, 1], raiz='//ideADC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.compAcConv = TagCaracter(nome='compAcConv', tamanho=[1, 7], raiz='//ideADC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.dtEfAcConv = TagData( nome='dtEfAcConv', raiz='//ideADC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.dsc = TagCaracter(nome='dsc', tamanho=[1, 255], raiz='//ideADC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.remunSuc = TagCaracter(nome='remunSuc', tamanho=[1, 1], raiz='//ideADC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.idePeriodo = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.dtAcConv.xml + xml += self.tpAcConv.xml + xml += self.compAcConv.xml + xml += self.dtEfAcConv.xml + xml += self.dsc.xml + xml += self.remunSuc.xml + if len(self.idePeriodo) > 0: + for p in self.idePeriodo: + xml += p.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.idePeriodo = self.le_grupo('//eSocial/evtRemun/dmDev/infoPerAnt/ideADC/idePeriodo', IdePeriodo, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class InfoPerAnt(XMLNFe): + def __init__(self): + super(InfoPerAnt, self).__init__() + self.ideADC = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + if len(self.ideADC) > 0: + for i in self.ideADC: + xml += i.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.ideADC = self.le_grupo('//eSocial/evtRemun/dmDev/infoPerAnt/ideADC', IdeADC, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class InfoTrabInterm(XMLNFe): + def __init__(self): + super(InfoTrabInterm, self).__init__() + self.codConv = TagCaracter(nome='codConv', tamanho=[1, 30], raiz='//infoTrabInterm', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.codConv.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codConv.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoAgNocivo(XMLNFe): + def __init__(self): + super(InfoAgNocivo, self).__init__() + self.grauExp = TagInteiro(nome='grauExp', tamanho=[1, 1], raiz='//infoAgNocivo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.grauExp.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.grauExp.xml = arquivo + + xml = property(get_xml, set_xml) + + +class DetPlano(XMLNFe): + def __init__(self): + super(DetPlano, self).__init__() + self.tpDep = TagCaracter(nome='tpDep', tamanho=[1, 1], raiz='//detPlano', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.cpfDep = TagCaracter(nome='cpfDep', tamanho=[1, 11], raiz='//detPlano', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.nmDep = TagCaracter(nome='nmDep', tamanho=[1, 70], raiz='//detPlano', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtNascto = TagData( nome='dtNascto', tamanho=[1, 70], raiz='//detPlano', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrPgDep = TagDecimal( nome='vrPgDep', tamanho=[1, 14, 2], raiz='//detPlano', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpDep.xml + xml += self.cpfDep.xml + xml += self.nmDep.xml + xml += self.dtNascto.xml + xml += self.vrPgDep.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpDep.xml = arquivo + self.cpfDep.xml = arquivo + self.nmDep.xml = arquivo + self.dtNascto.xml = arquivo + self.vrPgDep.xml = arquivo + + xml = property(get_xml, set_xml) + + +class DetOper(XMLNFe): + def __init__(self): + super(DetOper, self).__init__() + self.cnpjOper = TagCaracter(nome='cnpjOper', tamanho=[1, 14], raiz='//detOper', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.regANS = TagCaracter(nome='regANS', tamanho=[1, 6], raiz='//detOper', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrPgTit = TagDecimal( nome='vrPgTit', tamanho=[1, 14, 2], raiz='//detOper', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.detPlano = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cnpjOper.xml + xml += self.regANS.xml + xml += self.vrPgTit.xml + if len(self.detPlano) > 0: + for d in self.detPlano: + xml += d.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cnpjOper.xml = arquivo + self.regANS.xml = arquivo + self.vrPgTit.xml = arquivo + self.detPlano = self.le_grupo('//eSocial/evtRemun/dmDev/ideEstabLot/remunPerApur/infoSaudeColet/detOper/detPlano', DetPlano, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class InfoSaudeColet(XMLNFe): + def __init__(self): + super(InfoSaudeColet, self).__init__() + self.detOper = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + if len(self.detOper) > 0: + for d in self.detOper: + xml += d.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.detOper = self.le_grupo('//eSocial/evtRemun/dmDev/ideEstabLot/remunPerApur/infoSaudeColet/detOper', DetOper, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class ItensRemun(XMLNFe): + def __init__(self): + super(ItensRemun, self).__init__() + self.codRubr = TagCaracter(nome='codRubr', tamanho=[1, 30], raiz='//itensRemun', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideTabRubr = TagCaracter(nome='ideTabRubr', tamanho=[1, 8], raiz='//itensRemun', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.qtdRubr = TagInteiro( nome='qtdRubr', tamanho=[1, 6, 2], raiz='//itensRemun', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.fatorRubr = TagInteiro( nome='fatorRubr', tamanho=[1, 5, 2], raiz='//itensRemun', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.vrUnit = TagDecimal( nome='vrUnit', tamanho=[1, 14, 2], raiz='//itensRemun', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.vrRubr = TagDecimal( nome='vrRubr', tamanho=[1, 14, 2], raiz='//itensRemun', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.codRubr.xml + xml += self.ideTabRubr.xml + xml += self.qtdRubr.xml + xml += self.fatorRubr.xml + xml += self.vrUnit.xml + xml += self.vrRubr.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codRubr.xml = arquivo + self.ideTabRubr.xml = arquivo + self.qtdRubr.xml = arquivo + self.fatorRubr.xml = arquivo + self.vrUnit.xml = arquivo + self.vrRubr.xml = arquivo + + xml = property(get_xml, set_xml) + + +class RemunPerApur(XMLNFe): + def __init__(self): + super(RemunPerApur, self).__init__() + self.matricula = TagCaracter(nome='matricula', tamanho=[1, 30], raiz='//infoPerApur/ideEstabLot/remunPerApur', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.indSimples = TagCaracter(nome='indSimples', tamanho=[1, 1], raiz='//infoPerApur/ideEstabLot/remunPerApur', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.itensRemun = [] + self.infoSaudeColet = [] + self.infoAgNocivo = [] + self.infoTrabInterm = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.matricula.xml + xml += self.indSimples.xml + if len(self.itensRemun) > 0: + for i in self.itensRemun: + xml += i.xml + if len(self.infoSaudeColet) > 0: + for i in self.infoSaudeColet: + xml += i.xml + if len(self.infoAgNocivo) > 0: + for i in self.infoAgNocivo: + xml += i.xml + if len(self.infoTrabInterm) > 0: + for i in self.infoTrabInterm: + xml += i.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.matricula.xml = arquivo + self.indSimples.xml = arquivo + self.itensRemun = self.le_grupo('//eSocial/evtRemun/dmDev/ideEstabLot/remunPerApur/itensRemun', ItensRemun, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoSaudeColet = self.le_grupo('//eSocial/evtRemun/dmDev/ideEstabLot/remunPerApur/infoSaudeColet ', InfoSaudeColet, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoAgNocivo = self.le_grupo('//eSocial/evtRemun/dmDev/ideEstabLot/remunPerApur/infoAgNocivo ', InfoAgNocivo, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoTrabInterm = self.le_grupo('//eSocial/evtRemun/dmDev/ideEstabLot/remunPerApur/infoTrabInterm', InfoTrabInterm, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class IdeEstabLot(XMLNFe): + def __init__(self): + super(IdeEstabLot, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', tamanho=[1, 1], raiz='//infoPerApur/ideEstabLot', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='1') + self.nrInsc = TagCaracter(nome='nrInsc', tamanho=[1, 15], raiz='//infoPerApur/ideEstabLot', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codLotacao = TagCaracter(nome='codLotacao', tamanho=[1, 30], raiz='//infoPerApur/ideEstabLot', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.qtdDiasAv = TagInteiro( nome='qtdDiasAv', tamanho=[1, 2], raiz='//infoPerApur/ideEstabLot', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.remunPerApur = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += self.codLotacao.xml + xml += self.qtdDiasAv.xml + if len(self.remunPerApur) > 0: + for r in self.remunPerApur: + xml += r.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + self.codLotacao.xml = arquivo + self.qtdDiasAv.xml = arquivo + self.remunPerApur = self.le_grupo('//eSocial/evtRemun/dmDev/ideEstabLot/remunPerApur', RemunPerApur, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class InfoPerApur(XMLNFe): + def __init__(self): + super(InfoPerApur, self).__init__() + self.ideEstabLot = IdeEstabLot() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.ideEstabLot.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.ideEstabLot.xml = arquivo + + xml = property(get_xml, set_xml) + + +class DmDev(XMLNFe): + def __init__(self): + super(DmDev, self).__init__() + self.ideDmDev = TagCaracter(nome='ideDmDev', tamanho=[1, 30], raiz='//eSocial/evtRemun/dmDev', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codCateg = TagCaracter(nome='codCateg', tamanho=[1, 3], raiz='//eSocial/evtRemun/dmDev', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.infoPerApur = [] + self.infoPerAnt = [] + self.infoComplCont = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.ideDmDev.xml + xml += self.codCateg.xml + if len(self.infoPerApur) > 0: + for i in self.infoPerApur: + xml += i.xml + if len(self.infoPerAnt) > 0: + for i in self.infoPerAnt: + xml += i.xml + if len(self.infoComplCont) > 0: + for i in self.infoComplCont: + xml += i.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.ideDmDev.xml = arquivo + self.codCateg.xml = arquivo + self.infoPerApur = self.le_grupo('//eSocial/evtRemun/dmDev/infoPerApur', InfoPerApur, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoPerAnt = self.le_grupo('//eSocial/evtRemun/dmDev/infoPerAnt', InfoPerAnt, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoComplCont = self.le_grupo('//eSocial/evtRemun/dmDev/infoComplCont', InfoComplCont, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class InfoInterm(XMLNFe): + def __init__(self): + super(InfoInterm, self).__init__() + self.qtdDiasInterm = TagInteiro(nome='qtdDiasInterm', tamanho=[1, 2], raiz='//infoInterm', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.qtdDiasInterm.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.qtdDiasInterm.xml = arquivo + + xml = property(get_xml, set_xml) + + +class ProcJudTrab(XMLNFe): + def __init__(self): + super(ProcJudTrab, self).__init__() + self.tpTrib = TagCaracter(nome='tpTrib', tamanho=[1, 1], raiz='//procJudTrab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrProcJud = TagCaracter(nome='nrProcJud', tamanho=[1, 20], raiz='//procJudTrab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codSusp = TagCaracter(nome='codSusp', tamanho=[1, 14], raiz='//procJudTrab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpTrib.xml + xml += self.nrProcJud.xml + xml += self.codSusp.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpTrib.xml = arquivo + self.nrProcJud.xml = arquivo + self.codSusp.xml = arquivo + + xml = property(get_xml, set_xml) + + +class SucessaoVinc(XMLNFe): + def __init__(self): + super(SucessaoVinc, self).__init__() + self.cnpjEmpregAnt = TagCaracter(nome='cnpjEmpregAnt', tamanho=[1, 14], raiz='//sucessaoVinc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.matricAnt = TagCaracter(nome='matricAnt', tamanho=[1, 30], raiz='//sucessaoVinc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.dtAdm = TagData( nome='dtAdm', raiz='//sucessaoVinc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.observacao = TagCaracter(nome='observacao', tamanho=[1, 255], raiz='//sucessaoVinc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cnpjEmpregAnt.xml + xml += self.matricAnt.xml + xml += self.dtAdm.xml + xml += self.observacao.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cnpjEmpregAnt.xml = arquivo + self.matricAnt.xml = arquivo + self.dtAdm.xml = arquivo + self.observacao.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoComplem(XMLNFe): + def __init__(self): + super(InfoComplem, self).__init__() + self.nmTrab = TagCaracter(nome='nmTrab', tamanho=[1, 70], raiz='//infoComplem', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtNascto = TagData( nome='dtNascto', raiz='//infoComplem', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.sucessaoVinc = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nmTrab.xml + xml += self.dtNascto.xml + if len(self.sucessaoVinc) > 0: + for s in self.sucessaoVinc: + xml += s.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nmTrab.xml = arquivo + self.dtNascto.xml = arquivo + self.sucessaoVinc = self.le_grupo('//eSocial/evtRemun/ideTrabalhador/infoComplem/sucessaoVinc', SucessaoVinc, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class RemunOutrEmpr(XMLNFe): + def __init__(self): + super(RemunOutrEmpr, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', tamanho=[1, 1], raiz='//remunOutrEmpr', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='1') + self.nrInsc = TagCaracter(nome='nrInsc', tamanho=[1, 15], raiz='//remunOutrEmpr', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codCateg = TagCaracter(nome='codCateg', tamanho=[1, 3], raiz='//remunOutrEmpr', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vlrRemunOE = TagCaracter(nome='vlrRemunOE', tamanho=[1, 3], raiz='//remunOutrEmpr', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += self.codCateg.xml + xml += self.vlrRemunOE.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + self.codCateg.xml = arquivo + self.vlrRemunOE.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoMV(XMLNFe): + def __init__(self): + super(InfoMV, self).__init__() + self.indMV = TagCaracter(nome='indMV', tamanho=[1, 1], raiz='//infoMV', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.remunOutrEmpr = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.indMV.xml + if len(self.remunOutrEmpr) > 0: + for r in self.remunOutrEmpr: + xml += r.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.indMV.xml = arquivo + self.remunOutrEmpr = self.le_grupo('//eSocial/evtRemun/ideTrabalhador/infoMV/remunOutrEmpr', RemunOutrEmpr, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class IdeTrabalhador(XMLNFe): + def __init__(self): + super(IdeTrabalhador, self).__init__() + self.cpfTrab = TagCaracter(nome='cpfTrab' , tamanho=[1, 11], raiz='//eSocial/evtRemun/ideTrabalhador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nisTrab = TagCaracter(nome='nisTrab' , tamanho=[1, 11], raiz='//eSocial/evtRemun/ideTrabalhador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.infoMV = [] + self.infoComplement = [] + self.procJudTrab = [] + self.infoInterm = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cpfTrab.xml + xml += self.nisTrab.xml + if len(self.infoMV) > 0: + for i in self.infoMV: + xml += i.xml + if len(self.infoComplement) > 0: + for i in self.infoComplement: + xml += i.xml + if len(self.procJudTrab) > 0: + for p in self.procJudTrab: + xml += p.xml + if len(self.infoInterm) > 0: + for i in self.infoInterm: + xml += i.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cpfTrab.xml = arquivo + self.nisTrab.xml = arquivo + self.infoMV = self.le_grupo('//eSocial/evtRemun/ideTrabalhador/infoMV', InfoMV, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoComplement = self.le_grupo('//eSocial/evtRemun/ideTrabalhador/infoComplem', InfoComplem, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.procJudTrab = self.le_grupo('//eSocial/evtRemun/ideTrabalhador/procJudTrab', ProcJudTrab, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoInterm = self.le_grupo('//eSocial/evtRemun/ideTrabalhador/infoInterm', InfoInterm, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class IdeEmpregador(XMLNFe): + def __init__(self): + super(IdeEmpregador, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', tamanho=[1, 1], raiz='//eSocial/evtRemun/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='1') + self.nrInsc = TagCaracter(nome='nrInsc', tamanho=[1, 15], raiz='//eSocial/evtRemun/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEvento(XMLNFe): + def __init__(self): + super(IdeEvento, self).__init__() + self.indRetif = TagInteiro( nome='indRetif', tamanho=[1, 1], raiz='//eSocial/evtRemun/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=1) + self.nrRecibo = TagCaracter(nome='nrRecibo', tamanho=[1, 40], raiz='//eSocial/evtRemun/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.indApuracao = TagCaracter(nome='indApuracao', tamanho=[1, 1], raiz='//eSocial/evtRemun/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.perApur = TagCaracter(nome='perApur', tamanho=[1, 7], raiz='//eSocial/evtRemun/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.tpAmb = TagInteiro( nome='tpAmb', tamanho=[1, 1], raiz='//eSocial/evtRemun/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=2) + self.procEmi = TagInteiro( nome='procEmi', tamanho=[1, 1], raiz='//eSocial/evtRemun/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=1) + self.verProc = TagCaracter(nome='verProc', tamanho=[1, 20], raiz='//eSocial/evtRemun/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.indRetif.xml + xml += self.nrRecibo.xml + xml += self.indApuracao.xml + xml += self.perApur.xml + xml += self.tpAmb.xml + xml += self.procEmi.xml + xml += self.verProc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.indRetif.xml = arquivo + self.nrRecibo.xml = arquivo + self.indApuracao.xml = arquivo + self.perApur.xml = arquivo + self.tpAmb.xml = arquivo + self.procEmi.xml = arquivo + self.verProc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class EvtRemun(XMLNFe): + def __init__(self): + super(EvtRemun, self).__init__() + self.Id = TagCaracter(nome='evtRemun', propriedade='Id', raiz='//eSocial/evtRemun', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideEvento = IdeEvento() + self.ideEmpregador = IdeEmpregador() + self.ideTrabalhador = IdeTrabalhador() + self.dmDev = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += self.Id.xml + xml += self.ideEvento.xml + xml += self.ideEmpregador.xml + xml += self.ideTrabalhador.xml + if len(self.dmDev) > 0: + for d in self.dmDev: + xml += d.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.Id.xml = arquivo + self.ideEvento.xml = arquivo + self.ideEmpregador.xml = arquivo + self.ideTrabalhador.xml = arquivo + self.dmDev = self.le_grupo('//eSocial/evtRemun/dmDev', DmDev, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class S1200(XMLNFe): + def __init__(self): + super(S1200, self).__init__() + self.evtRemun = EvtRemun() + self.caminho_esquema = os.path.join(DIRNAME, 'schema/', ESQUEMA_ATUAL + '/') + self.arquivo_esquema = 'evtRemun.xsd' + self.id_evento = '' + self.tpInsc = '' + self.nrInsc = '' + # self.Signature = Signature() + self.evento = self.evtRemun + self.xml_assinado = '' + + def get_xml(self): + xml = XMLNFe.get_xml(self) + #xml += ABERTURA + xml += '' + xml += self.evtRemun.xml + + # + # Define a URI a ser assinada + # + # self.Signature.URI = '#' + self.evtInfoEmpregador.Id.valor + # xml += self.Signature.xml + xml += '' + + # Define o método de assinatura + # self.Signature.metodo = 'sha256' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.evtRemun.xml = arquivo + # self.Signature.xml = self._le_noh('//eSocial/sig:Signature') + + def gera_id_evento(self, data_hora, sequencia=False): + #A identificação única do evento (Id) é composta por 36 caracteres, conforme o que segue: IDTNNNNNNNNNNNNNNAAAAMMDDHHMMSSQQQQQ + #ID - Texto Fixo "ID"; + #T - Tipo de Inscrição do Empregador (1 - CNPJ; 2 - CPF); + #NNNNNNNNNNNNNN - Número do CNPJ ou CPF do empregador - Completar com + #zeros à direita. No caso de pessoas jurídicas, o CNPJ informado deve conter 8 ou 14 + #posições de acordo com o enquadramento do contribuinte para preenchimento do campo + #{ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se + #necessário. + #AAAAMMDD - Ano, mês e dia da geração do evento; + #HHMMSS - Hora, minuto e segundo da geração do evento; + #QQQQQ - Número sequencial da chave. Incrementar somente quando ocorrer geração de + #eventos na mesma data/hora, completando com zeros à esquerda. + #OBS.: No caso de pessoas jurídicas, o CNPJ informado deverá conter 8 ou 14 posições de + #acordo com o enquadramento do contribuinte para preenchimento do campo {ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se necessário. + + if not sequencia: + sequencia=1 + + id_evento = 'ID' + id_evento += self.tpInsc + id_evento += self.nrInsc[0:8] + '000000' + id_evento += data_hora + id_evento += str(sequencia).zfill(5) + + # Define o Id + # + self.evtRemun.Id.valor = id_evento + self.id_evento = id_evento + + xml = property(get_xml, set_xml) diff --git a/pysped/esocial/leiaute/evtRmnRPPS_20402.py b/pysped/esocial/leiaute/evtRmnRPPS_20402.py new file mode 100644 index 00000000..9d6bed97 --- /dev/null +++ b/pysped/esocial/leiaute/evtRmnRPPS_20402.py @@ -0,0 +1,647 @@ +# -*- coding: utf-8 -*- +# +# PySPED - Python libraries to deal with Brazil's SPED Project +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Library General Public License as +# published by the Free Software Foundation, either version 2.1 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public License +# along with this program. If not, see . +# +# PySPED - Bibliotecas Python para o +# SPED - Sistema Público de Escrituração Digital +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# Este programa é um software livre: você pode redistribuir e/ou modificar +# este programa sob os termos da licença GNU Library General Public License, +# publicada pela Free Software Foundation, em sua versão 2.1 ou, de acordo +# com sua opção, qualquer versão posterior. +# +# Este programa é distribuido na esperança de que venha a ser útil, +# porém SEM QUAISQUER GARANTIAS, nem mesmo a garantia implícita de +# COMERCIABILIDADE ou ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Veja a +# GNU Library General Public License para mais detalhes. +# +# Você deve ter recebido uma cópia da GNU Library General Public License +# juntamente com este programa. Caso esse não seja o caso, acesse: +# +# + +from __future__ import (division, print_function, unicode_literals, + absolute_import) + +from builtins import str +import os +from pysped.xml_sped import * +from pysped.esocial.leiaute import ESQUEMA_ATUAL_VERSAO_2 as ESQUEMA_ATUAL + +DIRNAME = os.path.dirname(__file__) + +NAMESPACE_ESOCIAL = 'http://www.esocial.gov.br/schema/evt/evtRmnRPPS/v02_04_02' + + +class RemunPerAntItensRemun(XMLNFe): + def __init__(self): + super(RemunPerAntItensRemun, self).__init__() + self.codRubr = TagCaracter(nome='codRubr', tamanho=[1, 30], raiz='//itensRemun', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideTabRubr = TagCaracter(nome='ideTabRubr', tamanho=[1, 8], raiz='//itensRemun', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.qtdRubr = TagInteiro( nome='qtdRubr', tamanho=[1, 6], raiz='//itensRemun', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.fatorRubr = TagInteiro( nome='fatorRubr', tamanho=[1, 5, 2], raiz='//itensRemun', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.vrUnit = TagDecimal( nome='vrUnit', tamanho=[1, 14, 2], raiz='//itensRemun', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.vrRubr = TagDecimal( nome='vrRubr', tamanho=[1, 14, 2], raiz='//itensRemun', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.codRubr.xml + xml += self.ideTabRubr.xml + xml += self.qtdRubr.xml + xml += self.fatorRubr.xml + xml += self.vrUnit.xml + xml += self.vrRubr.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codRubr.xml = arquivo + self.ideTabRubr.xml = arquivo + self.qtdRubr.xml = arquivo + self.fatorRubr.xml = arquivo + self.vrUnit.xml = arquivo + self.vrRubr.xml = arquivo + + xml = property(get_xml, set_xml) + + +class RemunPerAnt(XMLNFe): + def __init__(self): + super(RemunPerAnt, self).__init__() + self.matricula = TagCaracter(nome='matricula', tamanho=[1, 30], raiz='//ideEstab/remunPerApur', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.codCateg = TagCaracter(nome='codCateg', tamanho=[1, 3], raiz='//ideEstab/remunPerApur', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.itensRemun = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.matricula.xml + xml += self.codCateg.xml + if len(self.itensRemun) > 0: + for r in self.itensRemun: + xml += r.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.matricula.xml = arquivo + self.codCateg.xml = arquivo + self.itensRemun = self.le_grupo('//eSocial/evtRmnRPPS/dmDev/infoPerAnt/ideADC/idePeriodo/ideEstab/remunPerAnt/itensRemun', RemunPerAntItensRemun, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class IdePeriodoIdeEstab(XMLNFe): + def __init__(self): + super(IdePeriodoIdeEstab, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', tamanho=[1, 1], raiz='//ideEstab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='1') + self.nrInsc = TagCaracter(nome='nrInsc', tamanho=[1, 15], raiz='//ideEstab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.remunPerAnt = RemunPerAnt() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += self.remunPerAnt.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + self.remunPerAnt.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdePeriodo(XMLNFe): + def __init__(self): + super(IdePeriodo, self).__init__() + self.perRef = TagCaracter(nome='perRef', tamanho=[1, 7], raiz='//idePeriodo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideEstab = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.perRef.xml + if len(self.ideEstab) > 0: + for e in self.ideEstab: + xml += e.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.perRef.xml = arquivo + self.ideEstab = self.le_grupo('//eSocial/evtRmnRPPS/dmDev/infoPerAnt/ideADC/idePeriodo/ideEstab', IdePeriodoIdeEstab, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class IdeADC(XMLNFe): + def __init__(self): + super(IdeADC, self).__init__() + self.dtLei = TagData( nome='dtLei', raiz='//ideADC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrLei = TagCaracter(nome='nrLei', tamanho=[1, 12], raiz='//ideADC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtEf = TagData( nome='dtEf', raiz='//ideADC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.idePeriodo = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.dtLei.xml + xml += self.nrLei.xml + xml += self.dtEf.xml + if len(self.idePeriodo) > 0: + for p in self.idePeriodo: + xml += p.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.idePeriodo = self.le_grupo('//eSocial/evtRmnRPPS/dmDev/infoPerAnt/ideADC/idePeriodo', IdePeriodo, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class InfoPerAnt(XMLNFe): + def __init__(self): + super(InfoPerAnt, self).__init__() + self.ideADC = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + if len(self.ideADC) > 0: + for i in self.ideADC: + xml += i.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.ideADC = self.le_grupo('//eSocial/evtRmnRPPS/dmDev/infoPerAnt/ideADC', IdeADC, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class DetPlano(XMLNFe): + def __init__(self): + super(DetPlano, self).__init__() + self.tpDep = TagCaracter(nome='tpDep', tamanho=[1, 1], raiz='//detPlano', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.cpfDep = TagCaracter(nome='cpfDep', tamanho=[1, 11], raiz='//detPlano', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.nmDep = TagCaracter(nome='nmDep', tamanho=[1, 70], raiz='//detPlano', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtNascto = TagData( nome='dtNascto', tamanho=[1, 70], raiz='//detPlano', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrPgDep = TagDecimal( nome='vrPgDep', tamanho=[1, 14, 2], raiz='//detPlano', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpDep.xml + xml += self.cpfDep.xml + xml += self.nmDep.xml + xml += self.dtNascto.xml + xml += self.vrPgDep.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpDep.xml = arquivo + self.cpfDep.xml = arquivo + self.nmDep.xml = arquivo + self.dtNascto.xml = arquivo + self.vrPgDep.xml = arquivo + + xml = property(get_xml, set_xml) + + +class DetOper(XMLNFe): + def __init__(self): + super(DetOper, self).__init__() + self.cnpjOper = TagCaracter(nome='cnpjOper', tamanho=[1, 14], raiz='//detOper', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.regANS = TagCaracter(nome='regANS', tamanho=[1, 6], raiz='//detOper', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vrPgTit = TagDecimal( nome='vrPgTit', tamanho=[1, 14, 2], raiz='//detOper', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.detPlano = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cnpjOper.xml + xml += self.regANS.xml + xml += self.vrPgTit.xml + if len(self.detPlano) > 0: + for d in self.detPlano: + xml += d.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cnpjOper.xml = arquivo + self.regANS.xml = arquivo + self.vrPgTit.xml = arquivo + self.detPlano = self.le_grupo('//eSocial/evtRmnRPPS/dmDev/ideEstab/remunPerApur/infoSaudeColet/detOper/detPlano', DetPlano, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class InfoSaudeColet(XMLNFe): + def __init__(self): + super(InfoSaudeColet, self).__init__() + self.detOper = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + if len(self.detOper) > 0: + for d in self.detOper: + xml += d.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.detOper = self.le_grupo('//eSocial/evtRmnRPPS/dmDev/ideEstab/remunPerApur/infoSaudeColet/detOper', DetOper, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class ItensRemun(XMLNFe): + def __init__(self): + super(ItensRemun, self).__init__() + self.codRubr = TagCaracter(nome='codRubr', tamanho=[1, 30], raiz='//itensRemun', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideTabRubr = TagCaracter(nome='ideTabRubr', tamanho=[1, 8], raiz='//itensRemun', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.qtdRubr = TagInteiro( nome='qtdRubr', tamanho=[1, 6], raiz='//itensRemun', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.fatorRubr = TagInteiro( nome='fatorRubr', tamanho=[1, 5], raiz='//itensRemun', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.vrUnit = TagDecimal( nome='vrUnit', tamanho=[1, 14, 2], raiz='//itensRemun', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.vrRubr = TagDecimal( nome='vrRubr', tamanho=[1, 14, 2], raiz='//itensRemun', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.codRubr.xml + xml += self.ideTabRubr.xml + xml += self.qtdRubr.xml + xml += self.fatorRubr.xml + xml += self.vrUnit.xml + xml += self.vrRubr.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codRubr.xml = arquivo + self.ideTabRubr.xml = arquivo + self.qtdRubr.xml = arquivo + self.fatorRubr.xml = arquivo + self.vrUnit.xml = arquivo + self.vrRubr.xml = arquivo + + xml = property(get_xml, set_xml) + + +class RemunPerApur(XMLNFe): + def __init__(self): + super(RemunPerApur, self).__init__() + self.matricula = TagCaracter(nome='matricula', tamanho=[1, 30], raiz='//infoPerApur/ideEstab/remunPerApur', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.codCateg = TagCaracter(nome='codCateg', tamanho=[1, 3], raiz='//infoPerApur/ideEstab/remunPerApur', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.itensRemun = [] + self.infoSaudeColet = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.matricula.xml + xml += self.codCateg.xml + if len(self.itensRemun) > 0: + for i in self.itensRemun: + xml += i.xml + if len(self.infoSaudeColet) > 0: + for i in self.infoSaudeColet: + xml += i.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.matricula.xml = arquivo + self.codCateg.xml = arquivo + self.itensRemun = self.le_grupo('//eSocial/evtRmnRPPS/dmDev/ideEstab/remunPerApur/itensRemun', ItensRemun, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoSaudeColet = self.le_grupo('//eSocial/evtRmnRPPS/dmDev/ideEstab/remunPerApur/infoSaudeColet ', InfoSaudeColet, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class IdeEstab(XMLNFe): + def __init__(self): + super(IdeEstab, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', tamanho=[1, 1], raiz='//infoPerApur/ideEstab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='1') + self.nrInsc = TagCaracter(nome='nrInsc', tamanho=[1, 15], raiz='//infoPerApur/ideEstab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.remunPerApur = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + if len(self.remunPerApur) > 0: + for r in self.remunPerApur: + xml += r.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + self.remunPerApur = self.le_grupo('//eSocial/evtRmnRPPS/dmDev/infoPerApur/ideEstab/remunPerApur', RemunPerApur, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class InfoPerApur(XMLNFe): + def __init__(self): + super(InfoPerApur, self).__init__() + self.ideEstab = IdeEstab() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.ideEstab.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.ideEstab.xml = arquivo + + xml = property(get_xml, set_xml) + + +class DmDev(XMLNFe): + def __init__(self): + super(DmDev, self).__init__() + self.ideDmDev = TagCaracter(nome='ideDmDev', tamanho=[1, 30], raiz='//eSocial/evtRmnRPPS/dmDev', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.infoPerApur = [] + self.infoPerAnt = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.ideDmDev.xml + if len(self.infoPerApur) > 0: + for i in self.infoPerApur: + xml += i.xml + if len(self.infoPerAnt) > 0: + for i in self.infoPerAnt: + xml += i.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.ideDmDev.xml = arquivo + self.infoPerApur = self.le_grupo('//eSocial/evtRmnRPPS/dmDev/infoPerApur', InfoPerApur, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoPerAnt = self.le_grupo('//eSocial/evtRmnRPPS/dmDev/infoPerAnt', InfoPerAnt, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class ProcJudTrab(XMLNFe): + def __init__(self): + super(ProcJudTrab, self).__init__() + self.tpTrib = TagCaracter(nome='tpTrib', tamanho=[1, 1], raiz='//procJudTrab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrProcJud = TagCaracter(nome='nrProcJud', tamanho=[1, 20], raiz='//procJudTrab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codSusp = TagCaracter(nome='codSusp', tamanho=[1, 14], raiz='//procJudTrab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpTrib.xml + xml += self.nrProcJud.xml + xml += self.codSusp.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpTrib.xml = arquivo + self.nrProcJud.xml = arquivo + self.codSusp.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeTrabalhador(XMLNFe): + def __init__(self): + super(IdeTrabalhador, self).__init__() + self.cpfTrab = TagCaracter(nome='cpfTrab', tamanho=[1, 11], raiz='//eSocial/evtRmnRPPS/ideTrabalhador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nisTrab = TagCaracter(nome='nisTrab', tamanho=[1, 11], raiz='//eSocial/evtRmnRPPS/ideTrabalhador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.qtdDepFP = TagInteiro( nome='qtdDepFP', tamanho=[1, 2], raiz='//eSocial/evtRmnRPPS/ideTrabalhador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.procJudTrab = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cpfTrab.xml + xml += self.nisTrab.xml + xml += self.qtdDepFP.xml + if len(self.procJudTrab) > 0: + for p in self.procJudTrab: + xml += p.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cpfTrab.xml = arquivo + self.nisTrab.xml = arquivo + self.qtdDepFP.xml = arquivo + self.procJudTrab = self.le_grupo('//eSocial/evtRmnRPPS/ideTrabalhador/procJudTrab', ProcJudTrab, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class IdeEmpregador(XMLNFe): + def __init__(self): + super(IdeEmpregador, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', tamanho=[1, 1], raiz='//eSocial/evtRmnRPPS/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='1') + self.nrInsc = TagCaracter(nome='nrInsc', tamanho=[1, 15], raiz='//eSocial/evtRmnRPPS/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEvento(XMLNFe): + def __init__(self): + super(IdeEvento, self).__init__() + self.indRetif = TagInteiro( nome='indRetif', tamanho=[1, 1], raiz='//eSocial/evtRmnRPPS/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=1) + self.nrRecibo = TagCaracter(nome='nrRecibo', tamanho=[1, 40], raiz='//eSocial/evtRmnRPPS/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.indApuracao = TagCaracter(nome='indApuracao', tamanho=[1, 1], raiz='//eSocial/evtRmnRPPS/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.perApur = TagCaracter(nome='perApur', tamanho=[1, 7], raiz='//eSocial/evtRmnRPPS/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.tpAmb = TagInteiro( nome='tpAmb', tamanho=[1, 1], raiz='//eSocial/evtRmnRPPS/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=2) + self.procEmi = TagInteiro( nome='procEmi', tamanho=[1, 1], raiz='//eSocial/evtRmnRPPS/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=1) + self.verProc = TagCaracter(nome='verProc', tamanho=[1, 20], raiz='//eSocial/evtRmnRPPS/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.indRetif.xml + xml += self.nrRecibo.xml + xml += self.indApuracao.xml + xml += self.perApur.xml + xml += self.tpAmb.xml + xml += self.procEmi.xml + xml += self.verProc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.indRetif.xml = arquivo + self.nrRecibo.xml = arquivo + self.indApuracao.xml = arquivo + self.perApur.xml = arquivo + self.tpAmb.xml = arquivo + self.procEmi.xml = arquivo + self.verProc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class EvtRmnRPPS(XMLNFe): + def __init__(self): + super(EvtRmnRPPS, self).__init__() + self.Id = TagCaracter(nome='evtRmnRPPS', propriedade='Id', raiz='//eSocial/evtRmnRPPS', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideEvento = IdeEvento() + self.ideEmpregador = IdeEmpregador() + self.ideTrabalhador = IdeTrabalhador() + self.dmDev = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += self.Id.xml + xml += self.ideEvento.xml + xml += self.ideEmpregador.xml + xml += self.ideTrabalhador.xml + if len(self.dmDev) > 0: + for d in self.dmDev: + xml += d.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.Id.xml = arquivo + self.ideEvento.xml = arquivo + self.ideEmpregador.xml = arquivo + self.ideTrabalhador.xml = arquivo + self.dmDev = self.le_grupo('//eSocial/evtRmnRPPS/dmDev', DmDev, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class S1202(XMLNFe): + def __init__(self): + super(S1202, self).__init__() + self.evtRmnRPPS = EvtRmnRPPS() + self.caminho_esquema = os.path.join(DIRNAME, 'schema/', ESQUEMA_ATUAL + '/') + self.arquivo_esquema = 'evtRmnRPPS.xsd' + self.id_evento = '' + self.tpInsc = '' + self.nrInsc = '' + # self.Signature = Signature() + self.evento = self.evtRmnRPPS + self.xml_assinado = '' + + def get_xml(self): + xml = XMLNFe.get_xml(self) + #xml += ABERTURA + xml += '' + xml += self.evtRmnRPPS.xml + + # + # Define a URI a ser assinada + # + # self.Signature.URI = '#' + self.evtInfoEmpregador.Id.valor + # xml += self.Signature.xml + xml += '' + + # Define o método de assinatura + # self.Signature.metodo = 'sha256' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.evtRmnRPPS.xml = arquivo + # self.Signature.xml = self._le_noh('//eSocial/sig:Signature') + + def gera_id_evento(self, data_hora, sequencia=False): + #A identificação única do evento (Id) é composta por 36 caracteres, conforme o que segue: IDTNNNNNNNNNNNNNNAAAAMMDDHHMMSSQQQQQ + #ID - Texto Fixo "ID"; + #T - Tipo de Inscrição do Empregador (1 - CNPJ; 2 - CPF); + #NNNNNNNNNNNNNN - Número do CNPJ ou CPF do empregador - Completar com + #zeros à direita. No caso de pessoas jurídicas, o CNPJ informado deve conter 8 ou 14 + #posições de acordo com o enquadramento do contribuinte para preenchimento do campo + #{ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se + #necessário. + #AAAAMMDD - Ano, mês e dia da geração do evento; + #HHMMSS - Hora, minuto e segundo da geração do evento; + #QQQQQ - Número sequencial da chave. Incrementar somente quando ocorrer geração de + #eventos na mesma data/hora, completando com zeros à esquerda. + #OBS.: No caso de pessoas jurídicas, o CNPJ informado deverá conter 8 ou 14 posições de + #acordo com o enquadramento do contribuinte para preenchimento do campo {ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se necessário. + + if not sequencia: + sequencia=1 + + id_evento = 'ID' + id_evento += self.tpInsc + id_evento += self.nrInsc[0:8] + '000000' + id_evento += data_hora + id_evento += str(sequencia).zfill(5) + + # Define o Id + # + self.evtRmnRPPS.Id.valor = id_evento + self.id_evento = id_evento + + xml = property(get_xml, set_xml) diff --git a/pysped/esocial/leiaute/evtTSVAltContr_20402.py b/pysped/esocial/leiaute/evtTSVAltContr_20402.py new file mode 100644 index 00000000..68dffd8e --- /dev/null +++ b/pysped/esocial/leiaute/evtTSVAltContr_20402.py @@ -0,0 +1,511 @@ +# -*- coding: utf-8 -*- +# +# PySPED - Python libraries to deal with Brazil's SPED Project +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Library General Public License as +# published by the Free Software Foundation, either version 2.1 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public License +# along with this program. If not, see . +# +# PySPED - Bibliotecas Python para o +# SPED - Sistema Público de Escrituração Digital +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# Este programa é um software livre: você pode redistribuir e/ou modificar +# este programa sob os termos da licença GNU Library General Public License, +# publicada pela Free Software Foundation, em sua versão 2.1 ou, de acordo +# com sua opção, qualquer versão posterior. +# +# Este programa é distribuido na esperança de que venha a ser útil, +# porém SEM QUAISQUER GARANTIAS, nem mesmo a garantia implícita de +# COMERCIABILIDADE ou ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Veja a +# GNU Library General Public License para mais detalhes. +# +# Você deve ter recebido uma cópia da GNU Library General Public License +# juntamente com este programa. Caso esse não seja o caso, acesse: +# +# + +from __future__ import (division, print_function, unicode_literals, + absolute_import) + +from builtins import str +import os +from pysped.xml_sped import * +from pysped.esocial.leiaute import ESQUEMA_ATUAL_VERSAO_2 as ESQUEMA_ATUAL + +DIRNAME = os.path.dirname(__file__) + +NAMESPACE_ESOCIAL = 'http://www.esocial.gov.br/schema/evt/evtTSVAltContr/v02_04_02' + +class SupervisorEstagio(XMLNFe): + def __init__(self): + super(SupervisorEstagio, self).__init__() + self.cpfSupervisor = TagCaracter(nome='cpfSupervisor', tamanho=[1, 11], raiz='//cpfSupervisor', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nmSupervisor = TagCaracter(nome='nmSupervisor', tamanho=[1, 70], raiz='//nmSupervisor', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cpfSupervisor.xml + xml += self.nmSupervisor.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cpfSupervisor.xml = arquivo + self.nmSupervisor.xml = arquivo + + xml = property(get_xml, set_xml) + + +class AgeIntegracao(XMLNFe): + def __init__(self): + super(InstEnsino, self).__init__() + self.cnpjAgntInteg = TagCaracter(nome='cnpjAgntInteg', tamanho=[1, 14], raiz='//cnpjAgntInteg', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.nmRazao = TagCaracter(nome='nmRazao', tamanho=[1, 100], raiz='//nmRazao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dscLograd = TagCaracter(nome='dscLograd', tamanho=[1, 14], raiz='//dscLograd', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.nrLograd = TagInteiro(nome='nrLograd', tamanho=[1, 1], raiz='//nrLograd', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.bairro = TagCaracter(nome='bairro', tamanho=[1, 60], raiz='//bairro', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.cep = TagCaracter(nome='cep', tamanho=[1, 8], raiz='//cep', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codMunic = TagCaracter(nome='codMunic', tamanho=[1, 7], raiz='//codMunic', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.uf = TagCaracter(nome='uf', tamanho=[1, 2], raiz='//uf', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cnpjInstEnsino.xml + xml += self.nmRazao.xml + xml += self.dscLograd.xml + xml += self.nrLograd.xml + xml += self.bairro.xml + xml += self.cep.xml + xml += self.codMunic.xml + xml += self.uf.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cnpjInstEnsino.xml = arquivo + self.nmRazao.xml = arquivo + self.dscLograd.xml = arquivo + self.nrLograd.xml = arquivo + self.bairro.xml = arquivo + self.cep.xml = arquivo + self.codMunic.xml = arquivo + self.uf.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InstEnsino(XMLNFe): + def __init__(self): + super(InstEnsino, self).__init__() + self.cnpjInstEnsino = TagCaracter(nome='cnpjInstEnsino', tamanho=[1, 14], raiz='//cnpjInstEnsino', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.nmRazao = TagCaracter(nome='nmRazao', tamanho=[1, 100], raiz='//nmRazao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dscLograd = TagCaracter(nome='dscLograd', tamanho=[1, 14], raiz='//dscLograd', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.nrLograd = TagInteiro(nome='nrLograd', tamanho=[1, 1], raiz='//nrLograd', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.bairro = TagCaracter(nome='bairro', tamanho=[1, 60], raiz='//bairro', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.cep = TagCaracter(nome='cep', tamanho=[1, 8], raiz='//cep', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codMunic = TagCaracter(nome='codMunic', tamanho=[1, 7], raiz='//codMunic', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.uf = TagCaracter(nome='uf', tamanho=[1, 2], raiz='//uf', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cnpjInstEnsino.xml + xml += self.nmRazao.xml + xml += self.dscLograd.xml + xml += self.nrLograd.xml + xml += self.bairro.xml + xml += self.cep.xml + xml += self.codMunic.xml + xml += self.uf.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cnpjInstEnsino.xml = arquivo + self.nmRazao.xml = arquivo + self.dscLograd.xml = arquivo + self.nrLograd.xml = arquivo + self.bairro.xml = arquivo + self.cep.xml = arquivo + self.codMunic.xml = arquivo + self.uf.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoEstagiario(XMLNFe): + def __init__(self): + super(InfoEstagiario, self).__init__() + self.natEstagio = TagCaracter(nome='natEstagio', tamanho=[1, 1], raiz='//natEstagio', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nivEstagio = TagInteiro(nome='nivEstagio', tamanho=[1, 1], raiz='//nivEstagio', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.areaAtuacao = TagInteiro(nome='areaAtuacao', tamanho=[0, 50], raiz='//areaAtuacao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.nrApol = TagCaracter(nome='nrApol', tamanho=[0, 30], raiz='//nrApol', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.vlrBolsa = TagDecimal(nome='vlrBolsa', tamanho=[1, 14, 2], raiz='//vlrBolsa', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtPrevTerm = TagData(nome='dtPrevTerm', raiz='//dtPrevTerm', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.instEnsino = InstEnsino() + self.ageIntegracao = [] + self.supervisorEstagio = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.natEstagio.xml + xml += self.nivEstagio.xml + xml += self.areaAtuacao.xml + xml += self.nrApol.xml + xml += self.vlrBolsa.xml + xml += self.dtPrevTerm.xml + xml += self.instEnsino.xml + if self.ageIntegracao: + for age in self.ageIntegracao: + xml += age.xml + if self.supervisorEstagio: + xml += self.supervisorEstagio[0].xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.natEstagio.xml = arquivo + self.nivEstagio.xml = arquivo + self.areaAtuacao.xml = arquivo + self.nrApol.xml = arquivo + self.areaAtuacao.xml = arquivo + self.nrApol.xml = arquivo + self.vlrBolsa.xml = arquivo + self.dtPrevTerm.xml = arquivo + self.instEnsino.xml = arquivo + self.ageIntegracao.xml = self.le_grupo('//eSocial/evtTSVAltContr/infoTSVAlteracao/infoComplementares/infoEstagiario/ageIntegracao', AgeIntegracao, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.supervisorEstagio.xml = self.le_grupo('//eSocial/evtTSVAltContr/infoTSVAlteracao/infoComplementares/infoEstagiario/supervisorEstagio', AgeIntegracao, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class InfoTrabCedido(XMLNFe): + def __init__(self): + super(InfoTrabCedido, self).__init__() + self.categOrig = TagCaracter(nome='categOrig', raiz='//categOrig', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.cnpjCednt = TagCaracter(nome='cnpjCednt', raiz='//cnpjCednt', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.matricCed = TagCaracter(nome='matricCed', raiz='//matricCed', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtAdmCed = TagData(nome='dtAdmCed', raiz='//dtAdmCed', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.tpRegTrab = TagCaracter(nome='tpRegTrab', raiz='//tpRegTrab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.tpRegPrev = TagCaracter(nome='tpRegPrev', raiz='//tpRegPrev', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.infOnus = TagCaracter(nome='infOnus', tamanho=[1, 1], raiz='//infOnus', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.categOrig.xml + xml += self.cnpjCednt.xml + xml += self.matricCed.xml + xml += self.dtAdmCed.xml + xml += self.tpRegTrab.xml + xml += self.tpRegPrev.xml + xml += self.infOnus.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.categOrig.xml = arquivo + self.cnpjCednt.xml = arquivo + self.matricCed.xml = arquivo + self.dtAdmCed.xml = arquivo + self.tpRegTrab.xml = arquivo + self.tpRegPrev.xml = arquivo + self.infOnus.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Remuneracao(XMLNFe): + def __init__(self): + super(Remuneracao, self).__init__() + self.vrSalFx = TagDecimal(nome='vrSalFx', tamanho=[1, 14, 2], raiz='//vrSalFx', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.undSalFixo = TagInteiro(nome='undSalFixo', tamanho=[1, 1], raiz='//undSalFixo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dscSalVar = TagCaracter(nome='dscSalVar', tamanho=[0, 255], raiz='//dscSalVar', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.vrSalFx.xml + xml += self.undSalFixo.xml + xml += self.dscSalVar.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.vrSalFx.xml = arquivo + self.undSalFixo.xml = arquivo + self.dscSalVar.xml = arquivo + + xml = property(get_xml, set_xml) + + +class CargoFuncao(XMLNFe): + def __init__(self): + super(CargoFuncao, self).__init__() + self.codCargo = TagCaracter(nome='codCargo', tamanho=[1, 30], raiz='//codCargo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codFuncao = TagCaracter(nome='codFuncao', tamanho=[0, 30], raiz='//codCargo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.codCargo.xml + xml += self.codFuncao.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codCargo.xml = arquivo + self.codFuncao.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoComplementares(XMLNFe): + def __init__(self): + super(InfoComplementares, self).__init__() + self.cargoFuncao = [] + self.remuneracao = [] + self.infoTrabCedido = [] + self.infoEstagiario = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + if self.cargoFuncao: + for cf in self.cargoFuncao: + xml += cf.xml + if self.remuneracao: + for r in self.remuneracao: + xml += r.xml + if self.infoTrabCedido: + for i in self.infoTrabCedido: + xml += i.xml + if self.infoEstagiario: + for e in self.infoEstagiario: + xml += e.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cargoFuncao.xml = self.le_grupo('//eSocial/evtTSVAltContr/infoTSVAlteracao/infoComplementares/cargoFuncao', CargoFuncao, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.remuneracao.xml = self.le_grupo('//eSocial/evtTSVAltContr/infoTSVAlteracao/infoComplementares/remuneracao', Remuneracao, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoTrabCedido.xml = self.le_grupo('//eSocial/evtTSVAltContr/infoTSVAlteracao/infoComplementares/infoTrabCedido', Remuneracao, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoEstagiario.xml = self.le_grupo('//eSocial/evtTSVAltContr/infoTSVAlteracao/infoComplementares/infoTrabCedido', Remuneracao, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class InfoTSVAlteracao(XMLNFe): + def __init__(self): + super(InfoTSVAlteracao, self).__init__() + self.dtAlteracao = TagData(nome='dtAlteracao', raiz='//eSocial/evtAltContratual/infoTSVAlteracao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.natAtividade = TagInteiro(nome='natAtividade', raiz='//eSocial/evtAltContratual/infoTSVAlteracao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.infoComplementares = InfoComplementares() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.dtAlteracao.xml + xml += self.natAtividade.xml + xml += self.infoComplementares.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.dtAlteracao.xml = arquivo + self.natAtividade.xml = arquivo + self.infoComplementares.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeTrabSemVinculo(XMLNFe): + def __init__(self): + super(IdeTrabSemVinculo, self).__init__() + self.cpfTrab = TagCaracter(nome='cpfTrab', tamanho=[1, 11], raiz='//eSocial/evtTSVAltContr/ideTrabSemVinculo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nisTrab = TagCaracter(nome='nisTrab', tamanho=[1, 11], raiz='//eSocial/evtTSVAltContr/ideTrabSemVinculo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codCateg = TagInteiro(nome='codCateg', tamanho=[1, 3], raiz='//eSocial/evtTSVAltContr/ideTrabSemVinculo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cpfTrab.xml + xml += self.nisTrab.xml + xml += self.codCateg.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cpfTrab.xml = arquivo + self.nisTrab.xml = arquivo + self.codCateg.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEmpregador(XMLNFe): + def __init__(self): + super(IdeEmpregador, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', raiz='//eSocial/evtAltContratual/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='1') + self.nrInsc = TagCaracter(nome='nrInsc', raiz='//eSocial/evtAltContratual/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEvento(XMLNFe): + def __init__(self): + super(IdeEvento, self).__init__() + self.indRetif = TagInteiro( nome='indRetif', raiz='//eSocial/evtTSVAltContr/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=1) + self.nrRecibo = TagCaracter(nome='nrRecibo', raiz='//eSocial/evtTSVAltContr/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.tpAmb = TagInteiro( nome='tpAmb' , raiz='//eSocial/evtTSVAltContr/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=2) + self.procEmi = TagInteiro( nome='procEmi' , raiz='//eSocial/evtTSVAltContr/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=1) + self.verProc = TagCaracter(nome='verProc' , raiz='//eSocial/evtTSVAltContr/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.indRetif.xml + xml += self.nrRecibo.xml + xml += self.tpAmb.xml + xml += self.procEmi.xml + xml += self.verProc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.indRetif.xml = arquivo + self.nrRecibo.xml = arquivo + self.tpAmb.xml = arquivo + self.procEmi.xml = arquivo + self.verProc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class EvtTSVAltContr(XMLNFe): + def __init__(self): + super(EvtTSVAltContr, self).__init__() + self.Id = TagCaracter(nome='evtTSVAltContr', propriedade='Id', raiz='//eSocial/evtTSVAltContr', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideEvento = IdeEvento() + self.ideEmpregador = IdeEmpregador() + self.ideTrabSemVinculo = IdeTrabSemVinculo() + self.infoTSVAlteracao = InfoTSVAlteracao() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += self.Id.xml + xml += self.ideEvento.xml + xml += self.ideEmpregador.xml + xml += self.ideTrabSemVinculo.xml + xml += self.infoTSVAlteracao.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.Id.xml = arquivo + self.ideEvento.xml = arquivo + self.ideEmpregador.xml = arquivo + self.ideTrabSemVinculo.xml = arquivo + self.infoTSVAlteracao.xml = arquivo + + xml = property(get_xml, set_xml) + + +class S2306(XMLNFe): + def __init__(self): + super(S2306, self).__init__() + self.evtTSVAltContr = EvtTSVAltContr() + self.caminho_esquema = os.path.join(DIRNAME, 'schema/', ESQUEMA_ATUAL + '/') + self.arquivo_esquema = 'evtTSVAltContr.xsd' + self.id_evento = '' + self.tpInsc = '' + self.nrInsc = '' + # self.Signature = Signature() + self.evento = self.evtTSVAltContr + self.xml_assinado = '' + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.evtTSVAltContr.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.evtTSVAltContr.xml = arquivo + + def gera_id_evento(self, data_hora, sequencia=False): + #A identificação única do evento (Id) é composta por 36 caracteres, conforme o que segue: IDTNNNNNNNNNNNNNNAAAAMMDDHHMMSSQQQQQ + #ID - Texto Fixo "ID"; + #T - Tipo de Inscrição do Empregador (1 - CNPJ; 2 - CPF); + #NNNNNNNNNNNNNN - Número do CNPJ ou CPF do empregador - Completar com + #zeros à direita. No caso de pessoas jurídicas, o CNPJ informado deve conter 8 ou 14 + #posições de acordo com o enquadramento do contribuinte para preenchimento do campo + #{ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se + #necessário. + #AAAAMMDD - Ano, mês e dia da geração do evento; + #HHMMSS - Hora, minuto e segundo da geração do evento; + #QQQQQ - Número sequencial da chave. Incrementar somente quando ocorrer geração de + #eventos na mesma data/hora, completando com zeros à esquerda. + #OBS.: No caso de pessoas jurídicas, o CNPJ informado deverá conter 8 ou 14 posições de + #acordo com o enquadramento do contribuinte para preenchimento do campo {ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se necessário. + + if not sequencia: + sequencia=1 + + id_evento = 'ID' + id_evento += self.tpInsc + id_evento += self.nrInsc[0:8] + '000000' + id_evento += data_hora + id_evento += str(sequencia).zfill(5) + + # Define o Id + # + self.evtTSVAltContr.Id.valor = id_evento + self.id_evento = id_evento + + xml = property(get_xml, set_xml) diff --git a/pysped/esocial/leiaute/evtTSVInicio_20402.py b/pysped/esocial/leiaute/evtTSVInicio_20402.py new file mode 100644 index 00000000..d5505541 --- /dev/null +++ b/pysped/esocial/leiaute/evtTSVInicio_20402.py @@ -0,0 +1,1185 @@ +# -*- coding: utf-8 -*- +# +# PySPED - Python libraries to deal with Brazil's SPED Project +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Library General Public License as +# published by the Free Software Foundation, either version 2.1 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public License +# along with this program. If not, see . +# +# PySPED - Bibliotecas Python para o +# SPED - Sistema Público de Escrituração Digital +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# Este programa é um software livre: você pode redistribuir e/ou modificar +# este programa sob os termos da licença GNU Library General Public License, +# publicada pela Free Software Foundation, em sua versão 2.1 ou, de acordo +# com sua opção, qualquer versão posterior. +# +# Este programa é distribuido na esperança de que venha a ser útil, +# porém SEM QUAISQUER GARANTIAS, nem mesmo a garantia implícita de +# COMERCIABILIDADE ou ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Veja a +# GNU Library General Public License para mais detalhes. +# +# Você deve ter recebido uma cópia da GNU Library General Public License +# juntamente com este programa. Caso esse não seja o caso, acesse: +# +# + +from __future__ import (division, print_function, unicode_literals, + absolute_import) + +from builtins import str +import os +from pysped.xml_sped import * +from pysped.esocial.leiaute import ESQUEMA_ATUAL_VERSAO_2 as ESQUEMA_ATUAL + +DIRNAME = os.path.dirname(__file__) + +NAMESPACE_ESOCIAL = 'http://www.esocial.gov.br/schema/evt/evtTSVInicio/v02_04_02' + + +class SupervisorEstagio(XMLNFe): + def __init__(self): + super(SupervisorEstagio, self).__init__() + self.cpfSupervisor = TagCaracter(nome='cpfSupervisor', tamanho=[1, 11], raiz='//cpfSupervisor', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nmSupervisor = TagCaracter(nome='nmSupervisor', tamanho=[1, 70], raiz='//nmSupervisor', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cpfSupervisor.xml + xml += self.nmSupervisor.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cpfSupervisor.xml = arquivo + self.nmSupervisor.xml = arquivo + + xml = property(get_xml, set_xml) + + +class AgeIntegracao(XMLNFe): + def __init__(self): + super(InstEnsino, self).__init__() + self.cnpjAgntInteg = TagCaracter(nome='cnpjAgntInteg', tamanho=[1, 14], raiz='//cnpjAgntInteg', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.nmRazao = TagCaracter(nome='nmRazao', tamanho=[1, 100], raiz='//nmRazao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dscLograd = TagCaracter(nome='dscLograd', tamanho=[1, 14], raiz='//dscLograd', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.nrLograd = TagInteiro(nome='nrLograd', tamanho=[1, 1], raiz='//nrLograd', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.bairro = TagCaracter(nome='bairro', tamanho=[1, 60], raiz='//bairro', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.cep = TagCaracter(nome='cep', tamanho=[1, 8], raiz='//cep', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codMunic = TagCaracter(nome='codMunic', tamanho=[1, 7], raiz='//codMunic', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.uf = TagCaracter(nome='uf', tamanho=[1, 2], raiz='//uf', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cnpjInstEnsino.xml + xml += self.nmRazao.xml + xml += self.dscLograd.xml + xml += self.nrLograd.xml + xml += self.bairro.xml + xml += self.cep.xml + xml += self.codMunic.xml + xml += self.uf.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cnpjInstEnsino.xml = arquivo + self.nmRazao.xml = arquivo + self.dscLograd.xml = arquivo + self.nrLograd.xml = arquivo + self.bairro.xml = arquivo + self.cep.xml = arquivo + self.codMunic.xml = arquivo + self.uf.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InstEnsino(XMLNFe): + def __init__(self): + super(InstEnsino, self).__init__() + self.cnpjInstEnsino = TagCaracter(nome='cnpjInstEnsino', tamanho=[1, 14], raiz='//cnpjInstEnsino', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.nmRazao = TagCaracter(nome='nmRazao', tamanho=[1, 100], raiz='//nmRazao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dscLograd = TagCaracter(nome='dscLograd', tamanho=[1, 14], raiz='//dscLograd', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.nrLograd = TagInteiro(nome='nrLograd', tamanho=[1, 1], raiz='//nrLograd', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.bairro = TagCaracter(nome='bairro', tamanho=[1, 60], raiz='//bairro', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.cep = TagCaracter(nome='cep', tamanho=[1, 8], raiz='//cep', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codMunic = TagCaracter(nome='codMunic', tamanho=[1, 7], raiz='//codMunic', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.uf = TagCaracter(nome='uf', tamanho=[1, 2], raiz='//uf', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cnpjInstEnsino.xml + xml += self.nmRazao.xml + xml += self.dscLograd.xml + xml += self.nrLograd.xml + xml += self.bairro.xml + xml += self.cep.xml + xml += self.codMunic.xml + xml += self.uf.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cnpjInstEnsino.xml = arquivo + self.nmRazao.xml = arquivo + self.dscLograd.xml = arquivo + self.nrLograd.xml = arquivo + self.bairro.xml = arquivo + self.cep.xml = arquivo + self.codMunic.xml = arquivo + self.uf.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoEstagiario(XMLNFe): + def __init__(self): + super(InfoEstagiario, self).__init__() + self.natEstagio = TagCaracter(nome='natEstagio', tamanho=[1, 1], raiz='//natEstagio', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nivEstagio = TagInteiro(nome='nivEstagio', tamanho=[1, 1], raiz='//nivEstagio', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.areaAtuacao = TagInteiro(nome='areaAtuacao', tamanho=[0, 50], raiz='//areaAtuacao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.nrApol = TagCaracter(nome='nrApol', tamanho=[0, 30], raiz='//nrApol', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.vlrBolsa = TagDecimal(nome='vlrBolsa', tamanho=[1, 14, 2], raiz='//vlrBolsa', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtPrevTerm = TagData(nome='dtPrevTerm', raiz='//dtPrevTerm', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.instEnsino = InstEnsino() + self.ageIntegracao = [] + self.supervisorEstagio = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.natEstagio.xml + xml += self.nivEstagio.xml + xml += self.areaAtuacao.xml + xml += self.nrApol.xml + xml += self.vlrBolsa.xml + xml += self.dtPrevTerm.xml + xml += self.instEnsino.xml + if self.ageIntegracao: + for age in self.ageIntegracao: + xml += age.xml + if self.supervisorEstagio: + xml += self.supervisorEstagio[0].xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.opcFGTS.xml = arquivo + self.dtOpcFGTS.xml = arquivo + self.natEstagio.xml = arquivo + self.nivEstagio.xml = arquivo + self.areaAtuacao.xml = arquivo + self.nrApol.xml = arquivo + self.vlrBolsa.xml = arquivo + self.dtPrevTerm.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoTrabCedido(XMLNFe): + def __init__(self): + super(InfoTrabCedido, self).__init__() + self.categOrig = TagCaracter(nome='categOrig', raiz='//categOrig', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.cnpjCednt = TagCaracter(nome='cnpjCednt', raiz='//cnpjCednt', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.matricCed = TagCaracter(nome='matricCed', raiz='//matricCed', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtAdmCed = TagData(nome='dtAdmCed', raiz='//dtAdmCed', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.tpRegTrab = TagCaracter(nome='tpRegTrab', raiz='//tpRegTrab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.tpRegPrev = TagCaracter(nome='tpRegPrev', raiz='//tpRegPrev', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.infOnus = TagCaracter(nome='infOnus', tamanho=[1, 1], raiz='//infOnus', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.categOrig.xml + xml += self.cnpjCednt.xml + xml += self.matricCed.xml + xml += self.dtAdmCed.xml + xml += self.tpRegTrab.xml + xml += self.tpRegPrev.xml + xml += self.infOnus.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.categOrig.xml = arquivo + self.cnpjCednt.xml = arquivo + self.matricCed.xml = arquivo + self.dtAdmCed.xml = arquivo + self.tpRegTrab.xml = arquivo + self.tpRegPrev.xml = arquivo + self.infOnus.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoDirigenteSindical(XMLNFe): + def __init__(self): + super(InfoDirigenteSindical, self).__init__() + self.categOrig = TagCaracter(nome='categOrig', raiz='//categOrig', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.cnpjOrigem = TagCaracter(nome='cnpjOrigem', raiz='//cnpjOrigem', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.dtAdmOrig = TagData(nome='dtAdmOrig', raiz='//dtAdmOrig', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.matricOrig = TagCaracter(nome='matricOrig', raiz='//matricOrig', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.categOrig.xml + xml += self.cnpjOrigem.xml + xml += self.dtAdmOrig.xml + xml += self.matricOrig.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.categOrig.xml = arquivo + self.cnpjOrigem.xml = arquivo + self.dtAdmOrig.xml = arquivo + self.matricOrig.xml = arquivo + + xml = property(get_xml, set_xml) + + +class FGTS(XMLNFe): + def __init__(self): + super(FGTS, self).__init__() + self.opcFGTS = TagCaracter(nome='opcFGTS' , tamanho=[1, 1], raiz='//infoCeletista/fgts', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtOpcFGTS = TagCaracter(nome='dtOpcFGTS', raiz='//infoCeletista/fgts', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.opcFGTS.xml + xml += self.dtOpcFGTS.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.opcFGTS.xml = arquivo + self.dtOpcFGTS.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Remuneracao(XMLNFe): + def __init__(self): + super(Remuneracao, self).__init__() + self.vrSalFx = TagDecimal(nome='vrSalFx', tamanho=[1, 14, 2], raiz='//vrSalFx', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.undSalFixo = TagInteiro(nome='undSalFixo', tamanho=[1, 1], raiz='//undSalFixo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dscSalVar = TagCaracter(nome='dscSalVar', raiz='//dscSalVar', tamanho=[0, 255], namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.vrSalFx.xml + xml += self.undSalFixo.xml + xml += self.dscSalVar.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.vrSalFx.xml = arquivo + self.undSalFixo.xml = arquivo + self.dscSalVar.xml = arquivo + + xml = property(get_xml, set_xml) + + +class CargoFuncao(XMLNFe): + def __init__(self): + super(CargoFuncao, self).__init__() + self.codCargo = TagCaracter(nome='codCargo', tamanho=[1, 30], raiz='//codCargo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codFuncao = TagCaracter(nome='codFuncao', tamanho=[1, 1], raiz='//codCargo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.codCargo.xml + xml += self.codFuncao.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codCargo.xml = arquivo + self.codFuncao.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoComplementares(XMLNFe): + def __init__(self): + super(InfoComplementares, self).__init__() + self.cargoFuncao = [] + self.remuneracao = [] + self.fgts = [] + self.infoDirigenteSindical = [] + self.infoTrabCedido = [] + self.infoEstagiario = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + if self.cargoFuncao: + for cf in self.cargoFuncao: + xml += cf.xml + if self.remuneracao: + for r in self.remuneracao: + xml += r.xml + if self.fgts: + for f in self.fgts: + xml += f.xml + if self.infoDirigenteSindical: + for info in self.infoDirigenteSindical: + xml += info.xml + if self.infoTrabCedido: + for info in self.infoTrabCedido: + xml += info.xml + if self.infoEstagiario: + for estag in self.infoEstagiario: + xml += estag.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cargoFuncao.xml = self.le_grupo('//eSocial/', CargoFuncao, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.remuneracao.xml = self.le_grupo('//eSocial/', Remuneracao, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.fgts.xml = self.le_grupo('//eSocial/', FGTS, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoDirigenteSindical.xml = arquivo + self.infoTrabCedido.xml = arquivo + self.infoEstagiario.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Afastamento(XMLNFe): + def __init__(self): + super(Afastamento, self).__init__() + self.dtIniAfast = TagData(nome='dtIniAfast', raiz='//dtIniAfast', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codMotAfast = TagCaracter(nome='codMotAfast', tamanho=[1, 2], raiz='//codMotAfast', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.dtIniAfast.xml + xml += self.codMotAfast.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.dtIniAfast.xml = arquivo + self.codMotAfast.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Termino(XMLNFe): + def __init__(self): + super(Termino, self).__init__() + self.dtTerm = TagData(nome='dtTerm', raiz='//dtTerm', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.dtTerm.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.dtTerm.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoTSVInicio(XMLNFe): + def __init__(self): + super(InfoTSVInicio, self).__init__() + self.cadIni = TagCaracter(nome='cadIni', tamanho=[1, 1], raiz='//eSocial/evtTSVInicio/infoTSVInicio', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.codCateg = TagInteiro(nome='codCateg', raiz='//eSocial/evtTSVInicio/infoTSVInicio', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.dtInicio = TagData(nome='dtInicio', raiz='//eSocial/evtTSVInicio/infoTSVInicio', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.natAtividade = TagInteiro(nome='natAtividade', raiz='//eSocial/evtTSVInicio/infoTSVInicio', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.infoComplementares = [] + self.afastamento = [] + self.termino = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cadIni.xml + xml += self.codCateg.xml + xml += self.dtInicio.xml + xml += self.natAtividade.xml + if self.infoComplementares: + for info in self.infoComplementares: + xml += info.xml + if self.afastamento: + for a in self.afastamento: + xml += a.xml + if self.termino: + for t in self.termino: + xml += t.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cadIni.xml = arquivo + self.codCateg.xml = arquivo + self.dtInicio.xml = arquivo + self.natAtividade.xml = arquivo + self.infoComplementares = self.le_grupo('//eSocial/', InfoComplementares, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.afastamento = self.le_grupo('//eSocial/', Afastamento, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.termino = self.le_grupo('//eSocial/', Termino, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class Contato(XMLNFe): + def __init__(self): + super(Contato, self).__init__() + self.fonePrinc = TagCaracter(nome='fonePrinc' , tamanho=[1, 13], raiz='//contato', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.foneAlternat = TagCaracter(nome='foneAlternat' , tamanho=[1, 13], raiz='//contato', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.emailPrinc = TagCaracter(nome='emailPrinc' , tamanho=[1, 60], raiz='//contato', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.emailAlternat = TagCaracter(nome='emailAlternat', tamanho=[1, 60], raiz='//contato', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.fonePrinc.xml + xml += self.foneAlternat.xml + xml += self.emailPrinc.xml + xml += self.emailAlternat.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.fonePrinc.xml = arquivo + self.foneAlternat.xml = arquivo + self.emailPrinc.xml = arquivo + self.emailAlternat.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Aposentadoria(XMLNFe): + def __init__(self): + super(Aposentadoria, self).__init__() + self.trabAposent = TagCaracter(nome='trabAposent', tamanho=[1, 1], raiz='//aposentadoria', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.trabAposent.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.trabAposent.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Dependente(XMLNFe): + def __init__(self): + super(Dependente, self).__init__() + self.tpDep = TagCaracter(nome='tpDep' , tamanho=[1, 2], raiz='//dependente', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nmDep = TagCaracter(nome='nmDep' , tamanho=[1, 70], raiz='//dependente', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtNascto = TagData( nome='dtNascto' , raiz='//dependente', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.cpfDep = TagCaracter(nome='cpfDep' , tamanho=[1, 11], raiz='//dependente', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.depIRRF = TagCaracter(nome='depIRRF' , tamanho=[1, 1], raiz='//dependente', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.depSF = TagCaracter(nome='depSF' , tamanho=[1, 1], raiz='//dependente', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.incTrab = TagCaracter(nome='incTrab' , tamanho=[1, 1], raiz='//dependente', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpDep.xml + xml += self.nmDep.xml + xml += self.dtNascto.xml + xml += self.cpfDep.xml + xml += self.depIRRF.xml + xml += self.depSF.xml + xml += self.incTrab.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpDep.xml = arquivo + self.nmDep.xml = arquivo + self.dtNascto.xml = arquivo + self.cpfDep.xml = arquivo + self.depIRRF.xml = arquivo + self.depSF.xml = arquivo + self.incTrab.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoDeficiencia(XMLNFe): + def __init__(self): + super(InfoDeficiencia, self).__init__() + self.defFisica = TagCaracter(nome='defFisica' , tamanho=[1, 1], raiz='//infoDeficiencia', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.defVisual = TagCaracter(nome='defVisual' , tamanho=[1, 1], raiz='//infoDeficiencia', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.defAuditiva = TagCaracter(nome='defAuditiva' , tamanho=[1, 1], raiz='//infoDeficiencia', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.defMental = TagCaracter(nome='defMental' , tamanho=[1, 1], raiz='//infoDeficiencia', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.defIntelectual = TagCaracter(nome='defIntelectual' , tamanho=[1, 1], raiz='//infoDeficiencia', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.reabReadp = TagCaracter(nome='reabReadp' , tamanho=[1, 1], raiz='//infoDeficiencia', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.infoCota = TagCaracter(nome='infoCota' , tamanho=[1, 1], raiz='//infoDeficiencia', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.observacao = TagCaracter(nome='observacao' , tamanho=[1, 255], raiz='//infoDeficiencia', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.defFisica.xml + xml += self.defVisual.xml + xml += self.defAuditiva.xml + xml += self.defMental.xml + xml += self.defIntelectual.xml + xml += self.reabReadp.xml + xml += self.infoCota.xml + xml += self.observacao.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.defFisica.xml = arquivo + self.defVisual.xml = arquivo + self.defAuditiva.xml = arquivo + self.defMental.xml = arquivo + self.defIntelectual.xml = arquivo + self.reabReadp.xml = arquivo + self.infoCota.xml = arquivo + self.observacao.xml = arquivo + + xml = property(get_xml, set_xml) + + +class TrabEstrangeiro(XMLNFe): + def __init__(self): + super(TrabEstrangeiro, self).__init__() + self.dtChegada = TagData( nome='dtChegada' , raiz='//trabEstrangeiro', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.classTrabEstrang = TagCaracter(nome='classTrabEstrang', tamanho=[1, 2], raiz='//trabEstrangeiro', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.casadoBr = TagCaracter(nome='casadoBr' , tamanho=[1, 1], raiz='//trabEstrangeiro', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.filhosBr = TagCaracter(nome='filhosBr' , tamanho=[1, 1], raiz='//trabEstrangeiro', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.dtChegada.xml + xml += self.classTrabEstrang.xml + xml += self.casadoBr.xml + xml += self.filhosBr.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.dtChegada.xml = arquivo + self.classTrabEstrang.xml = arquivo + self.casadoBr.xml = arquivo + self.filhosBr.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Exterior(XMLNFe): + def __init__(self): + super(Exterior, self).__init__() + self.paisResid = TagCaracter(nome='paisResid' , tamanho=[1, 3], raiz='//Exterior', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dscLograd = TagCaracter(nome='dscLograd' , tamanho=[1, 80], raiz='//Exterior', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrLograd = TagCaracter(nome='nrLograd' , tamanho=[1, 10], raiz='//Exterior', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.complemento = TagCaracter(nome='complemento' , tamanho=[1, 30], raiz='//Exterior', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.bairro = TagCaracter(nome='bairro' , tamanho=[1, 60], raiz='//Exterior', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.nmCid = TagCaracter(nome='nmCid' , tamanho=[1, 50], raiz='//Exterior', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codPostal = TagCaracter(nome='codPostal' , tamanho=[1, 12], raiz='//Exterior', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.paisResid.xml + xml += self.dscLograd.xml + xml += self.nrLograd.xml + xml += self.complemento.xml + xml += self.bairro.xml + xml += self.nmCid.xml + xml += self.codPostal.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.paisResid.xml = arquivo + self.dscLograd.xml = arquivo + self.nrLograd.xml = arquivo + self.complemento.xml = arquivo + self.bairro.xml = arquivo + self.nmCid.xml = arquivo + self.codPostal.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Brasil(XMLNFe): + def __init__(self): + super(Brasil, self).__init__() + self.tpLograd = TagCaracter(nome='tpLograd' , tamanho=[1, 4], raiz='//Brasil', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dscLograd = TagCaracter(nome='dscLograd' , tamanho=[1, 80], raiz='//Brasil', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrLograd = TagCaracter(nome='nrLograd' , tamanho=[1, 10], raiz='//Brasil', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.complemento = TagCaracter(nome='complemento' , tamanho=[1, 30], raiz='//Brasil', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.bairro = TagCaracter(nome='bairro' , tamanho=[1, 60], raiz='//Brasil', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.cep = TagCaracter(nome='cep' , tamanho=[1, 8], raiz='//Brasil', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codMunic = TagCaracter(nome='codMunic' , tamanho=[1, 7], raiz='//Brasil', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.uf = TagCaracter(nome='uf' , tamanho=[1, 2], raiz='//Brasil', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpLograd.xml + xml += self.dscLograd.xml + xml += self.nrLograd.xml + xml += self.complemento.xml + xml += self.bairro.xml + xml += self.cep.xml + xml += self.codMunic.xml + xml += self.uf.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpLograd.xml = arquivo + self.dscLograd.xml = arquivo + self.nrLograd.xml = arquivo + self.complemento.xml = arquivo + self.bairro.xml = arquivo + self.cep.xml = arquivo + self.codMunic.xml = arquivo + self.uf.xml = arquivo + + xml = property(get_xml, set_xml) + + +class CNH(XMLNFe): + def __init__(self): + super(CNH, self).__init__() + self.nrRegCnh = TagCaracter(nome='nrRegCnh' , tamanho=[1, 12], raiz='//CNH', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtExped = TagData( nome='dtExped' , raiz='//CNH', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.ufCnh = TagCaracter(nome='ufCnh' , tamanho=[1, 2], raiz='//CNH', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtValid = TagData( nome='dtValid' , raiz='//CNH', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtPriHab = TagData( nome='dtPriHab' , raiz='//CNH', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.categoriaCnh = TagCaracter(nome='categoriaCnh', tamanho=[1, 2], raiz='//CNH', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nrRegCnh.xml + xml += self.dtExped.xml + xml += self.ufCnh.xml + xml += self.dtValid.xml + xml += self.dtPriHab.xml + xml += self.categoriaCnh.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nrRegCnh.xml = arquivo + self.dtExped.xml = arquivo + self.ufCnh.xml = arquivo + self.dtValid.xml = arquivo + self.dtPriHab.xml = arquivo + self.categoriaCnh.xml = arquivo + + xml = property(get_xml, set_xml) + + +class OC(XMLNFe): + def __init__(self): + super(OC, self).__init__() + self.nrOc = TagCaracter(nome='nrOc' , tamanho=[1, 14], raiz='//OC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.orgaoEmissor = TagCaracter(nome='orgaoEmissor', tamanho=[1, 20], raiz='//OC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtExped = TagData( nome='dtExped' , raiz='//OC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.dtValid = TagData( nome='dtValid' , raiz='//OC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nrOc.xml + xml += self.orgaoEmissor.xml + xml += self.dtExped.xml + xml += self.dtValid.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nrOc.xml = arquivo + self.orgaoEmissor.xml = arquivo + self.dtExped.xml = arquivo + self.dtValid.xml = arquivo + + xml = property(get_xml, set_xml) + + +class RNE(XMLNFe): + def __init__(self): + super(RNE, self).__init__() + self.nrRne = TagCaracter(nome='nrRne' , tamanho=[1, 14], raiz='//RNE', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.orgaoEmissor = TagCaracter(nome='orgaoEmissor', tamanho=[1, 20], raiz='//RNE', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtExped = TagData( nome='dtExped' , raiz='//RNE', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nrRne.xml + xml += self.orgaoEmissor.xml + xml += self.dtExped.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nrRne.xml = arquivo + self.orgaoEmissor.xml = arquivo + self.dtExped.xml = arquivo + + xml = property(get_xml, set_xml) + + +class RG(XMLNFe): + def __init__(self): + super(RG, self).__init__() + self.nrRg = TagCaracter(nome='nrRg' , tamanho=[1, 14], raiz='//RG', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.orgaoEmissor = TagCaracter(nome='orgaoEmissor', tamanho=[1, 20], raiz='//RG', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtExped = TagData( nome='dtExped' , raiz='//RG', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nrRg.xml + xml += self.orgaoEmissor.xml + xml += self.dtExped.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nrRg.xml = arquivo + self.orgaoEmissor.xml = arquivo + self.dtExped.xml = arquivo + + xml = property(get_xml, set_xml) + + +class RIC(XMLNFe): + def __init__(self): + super(RIC, self).__init__() + self.nrRic = TagCaracter(nome='nrRic' , tamanho=[1, 14], raiz='//RIC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.orgaoEmissor = TagCaracter(nome='orgaoEmissor', tamanho=[1, 20], raiz='//RIC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtExped = TagData( nome='dtExped' , raiz='//RIC', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nrRic.xml + xml += self.orgaoEmissor.xml + xml += self.dtExped.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nrRic.xml = arquivo + self.orgaoEmissor.xml = arquivo + self.dtExped.xml = arquivo + + xml = property(get_xml, set_xml) + + +class CTPS(XMLNFe): + def __init__(self): + super(CTPS, self).__init__() + self.nrCtps = TagCaracter(nome='nrCtps' , tamanho=[1, 11], raiz='//CTPS', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.serieCtps = TagCaracter(nome='serieCtps', tamanho=[1, 5], raiz='//CTPS', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ufCtps = TagCaracter(nome='ufCtps' , tamanho=[1, 2], raiz='//CTPS', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nrCtps.xml + xml += self.serieCtps.xml + xml += self.ufCtps.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nrCtps.xml = arquivo + self.serieCtps.xml = arquivo + self.ufCtps.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Endereco(XMLNFe): + def __init__(self): + super(Endereco, self).__init__() + self.brasil = [] + self.exterior = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + if len(self.brasil) > 0: + for b in self.brasil: + xml += b.xml + if len(self.exterior) > 0: + for e in self.exterior: + xml += e.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.brasil = self.le_grupo('//eSocial/evtTSVInicio/trabalhador/endereco/brasil', CTPS, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.exterior = self.le_grupo('//eSocial/evtTSVInicio/trabalhador/endereco/exterior', CTPS, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class Documentos(XMLNFe): + def __init__(self): + super(Documentos, self).__init__() + self.CTPS = [] + self.RIC = [] + self.RG = [] + self.RNE = [] + self.OC = [] + self.CNH = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + if len(self.CTPS) > 0: + for c in self.CTPS: + xml += c.xml + if len(self.RIC) > 0: + for r in self.RIC: + xml += r.xml + if len(self.RG) > 0: + for r in self.RG: + xml += r.xml + if len(self.RNE) > 0: + for r in self.RNE: + xml += r.xml + if len(self.OC) > 0: + for o in self.OC: + xml += o.xml + if len(self.CNH) > 0: + for c in self.CNH: + xml += c.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.CTPS = self.le_grupo('//eSocial/evtTSVInicio/trabalhador/documentos/CTPS', CTPS, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.RIC = self.le_grupo('//eSocial/evtTSVInicio/trabalhador/documentos/RIC' , RIC , namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.RG = self.le_grupo('//eSocial/evtTSVInicio/trabalhador/documentos/RG' , RG , namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.RNE = self.le_grupo('//eSocial/evtTSVInicio/trabalhador/documentos/RNE' , RNE , namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.OC = self.le_grupo('//eSocial/evtTSVInicio/trabalhador/documentos/OC' , OC , namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.CNH = self.le_grupo('//eSocial/evtTSVInicio/trabalhador/documentos/CNH' , CNH , namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class Nascimento(XMLNFe): + def __init__(self): + super(Nascimento, self).__init__() + self.dtNascto = TagData( nome='dtNascto', raiz='//eSocial/evtTSVInicio/trabalhador/nascimento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codMunic = TagCaracter(nome='codMunic', tamanho=[1, 7] , raiz='//eSocial/evtTSVInicio/trabalhador/nascimento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.uf = TagCaracter(nome='uf', tamanho=[1, 2] , raiz='//eSocial/evtTSVInicio/trabalhador/nascimento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.paisNascto = TagCaracter(nome='paisNascto', tamanho=[1, 3] , raiz='//eSocial/evtTSVInicio/trabalhador/nascimento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.paisNac = TagCaracter(nome='paisNac', tamanho=[1, 3] , raiz='//eSocial/evtTSVInicio/trabalhador/nascimento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nmMae = TagCaracter(nome='nmMae', tamanho=[1, 70], raiz='//eSocial/evtTSVInicio/trabalhador/nascimento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.nmPai = TagCaracter(nome='nmPai', tamanho=[1, 70], raiz='//eSocial/evtTSVInicio/trabalhador/nascimento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.dtNascto.xml + xml += self.codMunic.xml + xml += self.uf.xml + xml += self.paisNascto.xml + xml += self.paisNac.xml + xml += self.nmMae.xml + xml += self.nmPai.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.dtNascto.xml = arquivo + self.codMunic.xml = arquivo + self.uf.xml = arquivo + self.paisNascto.xml = arquivo + self.paisNac.xml = arquivo + self.nmMae.xml = arquivo + self.nmPai.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Trabalhador(XMLNFe): + def __init__(self): + super(Trabalhador, self).__init__() + self.cpfTrab = TagCaracter(nome='cpfTrab' , tamanho=[1, 11], raiz='//eSocial/evtTSVInicio/trabalhador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nisTrab = TagCaracter(nome='nisTrab' , tamanho=[1, 11], raiz='//eSocial/evtTSVInicio/trabalhador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nmTrab = TagCaracter(nome='nmTrab' , tamanho=[1, 70], raiz='//eSocial/evtTSVInicio/trabalhador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.sexo = TagCaracter(nome='sexo' , tamanho=[1, 1] , raiz='//eSocial/evtTSVInicio/trabalhador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.racaCor = TagCaracter(nome='racaCor' , tamanho=[1, 1] , raiz='//eSocial/evtTSVInicio/trabalhador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.estCiv = TagCaracter(nome='estCiv' , tamanho=[1, 1] , raiz='//eSocial/evtTSVInicio/trabalhador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.grauInstr = TagCaracter(nome='grauInstr' , tamanho=[1, 2] , raiz='//eSocial/evtTSVInicio/trabalhador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nmSoc = TagCaracter(nome='nmSoc' , tamanho=[1, 70], raiz='//eSocial/evtTSVInicio/trabalhador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.nascimento = Nascimento() + self.documentos = Documentos() + self.endereco = Endereco() + self.trabEstrangeiro = [] + self.infoDeficiencia = [] + self.dependente = [] + self.aposentadoria = [] + self.contato = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cpfTrab.xml + xml += self.nisTrab.xml + xml += self.nmTrab.xml + xml += self.sexo.xml + xml += self.racaCor.xml + xml += self.estCiv.xml + xml += self.grauInstr.xml + xml += self.nmSoc.xml + xml += self.nascimento.xml + xml += self.documentos.xml + xml += self.endereco.xml + if len(self.trabEstrangeiro) > 0: + for t in self.trabEstrangeiro: + xml += t.xml + if len(self.infoDeficiencia) > 0: + for i in self.infoDeficiencia: + xml += i.xml + if len(self.dependente) > 0: + for d in self.dependente: + xml += d.xml + if len(self.aposentadoria) > 0: + for a in self.aposentadoria: + xml += a.xml + if len(self.contato) > 0: + for c in self.contato: + xml += c.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cpfTrab.xml = arquivo + self.nisTrab.xml = arquivo + self.nmTrab.xml = arquivo + self.sexo.xml = arquivo + self.racaCor.xml = arquivo + self.estCiv.xml = arquivo + self.grauInstr.xml = arquivo + self.nmSoc.xml = arquivo + self.nascimento.xml = arquivo + self.documentos.xml = arquivo + self.endereco.xml = arquivo + self.trabEstrangeiro = self.le_grupo('//eSocial/evtTSVInicio/trabalhador/trabEstrangeiro', TrabEstrangeiro, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoDeficiencia = self.le_grupo('//eSocial/evtTSVInicio/trabalhador/infoDeficiencia', InfoDeficiencia, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.dependente = self.le_grupo('//eSocial/evtTSVInicio/trabalhador/dependente', Dependente, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.aposentadoria = self.le_grupo('//eSocial/evtTSVInicio/trabalhador/aposentadoria', Aposentadoria, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.contato = self.le_grupo('//eSocial/evtTSVInicio/trabalhador/contato', Contato, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class IdeEmpregador(XMLNFe): + def __init__(self): + super(IdeEmpregador, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', raiz='//eSocial/evtTSVInicio/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='1') + self.nrInsc = TagCaracter(nome='nrInsc', tamanho=[1, 15], raiz='//eSocial/evtTSVInicio/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEvento(XMLNFe): + def __init__(self): + super(IdeEvento, self).__init__() + self.indRetif = TagInteiro( nome='indRetif', raiz='//eSocial/evtTSVInicio/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=1) + self.nrRecibo = TagCaracter(nome='nrRecibo', raiz='//eSocial/evtTSVInicio/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.tpAmb = TagInteiro( nome='tpAmb' , raiz='//eSocial/evtTSVInicio/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=2) + self.procEmi = TagInteiro( nome='procEmi' , raiz='//eSocial/evtTSVInicio/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=1) + self.verProc = TagCaracter(nome='verProc' , raiz='//eSocial/evtTSVInicio/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.indRetif.xml + xml += self.nrRecibo.xml + xml += self.tpAmb.xml + xml += self.procEmi.xml + xml += self.verProc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.indRetif.xml = arquivo + self.nrRecibo.xml = arquivo + self.tpAmb.xml = arquivo + self.procEmi.xml = arquivo + self.verProc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class EvtTSVInicio(XMLNFe): + def __init__(self): + super(EvtTSVInicio, self).__init__() + self.Id = TagCaracter(nome='evtTSVInicio', propriedade='Id', raiz='//eSocial/evtTSVInicio', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideEvento = IdeEvento() + self.ideEmpregador = IdeEmpregador() + self.trabalhador = Trabalhador() + self.infoTSVInicio = InfoTSVInicio() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += self.Id.xml + xml += self.ideEvento.xml + xml += self.ideEmpregador.xml + xml += self.trabalhador.xml + xml += self.infoTSVInicio.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.Id.xml = arquivo + self.ideEvento.xml = arquivo + self.ideEmpregador.xml = arquivo + self.trabalhador.xml = arquivo + self.infoTSVInicio.xml = arquivo + + xml = property(get_xml, set_xml) + + +class S2300(XMLNFe): + def __init__(self): + super(S2300, self).__init__() + self.evtTSVInicio = EvtTSVInicio() + self.caminho_esquema = os.path.join(DIRNAME, 'schema/', ESQUEMA_ATUAL + '/') + self.arquivo_esquema = 'evtTSVInicio.xsd' + self.id_evento = '' + self.tpInsc = '' + self.nrInsc = '' + # self.Signature = Signature() + self.evento = self.evtTSVInicio + self.xml_assinado = '' + + def get_xml(self): + xml = XMLNFe.get_xml(self) + #xml += ABERTURA + xml += '' + xml += self.evtTSVInicio.xml + + # + # Define a URI a ser assinada + # + # self.Signature.URI = '#' + self.evtInfoEmpregador.Id.valor + # xml += self.Signature.xml + xml += '' + + # Define o método de assinatura + # self.Signature.metodo = 'sha256' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.evtTSVInicio.xml = arquivo + # self.Signature.xml = self._le_noh('//eSocial/sig:Signature') + + def gera_id_evento(self, data_hora, sequencia=False): + #A identificação única do evento (Id) é composta por 36 caracteres, conforme o que segue: IDTNNNNNNNNNNNNNNAAAAMMDDHHMMSSQQQQQ + #ID - Texto Fixo "ID"; + #T - Tipo de Inscrição do Empregador (1 - CNPJ; 2 - CPF); + #NNNNNNNNNNNNNN - Número do CNPJ ou CPF do empregador - Completar com + #zeros à direita. No caso de pessoas jurídicas, o CNPJ informado deve conter 8 ou 14 + #posições de acordo com o enquadramento do contribuinte para preenchimento do campo + #{ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se + #necessário. + #AAAAMMDD - Ano, mês e dia da geração do evento; + #HHMMSS - Hora, minuto e segundo da geração do evento; + #QQQQQ - Número sequencial da chave. Incrementar somente quando ocorrer geração de + #eventos na mesma data/hora, completando com zeros à esquerda. + #OBS.: No caso de pessoas jurídicas, o CNPJ informado deverá conter 8 ou 14 posições de + #acordo com o enquadramento do contribuinte para preenchimento do campo {ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se necessário. + + if not sequencia: + sequencia=1 + + id_evento = 'ID' + id_evento += self.tpInsc + id_evento += self.nrInsc[0:8] + '000000' + id_evento += data_hora + id_evento += str(sequencia).zfill(5) + + # Define o Id + # + self.evtTSVInicio.Id.valor = id_evento + self.id_evento = id_evento + + xml = property(get_xml, set_xml) diff --git a/pysped/esocial/leiaute/evtTSVTermino_20402.py b/pysped/esocial/leiaute/evtTSVTermino_20402.py new file mode 100644 index 00000000..cd519b8d --- /dev/null +++ b/pysped/esocial/leiaute/evtTSVTermino_20402.py @@ -0,0 +1,522 @@ +# -*- coding: utf-8 -*- +# +# PySPED - Python libraries to deal with Brazil's SPED Project +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Library General Public License as +# published by the Free Software Foundation, either version 2.1 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public License +# along with this program. If not, see . +# +# PySPED - Bibliotecas Python para o +# SPED - Sistema Público de Escrituração Digital +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# Este programa é um software livre: você pode redistribuir e/ou modificar +# este programa sob os termos da licença GNU Library General Public License, +# publicada pela Free Software Foundation, em sua versão 2.1 ou, de acordo +# com sua opção, qualquer versão posterior. +# +# Este programa é distribuido na esperança de que venha a ser útil, +# porém SEM QUAISQUER GARANTIAS, nem mesmo a garantia implícita de +# COMERCIABILIDADE ou ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Veja a +# GNU Library General Public License para mais detalhes. +# +# Você deve ter recebido uma cópia da GNU Library General Public License +# juntamente com este programa. Caso esse não seja o caso, acesse: +# +# + +from __future__ import (division, print_function, unicode_literals, + absolute_import) + +from builtins import str +import os +from pysped.xml_sped import * +from pysped.esocial.leiaute import ESQUEMA_ATUAL_VERSAO_2 as ESQUEMA_ATUAL + +DIRNAME = os.path.dirname(__file__) + +NAMESPACE_ESOCIAL = 'http://www.esocial.gov.br/schema/evt/evtTSVTermino/v02_04_02' + +class Quarentena(XMLNFe): + def __init__(self): + super(Quarentena, self).__init__() + self.dtFimQuar = TagData(name='dtFimQuar', raiz='//dtFimQuar', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.dtFimQuar.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.dtFimQuar.xml = arquivo + + xml = property(get_xml, set_xml) + + +class RemunOutrEmpr(XMLNFe): + def __init__(self): + super(RemunOutrEmpr, self).__init__() + self.tpInsc = TagInteiro(name='tpInsc', raiz='//tpInsc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrInsc = TagCaracter(name='nrInsc', tamanho=[1, 15], raiz='//nrInsc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codCateg = TagInteiro(name='codCateg', raiz='//codCateg', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.vlrRemunOE = TagInteiro(name='vlrRemunOE', raiz='//vlrRemunOE', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += self.codCateg.xml + xml += self.vlrRemunOE.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + self.codCateg.xml = arquivo + self.vlrRemunOE.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoMV(XMLNFe): + def __init__(self): + super(InfoMV, self).__init__() + self.indMV = TagInteiro(name='indMV', raiz='//infoMV', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.remunOutrEmpr = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.indMV.xml + if self.remunOutrEmpr: + for remuneracao in self.remunOutrEmpr: + xml += remuneracao.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.indMV.xml = arquivo + self.remunOutrEmpr = self.le_grupo('//eSocial/evtTSVTermino/infoTSVTermino/verbasResc/infoMV/remunOutrEmpr', RemunOutrEmpr, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class ProcJudTrab(XMLNFe): + def __init__(self): + super(ProcJudTrab, self).__init__() + self.tpTrib = TagInteiro(name='tpTrib', raiz='//tpTrib', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrProcJud = TagCaracter(name='nrProcJud', tamanho=[1, 20], raiz='//nrProcJud', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codSusp = TagInteiro(name='codSusp', raiz='//codSusp', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpTrib.xml + xml += self.nrProcJud.xml + xml += self.codSusp.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpTrib.xml = arquivo + self.nrProcJud.xml = arquivo + self.codSusp.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoSimples(XMLNFe): + def __init__(self): + super(InfoSimples, self).__init__() + self.indSimples = TagInteiro(name='indSimples', raiz='//indSimples', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.indSimples.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.indSimples.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoAgNocivo(XMLNFe): + def __init__(self): + super(InfoAgNocivo, self).__init__() + self.grauExp = TagInteiro(nome='grauExp', raiz='//grauExp', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.grauExp.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.grauExp.xml = arquivo + + xml = property(get_xml, set_xml) + + +class DetVerbas(XMLNFe): + def __init__(self): + super(DetVerbas, self).__init__() + self.codRubr = TagCaracter(nome='codRubr', tamanho=[1, 30], raiz='//codRubr', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideTabRubr = TagCaracter(nome='ideTabRubr', tamanho=[1, 8], raiz='//ideTabRubr', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.qtdRubr = TagInteiro(nome='qtdRubr', raiz='//qtdRubr', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.fatorRubr = TagInteiro(nome='fatorRubr', raiz='//fatorRubr', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.vrUnit = TagInteiro(nome='vrUnit', raiz='//vrUnit', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.vrRubr = TagDecimal(nome='vrRubr', raiz='//vrRubr', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.codRubr.xml + xml += self.ideTabRubr.xml + xml += self.qtdRubr.xml + xml += self.fatorRubr.xml + xml += self.vrUnit.xml + xml += self.vrRubr.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codRubr.xml = arquivo + self.ideTabRubr.xml = arquivo + self.qtdRubr.xml = arquivo + self.fatorRubr.xml = arquivo + self.vrUnit.xml = arquivo + self.vrRubr.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEstabLot(XMLNFe): + def __init__(self): + super(IdeEstabLot, self).__init__() + self.tpInsc = TagInteiro(nome='tpInsc', raiz='//eSocial/evtTSVTermino/infoTSVTermino/verbasResc/dmDev/infoPerApur/ideEstabLot/', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrInsc = TagCaracter(nome='nrInsc', tamanho=[1, 15], raiz='//eSocial/evtTSVTermino/infoTSVTermino/verbasResc/dmDev/infoPerApur/ideEstabLot/', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codLotacao = TagCaracter(nome='codLotacao', tamanho=[1, 30], raiz='//eSocial/evtTSVTermino/infoTSVTermino/verbasResc/dmDev/infoPerApur/ideEstabLot/', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.detVerbas = [] + self.infoAgNocivo = [] + self.infoSimples = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += self.codLotacao.xml + if self.detVerbas: + for verba in self.detVerbas: + xml += verba.xml + if self.infoAgNocivo: + for info in self.infoAgNocivo: + xml += info.xml + if self.infoSimples: + for info_simples in self.infoSimples: + xml += info_simples.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + self.codLotacao.xml = arquivo + self.detVerbas = self.le_grupo( '//eSocial/evtTSVTermino/infoTSVTermino/verbasResc/dmDev/infoPerApur/ideEstabLot/detVerbas', DetVerbas, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoAgNocivo = self.le_grupo( '//eSocial/evtTSVTermino/infoTSVTermino/verbasResc/dmDev/infoPerApur/ideEstabLot/infoAgNocivo', InfoAgNocivo, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoSimples = self.le_grupo( '//eSocial/evtTSVTermino/infoTSVTermino/verbasResc/dmDev/infoPerApur/ideEstabLot/infoSimples', InfoSimples, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + +class DmDev(XMLNFe): + def __init__(self): + super(DmDev, self).__init__() + self.ideDmDev = TagCaracter(nome='ideDmDev', tamanho=[1, 30], raiz='//eSocial/evtTSVTermino/infoTSVTermino/verbasResc/dmDev', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideEstabLot = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.ideDmDev.xml + for estabelecimento in self.ideEstabLot: + xml += estabelecimento.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.ideDmDev.xml = arquivo + if self._le_xml(arquivo): + self.ideEstabLot = self.le_grupo('//eSocial/evtTSVTermino/infoTSVTermino/verbasResc/dmDev/ideEstabLot', IdeEstabLot, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class VerbasResc(XMLNFe): + def __init__(self): + super(VerbasResc, self).__init__() + self.dmDev = [] + self.procJudTrab = [] + self.infoMV = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + if len(self.dmDev) > 0: + for demostrativo in self.dmDev: + xml += demostrativo.xml + if len(self.procJudTrab) > 0: + for processoJud in self.procJudTrab: + xml += processoJud.xml + if len(self.infoMV) > 0: + for info in self.infoMV: + xml += info.xml + xml += '' + + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.dmDev = self.le_grupo('//eSocial/evtTSVTermino/infoTSVTermino/verbasResc/dmDev', DmDev, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.procJudTrab = self.le_grupo('//eSocial/evtTSVTermino/infoTSVTermino/verbasResc/procJudTrab', ProcJudTrab, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoMV = self.le_grupo('//eSocial/evtTSVTermino/infoTSVTermino/verbasResc/infoMV', HorarioIntervalo, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class InfoTSVTermino(XMLNFe): + def __init__(self): + super(InfoTSVTermino, self).__init__() + self.dtTerm = TagData(nome='dtTerm', raiz='//eSocial/evtTSVTermino/infoTSVTermino', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.mtvDesligTSV = TagCaracter(nome='mtvDesligTSV', tamanho=[0, 2], raiz='//eSocial/evtTSVTermino/infoTSVTermino', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.verbasResc = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.dtTerm.xml + xml += self.mtvDesligTSV.xml + if self.verbasResc: + for verba in self.verbasResc: + xml += verba.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.dtTerm.xml = arquivo + self.mtvDesligTSV.xml = arquivo + if self._le_xml(arquivo): + self.verbasResc = self.le_grupo('//eSocial/evtTSVTermino/infoTSVTermino/verbasResc', DmDev, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class IdeTrabSemVinculo(XMLNFe): + def __init__(self): + super(IdeTrabSemVinculo, self).__init__() + self.cpfTrab = TagCaracter(nome='cpfTrab', tamanho=[1, 11], raiz='//eSocial/evtTSVTermino/ideTrabSemVinculo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nisTrab = TagCaracter(nome='nisTrab', tamanho=[1, 11], raiz='//eSocial/evtTSVTermino/ideTrabSemVinculo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codCateg = TagInteiro(nome='codCateg', tamanho=[1, 3], raiz='//eSocial/evtTSVTermino/ideTrabSemVinculo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cpfTrab.xml + xml += self.nisTrab.xml + xml += self.codCateg.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cpfTrab.xml = arquivo + self.nisTrab.xml = arquivo + self.codCateg.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEmpregador(XMLNFe): + def __init__(self): + super(IdeEmpregador, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', raiz='//eSocial/evtTSVTermino/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='1') + self.nrInsc = TagCaracter(nome='nrInsc', raiz='//eSocial/evtTSVTermino/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEvento(XMLNFe): + def __init__(self): + super(IdeEvento, self).__init__() + self.indRetif = TagInteiro( nome='indRetif', raiz='//eSocial/evtTSVTermino/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=1) + self.nrRecibo = TagCaracter(nome='nrRecibo', raiz='//eSocial/evtTSVTermino/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.tpAmb = TagInteiro( nome='tpAmb' , raiz='//eSocial/evtTSVTermino/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=2) + self.procEmi = TagInteiro( nome='procEmi' , raiz='//eSocial/evtTSVTermino/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=1) + self.verProc = TagCaracter(nome='verProc' , raiz='//eSocial/evtTSVTermino/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.indRetif.xml + xml += self.nrRecibo.xml + xml += self.tpAmb.xml + xml += self.procEmi.xml + xml += self.verProc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.indRetif.xml = arquivo + self.nrRecibo.xml = arquivo + self.tpAmb.xml = arquivo + self.procEmi.xml = arquivo + self.verProc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class EvtTSVTermino(XMLNFe): + def __init__(self): + super(EvtTSVTermino, self).__init__() + self.Id = TagCaracter(nome='evtTSVTermino', propriedade='Id', raiz='//eSocial/evtTSVTermino', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideEvento = IdeEvento() + self.ideEmpregador = IdeEmpregador() + self.ideTrabSemVinculo = IdeTrabSemVinculo() + self.infoTSVTermino = InfoTSVTermino() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += self.Id.xml + xml += self.ideEvento.xml + xml += self.ideEmpregador.xml + xml += self.ideTrabSemVinculo.xml + xml += self.infoTSVTermino.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.Id.xml = arquivo + self.ideEvento.xml = arquivo + self.ideEmpregador.xml = arquivo + self.ideTrabSemVinculo.xml = arquivo + self.infoTSVTermino.xml = arquivo + + xml = property(get_xml, set_xml) + + +class S2399(XMLNFe): + def __init__(self): + super(S2399, self).__init__() + self.evtTSVTermino = EvtTSVTermino() + self.caminho_esquema = os.path.join(DIRNAME, 'schema/', ESQUEMA_ATUAL + '/') + self.arquivo_esquema = 'evtTSVTermino.xsd' + self.id_evento = '' + self.tpInsc = '' + self.nrInsc = '' + # self.Signature = Signature() + self.evento = self.evtTSVTermino + self.xml_assinado = '' + + def get_xml(self): + xml = XMLNFe.get_xml(self) + #xml += ABERTURA + xml += '' + xml += self.evtTSVTermino.xml + + # + # Define a URI a ser assinada + # + # self.Signature.URI = '#' + self.evtInfoEmpregador.Id.valor + # xml += self.Signature.xml + xml += '' + + # Define o método de assinatura + # self.Signature.metodo = 'sha256' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.evtTSVTermino.xml = arquivo + # self.Signature.xml = self._le_noh('//eSocial/sig:Signature') + + def gera_id_evento(self, data_hora, sequencia=False): + #A identificação única do evento (Id) é composta por 36 caracteres, conforme o que segue: IDTNNNNNNNNNNNNNNAAAAMMDDHHMMSSQQQQQ + #ID - Texto Fixo "ID"; + #T - Tipo de Inscrição do Empregador (1 - CNPJ; 2 - CPF); + #NNNNNNNNNNNNNN - Número do CNPJ ou CPF do empregador - Completar com + #zeros à direita. No caso de pessoas jurídicas, o CNPJ informado deve conter 8 ou 14 + #posições de acordo com o enquadramento do contribuinte para preenchimento do campo + #{ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se + #necessário. + #AAAAMMDD - Ano, mês e dia da geração do evento; + #HHMMSS - Hora, minuto e segundo da geração do evento; + #QQQQQ - Número sequencial da chave. Incrementar somente quando ocorrer geração de + #eventos na mesma data/hora, completando com zeros à esquerda. + #OBS.: No caso de pessoas jurídicas, o CNPJ informado deverá conter 8 ou 14 posições de + #acordo com o enquadramento do contribuinte para preenchimento do campo {ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se necessário. + + if not sequencia: + sequencia=1 + + id_evento = 'ID' + id_evento += self.tpInsc + id_evento += self.nrInsc[0:8] + '000000' + id_evento += data_hora + id_evento += str(sequencia).zfill(5) + + # Define o Id + # + self.evtTSVTermino.Id.valor = id_evento + self.id_evento = id_evento + + xml = property(get_xml, set_xml) diff --git a/pysped/esocial/leiaute/evtTabCargo_20402.py b/pysped/esocial/leiaute/evtTabCargo_20402.py new file mode 100644 index 00000000..64439906 --- /dev/null +++ b/pysped/esocial/leiaute/evtTabCargo_20402.py @@ -0,0 +1,343 @@ +# -*- coding: utf-8 -*- +# +# PySPED - Python libraries to deal with Brazil's SPED Project +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Library General Public License as +# published by the Free Software Foundation, either version 2.1 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public License +# along with this program. If not, see . +# +# PySPED - Bibliotecas Python para o +# SPED - Sistema Público de Escrituração Digital +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# Este programa é um software livre: você pode redistribuir e/ou modificar +# este programa sob os termos da licença GNU Library General Public License, +# publicada pela Free Software Foundation, em sua versão 2.1 ou, de acordo +# com sua opção, qualquer versão posterior. +# +# Este programa é distribuido na esperança de que venha a ser útil, +# porém SEM QUAISQUER GARANTIAS, nem mesmo a garantia implícita de +# COMERCIABILIDADE ou ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Veja a +# GNU Library General Public License para mais detalhes. +# +# Você deve ter recebido uma cópia da GNU Library General Public License +# juntamente com este programa. Caso esse não seja o caso, acesse: +# +# + +from __future__ import (division, print_function, unicode_literals, + absolute_import) + +from builtins import str +import os +from pysped.xml_sped import * +from pysped.esocial.leiaute import ESQUEMA_ATUAL_VERSAO_2 as ESQUEMA_ATUAL + +DIRNAME = os.path.dirname(__file__) + +NAMESPACE_ESOCIAL = 'http://www.esocial.gov.br/schema/evt/evtTabCargo/v02_04_02' + + +class NovaValidade(XMLNFe): + def __init__(self): + super(NovaValidade, self).__init__() + self.iniValid = TagCaracter(nome='iniValid', raiz='//eSocial/evtTabRubrica/infoRubrica/novaValidade', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.fimValid = TagCaracter(nome='fimValid', raiz='//eSocial/evtTabRubrica/infoRubrica/novaValidade', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.iniValid.xml + xml += self.fimValid.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.iniValid.xml = arquivo + self.fimValid.xml = arquivo + + xml = property(get_xml, set_xml) + + +class CargoPublico(XMLNFe): + def __init__(self): + super(CargoPublico, self).__init__() + self.acumCargo = TagCaracter(nome='acumCargo', tamanho=[1, 1], raiz='//cargoPublico', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.contagemEsp = TagCaracter(nome='contagemEsp', tamanho=[1, 1], raiz='//cargoPublico', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dedicExcl = TagCaracter(nome='dedicExcl', tamanho=[1, 1], raiz='//cargoPublico', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrLei = TagCaracter(nome='nrLei', tamanho=[1, 12], raiz='//cargoPublico/leiCargo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.dtLei = TagData(nome='dtLei', raiz='//cargoPublico/leiCargo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.sitCargo = TagCaracter(nome='sitCargo', tamanho=[1, 1], raiz='//cargoPublico/leiCargo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.acumCargo.xml + xml += self.contagemEsp.xml + xml += self.dedicExcl.xml + xml += '' + xml += self.nrLei.xml + xml += self.dtLei.xml + xml += self.sitCargo.xml + xml += '' + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.acumCargo.xml = arquivo + self.contagemEsp.xml = arquivo + self.dedicExcl.xml = arquivo + self.nrLei.xml = arquivo + self.dtLei.xml = arquivo + self.sitCargo.xml = arquivo + + xml = property(get_xml, set_xml) + + +class DadosCargo(XMLNFe): + def __init__(self): + super(DadosCargo, self).__init__() + self.nmCargo = TagCaracter(nome='nmCargo', tamanho=[1, 100], raiz='//eSocial/evtTabCargo/infoCargo/dadosCargo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codCBO = TagCaracter(nome='codCBO', tamanho=[1, 6], raiz='//eSocial/evtTabCargo/infoCargo/dadosCargo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.cargoPublico = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nmCargo.xml + xml += self.codCBO.xml + if len(self.cargoPublico) > 0: + for c in self.cargoPublico: + xml += c.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nmCargo.xml = arquivo + self.codCBO.xml = arquivo + self.cargoPublico = self.le_grupo('//eSocial/evtTabCargo/infoCargo/dadosCargo/cargoPublico', CargoPublico, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class IdeCargo(XMLNFe): + def __init__(self): + super(IdeCargo, self).__init__() + self.codCargo = TagCaracter(nome='codCargo', tamanho=[1, 30], raiz='//eSocial/evtTabCargo/infoCargo/ideCargo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.iniValid = TagCaracter(nome='iniValid', raiz='//eSocial/evtTabCargo/infoCargo/ideCargo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.fimValid = TagCaracter(nome='fimValid', raiz='//eSocial/evtTabCargo/infoCargo/ideCargo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.codCargo.xml + xml += self.iniValid.xml + xml += self.fimValid.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codCargo.xml = arquivo + self.iniValid.xml = arquivo + self.fimValid.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoCargo(XMLNFe): + def __init__(self): + super(InfoCargo, self).__init__() + self.ideCargo = IdeCargo() + self.dadosCargo = DadosCargo() + self.novaValidade = NovaValidade() + self.operacao = 'I' + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + if self.operacao == 'I': + xml += '' + xml += self.ideCargo.xml + xml += self.dadosCargo.xml + xml += '' + elif self.operacao == 'A': + xml += '' + xml += self.ideCargo.xml + xml += self.dadosCargo.xml + xml += self.novaValidade.xml + xml += '' + + elif self.operacao == 'E': + xml += '' + xml += self.ideCargo.xml + xml += '' + + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.ideCargo.xml = arquivo + self.dadosCargo.xml = arquivo + self.novaValidade.xml = arquivo + xml = property(get_xml, set_xml) + + +class IdeEmpregador(XMLNFe): + def __init__(self): + super(IdeEmpregador, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', raiz='//eSocial/evtTabCargo/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='1') + self.nrInsc = TagCaracter(nome='nrInsc', raiz='//eSocial/evtTabCargo/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEvento(XMLNFe): + def __init__(self): + super(IdeEvento, self).__init__() + self.tpAmb = TagInteiro(nome='tpAmb' , raiz='//eSocial/evtTabCargo/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=2) + self.procEmi = TagInteiro(nome='procEmi' , raiz='//eSocial/evtTabCargo/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=1) + self.verProc = TagCaracter(nome='verProc', raiz='//eSocial/evtTabCargo/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpAmb.xml + xml += self.procEmi.xml + xml += self.verProc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpAmb.xml = arquivo + self.procEmi.xml = arquivo + self.verProc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class EvtTabCargo(XMLNFe): + def __init__(self): + super(EvtTabCargo, self).__init__() + self.Id = TagCaracter(nome='evtTabCargo', propriedade='Id', raiz='//eSocial/evtTabCargo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideEvento = IdeEvento() + self.ideEmpregador = IdeEmpregador() + self.infoCargo = InfoCargo() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += self.Id.xml + xml += self.ideEvento.xml + xml += self.ideEmpregador.xml + xml += self.infoCargo.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.Id.xml = arquivo + self.ideEvento.xml = arquivo + self.ideEmpregador.xml = arquivo + self.infoCargo.xml = arquivo + + xml = property(get_xml, set_xml) + + +class S1030(XMLNFe): + def __init__(self): + super(S1030, self).__init__() + self.evtTabCargo = EvtTabCargo() + self.caminho_esquema = os.path.join(DIRNAME, 'schema/', ESQUEMA_ATUAL + '/') + self.arquivo_esquema = 'evtTabCargo.xsd' + self.id_evento = '' + self.tpInsc = '' + self.nrInsc = '' + # self.Signature = Signature() + self.evento = self.evtTabCargo + self.xml_assinado = '' + + def get_xml(self): + xml = XMLNFe.get_xml(self) + #xml += ABERTURA + xml += '' + xml += self.evtTabCargo.xml + + # + # Define a URI a ser assinada + # + # self.Signature.URI = '#' + self.evtInfoEmpregador.Id.valor + # xml += self.Signature.xml + xml += '' + + # Define o método de assinatura + # self.Signature.metodo = 'sha256' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.evtTabCargo.xml = arquivo + # self.Signature.xml = self._le_noh('//eSocial/sig:Signature') + + def gera_id_evento(self, data_hora, sequencia=False): + #A identificação única do evento (Id) é composta por 36 caracteres, conforme o que segue: IDTNNNNNNNNNNNNNNAAAAMMDDHHMMSSQQQQQ + #ID - Texto Fixo "ID"; + #T - Tipo de Inscrição do Empregador (1 - CNPJ; 2 - CPF); + #NNNNNNNNNNNNNN - Número do CNPJ ou CPF do empregador - Completar com + #zeros à direita. No caso de pessoas jurídicas, o CNPJ informado deve conter 8 ou 14 + #posições de acordo com o enquadramento do contribuinte para preenchimento do campo + #{ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se + #necessário. + #AAAAMMDD - Ano, mês e dia da geração do evento; + #HHMMSS - Hora, minuto e segundo da geração do evento; + #QQQQQ - Número sequencial da chave. Incrementar somente quando ocorrer geração de + #eventos na mesma data/hora, completando com zeros à esquerda. + #OBS.: No caso de pessoas jurídicas, o CNPJ informado deverá conter 8 ou 14 posições de + #acordo com o enquadramento do contribuinte para preenchimento do campo {ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se necessário. + + if not sequencia: + sequencia=1 + + id_evento = 'ID' + id_evento += self.tpInsc + id_evento += self.nrInsc[0:8] + '000000' + id_evento += data_hora + id_evento += str(sequencia).zfill(5) + + # Define o Id + # + self.evtTabCargo.Id.valor = id_evento + self.id_evento = id_evento + + xml = property(get_xml, set_xml) diff --git a/pysped/esocial/leiaute/evtTabEstab_20402.py b/pysped/esocial/leiaute/evtTabEstab_20402.py new file mode 100644 index 00000000..5203e3f7 --- /dev/null +++ b/pysped/esocial/leiaute/evtTabEstab_20402.py @@ -0,0 +1,538 @@ +# -*- coding: utf-8 -*- +# +# PySPED - Python libraries to deal with Brazil's SPED Project +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Library General Public License as +# published by the Free Software Foundation, either version 2.1 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public License +# along with this program. If not, see . +# +# PySPED - Bibliotecas Python para o +# SPED - Sistema Público de Escrituração Digital +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# Este programa é um software livre: você pode redistribuir e/ou modificar +# este programa sob os termos da licença GNU Library General Public License, +# publicada pela Free Software Foundation, em sua versão 2.1 ou, de acordo +# com sua opção, qualquer versão posterior. +# +# Este programa é distribuido na esperança de que venha a ser útil, +# porém SEM QUAISQUER GARANTIAS, nem mesmo a garantia implícita de +# COMERCIABILIDADE ou ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Veja a +# GNU Library General Public License para mais detalhes. +# +# Você deve ter recebido uma cópia da GNU Library General Public License +# juntamente com este programa. Caso esse não seja o caso, acesse: +# +# + +from __future__ import (division, print_function, unicode_literals, + absolute_import) + +from builtins import str +import os +from pysped.xml_sped import * +from pysped.esocial.leiaute import ESQUEMA_ATUAL_VERSAO_2 as ESQUEMA_ATUAL + +DIRNAME = os.path.dirname(__file__) + +NAMESPACE_ESOCIAL = 'http://www.esocial.gov.br/schema/evt/evtTabEstab/v02_04_02' + + +class NovaValidade(XMLNFe): + def __init__(self): + super(NovaValidade, self).__init__() + self.iniValid = TagCaracter(nome='iniValid', raiz='//eSocial/evtTabEstab/infoEstab/novaValidade', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.fimValid = TagCaracter(nome='fimValid', raiz='//eSocial/evtTabEstab/infoEstab/novaValidade', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.iniValid.xml + xml += self.fimValid.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.iniValid.xml = arquivo + self.fimValid.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoPCD(XMLNFe): + def __init__(self): + super(InfoPCD, self).__init__() + self.contPCD = TagCaracter(nome='contPCD' , tamanho=[1, 1] , raiz='//infoPCD', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrProcJud = TagCaracter(nome='nrProcJud', tamanho=[1, 20], raiz='//infoPCD', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.contPCD.xml + xml += self.nrProcJud.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.contPCD.xml = arquivo + self.nrProcJud.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoEntEduc(XMLNFe): + def __init__(self): + super(InfoEntEduc, self).__init__() + self.nrInsc = TagCaracter(nome='nrInsc', tamanho=[1, 15], raiz='//infoEntEduc', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nrInsc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nrInsc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoApr(XMLNFe): + def __init__(self): + super(InfoApr, self).__init__() + self.contApr = TagCaracter(nome='contApr' , tamanho=[1, 1] , raiz='//eSocial/evtTabEstab/infoEstab/dadosEstab/infoTrab/infoApr', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrProcJud = TagCaracter(nome='nrProcJud', tamanho=[1, 20], raiz='//eSocial/evtTabEstab/infoEstab/dadosEstab/infoTrab/infoApr', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.contEntEd = TagCaracter(nome='contEntEd', tamanho=[1, 1] , raiz='//eSocial/evtTabEstab/infoEstab/dadosEstab/infoTrab/infoApr', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.infoEntEduc = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.contApr.xml + xml += self.nrProcJud.xml + xml += self.contEntEd.xml + for e in self.infoEntEduc: + xml += e.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.contApr.xml = arquivo + self.nrProcJud.xml = arquivo + self.contEntEd.xml = arquivo + self.infoEntEduc = self.le_grupo('//eSocial/evtTabEstab/infoEstab/dadosEstab/infoTrab/infoApr/infoEntEduc', InfoEntEduc, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class InfoTrab(XMLNFe): + def __init__(self): + super(InfoTrab, self).__init__() + self.regPt = TagCaracter(nome='regPt', tamanho=[1, 1], raiz='//eSocial/evtTabEstab/infoEstab/dadosEstab/infoTrab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.infoApr = InfoApr() + self.infoPCD = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.regPt.xml + xml += self.infoApr.xml + if len(self.infoPCD) > 0: + for p in self.infoPCD: + xml += p.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.regPt.xml = arquivo + self.infoApr.xml = arquivo + self.infoPCD = self.le_grupo('//eSocial/evtTabEstab/infoEstab/dadosEstab/infoTrab/infoPCD', InfoPCD, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class InfoObra(XMLNFe): + def __init__(self): + super(InfoObra, self).__init__() + self.indSubstPatrObra = TagInteiro(nome='indSubstPatrObra', tamanho=[1, 1], raiz='//infoObra', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.indSubstPatrObra.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.indSubstPatrObra.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoCaepf(XMLNFe): + def __init__(self): + super(InfoCaepf, self).__init__() + self.tpCaepf = TagInteiro(nome='tpCaepf', tamanho=[1, 1], raiz='//infoCaepf', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpCaepf.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpCaepf.xml = arquivo + + xml = property(get_xml, set_xml) + + +class ProcAdmJudFap(XMLNFe): + def __init__(self): + super(ProcAdmJudFap, self).__init__() + self.tpProc = TagInteiro( nome='tpProc' , tamanho=[1, 1] , raiz='//procAdmJudFap', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrProc = TagCaracter(nome='nrProc' , tamanho=[1, 21], raiz='//procAdmJudFap', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codSusp = TagInteiro( nome='codSusp', tamanho=[1, 14], raiz='//procAdmJudFap', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpProc.xml + xml += self.nrProc.xml + xml += self.codSusp.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpProc.xml = arquivo + self.nrProc.xml = arquivo + self.codSusp.xml = arquivo + + xml = property(get_xml, set_xml) + + +class ProcAdmJudRat(XMLNFe): + def __init__(self): + super(ProcAdmJudRat, self).__init__() + self.tpProc = TagInteiro( nome='tpProc' , tamanho=[1, 1] , raiz='//procAdmJudRat', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrProc = TagCaracter(nome='nrProc' , tamanho=[1, 21], raiz='//procAdmJudRat', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codSusp = TagInteiro( nome='codSusp', tamanho=[1, 14], raiz='//procAdmJudRat', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpProc.xml + xml += self.nrProc.xml + xml += self.codSusp.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpProc.xml = arquivo + self.nrProc.xml = arquivo + self.codSusp.xml = arquivo + + xml = property(get_xml, set_xml) + + +class AliqGilrat(XMLNFe): + def __init__(self): + super(AliqGilrat, self).__init__() + self.aliqRat = TagInteiro(nome='aliqRat', tamanho=[1, 1], raiz='//eSocial/evtTabEstab/infoEstab/dadosEstab/aliqGilrat', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.fap = TagDecimal(nome='fap', tamanho=[1, 5, 4], raiz='//eSocial/evtTabEstab/infoEstab/dadosEstab/aliqGilrat', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.aliqRatAjust = TagDecimal(nome='aliqRatAjust', tamanho=[1, 5, 4], raiz='//eSocial/evtTabEstab/infoEstab/dadosEstab/aliqGilrat', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.procAdmJudRat = [] + self.procAdmJudFap = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.aliqRat.xml + xml += self.fap.xml + xml += self.aliqRatAjust.xml + if len(self.procAdmJudRat) > 0: + for p in self.procAdmJudRat: + xml += p.xml + if len(self.procAdmJudFap) > 0: + for p in self.procAdmJudFap: + xml += p.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.aliqRat.xml = arquivo + self.fap.xml = arquivo + self.aliqRatAjust.xml = arquivo + self.procAdmJudRat = self.le_grupo('//eSocial/evtTabEstab/infoEstab/dadosEstab/aliqGilrat/procAdmJudRat', ProcAdmJudRat, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.procAdmJudFap = self.le_grupo('//eSocial/evtTabEstab/infoEstab/dadosEstab/aliqGilrat/procAdmJudFap', ProcAdmJudRat, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class DadosEstab(XMLNFe): + def __init__(self): + super(DadosEstab, self).__init__() + self.cnaePrep = TagCaracter(nome='cnaePrep', tamanho=[1, 7], raiz='//eSocial/evtTabEstab/infoEstab/dadosEstab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.aliqGilrat = AliqGilrat() + self.infoCaepf = [] + self.infoObra = [] + self.infoTrab = InfoTrab() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cnaePrep.xml + xml += self.aliqGilrat.xml + if len(self.infoCaepf) > 0: + for c in self.infoCaepf: + xml += c.xml + if len(self.infoObra) > 0: + for o in self.infoObra: + xml += o.xml + xml += self.infoTrab.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cnaePrep.xml = arquivo + self.aliqGilrat.xml = arquivo + self.infoCaepf = self.le_grupo('//eSocial/evtTabEstab/infoEstab/dadosEstab/infoCaepf', InfoCaepf, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoObra = self.le_grupo('//eSocial/evtTabEstab/infoEstab/dadosEstab/infoObra', InfoObra, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.infoTrab.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEstab(XMLNFe): + def __init__(self): + super(IdeEstab, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', raiz='//eSocial/evtTabEstab/infoEstab/ideEstab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='1') + self.nrInsc = TagCaracter(nome='nrInsc', raiz='//eSocial/evtTabEstab/infoEstab/ideEstab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.iniValid = TagCaracter(nome='iniValid', raiz='//eSocial/evtTabEstab/infoEstab/ideEstab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.fimValid = TagCaracter(nome='fimValid', raiz='//eSocial/evtTabEstab/infoEstab/ideEstab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += self.iniValid.xml + xml += self.fimValid.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + self.iniValid.xml = arquivo + self.fimValid.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoEstab(XMLNFe): + def __init__(self): + super(InfoEstab, self).__init__() + self.ideEstab = IdeEstab() + self.dadosEstab = DadosEstab() + self.novaValidade = NovaValidade() + self.operacao = 'I' + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + if self.operacao == 'I': + xml += '' + xml += self.ideEstab.xml + xml += self.dadosEstab.xml + xml += '' + elif self.operacao == 'A': + xml += '' + xml += self.ideEstab.xml + xml += self.dadosEstab.xml + xml += self.novaValidade.xml + xml += '' + + elif self.operacao == 'E': + xml += '' + xml += self.ideEstab.xml + xml += '' + + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.ideEstab.xml = arquivo + self.dadosEstab.xml = arquivo + self.novaValidade.xml = arquivo + xml = property(get_xml, set_xml) + + +class IdeEmpregador(XMLNFe): + def __init__(self): + super(IdeEmpregador, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', raiz='//eSocial/evtTabEstab/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='1') + self.nrInsc = TagCaracter(nome='nrInsc', raiz='//eSocial/evtTabEstab/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEvento(XMLNFe): + def __init__(self): + super(IdeEvento, self).__init__() + self.tpAmb = TagInteiro(nome='tpAmb' , raiz='//eSocial/evtTabEstab/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=2) + self.procEmi = TagInteiro(nome='procEmi' , raiz='//eSocial/evtTabEstab/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=1) + self.verProc = TagCaracter(nome='verProc', raiz='//eSocial/evtTabEstab/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpAmb.xml + xml += self.procEmi.xml + xml += self.verProc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpAmb.xml = arquivo + self.procEmi.xml = arquivo + self.verProc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class EvtTabEstab(XMLNFe): + def __init__(self): + super(EvtTabEstab, self).__init__() + self.Id = TagCaracter(nome='evtTabEstab', propriedade='Id', raiz='//eSocial/evtTabEstab', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideEvento = IdeEvento() + self.ideEmpregador = IdeEmpregador() + self.infoEstab = InfoEstab() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += self.Id.xml + xml += self.ideEvento.xml + xml += self.ideEmpregador.xml + xml += self.infoEstab.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.Id.xml = arquivo + self.ideEvento.xml = arquivo + self.ideEmpregador.xml = arquivo + self.infoEstab.xml = arquivo + + xml = property(get_xml, set_xml) + + +class S1005(XMLNFe): + def __init__(self): + super(S1005, self).__init__() + self.evtTabEstab = EvtTabEstab() + self.caminho_esquema = os.path.join(DIRNAME, 'schema/', ESQUEMA_ATUAL + '/') + self.arquivo_esquema = 'evtTabEstab.xsd' + self.id_evento = '' + self.tpInsc = '' + self.nrInsc = '' + # self.Signature = Signature() + self.evento = self.evtTabEstab + self.xml_assinado = '' + + def get_xml(self): + xml = XMLNFe.get_xml(self) + #xml += ABERTURA + xml += '' + xml += self.evtTabEstab.xml + + # + # Define a URI a ser assinada + # + # self.Signature.URI = '#' + self.evtInfoEmpregador.Id.valor + # xml += self.Signature.xml + xml += '' + + # Define o método de assinatura + # self.Signature.metodo = 'sha256' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.evtTabEstab.xml = arquivo + # self.Signature.xml = self._le_noh('//eSocial/sig:Signature') + + def gera_id_evento(self, data_hora, sequencia=False): + #A identificação única do evento (Id) é composta por 36 caracteres, conforme o que segue: IDTNNNNNNNNNNNNNNAAAAMMDDHHMMSSQQQQQ + #ID - Texto Fixo "ID"; + #T - Tipo de Inscrição do Empregador (1 - CNPJ; 2 - CPF); + #NNNNNNNNNNNNNN - Número do CNPJ ou CPF do empregador - Completar com + #zeros à direita. No caso de pessoas jurídicas, o CNPJ informado deve conter 8 ou 14 + #posições de acordo com o enquadramento do contribuinte para preenchimento do campo + #{ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se + #necessário. + #AAAAMMDD - Ano, mês e dia da geração do evento; + #HHMMSS - Hora, minuto e segundo da geração do evento; + #QQQQQ - Número sequencial da chave. Incrementar somente quando ocorrer geração de + #eventos na mesma data/hora, completando com zeros à esquerda. + #OBS.: No caso de pessoas jurídicas, o CNPJ informado deverá conter 8 ou 14 posições de + #acordo com o enquadramento do contribuinte para preenchimento do campo {ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se necessário. + + if not sequencia: + sequencia=1 + + id_evento = 'ID' + id_evento += self.tpInsc + id_evento += self.nrInsc[0:8] + '000000' + id_evento += data_hora + id_evento += str(sequencia).zfill(5) + + # Define o Id + # + self.evtTabEstab.Id.valor = id_evento + self.id_evento = id_evento + + xml = property(get_xml, set_xml) diff --git a/pysped/esocial/leiaute/evtTabHorTur_20402.py b/pysped/esocial/leiaute/evtTabHorTur_20402.py new file mode 100644 index 00000000..38f5c9c7 --- /dev/null +++ b/pysped/esocial/leiaute/evtTabHorTur_20402.py @@ -0,0 +1,341 @@ +# -*- coding: utf-8 -*- +# +# PySPED - Python libraries to deal with Brazil's SPED Project +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Library General Public License as +# published by the Free Software Foundation, either version 2.1 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public License +# along with this program. If not, see . +# +# PySPED - Bibliotecas Python para o +# SPED - Sistema Público de Escrituração Digital +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# Este programa é um software livre: você pode redistribuir e/ou modificar +# este programa sob os termos da licença GNU Library General Public License, +# publicada pela Free Software Foundation, em sua versão 2.1 ou, de acordo +# com sua opção, qualquer versão posterior. +# +# Este programa é distribuido na esperança de que venha a ser útil, +# porém SEM QUAISQUER GARANTIAS, nem mesmo a garantia implícita de +# COMERCIABILIDADE ou ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Veja a +# GNU Library General Public License para mais detalhes. +# +# Você deve ter recebido uma cópia da GNU Library General Public License +# juntamente com este programa. Caso esse não seja o caso, acesse: +# +# + +from __future__ import (division, print_function, unicode_literals, + absolute_import) + +from builtins import str +import os +from pysped.xml_sped import * +from pysped.esocial.leiaute import ESQUEMA_ATUAL_VERSAO_2 as ESQUEMA_ATUAL + +DIRNAME = os.path.dirname(__file__) + +NAMESPACE_ESOCIAL = 'http://www.esocial.gov.br/schema/evt/evtTabHorTur/v02_04_02' + + +class NovaValidade(XMLNFe): + def __init__(self): + super(NovaValidade, self).__init__() + self.iniValid = TagCaracter(nome='iniValid', raiz='//eSocial/evtTabRubrica/infoRubrica/novaValidade', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.fimValid = TagCaracter(nome='fimValid', raiz='//eSocial/evtTabRubrica/infoRubrica/novaValidade', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.iniValid.xml + xml += self.fimValid.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.iniValid.xml = arquivo + self.fimValid.xml = arquivo + + xml = property(get_xml, set_xml) + + +class HorarioIntervalo(XMLNFe): + def __init__(self): + super(HorarioIntervalo, self).__init__() + self.tpInterv = TagCaracter(nome='tpInterv', tamanho=[1, 1], raiz='//horarioIntervalo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.durInterv = TagCaracter(nome='durInterv', tamanho=[1, 3], raiz='//horarioIntervalo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.iniInterv = TagCaracter(nome='iniInterv', tamanho=[1, 4], raiz='//horarioIntervalo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.termInterv = TagCaracter(nome='termInterv', tamanho=[1, 4], raiz='//horarioIntervalo', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInterv.xml + xml += self.durInterv.xml + xml += self.iniInterv.xml + xml += self.termInterv.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInterv.xml = arquivo + self.durInterv.xml = arquivo + self.iniInterv.xml = arquivo + self.termInterv.xml = arquivo + + xml = property(get_xml, set_xml) + + +class DadosHorContratual(XMLNFe): + def __init__(self): + super(DadosHorContratual, self).__init__() + self.hrEntr = TagCaracter(nome='hrEntr', tamanho=[1, 4], raiz='//eSocial/evtTabHorTur/infoHorContratual/dadosHorContratual', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.hrSaida = TagCaracter(nome='hrSaida', tamanho=[1, 4], raiz='//eSocial/evtTabHorTur/infoHorContratual/dadosHorContratual', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.durJornada = TagCaracter(nome='durJornada', tamanho=[1, 4], raiz='//eSocial/evtTabHorTur/infoHorContratual/dadosHorContratual', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.perHorFlexivel = TagCaracter(nome='perHorFlexivel', tamanho=[1, 1], raiz='//eSocial/evtTabHorTur/infoHorContratual/dadosHorContratual', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.horarioIntervalo = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.hrEntr.xml + xml += self.hrSaida.xml + xml += self.durJornada.xml + xml += self.perHorFlexivel.xml + if len(self.horarioIntervalo) > 0: + for h in self.horarioIntervalo: + xml += h.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.hrEntr.xml = arquivo + self.hrSaida.xml = arquivo + self.durJornada.xml = arquivo + self.perHorFlexivel.xml = arquivo + self.horarioIntervalo = self.le_grupo('//eSocial/evtTabHorTur/infoHorContratual/dadosHorContratual/horarioIntervalo', HorarioIntervalo, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class IdeHorContratual(XMLNFe): + def __init__(self): + super(IdeHorContratual, self).__init__() + self.codHorContrat = TagCaracter(nome='codHorContrat', tamanho=[1, 30], raiz='//eSocial/evtTabHorTur/infoHorContratual/ideHorContratual', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.iniValid = TagCaracter(nome='iniValid', raiz='//eSocial/evtTabHorTur/infoHorContratual/ideHorContratual', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.fimValid = TagCaracter(nome='fimValid', raiz='//eSocial/evtTabHorTur/infoHorContratual/ideHorContratual', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.codHorContrat.xml + xml += self.iniValid.xml + xml += self.fimValid.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codHorContrat.xml = arquivo + self.iniValid.xml = arquivo + self.fimValid.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoHorContratual(XMLNFe): + def __init__(self): + super(InfoHorContratual, self).__init__() + self.ideHorContratual = IdeHorContratual() + self.dadosHorContratual = DadosHorContratual() + self.novaValidade = NovaValidade() + self.operacao = 'I' + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + if self.operacao == 'I': + xml += '' + xml += self.ideHorContratual.xml + xml += self.dadosHorContratual.xml + xml += '' + elif self.operacao == 'A': + xml += '' + xml += self.ideHorContratual.xml + xml += self.dadosHorContratual.xml + xml += self.novaValidade.xml + xml += '' + + elif self.operacao == 'E': + xml += '' + xml += self.ideCargo.xml + xml += '' + + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.ideHorContratual.xml = arquivo + self.dadosHorContratual.xml = arquivo + self.novaValidade.xml = arquivo + xml = property(get_xml, set_xml) + + +class IdeEmpregador(XMLNFe): + def __init__(self): + super(IdeEmpregador, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', raiz='//eSocial/evtTabHorTur/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='1') + self.nrInsc = TagCaracter(nome='nrInsc', raiz='//eSocial/evtTabHorTur/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEvento(XMLNFe): + def __init__(self): + super(IdeEvento, self).__init__() + self.tpAmb = TagInteiro(nome='tpAmb' , raiz='//eSocial/evtTabHorTur/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=2) + self.procEmi = TagInteiro(nome='procEmi' , raiz='//eSocial/evtTabHorTur/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=1) + self.verProc = TagCaracter(nome='verProc', raiz='//eSocial/evtTabHorTur/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpAmb.xml + xml += self.procEmi.xml + xml += self.verProc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpAmb.xml = arquivo + self.procEmi.xml = arquivo + self.verProc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class EvtTabHorTur(XMLNFe): + def __init__(self): + super(EvtTabHorTur, self).__init__() + self.Id = TagCaracter(nome='evtTabHorTur', propriedade='Id', raiz='//eSocial/evtTabHorTur', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideEvento = IdeEvento() + self.ideEmpregador = IdeEmpregador() + self.infoHorContratual = InfoHorContratual() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += self.Id.xml + xml += self.ideEvento.xml + xml += self.ideEmpregador.xml + xml += self.infoHorContratual.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.Id.xml = arquivo + self.ideEvento.xml = arquivo + self.ideEmpregador.xml = arquivo + self.infoHorContratual.xml = arquivo + + xml = property(get_xml, set_xml) + + +class S1050(XMLNFe): + def __init__(self): + super(S1050, self).__init__() + self.evtTabHorTur = EvtTabHorTur() + self.caminho_esquema = os.path.join(DIRNAME, 'schema/', ESQUEMA_ATUAL + '/') + self.arquivo_esquema = 'evtTabHorTur.xsd' + self.id_evento = '' + self.tpInsc = '' + self.nrInsc = '' + # self.Signature = Signature() + self.evento = self.evtTabHorTur + self.xml_assinado = '' + + def get_xml(self): + xml = XMLNFe.get_xml(self) + #xml += ABERTURA + xml += '' + xml += self.evtTabHorTur.xml + + # + # Define a URI a ser assinada + # + # self.Signature.URI = '#' + self.evtInfoEmpregador.Id.valor + # xml += self.Signature.xml + xml += '' + + # Define o método de assinatura + # self.Signature.metodo = 'sha256' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.evtTabHorTur.xml = arquivo + # self.Signature.xml = self._le_noh('//eSocial/sig:Signature') + + def gera_id_evento(self, data_hora, sequencia=False): + #A identificação única do evento (Id) é composta por 36 caracteres, conforme o que segue: IDTNNNNNNNNNNNNNNAAAAMMDDHHMMSSQQQQQ + #ID - Texto Fixo "ID"; + #T - Tipo de Inscrição do Empregador (1 - CNPJ; 2 - CPF); + #NNNNNNNNNNNNNN - Número do CNPJ ou CPF do empregador - Completar com + #zeros à direita. No caso de pessoas jurídicas, o CNPJ informado deve conter 8 ou 14 + #posições de acordo com o enquadramento do contribuinte para preenchimento do campo + #{ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se + #necessário. + #AAAAMMDD - Ano, mês e dia da geração do evento; + #HHMMSS - Hora, minuto e segundo da geração do evento; + #QQQQQ - Número sequencial da chave. Incrementar somente quando ocorrer geração de + #eventos na mesma data/hora, completando com zeros à esquerda. + #OBS.: No caso de pessoas jurídicas, o CNPJ informado deverá conter 8 ou 14 posições de + #acordo com o enquadramento do contribuinte para preenchimento do campo {ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se necessário. + + if not sequencia: + sequencia=1 + + id_evento = 'ID' + id_evento += self.tpInsc + id_evento += self.nrInsc[0:8] + '000000' + id_evento += data_hora + id_evento += str(sequencia).zfill(5) + + # Define o Id + # + self.evtTabHorTur.Id.valor = id_evento + self.id_evento = id_evento + + xml = property(get_xml, set_xml) diff --git a/pysped/esocial/leiaute/evtTabLotacao_20402.py b/pysped/esocial/leiaute/evtTabLotacao_20402.py new file mode 100644 index 00000000..77db2133 --- /dev/null +++ b/pysped/esocial/leiaute/evtTabLotacao_20402.py @@ -0,0 +1,417 @@ +# -*- coding: utf-8 -*- +# +# PySPED - Python libraries to deal with Brazil's SPED Project +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Library General Public License as +# published by the Free Software Foundation, either version 2.1 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public License +# along with this program. If not, see . +# +# PySPED - Bibliotecas Python para o +# SPED - Sistema Público de Escrituração Digital +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# Este programa é um software livre: você pode redistribuir e/ou modificar +# este programa sob os termos da licença GNU Library General Public License, +# publicada pela Free Software Foundation, em sua versão 2.1 ou, de acordo +# com sua opção, qualquer versão posterior. +# +# Este programa é distribuido na esperança de que venha a ser útil, +# porém SEM QUAISQUER GARANTIAS, nem mesmo a garantia implícita de +# COMERCIABILIDADE ou ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Veja a +# GNU Library General Public License para mais detalhes. +# +# Você deve ter recebido uma cópia da GNU Library General Public License +# juntamente com este programa. Caso esse não seja o caso, acesse: +# +# + +from __future__ import (division, print_function, unicode_literals, + absolute_import) + +from builtins import str +import os +from pysped.xml_sped import * +from pysped.esocial.leiaute import ESQUEMA_ATUAL_VERSAO_2 as ESQUEMA_ATUAL + +DIRNAME = os.path.dirname(__file__) + +NAMESPACE_ESOCIAL = 'http://www.esocial.gov.br/schema/evt/evtTabLotacao/v02_04_02' + + +class NovaValidade(XMLNFe): + def __init__(self): + super(NovaValidade, self).__init__() + self.iniValid = TagCaracter(nome='iniValid', raiz='//eSocial/evtTabRubrica/infoRubrica/novaValidade', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.fimValid = TagCaracter(nome='fimValid', raiz='//eSocial/evtTabRubrica/infoRubrica/novaValidade', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.iniValid.xml + xml += self.fimValid.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.iniValid.xml = arquivo + self.fimValid.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoEmprParcial(XMLNFe): + def __init__(self): + super(InfoEmprParcial, self).__init__() + self.tpInscContrat = TagCaracter(nome='tpInscContrat', tamanho=[1, 1], raiz='//infoEmprParcial', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrInscContrat = TagCaracter(nome='nrInscContrat', tamanho=[1, 14], raiz='//infoEmprParcial', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.tpInscProp = TagCaracter(nome='tpInscProp', tamanho=[1, 1], raiz='//infoEmprParcial', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrInscProp = TagCaracter(nome='nrInscProp', tamanho=[1, 14], raiz='//infoEmprParcial', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInscContrat.xml + xml += self.nrInscContrat.xml + xml += self.tpInscProp.xml + xml += self.nrInscProp.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInscContrat.xml = arquivo + self.nrInscContrat.xml = arquivo + self.tpInscProp.xml = arquivo + self.nrInscProp.xml = arquivo + + xml = property(get_xml, set_xml) + + +class ProcJudTerceiro(XMLNFe): + def __init__(self): + super(ProcJudTerceiro, self).__init__() + self.codTerc = TagCaracter(nome='codTerc', tamanho=[1, 4], raiz='//procJudTerceiro', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrProcJud = TagCaracter(nome='nrProcJud', tamanho=[1, 20], raiz='//procJudTerceiro', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codSusp = TagCaracter(nome='codSusp', tamanho=[1, 14], raiz='//procJudTerceiro', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.codTerc.xml + xml += self.nrProcJud.xml + xml += self.codSusp.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codTerc.xml = arquivo + self.nrProcJud.xml = arquivo + self.codSusp.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoProcJudTerceiros(XMLNFe): + def __init__(self): + super(InfoProcJudTerceiros, self).__init__() + self.procJudTerceiro = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + if len(self.procJudTerceiro) > 0: + for p in self.procJudTerceiro: + xml += p.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.procJudTerceiro = self.le_grupo('//eSocial/evtTabLotacao/infoLotacao/dadosLotacao/fpasLotacao', ProcJudTerceiro, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class FpasLotacao(XMLNFe): + def __init__(self): + super(FpasLotacao, self).__init__() + self.fpas = TagCaracter(nome='fpas', tamanho=[1, 3], raiz='//eSocial/evtTabLotacao/infoLotacao/dadosLotacao/fpasLotacao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codTercs = TagCaracter(nome='codTercs', tamanho=[1, 4], raiz='//eSocial/evtTabLotacao/infoLotacao/dadosLotacao/fpasLotacao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codTercsSusp = TagCaracter(nome='codTercsSusp', tamanho=[1, 4], raiz='//eSocial/evtTabLotacao/infoLotacao/dadosLotacao/fpasLotacao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.infoProcJudTerceiros = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.fpas.xml + xml += self.codTercs.xml + xml += self.codTercsSusp.xml + if len(self.infoProcJudTerceiros) > 0: + for p in self.infoProcJudTerceiros: + xml += p.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.fpas.xml = arquivo + self.codTercs.xml = arquivo + self.codTercsSusp.xml = arquivo + self.infoProcJudTerceiros = self.le_grupo('//eSocial/evtTabLotacao/infoLotacao/dadosLotacao/fpasLotacao/infoProcJudTerceiros', infoProcJudTerceiros, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class DadosLotacao(XMLNFe): + def __init__(self): + super(DadosLotacao, self).__init__() + self.tpLotacao = TagCaracter(nome='tpLotacao', tamanho=[1, 2], raiz='//eSocial/evtTabLotacao/infoLotacao/dadosLotacao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.tpInsc = TagCaracter(nome='tpInsc', tamanho=[1, 1], raiz='//eSocial/evtTabLotacao/infoLotacao/dadosLotacao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.nrInsc = TagCaracter(nome='nrInsc', tamanho=[1, 15], raiz='//eSocial/evtTabLotacao/infoLotacao/dadosLotacao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.fpasLotacao = FpasLotacao() + self.infoEmprParcial = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpLotacao.xml + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += self.fpasLotacao.xml + if len(self.infoEmprParcial) > 0: + for p in self.infoEmprParcial: + xml += p.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpLotacao.xml = arquivo + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + self.fpasLotacao.xml = arquivo + self.infoEmprParcial = self.le_grupo('//eSocial/evtTabLotacao/infoLotacao/dadosLotacao/infoEmprParcial', InfoEmprParcial, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class IdeLotacao(XMLNFe): + def __init__(self): + super(IdeLotacao, self).__init__() + self.codLotacao = TagCaracter(nome='codLotacao', tamanho=[1, 30], raiz='//eSocial/evtTabLotacao/infoLotacao/ideLotacao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.iniValid = TagCaracter(nome='iniValid', raiz='//eSocial/evtTabLotacao/infoLotacao/ideLotacao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.fimValid = TagCaracter(nome='fimValid', raiz='//eSocial/evtTabLotacao/infoLotacao/ideLotacao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.codLotacao.xml + xml += self.iniValid.xml + xml += self.fimValid.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codLotacao.xml = arquivo + self.iniValid.xml = arquivo + self.fimValid.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoLotacao(XMLNFe): + def __init__(self): + super(InfoLotacao, self).__init__() + self.ideLotacao = IdeLotacao() + self.dadosLotacao = DadosLotacao() + self.novaValidade = NovaValidade() + self.operacao = 'I' + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + if self.operacao == 'I': + xml += '' + xml += self.ideLotacao.xml + xml += self.dadosLotacao.xml + xml += '' + elif self.operacao == 'A': + xml += '' + xml += self.ideLotacao.xml + xml += self.dadosLotacao.xml + xml += self.novaValidade.xml + xml += '' + + elif self.operacao == 'E': + xml += '' + xml += self.ideLotacao.xml + xml += '' + + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.ideLotacao.xml = arquivo + self.dadosLotacao.xml = arquivo + self.novaValidade.xml = arquivo + xml = property(get_xml, set_xml) + + +class IdeEmpregador(XMLNFe): + def __init__(self): + super(IdeEmpregador, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', raiz='//eSocial/evtTabLotacao/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='1') + self.nrInsc = TagCaracter(nome='nrInsc', raiz='//eSocial/evtTabLotacao/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEvento(XMLNFe): + def __init__(self): + super(IdeEvento, self).__init__() + self.tpAmb = TagInteiro(nome='tpAmb' , raiz='//eSocial/evtTabLotacao/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=2) + self.procEmi = TagInteiro(nome='procEmi' , raiz='//eSocial/evtTabLotacao/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=1) + self.verProc = TagCaracter(nome='verProc', raiz='//eSocial/evtTabLotacao/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpAmb.xml + xml += self.procEmi.xml + xml += self.verProc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpAmb.xml = arquivo + self.procEmi.xml = arquivo + self.verProc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class EvtTabLotacao(XMLNFe): + def __init__(self): + super(EvtTabLotacao, self).__init__() + self.Id = TagCaracter(nome='evtTabLotacao', propriedade='Id', raiz='//eSocial/evtTabLotacao', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideEvento = IdeEvento() + self.ideEmpregador = IdeEmpregador() + self.infoLotacao = InfoLotacao() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += self.Id.xml + xml += self.ideEvento.xml + xml += self.ideEmpregador.xml + xml += self.infoLotacao.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.Id.xml = arquivo + self.ideEvento.xml = arquivo + self.ideEmpregador.xml = arquivo + self.infoLotacao.xml = arquivo + + xml = property(get_xml, set_xml) + + +class S1020(XMLNFe): + def __init__(self): + super(S1020, self).__init__() + self.evtTabLotacao = EvtTabLotacao() + self.caminho_esquema = os.path.join(DIRNAME, 'schema/', ESQUEMA_ATUAL + '/') + self.arquivo_esquema = 'evtTabLotacao.xsd' + self.id_evento = '' + self.tpInsc = '' + self.nrInsc = '' + # self.Signature = Signature() + self.evento = self.evtTabLotacao + self.xml_assinado = '' + + def get_xml(self): + xml = XMLNFe.get_xml(self) + #xml += ABERTURA + xml += '' + xml += self.evtTabLotacao.xml + + # + # Define a URI a ser assinada + # + # self.Signature.URI = '#' + self.evtInfoEmpregador.Id.valor + # xml += self.Signature.xml + xml += '' + + # Define o método de assinatura + # self.Signature.metodo = 'sha256' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.evtTabLotacao.xml = arquivo + # self.Signature.xml = self._le_noh('//eSocial/sig:Signature') + + def gera_id_evento(self, data_hora, sequencia=False): + #A identificação única do evento (Id) é composta por 36 caracteres, conforme o que segue: IDTNNNNNNNNNNNNNNAAAAMMDDHHMMSSQQQQQ + #ID - Texto Fixo "ID"; + #T - Tipo de Inscrição do Empregador (1 - CNPJ; 2 - CPF); + #NNNNNNNNNNNNNN - Número do CNPJ ou CPF do empregador - Completar com + #zeros à direita. No caso de pessoas jurídicas, o CNPJ informado deve conter 8 ou 14 + #posições de acordo com o enquadramento do contribuinte para preenchimento do campo + #{ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se + #necessário. + #AAAAMMDD - Ano, mês e dia da geração do evento; + #HHMMSS - Hora, minuto e segundo da geração do evento; + #QQQQQ - Número sequencial da chave. Incrementar somente quando ocorrer geração de + #eventos na mesma data/hora, completando com zeros à esquerda. + #OBS.: No caso de pessoas jurídicas, o CNPJ informado deverá conter 8 ou 14 posições de + #acordo com o enquadramento do contribuinte para preenchimento do campo {ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se necessário. + + if not sequencia: + sequencia=1 + + id_evento = 'ID' + id_evento += self.tpInsc + id_evento += self.nrInsc[0:8] + '000000' + id_evento += data_hora + id_evento += str(sequencia).zfill(5) + + # Define o Id + # + self.evtTabLotacao.Id.valor = id_evento + self.id_evento = id_evento + + xml = property(get_xml, set_xml) diff --git a/pysped/esocial/leiaute/evtTabRubrica_20402.py b/pysped/esocial/leiaute/evtTabRubrica_20402.py new file mode 100644 index 00000000..b09562b3 --- /dev/null +++ b/pysped/esocial/leiaute/evtTabRubrica_20402.py @@ -0,0 +1,431 @@ +# -*- coding: utf-8 -*- +# +# PySPED - Python libraries to deal with Brazil's SPED Project +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Library General Public License as +# published by the Free Software Foundation, either version 2.1 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public License +# along with this program. If not, see . +# +# PySPED - Bibliotecas Python para o +# SPED - Sistema Público de Escrituração Digital +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# Este programa é um software livre: você pode redistribuir e/ou modificar +# este programa sob os termos da licença GNU Library General Public License, +# publicada pela Free Software Foundation, em sua versão 2.1 ou, de acordo +# com sua opção, qualquer versão posterior. +# +# Este programa é distribuido na esperança de que venha a ser útil, +# porém SEM QUAISQUER GARANTIAS, nem mesmo a garantia implícita de +# COMERCIABILIDADE ou ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Veja a +# GNU Library General Public License para mais detalhes. +# +# Você deve ter recebido uma cópia da GNU Library General Public License +# juntamente com este programa. Caso esse não seja o caso, acesse: +# +# + +from __future__ import (division, print_function, unicode_literals, + absolute_import) + +from builtins import str +import os +from pysped.xml_sped import * +from pysped.esocial.leiaute import ESQUEMA_ATUAL_VERSAO_2 as ESQUEMA_ATUAL + +DIRNAME = os.path.dirname(__file__) + +NAMESPACE_ESOCIAL = 'http://www.esocial.gov.br/schema/evt/evtTabRubrica/v02_04_02' + + +class NovaValidade(XMLNFe): + def __init__(self): + super(NovaValidade, self).__init__() + self.iniValid = TagCaracter(nome='iniValid', raiz='//eSocial/evtTabRubrica/infoRubrica/novaValidade', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.fimValid = TagCaracter(nome='fimValid', raiz='//eSocial/evtTabRubrica/infoRubrica/novaValidade', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.iniValid.xml + xml += self.fimValid.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.iniValid.xml = arquivo + self.fimValid.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeProcessoSIND(XMLNFe): + def __init__(self): + super(IdeProcessoSIND, self).__init__() + self.nrProc = TagCaracter(nome='nrProc', tamanho=[1, 21], raiz='//eSocial/evtTabRubrica/infoRubrica/dadosRubrica/ideProcessoFGTS', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nrProc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nrProc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeProcessoFGTS(XMLNFe): + def __init__(self): + super(IdeProcessoFGTS, self).__init__() + self.nrProc = TagCaracter(nome='nrProc', tamanho=[1, 21], raiz='//eSocial/evtTabRubrica/infoRubrica/dadosRubrica/ideProcessoFGTS', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nrProc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nrProc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeProcessoIRRF(XMLNFe): + def __init__(self): + super(IdeProcessoIRRF, self).__init__() + self.nrProc = TagCaracter(nome='nrProc', tamanho=[1, 21], raiz='//eSocial/evtTabRubrica/infoRubrica/dadosRubrica/ideProcessoIRRF', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codSusp = TagCaracter(nome='codSusp', tamanho=[1, 21], raiz='//eSocial/evtTabRubrica/infoRubrica/dadosRubrica/ideProcessoIRRF', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nrProc.xml + xml += self.codSusp.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nrProc.xml = arquivo + self.codSusp.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeProcessoCP(XMLNFe): + def __init__(self): + super(IdeProcessoCP, self).__init__() + self.tpProc = TagCaracter(nome='tpProc', tamanho=[1, 1], raiz='//eSocial/evtTabRubrica/infoRubrica/dadosRubrica/ideProcessoCP', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.nrProc = TagCaracter(nome='nrProc', tamanho=[1, 21], raiz='//eSocial/evtTabRubrica/infoRubrica/dadosRubrica/ideProcessoCP', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.extDecisao = TagCaracter(nome='extDecisao', tamanho=[1, 1], raiz='//eSocial/evtTabRubrica/infoRubrica/dadosRubrica/ideProcessoCP', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codSusp = TagCaracter(nome='codSusp', tamanho=[1, 21], raiz='//eSocial/evtTabRubrica/infoRubrica/dadosRubrica/ideProcessoCP', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpProc.xml + xml += self.nrProc.xml + xml += self.extDecisao.xml + xml += self.codSusp.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpProc.xml = arquivo + self.nrProc.xml = arquivo + self.extDecisao.xml = arquivo + self.codSusp.xml = arquivo + + xml = property(get_xml, set_xml) + + +class DadosRubrica(XMLNFe): + def __init__(self): + super(DadosRubrica, self).__init__() + self.dscRubr = TagCaracter(nome='dscRubr', tamanho=[1, 100], raiz='//eSocial/evtTabRubrica/infoRubrica/dadosRubrica', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.natRubr = TagCaracter(nome='natRubr', tamanho=[1, 4], raiz='//eSocial/evtTabRubrica/infoRubrica/dadosRubrica', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.tpRubr = TagCaracter(nome='tpRubr', tamanho=[1, 1], raiz='//eSocial/evtTabRubrica/infoRubrica/dadosRubrica', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codIncCP = TagCaracter(nome='codIncCP', tamanho=[1, 2], raiz='//eSocial/evtTabRubrica/infoRubrica/dadosRubrica', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codIncIRRF = TagCaracter(nome='codIncIRRF', tamanho=[1, 2], raiz='//eSocial/evtTabRubrica/infoRubrica/dadosRubrica', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codIncFGTS = TagCaracter(nome='codIncFGTS', tamanho=[1, 2], raiz='//eSocial/evtTabRubrica/infoRubrica/dadosRubrica', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.codIncSIND = TagCaracter(nome='codIncSIND', tamanho=[1, 2], raiz='//eSocial/evtTabRubrica/infoRubrica/dadosRubrica', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.observacao = TagCaracter(nome='observacao', tamanho=[1, 2], raiz='//eSocial/evtTabRubrica/infoRubrica/dadosRubrica', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.ideProcessoCP = [] + self.ideProcessoIRRF = [] + self.ideProcessoFGTS = [] + self.ideProcessoSIND = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.dscRubr.xml + xml += self.natRubr.xml + xml += self.tpRubr.xml + xml += self.codIncCP.xml + xml += self.codIncIRRF.xml + xml += self.codIncFGTS.xml + xml += self.codIncSIND.xml + xml += self.observacao.xml + if len(self.ideProcessoCP) > 0: + for p in self.ideProcessoCP: + xml += p.xml + if len(self.ideProcessoIRRF) > 0: + for p in self.ideProcessoIRRF: + xml += p.xml + if len(self.ideProcessoFGTS) > 0: + for p in self.ideProcessoFGTS: + xml += p.xml + if len(self.ideProcessoSIND) > 0: + for p in self.ideProcessoSIND: + xml += p.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.dscRubr.xml = arquivo + self.natRubr.xml = arquivo + self.tpRubr.xml = arquivo + self.codIncCP.xml = arquivo + self.codIncIRRF.xml = arquivo + self.codIncFGTS.xml = arquivo + self.codIncSIND.xml = arquivo + self.observacao.xml = arquivo + self.ideProcessoCP = self.le_grupo('//eSocial/evtTabRubrica/infoRubrica/dadosRubrica/ideProcessoCP', IdeProcessoCP, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.ideProcessoIRRF = self.le_grupo('//eSocial/evtTabRubrica/infoRubrica/dadosRubrica/ideProcessoIRRF', IdeProcessoIRRF, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.ideProcessoFGTS = self.le_grupo('//eSocial/evtTabRubrica/infoRubrica/dadosRubrica/ideProcessoFGTS', IdeProcessoFGTS, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + self.ideProcessoSIND = self.le_grupo('//eSocial/evtTabRubrica/infoRubrica/dadosRubrica/ideProcessoSIND', IdeProcessoSIND, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class IdeRubrica(XMLNFe): + def __init__(self): + super(IdeRubrica, self).__init__() + self.codRubr = TagCaracter(nome='codRubr', tamanho=[1, 30], raiz='//eSocial/evtTabRubrica/infoRubrica/ideRubrica', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideTabRubr = TagCaracter(nome='ideTabRubr', tamanho=[1, 8], raiz='//eSocial/evtTabRubrica/infoRubrica/ideRubrica', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.iniValid = TagCaracter(nome='iniValid', raiz='//eSocial/evtTabRubrica/infoRubrica/ideRubrica', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.fimValid = TagCaracter(nome='fimValid', raiz='//eSocial/evtTabRubrica/infoRubrica/ideRubrica', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.codRubr.xml + xml += self.ideTabRubr.xml + xml += self.iniValid.xml + xml += self.fimValid.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codRubr.xml = arquivo + self.ideTabRubr.xml = arquivo + self.iniValid.xml = arquivo + self.fimValid.xml = arquivo + + xml = property(get_xml, set_xml) + + +class InfoRubrica(XMLNFe): + def __init__(self): + super(InfoRubrica, self).__init__() + self.ideRubrica = IdeRubrica() + self.dadosRubrica = DadosRubrica() + self.novaValidade = NovaValidade() + self.operacao = 'I' + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + if self.operacao == 'I': + xml += '' + xml += self.ideRubrica.xml + xml += self.dadosRubrica.xml + xml += '' + elif self.operacao == 'A': + xml += '' + xml += self.ideRubrica.xml + xml += self.dadosRubrica.xml + xml += self.novaValidade.xml + xml += '' + + elif self.operacao == 'E': + xml += '' + xml += self.ideRubrica.xml + xml += '' + + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.ideRubrica.xml = arquivo + self.dadosRubrica.xml = arquivo + self.novaValidade.xml = arquivo + xml = property(get_xml, set_xml) + + +class IdeEmpregador(XMLNFe): + def __init__(self): + super(IdeEmpregador, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', raiz='//eSocial/evtInfoEmpregador/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='1') + self.nrInsc = TagCaracter(nome='nrInsc', raiz='//eSocial/evtInfoEmpregador/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEvento(XMLNFe): + def __init__(self): + super(IdeEvento, self).__init__() + self.tpAmb = TagInteiro(nome='tpAmb' , raiz='//eSocial/evtTabEstab/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=2) + self.procEmi = TagInteiro(nome='procEmi' , raiz='//eSocial/evtTabEstab/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor=1) + self.verProc = TagCaracter(nome='verProc', raiz='//eSocial/evtTabEstab/ideEvento', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpAmb.xml + xml += self.procEmi.xml + xml += self.verProc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpAmb.xml = arquivo + self.procEmi.xml = arquivo + self.verProc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class EvtTabRubrica(XMLNFe): + def __init__(self): + super(EvtTabRubrica, self).__init__() + self.Id = TagCaracter(nome='evtTabRubrica', propriedade='Id', raiz='//eSocial/evtTabRubrica', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.ideEvento = IdeEvento() + self.ideEmpregador = IdeEmpregador() + self.infoRubrica = InfoRubrica() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += self.Id.xml + xml += self.ideEvento.xml + xml += self.ideEmpregador.xml + xml += self.infoRubrica.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.Id.xml = arquivo + self.ideEvento.xml = arquivo + self.ideEmpregador.xml = arquivo + self.infoRubrica.xml = arquivo + + xml = property(get_xml, set_xml) + + +class S1010(XMLNFe): + def __init__(self): + super(S1010, self).__init__() + self.evtTabRubrica = EvtTabRubrica() + self.caminho_esquema = os.path.join(DIRNAME, 'schema/', ESQUEMA_ATUAL + '/') + self.arquivo_esquema = 'evtTabRubrica.xsd' + self.id_evento = '' + self.tpInsc = '' + self.nrInsc = '' + # self.Signature = Signature() + self.evento = self.evtTabRubrica + self.xml_assinado = '' + + def get_xml(self): + xml = XMLNFe.get_xml(self) + #xml += ABERTURA + xml += '' + xml += self.evtTabRubrica.xml + + # + # Define a URI a ser assinada + # + # self.Signature.URI = '#' + self.evtInfoEmpregador.Id.valor + # xml += self.Signature.xml + xml += '' + + # Define o método de assinatura + # self.Signature.metodo = 'sha256' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.evtTabRubrica.xml = arquivo + # self.Signature.xml = self._le_noh('//eSocial/sig:Signature') + + def gera_id_evento(self, data_hora, sequencia=False): + #A identificação única do evento (Id) é composta por 36 caracteres, conforme o que segue: IDTNNNNNNNNNNNNNNAAAAMMDDHHMMSSQQQQQ + #ID - Texto Fixo "ID"; + #T - Tipo de Inscrição do Empregador (1 - CNPJ; 2 - CPF); + #NNNNNNNNNNNNNN - Número do CNPJ ou CPF do empregador - Completar com + #zeros à direita. No caso de pessoas jurídicas, o CNPJ informado deve conter 8 ou 14 + #posições de acordo com o enquadramento do contribuinte para preenchimento do campo + #{ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se + #necessário. + #AAAAMMDD - Ano, mês e dia da geração do evento; + #HHMMSS - Hora, minuto e segundo da geração do evento; + #QQQQQ - Número sequencial da chave. Incrementar somente quando ocorrer geração de + #eventos na mesma data/hora, completando com zeros à esquerda. + #OBS.: No caso de pessoas jurídicas, o CNPJ informado deverá conter 8 ou 14 posições de + #acordo com o enquadramento do contribuinte para preenchimento do campo {ideEmpregador/nrInsc} do evento S-1000, completando-se com zeros à direita, se necessário. + + if not sequencia: + sequencia=1 + + id_evento = 'ID' + id_evento += self.tpInsc + id_evento += self.nrInsc[0:8] + '000000' + id_evento += data_hora + id_evento += str(sequencia).zfill(5) + + # Define o Id + # + self.evtTabRubrica.Id.valor = id_evento + self.id_evento = id_evento + + xml = property(get_xml, set_xml) diff --git a/pysped/esocial/leiaute/retornoEnvioLoteEventos_10100.py b/pysped/esocial/leiaute/retornoEnvioLoteEventos_10100.py index 319133bd..dc498e5d 100644 --- a/pysped/esocial/leiaute/retornoEnvioLoteEventos_10100.py +++ b/pysped/esocial/leiaute/retornoEnvioLoteEventos_10100.py @@ -223,6 +223,12 @@ class RetornoLoteEventosEsocial(XMLNFe): def __init__(self): super(RetornoLoteEventosEsocial, self).__init__() self.retornoEnvioLoteEventos = RetornoEnvioLoteEventos() + self.cdResposta = '' + self.descResposta = '' + self.dhRecepcao = '' + self.versaoAplicativoRecepcao = '' + self.protocoloEnvio = '' + self.ocorrencias = [] self.caminho_esquema = os.path.join(DIRNAME, 'schema/', ESQUEMA_ATUAL + '/') self.arquivo_esquema = 'RetornoEnvioLoteEventos-v1_1_0.xsd' @@ -237,5 +243,11 @@ def get_xml(self): def set_xml(self, arquivo): if self._le_xml(arquivo): self.retornoEnvioLoteEventos.xml = arquivo + self.cdResposta = self.retornoEnvioLoteEventos.status.cdResposta.valor + self.descResposta = self.retornoEnvioLoteEventos.status.descResposta.valor + self.dhRecepcao = self.retornoEnvioLoteEventos.dadosRecepcaoLote.dhRecepcao.valor + self.versaoAplicativoRecepcao = self.retornoEnvioLoteEventos.dadosRecepcaoLote.versaoAplicativoRecepcao.valor + self.protocoloEnvio = self.retornoEnvioLoteEventos.dadosRecepcaoLote.protocoloEnvio.valor + self.ocorrencias = self.retornoEnvioLoteEventos.status.ocorrencias xml = property(get_xml, set_xml) diff --git a/pysped/esocial/leiaute/retornoProcessamentoLote_10100.py b/pysped/esocial/leiaute/retornoProcessamentoLote_10100.py new file mode 100644 index 00000000..9b645068 --- /dev/null +++ b/pysped/esocial/leiaute/retornoProcessamentoLote_10100.py @@ -0,0 +1,621 @@ +# -*- coding: utf-8 -*- +# +# PySPED - Python libraries to deal with Brazil's SPED Project +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Library General Public License as +# published by the Free Software Foundation, either version 2.1 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public License +# along with this program. If not, see . +# +# PySPED - Bibliotecas Python para o +# SPED - Sistema Público de Escrituração Digital +# +# Copyright (C) 2010-2012 +# Copyright (C) Aristides Caldeira +# +# Este programa é um software livre: você pode redistribuir e/ou modificar +# este programa sob os termos da licença GNU Library General Public License, +# publicada pela Free Software Foundation, em sua versão 2.1 ou, de acordo +# com sua opção, qualquer versão posterior. +# +# Este programa é distribuido na esperança de que venha a ser útil, +# porém SEM QUAISQUER GARANTIAS, nem mesmo a garantia implícita de +# COMERCIABILIDADE ou ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Veja a +# GNU Library General Public License para mais detalhes. +# +# Você deve ter recebido uma cópia da GNU Library General Public License +# juntamente com este programa. Caso esse não seja o caso, acesse: +# +# + +from __future__ import (division, print_function, unicode_literals, + absolute_import) + +from builtins import str +import os +from pysped.xml_sped import * +from pysped.esocial.leiaute import ESQUEMA_ATUAL_VERSAO_2 as ESQUEMA_ATUAL +from .evtBasesTrab_20402 import S5001 +from .evtIrrfBenef_20402 import S5002 +from .evtCS_20402 import S5011 +from .evtIrrf import S5012 + +DIRNAME = os.path.dirname(__file__) + +NAMESPACE_ESOCIAL = 'http://www.esocial.gov.br/schema/lote/eventos/envio/retornoProcessamento/v1_3_0' +NAMESPACE_ESOCIAL_RETORNO_EVENTO = 'http://www.esocial.gov.br/schema/evt/retornoEvento/v1_2_0' +NAMESPACE_ESOCIAL_S5001 = 'http://www.esocial.gov.br/schema/evt/evtBasesTrab/v02_04_02' +NAMESPACE_ESOCIAL_S5002 = 'http://www.esocial.gov.br/schema/evt/evtIrrfBenef/v02_04_02' +NAMESPACE_ESOCIAL_S5011 = 'http://www.esocial.gov.br/schema/evt/evtCS/v02_04_02' +NAMESPACE_ESOCIAL_S5012 = 'http://www.esocial.gov.br/schema/evt/evtIrrf/v02_04_02' + + +class Recibo(XMLNFe): + def __init__(self): + super(Recibo, self).__init__() + self.nrRecibo = TagCaracter(nome='nrRecibo', raiz='//recibo', namespace=NAMESPACE_ESOCIAL_RETORNO_EVENTO, namespace_obrigatorio=False) + self.hash = TagCaracter(nome='hash' , raiz='//recibo', namespace=NAMESPACE_ESOCIAL_RETORNO_EVENTO, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.nrRecibo.xml + xml += self.hash.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.nrRecibo.xml = arquivo + self.hash.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Ocorrencia2(XMLNFe): + def __init__(self): + super(Ocorrencia2, self).__init__() + self.codigo = TagCaracter(nome='codigo' , raiz='//ocorrencia', namespace=NAMESPACE_ESOCIAL_RETORNO_EVENTO, namespace_obrigatorio=False) + self.descricao = TagCaracter(nome='descricao' , raiz='//ocorrencia', namespace=NAMESPACE_ESOCIAL_RETORNO_EVENTO, namespace_obrigatorio=False) + self.tipo = TagCaracter(nome='tipo' , raiz='//ocorrencia', namespace=NAMESPACE_ESOCIAL_RETORNO_EVENTO, namespace_obrigatorio=False) + self.localizacao = TagCaracter(nome='localizacao', raiz='//ocorrencia', namespace=NAMESPACE_ESOCIAL_RETORNO_EVENTO, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.codigo.xml + xml += self.descricao.xml + xml += self.tipo.xml + xml += self.localizacao.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codigo.xml = arquivo + self.descricao.xml = arquivo + self.tipo.xml = arquivo + self.localizacao.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Processamento(XMLNFe): + def __init__(self): + super(Processamento, self).__init__() + self.cdResposta = TagCaracter(nome='cdResposta', raiz='//eSocial/retornoEvento/processamento', namespace=NAMESPACE_ESOCIAL_RETORNO_EVENTO, namespace_obrigatorio=False) + self.descResposta = TagCaracter(nome='descResposta', raiz='//eSocial/retornoEvento/processamento', namespace=NAMESPACE_ESOCIAL_RETORNO_EVENTO, namespace_obrigatorio=False) + self.versaoAppProcessamento = TagCaracter(nome='versaoAppProcessamento', raiz='//eSocial/retornoEvento/processamento', namespace=NAMESPACE_ESOCIAL_RETORNO_EVENTO, namespace_obrigatorio=False) + self.dhProcessamento = TagCaracter(nome='dhProcessamento', raiz='//eSocial/retornoEvento/processamento', namespace=NAMESPACE_ESOCIAL_RETORNO_EVENTO, namespace_obrigatorio=False) + self.ocorrencias = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cdResposta.xml + xml += self.descResposta.xml + xml += self.versaoAppProcessamento.xml + xml += self.dhProcessamento.xml + if len(self.ocorrencias) >= 1: + xml += '' + + for o in self.ocorrencias: + xml += o.xml + + xml += '' + + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cdResposta.xml = arquivo + self.descResposta.xml = arquivo + self.versaoAppProcessamento.xml = arquivo + self.dhProcessamento.xml = arquivo + self.ocorrencias = self.le_grupo('//eSocial/retornoEvento/processamento/ocorrencias/ocorrencia', Ocorrencia2, namespace=NAMESPACE_ESOCIAL_RETORNO_EVENTO, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class Recepcao(XMLNFe): + def __init__(self): + super(Recepcao, self).__init__() + self.tpAmb = TagInteiro(nome='tpAmb', raiz='//eSocial/retornoEvento/recepcao', namespace=NAMESPACE_ESOCIAL_RETORNO_EVENTO, namespace_obrigatorio=False, valor=2) + self.dhRecepcao = TagCaracter(nome='dhRecepcao', raiz='//eSocial/retornoEvento/recepcao', namespace=NAMESPACE_ESOCIAL_RETORNO_EVENTO, namespace_obrigatorio=False) + self.versaoAppRecepcao = TagCaracter(nome='versaoAppRecepcao', raiz='//eSocial/retornoEvento/recepcao', namespace=NAMESPACE_ESOCIAL_RETORNO_EVENTO, namespace_obrigatorio=False) + self.protocoloEnvioLote = TagCaracter(nome='protocoloEnvioLote', raiz='//eSocial/retornoEvento/recepcao', namespace=NAMESPACE_ESOCIAL_RETORNO_EVENTO, namespace_obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpAmb.xml + xml += self.dhRecepcao.xml + xml += self.versaoAppRecepcao.xml + xml += self.protocoloEnvioLote.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpAmb.xml = arquivo + self.dhRecepcao.xml = arquivo + self.versaoAppRecepcao.xml = arquivo + self.protocoloEnvioLote.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEmpregador2(XMLNFe): + def __init__(self): + super(IdeEmpregador2, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', raiz='//eSocial/retornoEvento/ideEmpregador', namespace=NAMESPACE_ESOCIAL_RETORNO_EVENTO, namespace_obrigatorio=False, valor='1') + self.nrInsc = TagCaracter(nome='nrInsc', raiz='//eSocial/retornoEvento/ideEmpregador', namespace=NAMESPACE_ESOCIAL_RETORNO_EVENTO, namespace_obrigatorio=False) + + def get_xml(self): + if not (self.tpInsc.valor and self.nrInsc.valor): + return '' + + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class RetornoEvento2(XMLNFe): + def __init__(self): + super(RetornoEvento2, self).__init__() + self.Id = TagCaracter(nome='retornoEvento', propriedade='Id', raiz='//eSocial', namespace=NAMESPACE_ESOCIAL_RETORNO_EVENTO, namespace_obrigatorio=False) + self.ideEmpregador = IdeEmpregador2() + self.recepcao = Recepcao() + self.processamento = Processamento() + self.recibo = Recibo() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + # xml += '' + xml += self.Id.xml + xml += self.ideEmpregador.xml + xml += self.recepcao.xml + xml += self.processamento.xml + xml += self.recibo.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.Id.xml = arquivo + self.ideEmpregador.xml = arquivo + self.recepcao.xml = arquivo + self.processamento.xml = arquivo + self.recibo.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Tot(XMLNFe): + def __init__(self): + super(Tot, self).__init__() + self.tipo = TagCaracter(nome='tot', propriedade='tipo', raiz='/', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.eSocial = S5001() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += self.tipo.xml + xml += self.eSocial.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tipo.xml = arquivo + if self.tipo.valor == 'S5001': + self.eSocial = S5001() + if self.tipo.valor == 'S5002': + self.eSocial = S5002() + if self.tipo.valor == 'S5011': + self.eSocial = S5011() + if self.tipo.valor == 'S5012': + self.eSocial = S5012() + if self.tipo.valor: + self.eSocial.xml = self._le_nohs('//tot', ns=NAMESPACE_ESOCIAL)[0][0] + + xml = property(get_xml, set_xml) + + +class ESocial(XMLNFe): + def __init__(self): + super(ESocial, self).__init__() + self.retornoEvento = RetornoEvento2() + self.Signature = Signature() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.retornoEvento.xml + xml += self.Signature.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.retornoEvento.xml = arquivo + self.Signature.xml = self._le_noh('//sig:Signature') + + xml = property(get_xml, set_xml) + + +class RetornoEvento(XMLNFe): + def __init__(self): + super(RetornoEvento, self).__init__() + self.eSocial = ESocial() + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.eSocial.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.eSocial.xml = self._le_nohs('//evento/retornoEvento', ns=NAMESPACE_ESOCIAL)[0][0] + + xml = property(get_xml, set_xml) + + +class Evento(XMLNFe): + def __init__(self): + super(Evento, self).__init__() + self.Id = TagCaracter(nome='evento', propriedade='Id', raiz='/', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.retornoEvento = RetornoEvento() + self.tot = [] + self.resposta = self.retornoEvento.eSocial.retornoEvento.processamento.cdResposta.valor + self.descricao = self.retornoEvento.eSocial.retornoEvento.processamento.descResposta.valor + self.ocorrencias = self.retornoEvento.eSocial.retornoEvento.processamento.ocorrencias + self.totalizadores = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += self.Id.xml + xml += self.retornoEvento.xml + if len(self.tot) > 0: + for t in self.tot: + xml += t.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.Id.xml = arquivo + self.retornoEvento.xml = arquivo + self.totalizadores = self._le_nohs('//tot', ns=NAMESPACE_ESOCIAL) + if self.totalizadores and len(self.totalizadores) > 0: + for t in self.totalizadores: + tot = Tot() + tot.xml = t + self.tot.append(tot) + + xml = property(get_xml, set_xml) + + @property + def codigo_retorno(self): + return self.retornoEvento.eSocial.retornoEvento.processamento.cdResposta.valor + + @property + def descricao_retorno(self): + return self.retornoEvento.eSocial.retornoEvento.processamento.descResposta.valor + + @property + def recibo(self): + return self.retornoEvento.eSocial.retornoEvento.recibo.nrRecibo.valor + + @property + def hash(self): + return self.retornoEvento.eSocial.retornoEvento.recibo.hash.valor + + @property + def lista_ocorrencias(self): + ocorrencias = [] + if self.retornoEvento.eSocial.retornoEvento.processamento.ocorrencias: + for ocorrencia in self.retornoEvento.eSocial.retornoEvento.processamento.ocorrencias: + ocorrencias.append({ + 'tipo': ocorrencia.tipo.valor, + 'codigo': ocorrencia.codigo.valor, + 'descricao': ocorrencia.descricao.valor, + 'localizacao': ocorrencia.localizacao.valor, + }) + + return ocorrencias + + @property + def dh_processamento(self): + return self.retornoEvento.eSocial.retornoEvento.processamento.dhProcessamento.valor + + +class DadosProcessamentoLote(XMLNFe): + def __init__(self): + super(DadosProcessamentoLote, self).__init__() + self.versaoAplicativoProcessamentoLote = TagCaracter(nome='versaoAplicativoProcessamentoLote', raiz='//eSocial/retornoProcessamentoLoteEventos/dadosProcessamentoLote', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + if not (self.versaoAplicativoProcessamentoLote.valor): + return '' + + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.versaoAplicativoProcessamentoLote.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.versaoAplicativoProcessamentoLote.xml = arquivo + + xml = property(get_xml, set_xml) + + +class DadosRecepcaoLote(XMLNFe): + def __init__(self): + super(DadosRecepcaoLote, self).__init__() + self.dhRecepcao = TagCaracter(nome='dhRecepcao', raiz='//eSocial/retornoProcessamentoLoteEventos/dadosRecepcaoLote', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.versaoAplicativoRecepcao = TagCaracter(nome='versaoAplicativoRecepcao', raiz='//eSocial/retornoProcessamentoLoteEventos/dadosRecepcaoLote', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.protocoloEnvio = TagCaracter(nome='protocoloEnvio', raiz='//eSocial/retornoProcessamentoLoteEventos/dadosRecepcaoLote', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + if not (self.dhRecepcao.valor and self.versaoAplicativoRecepcao.valor and self.protocoloEnvio.valor): + return '' + + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.dhRecepcao.xml + xml += self.versaoAplicativoRecepcao.xml + xml += self.protocoloEnvio.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.dhRecepcao.xml = arquivo + self.versaoAplicativoRecepcao.xml = arquivo + self.protocoloEnvio.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Ocorrencia(XMLNFe): + def __init__(self): + super(Ocorrencia, self).__init__() + self.codigo = TagCaracter(nome='codigo' , raiz='//ocorrencia', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.descricao = TagCaracter(nome='descricao' , raiz='//ocorrencia', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.tipo = TagCaracter(nome='tipo' , raiz='//ocorrencia', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.localizacao = TagCaracter(nome='localizacao', raiz='//ocorrencia', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.codigo.xml + xml += self.descricao.xml + xml += self.tipo.xml + xml += self.localizacao.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.codigo.xml = arquivo + self.descricao.xml = arquivo + self.tipo.xml = arquivo + self.localizacao.xml = arquivo + + xml = property(get_xml, set_xml) + + +class Status(XMLNFe): + def __init__(self): + super(Status, self).__init__() + self.cdResposta = TagCaracter(nome='cdResposta', raiz='//eSocial/retornoProcessamentoLoteEventos/status', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.descResposta = TagCaracter(nome='descResposta', raiz='//eSocial/retornoProcessamentoLoteEventos/status', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + self.tempoEstimadoConclusao = TagInteiro(nome='tempoEstimadoConclusao', raiz='//eSocial/retornoProcessamentoLoteEventos/status', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, obrigatorio=False) + self.ocorrencias = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.cdResposta.xml + xml += self.descResposta.xml + xml += self.tempoEstimadoConclusao.xml + + if len(self.ocorrencias) >= 1: + xml += '' + + for o in self.ocorrencias: + xml += o.xml + + xml += '' + + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.cdResposta.xml = arquivo + self.descResposta.xml = arquivo + self.tempoEstimadoConclusao.xml = arquivo + self.ocorrencias = self.le_grupo('//eSocial/retornoProcessamentoLoteEventos/status/ocorrencias/ocorrencia', Ocorrencia, namespace=NAMESPACE_ESOCIAL, sigla_ns='res') + + xml = property(get_xml, set_xml) + + +class IdeTransmissor(XMLNFe): + def __init__(self): + super(IdeTransmissor, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', raiz='//eSocial/retornoProcessamentoLoteEventos/ideTransmissor', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='1') + self.nrInsc = TagCaracter(nome='nrInsc', raiz='//eSocial/retornoProcessamentoLoteEventos/ideTransmissor', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + if not (self.tpInsc.valor and self.nrInsc.valor): + return '' + + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class IdeEmpregador(XMLNFe): + def __init__(self): + super(IdeEmpregador, self).__init__() + self.tpInsc = TagCaracter(nome='tpInsc', raiz='//eSocial/retornoProcessamentoLoteEventos/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False, valor='1') + self.nrInsc = TagCaracter(nome='nrInsc', raiz='//eSocial/retornoProcessamentoLoteEventos/ideEmpregador', namespace=NAMESPACE_ESOCIAL, namespace_obrigatorio=False) + + def get_xml(self): + if not (self.tpInsc.valor and self.nrInsc.valor): + return '' + + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.tpInsc.xml + xml += self.nrInsc.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.tpInsc.xml = arquivo + self.nrInsc.xml = arquivo + + xml = property(get_xml, set_xml) + + +class RetornoProcessamentoLoteEventos(XMLNFe): + def __init__(self): + super(RetornoProcessamentoLoteEventos, self).__init__() + self.ideEmpregador = IdeEmpregador() + self.ideTransmissor = IdeTransmissor() + self.status = Status() + self.dadosRecepcaoLote = DadosRecepcaoLote() + self.dadosProcessamentoLote = DadosProcessamentoLote() + self.retornoEventos = [] + + def get_xml(self): + xml = XMLNFe.get_xml(self) + xml += '' + xml += self.ideEmpregador.xml + xml += self.ideTransmissor.xml + xml += self.status.xml + xml += self.dadosRecepcaoLote.xml + xml += self.dadosProcessamentoLote.xml + xml += '' + for o in self.retornoEventos: + xml += o.xml + xml += '' + + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.ideEmpregador.xml = arquivo + self.ideTransmissor.xml = arquivo + self.status.xml = arquivo + self.dadosRecepcaoLote.xml = arquivo + self.retornoEventos = self.le_grupo('//eSocial/retornoProcessamentoLoteEventos/retornoEventos/evento', Evento, namespace=NAMESPACE_ESOCIAL) + + xml = property(get_xml, set_xml) + + +class RetornoProcessamentoLoteEsocial(XMLNFe): + def __init__(self): + super(RetornoProcessamentoLoteEsocial, self).__init__() + self.retornoProcessamentoLoteEventos = RetornoProcessamentoLoteEventos() + self.cdResposta = '' + self.descResposta = '' + self.tempoEstimadoConclusao = '' + self.dhRecepcao = '' + self.protocoloEnvio = '' + self.ocorrencias = [] + self.versaoAplicativoRecepcao = '' + self.versaoAplicativoProcessamentoLote = '' + self.caminho_esquema = os.path.join(DIRNAME, 'schema/', ESQUEMA_ATUAL + '/') + self.arquivo_esquema = 'RetornoProcessamentoLote-v1_3_0.xsd' + + def get_xml(self): + xml = XMLNFe.get_xml(self) + #xml += ABERTURA + xml += '' + xml += self.retornoProcessamentoLoteEventos.xml + xml += '' + return xml + + def set_xml(self, arquivo): + if self._le_xml(arquivo): + self.retornoProcessamentoLoteEventos.xml = arquivo + self.cdResposta = self.retornoProcessamentoLoteEventos.status.cdResposta.valor + self.descResposta = self.retornoProcessamentoLoteEventos.status.descResposta.valor + self.tempoEstimadoConclusao = self.retornoProcessamentoLoteEventos.status.tempoEstimadoConclusao.valor + self.dhRecepcao = self.retornoProcessamentoLoteEventos.dadosRecepcaoLote.dhRecepcao.valor + self.versaoAplicativoRecepcao = self.retornoProcessamentoLoteEventos.dadosRecepcaoLote.versaoAplicativoRecepcao.valor + self.protocoloEnvio = self.retornoProcessamentoLoteEventos.dadosRecepcaoLote.protocoloEnvio.valor + self.ocorrencias = self.retornoProcessamentoLoteEventos.status.ocorrencias + self.versaoAplicativoProcessamentoLote = self.retornoProcessamentoLoteEventos.dadosProcessamentoLote.versaoAplicativoProcessamentoLote.valor + + xml = property(get_xml, set_xml) + + @property + def lista_eventos(self): + eventos = [] + + for evento in self.retornoProcessamentoLoteEventos.retornoEventos: + eventos.append(evento) + + return eventos diff --git a/pysped/esocial/leiaute/soap_10100.py b/pysped/esocial/leiaute/soap_10100.py index 4dab3aac..355ffb6b 100644 --- a/pysped/esocial/leiaute/soap_10100.py +++ b/pysped/esocial/leiaute/soap_10100.py @@ -117,3 +117,46 @@ def set_xml(self, arquivo): self.resposta.xml = arquivo xml = property(get_xml, set_xml) + + +class SOAPConsulta(XMLNFe): + def __init__(self): + super(SOAPConsulta, self).__init__() + self.webservice = '' + self.metodo = '' + self.cUF = None + self.envio = None + self._header = { + b'Content-Type': b'text/xml; charset=UTF-8', + b'Accept-Encoding': b'gzip,deflate', + b'Connection': b'Keep-Alive', + b'User-Agent': b'Apache-HttpClient/4.1.1 (java 1.5)', + } + + def get_xml(self): + self._header[b'SOAPAction'] = b'http://www.esocial.gov.br/servicos/empregador/lote/eventos/envio/consulta/retornoProcessamento/v1_1_0/' + self.webservice.encode('utf-8') + b'/' + self.metodo.encode('utf-8') + + xml = XMLNFe.get_xml(self) + #xml += ABERTURA + xml += '' + xml += '' + xml += '' + xml += '' + xml += '' + xml += self.envio.xml + xml += '' + xml += '' + xml += '' + xml += '' + return xml + + def set_xml(self): + pass + + xml = property(get_xml, set_xml) + + def get_header(self): + header = self._header + return header + + header = property(get_header) diff --git a/pysped/esocial/processador_esocial.py b/pysped/esocial/processador_esocial.py index 2aa09d7a..3e2e7ce9 100644 --- a/pysped/esocial/processador_esocial.py +++ b/pysped/esocial/processador_esocial.py @@ -51,15 +51,20 @@ from .webservices_flags import * from . import webservices_3 -from .leiaute import SOAPEnvio_10100, SOAPRetorno_10100 +from .leiaute import SOAPEnvio_10100, SOAPRetorno_10100, SOAPConsulta_10100 from .leiaute import LoteEventosEsocial_10101 from .leiaute import RetornoLoteEventosEsocial_10100 from .leiaute import ConsultaLoteEventosEsocial_10000 +from .leiaute import RetornoProcessamentoLoteEsocial_10000 +import pybrasil class ProcessadorESocial(ProcessadorNFe): def __init__(self): super(ProcessadorESocial, self).__init__() + self.tpInsc = '' + self.nrInsc = '' + self.certificado = pybrasil.certificado.Certificado() def _configura_servico(self, servico, envio, resposta, ambiente=None, somente_ambiente_nacional=False): if ambiente is None: @@ -68,12 +73,18 @@ def _configura_servico(self, servico, envio, resposta, ambiente=None, somente_am webservices = webservices_3 metodo_ws = webservices.METODO_WS - self._soap_envio = SOAPEnvio_10100() + # Se for Consulta deve usar o SOAPConsulta ao invés do SOAPEnvio + if servico == WS_ESOCIAL_CONSULTA: + self._soap_envio = SOAPConsulta_10100() + servidor = 'consulta' + else: + self._soap_envio = SOAPEnvio_10100() + servidor = 'envio' self._soap_retorno = SOAPRetorno_10100() ws_a_usar = webservices.SVESOCIAL - self._servidor = ws_a_usar[ambiente]['servidor'] + self._servidor = ws_a_usar[ambiente][servidor] self._url = ws_a_usar[ambiente][servico] self._soap_envio.webservice = metodo_ws[servico]['webservice'] @@ -84,17 +95,17 @@ def _configura_servico(self, servico, envio, resposta, ambiente=None, somente_am self._soap_retorno.metodo = self._soap_envio.metodo self._soap_retorno.resposta = resposta - def monta_caminho_esocial(self, ambiente, id_evento): - caminho = self.caminho + def monta_caminho_esocial(self, ambiente, registro, id_evento, cnpj): + caminho = os.path.join(self.caminho, 'esocial/') + caminho = os.path.join(caminho, cnpj + '/') if ambiente == 1: caminho = os.path.join(caminho, 'producao/') else: caminho = os.path.join(caminho, 'homologacao/') - #ID2035418760001332018050212504900001 - data = '20' + id_evento[19:21] + '-' + id_evento[21:23] - caminho = os.path.join(caminho, data + '/') + if registro: + caminho = os.path.join(caminho, registro + '/') caminho = os.path.join(caminho, id_evento + '/') try: os.makedirs(caminho) @@ -103,74 +114,96 @@ def monta_caminho_esocial(self, ambiente, id_evento): return caminho - def enviar_lote(self, lista_eventos=[]): + def enviar_lote(self, lista_eventos=[], grupo='1'): envio = LoteEventosEsocial_10101() resposta = RetornoLoteEventosEsocial_10100() processo = ProcessoESocial(webservice=WS_ESOCIAL_ENVIO, envio=envio, resposta=resposta) - envio.envioLoteEventos.ideEmpregador.tpInsc.valor = lista_eventos[0].evento.ideEmpregador.tpInsc.valor - envio.envioLoteEventos.ideEmpregador.nrInsc.valor = lista_eventos[0].evento.ideEmpregador.nrInsc.valor - envio.envioLoteEventos.ideTransmissor.tpInsc.valor = lista_eventos[0].evento.ideEmpregador.tpInsc.valor - envio.envioLoteEventos.ideTransmissor.nrInsc.valor = lista_eventos[0].evento.ideEmpregador.nrInsc.valor + # Popula o grupo de Eventos conforme tabela + # 1-Eventos de Tabela + # 2-Eventos não Periódicos + # 3-Eventos Periódicos + envio.envioLoteEventos.grupo.valor = grupo + + envio.envioLoteEventos.ideEmpregador.tpInsc.valor = self.tpInsc + envio.envioLoteEventos.ideEmpregador.nrInsc.valor = self.nrInsc[0:8] + envio.envioLoteEventos.ideTransmissor.tpInsc.valor = self.tpInsc + envio.envioLoteEventos.ideTransmissor.nrInsc.valor = self.nrInsc - self.ambiente = lista_eventos[0].evtInfoEmpregador.ideEvento.tpAmb.valor + # namespaces = { + # 'evtInfoEmpregador': 'http://www.esocial.gov.br/schema/evt/evtInfoEmpregador/v02_04_02', + # } for evento in lista_eventos: - self.certificado.assina_xmlnfe(evento) - evento.validar() + evento.xml_assinado = self.certificado.assina_xml(evento.xml, assinar_raiz=True, metodo='sha256') - print(envio.xml) envio.envioLoteEventos.eventos = lista_eventos envio.validar() - print(resposta.xml) + # Salva os registros enviados pelo Lote if self.salvar_arquivos: for n in lista_eventos: id_evento = n.id_evento - self.caminho = self.monta_caminho_esocial(ambiente=self.ambiente, id_evento=id_evento) - arq = open(self.caminho + id_evento + '.xml', 'w', encoding='utf-8') - arq.write(n.xml) - arq.close - - arq = open(self.caminho + id_evento + '-env-lot.xml', 'w') - arq.write(envio.xml) - arq.close() - - # self._conectar_servico(WS_ESOCIAL_ENVIO, envio, resposta) + caminho = self.monta_caminho_esocial( + ambiente=self.ambiente, registro=False, id_evento=id_evento, cnpj=self.nrInsc, + ) + arq = open(caminho + id_evento + '-envio.xml', 'w', encoding='utf-8') + arq.write(n.xml_assinado) + arq.close() - #resposta.validar() - if self.salvar_arquivos: - nome_arq = self.caminho + id_evento + '-rec' + # arq = open(caminho + id_evento + '-env-lot.xml', 'w') + # arq.write(envio.xml) + # arq.close() - if resposta.retornoEnvioLoteEventos.status.cdResposta.valor != '201': - nome_arq += '-rej.xml' - else: - nome_arq += '.xml' + self._conectar_servico(WS_ESOCIAL_ENVIO, envio, resposta) - arq = open(nome_arq, 'w', encoding='utf-8') - arq.write(resposta.xml) + # Salva o XML de envio do próprio Lote + if self.salvar_arquivos and processo.resposta.protocoloEnvio: + caminho = self.monta_caminho_esocial( + ambiente=self.ambiente, registro='Lotes', id_evento=processo.resposta.protocoloEnvio, cnpj=self.nrInsc, + ) + arq = open(caminho + processo.resposta.protocoloEnvio + '-envio.xml', 'w') + arq.write(envio.xml) arq.close() return processo def consultar_lote(self, protocolo): envio = ConsultaLoteEventosEsocial_10000() - resposta = RetornoLoteEventosEsocial_10100() + resposta = RetornoProcessamentoLoteEsocial_10000() - processo = ProcessoESocial(webservice=WS_ESOCIAL_ENVIO, envio=envio, resposta=resposta) + processo = ProcessoESocial(webservice=WS_ESOCIAL_CONSULTA, envio=envio, resposta=resposta) envio.consultaLoteEventos.protocoloEnvio.valor = protocolo envio.validar() - if self.salvar_arquivos: - arq = open(self.caminho + '/' + protocolo + '/consulta.xml', 'w') - arq.write(envio.xml) - arq.close() + # if self.salvar_arquivos: + # arq = open(caminho + protocolo + '-consulta.xml', 'w') + # arq.write(envio.xml) + # arq.close() - self._conectar_servico(WS_ESOCIAL_ENVIO, envio, resposta) + self._conectar_servico(WS_ESOCIAL_CONSULTA, envio, resposta) + caminho = self.monta_caminho_esocial( + ambiente=self.ambiente, registro='Lotes', id_evento=protocolo, cnpj=self.nrInsc, + ) if self.salvar_arquivos: - arq = open(self.caminho + '/' + protocolo + '/resposta.xml', 'w') - arq.write(envio.xml) + arq = open(caminho + protocolo + '-resposta.xml', 'w') + arq.write(resposta.xml) + arq.close() + + # Grava os retornos de cada registro do lote + for evento in processo.resposta.lista_eventos: + caminho = self.monta_caminho_esocial( + ambiente=self.ambiente, registro=False, id_evento=evento.Id.valor, cnpj=self.nrInsc, + ) + if evento.codigo_retorno in ['201', '202']: + msg = '-sucesso.xml' + else: + msg = '-erro.xml' + arq = open(caminho + evento.Id.valor + msg, 'w') + arq.write(evento.xml) arq.close() + + return processo diff --git a/pysped/esocial/webservices_3.py b/pysped/esocial/webservices_3.py index 772f081b..b4e3e652 100644 --- a/pysped/esocial/webservices_3.py +++ b/pysped/esocial/webservices_3.py @@ -58,14 +58,16 @@ SVESOCIAL = { # o servidor da consulta de cadastro é diferente dos demais... ESOCIAL_AMBIENTE_PRODUCAO: { - 'servidor' : 'webservices.producaorestrita.esocial.gov.br', - WS_ESOCIAL_ENVIO : 'servicos/empregador/enviarloteeventos/WsEnviarLoteEventos.svc', + 'envio' : 'webservices.envio.esocial.gov.br', + WS_ESOCIAL_ENVIO : 'servicos/empregador/enviarloteeventos/WsEnviarLoteEventos.svc', + 'consulta' : 'webservices.consulta.esocial.gov.br', WS_ESOCIAL_CONSULTA : 'servicos/empregador/consultarloteeventos/WsConsultarLoteEventos.svc', }, ESOCIAL_AMBIENTE_HOMOLOGACAO: { - 'servidor' : 'webservices.producaorestrita.esocial.gov.br', + 'envio' : 'webservices.producaorestrita.esocial.gov.br', WS_ESOCIAL_ENVIO : 'servicos/empregador/enviarloteeventos/WsEnviarLoteEventos.svc', + 'consulta' : 'webservices.producaorestrita.esocial.gov.br', WS_ESOCIAL_CONSULTA : 'servicos/empregador/consultarloteeventos/WsConsultarLoteEventos.svc', }