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',
}