diff --git a/EVENTOS_S_1_2.md b/EVENTOS_S_1_2.md new file mode 100644 index 00000000..4ba359dc --- /dev/null +++ b/EVENTOS_S_1_2.md @@ -0,0 +1,56 @@ +# Eventos versão S 1.2 + +- S-1000 - Informações do Empregador/Contribuinte/Órgão Público +- S-1005 - Tabela de Estabelecimentos, Obras ou Unidades de Órgãos Públicos +- S-1010 - Tabela de Rubricas +- S-1020 - Tabela de Lotações Tributárias +- S-1070 - Tabela de Processos Administrativos/Judiciais +- S-1200 - Remuneração de Trabalhador vinculado ao Regime Geral de Previd. Social +- S-1202 - Remuneração de Servidor vinculado ao Regime Próprio de Previd. Social +- S-1207 - Benefícios - Entes Públicos +- S-1210 - Pagamentos de Rendimentos do Trabalho +- S-1260 - Comercialização da Produção Rural Pessoa Física +- S-1270 - Contratação de Trabalhadores Avulsos Não Portuários +- S-1280 - Informações Complementares aos Eventos Periódicos +- S-1298 - Reabertura dos Eventos Periódicos +- S-1299 - Fechamento dos Eventos Periódicos +- S-2190 - Registro Preliminar de Trabalhador +- S-2200 - Cadastramento Inicial do Vínculo e Admissão/Ingresso de Trabalhador +- S-2205 - Alteração de Dados Cadastrais do Trabalhador +- S-2206 - Alteração de Contrato de Trabalho/Relação Estatutária +- S-2210 - Comunicação de Acidente de Trabalho +- S-2220 - Monitoramento da Saúde do Trabalhador +- S-2230 - Afastamento Temporário +- S-2231 - Cessão/Exercício em Outro Órgão +- S-2240 - Condições Ambientais do Trabalho - Agentes Nocivos +- S-2298 - Reintegração/Outros Provimentos +- S-2299 - Desligamento +- S-2300 - Trabalhador Sem Vínculo de Emprego/Estatutário - Início +- S-2306 - Trabalhador Sem Vínculo de Emprego/Estatutário - Alteração Contratual +- S-2399 - Trabalhador Sem Vínculo de Emprego/Estatutário - Término +- S-2400 - Cadastro de Beneficiário - Entes Públicos - Início +- S-2405 - Cadastro de Beneficiário - Entes Públicos - Alteração +- S-2410 - Cadastro de Benefício - Entes Públicos - Início +- S-2416 - Cadastro de Benefício - Entes Públicos - Alteração +- S-2418 - Reativação de Benefício - Entes Públicos +- S-2420 - Cadastro de Benefício - Entes Públicos - Término +- S-2500 - Processo Trabalhista +- S-2501 - Informações de Tributos Decorrentes de Processo Trabalhista +- S-3000 - Exclusão de Eventos +- S-3500 - Exclusão de Eventos - Processo Trabalhista + +## Eventos retornados pela Receita Federal + +- S-5001 - Informações das Contribuições Sociais por Trabalhador +- S-5002 - Imposto de Renda Retido na Fonte por Trabalhador +- S-5003 - Informações do FGTS por Trabalhador +- S-5011 - Informações das Contribuições Sociais Consolidadas por Contribuinte +- S-5012 - Imposto de Renda Retido na Fonte Consolidado por Contribuinte +- S-5013 - Informações do FGTS Consolidadas por Contribuinte +- S-5501 - Informações Consolidadas de Tributos Decorrentes de Processo Trabalhista +- S-5503 - Informações do FGTS por Trabalhador em Processo Trabalhista + +## Eventos de uso exclusivo do Poder Judiciário + +- S-8200 - Anotação Judicial do Vínculo +- S-8299 - Baixa Judicial do Vínculo diff --git a/README.md b/README.md index f284ff51..af1c0a86 100755 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ Este pacote é aderente com os [PSR-1], [PSR-2] e [PSR-4]. Se você observar neg ## Layout S-1.1 (a partir de 19/03/2023) -## Layout S-1.2 (a partir de 20/11/2023) +## [Layout S-1.2 (a partir de 20/11/2023)](EVENTOS_S_1_2.md) ## CRONOGRAMA PREVISTO diff --git a/examples/Fake/v_S_01_02_00/Fake_s2501_EvtContProc.php b/examples/Fake/v_S_01_02_00/Fake_s2501_EvtContProc.php new file mode 100644 index 00000000..ed27fd95 --- /dev/null +++ b/examples/Fake/v_S_01_02_00/Fake_s2501_EvtContProc.php @@ -0,0 +1,137 @@ + 2, + //tipo de ambiente 1 - Produção; 2 - Produção restrita - dados reais;3 - Produção restrita - dados fictícios. + 'verProc' => 'S_1.2.0', + //Versão do processo de emissão do evento. Informar a versão do aplicativo emissor do evento. + 'eventoVersion' => 'S.1.2.0', + //versão do layout do evento + 'serviceVersion' => '1.5.0', + //versão do webservice + 'empregador' => [ + 'tpInsc' => 1, //1-CNPJ, 2-CPF + 'nrInsc' => '99999999', //numero do documento + 'nmRazao' => 'Razao Social', + ], + 'transmissor' => [ + 'tpInsc' => 1, //1-CNPJ, 2-CPF + 'nrInsc' => '99999999999999' //numero do documento + ], +]; +$configJson = json_encode($config, JSON_PRETTY_PRINT); + +$std = new \stdClass(); +$std->sequencial = 1; +$std->indretif = 1; //obrigatorio +$std->nrrecibo = '1.4.1234567890123456789'; //opcional + +$std->nrproctrab = '12345678901234567890'; //obrigatório +$std->perapurpgto = '2023-10'; +$std->obs = 'Bla bla bla'; //opcional + +$std->idetrab[0] = new \stdClass(); //obrigatório 1-n +$std->idetrab[0]->cpftrab = '12345678901'; + +$std->idetrab[0]->calctrib[0] = new \stdClass(); //opcional 0-999 +$std->idetrab[0]->calctrib[0]->perref = '2023-10'; +$std->idetrab[0]->calctrib[0]->vrbccpmensal = 2555.34; +$std->idetrab[0]->calctrib[0]->vrbccp13 = 2555.34; + +$std->idetrab[0]->calctrib[0]->infocrcontrib[0] = new \stdClass(); //opcional 0-99 +$std->idetrab[0]->calctrib[0]->infocrcontrib[0]->tpcr = '113851'; +$std->idetrab[0]->calctrib[0]->infocrcontrib[0]->vrcr = 325.87; + +$std->idetrab[0]->infocrirrf[0] = new \stdClass(); //opcional 0-99 +$std->idetrab[0]->infocrirrf[0]->tpcr = '593656'; //593656 - IRRF - Decisão da Justiça do Trabalho 188951 - IRRF - RRA - Decisão da Justiça do Trabalho +$std->idetrab[0]->infocrirrf[0]->vrcr = 326.91; + +$std->idetrab[0]->infocrirrf[0]->infoir = new \stdClass(); //opcional +$std->idetrab[0]->infocrirrf[0]->infoir->vrrendtrib = 2555.34; //opcional +$std->idetrab[0]->infocrirrf[0]->infoir->vrrendtrib13 = 2555.34; //opcional +$std->idetrab[0]->infocrirrf[0]->infoir->vrrendmolegrave = 2000; //opcional +$std->idetrab[0]->infocrirrf[0]->infoir->vrrendisen65 = 2000; //opcional +$std->idetrab[0]->infocrirrf[0]->infoir->vrjurosmora = 32.48; //opcional +$std->idetrab[0]->infocrirrf[0]->infoir->vrrendisenntrib = 2000; //opcional +$std->idetrab[0]->infocrirrf[0]->infoir->descisenntrib = 'Bla bla bla'; //opcional 1-60 +$std->idetrab[0]->infocrirrf[0]->infoir->vrprevoficial = 800; //opcional + +$std->idetrab[0]->infocrirrf[0]->inforra = new \stdClass(); //opcional +$std->idetrab[0]->infocrirrf[0]->inforra->descrra = 'bla bla bla'; // 1-50 +$std->idetrab[0]->infocrirrf[0]->inforra->qtdmesesrra = 4; + +$std->idetrab[0]->infocrirrf[0]->inforra->despprocjud = new \stdClass(); //opcional +$std->idetrab[0]->infocrirrf[0]->inforra->despprocjud->vlrdespcustas = 200; +$std->idetrab[0]->infocrirrf[0]->inforra->despprocjud->vlrdespadvogados = 12000; + +$std->idetrab[0]->infocrirrf[0]->inforra->ideadv[0] = new \stdClass(); //opcional 0-99 +$std->idetrab[0]->infocrirrf[0]->inforra->ideadv[0]->tpisnc = 1; +$std->idetrab[0]->infocrirrf[0]->inforra->ideadv[0]->nrisnc = '12345678901234'; +$std->idetrab[0]->infocrirrf[0]->inforra->ideadv[0]->vlradv = 12000; + +$std->idetrab[0]->infocrirrf[0]->deddepen[0] = new \stdClass(); //opcional 0-999 +$std->idetrab[0]->infocrirrf[0]->deddepen[0]->tprend = '11'; +$std->idetrab[0]->infocrirrf[0]->deddepen[0]->cpfdep = '12345678901'; +$std->idetrab[0]->infocrirrf[0]->deddepen[0]->vlrdeducao = 300; + +$std->idetrab[0]->infocrirrf[0]->penalim[0] = new \stdClass(); //opcional 0-99 +$std->idetrab[0]->infocrirrf[0]->penalim[0]->tprend = '11'; +$std->idetrab[0]->infocrirrf[0]->penalim[0]->cpfdep = '12345678901'; +$std->idetrab[0]->infocrirrf[0]->penalim[0]->vlrpensao = 1000; + +$std->idetrab[0]->infocrirrf[0]->infoprocret[0] = new \stdClass(); //opcional 0-50 +$std->idetrab[0]->infocrirrf[0]->infoprocret[0]->tpprocret = 1; +$std->idetrab[0]->infocrirrf[0]->infoprocret[0]->nrprocret = '12345678901234567'; +$std->idetrab[0]->infocrirrf[0]->infoprocret[0]->codsusp = '123'; //opcional + +$std->idetrab[0]->infocrirrf[0]->infoprocret[0]->infovalores[0] = new \stdClass(); //opcional 0-2 +$std->idetrab[0]->infocrirrf[0]->infoprocret[0]->infovalores[0]->indapuracao = 1; +$std->idetrab[0]->infocrirrf[0]->infoprocret[0]->infovalores[0]->vlrnretido = 100; +$std->idetrab[0]->infocrirrf[0]->infoprocret[0]->infovalores[0]->vlrdepjud = 20; +$std->idetrab[0]->infocrirrf[0]->infoprocret[0]->infovalores[0]->vlrcmpanocal = 300; +$std->idetrab[0]->infocrirrf[0]->infoprocret[0]->infovalores[0]->vlrcmpanoant = 20; +$std->idetrab[0]->infocrirrf[0]->infoprocret[0]->infovalores[0]->vlrrendsusp = 400; + +$std->idetrab[0]->infocrirrf[0]->infoprocret[0]->infovalores[0]->dedsusp[0] = new \stdClass(); //opcional 0-25 +$std->idetrab[0]->infocrirrf[0]->infoprocret[0]->infovalores[0]->dedsusp[0]->indtpdeducao = '1'; +$std->idetrab[0]->infocrirrf[0]->infoprocret[0]->infovalores[0]->dedsusp[0]->vlrdedsusp = 300; +$std->idetrab[0]->infocrirrf[0]->infoprocret[0]->infovalores[0]->dedsusp[0]->benefpen[0] = new \stdClass(); //opcional 0-99 +$std->idetrab[0]->infocrirrf[0]->infoprocret[0]->infovalores[0]->dedsusp[0]->benefpen[0]->cpfdep = '12345678901'; +$std->idetrab[0]->infocrirrf[0]->infoprocret[0]->infovalores[0]->dedsusp[0]->benefpen[0]->vlrdepensusp = 300; + +$std->idetrab[0]->infoircomplem = new \stdClass(); //opcional +$std->idetrab[0]->infoircomplem->dtlaudo = '2023-10-31'; +$std->idetrab[0]->infoircomplem->infodep[0] = new \stdClass(); //opcional 0-999 +$std->idetrab[0]->infoircomplem->infodep[0]->cpfdep = '12345678901'; +$std->idetrab[0]->infoircomplem->infodep[0]->dtnascto = '2020-12-01'; +$std->idetrab[0]->infoircomplem->infodep[0]->nome = 'Chica da Silva'; +$std->idetrab[0]->infoircomplem->infodep[0]->depirrf = 'S'; +$std->idetrab[0]->infoircomplem->infodep[0]->tpdep = '03'; +$std->idetrab[0]->infoircomplem->infodep[0]->descrdep = 'bla bla bla'; + +try { + //carrega a classe responsavel por lidar com os certificados + $content = file_get_contents('expired_certificate.pfx'); + $password = 'associacao'; + $certificate = Certificate::readPfx($content, $password); + + //cria o evento e retorna o XML assinado + $xml = Event::evtContProc( + $configJson, + $std, + $certificate, + '2017-08-03 10:37:00' //opcional data e hora + )->toXml(); + + header('Content-type: text/xml; charset=UTF-8'); + echo $xml; +} catch (\Exception $e) { + echo $e->getMessage(); +} diff --git a/examples/schemes/v_S_01_02_00/s2501_JsonSchemaEvtContProc.php b/examples/schemes/v_S_01_02_00/s2501_JsonSchemaEvtContProc.php new file mode 100644 index 00000000..37f5c56a --- /dev/null +++ b/examples/schemes/v_S_01_02_00/s2501_JsonSchemaEvtContProc.php @@ -0,0 +1,575 @@ +sequencial = 1; +$std->indretif = 1; //obrigatorio +$std->nrrecibo = '1.4.1234567890123456789'; //opcional + +$std->nrproctrab = '12345678901234567890'; //obrigatório +$std->perapurpgto = '2023-10'; +$std->obs = 'Bla bla bla'; //opcional + +$std->idetrab[0] = new \stdClass(); //obrigatório 1-n +$std->idetrab[0]->cpftrab = '12345678901'; + +$std->idetrab[0]->calctrib[0] = new \stdClass(); //opcional 0-999 +$std->idetrab[0]->calctrib[0]->perref = '2023-10'; +$std->idetrab[0]->calctrib[0]->vrbccpmensal = 2555.34; +$std->idetrab[0]->calctrib[0]->vrbccp13 = 2555.34; + +$std->idetrab[0]->calctrib[0]->infocrcontrib[0] = new \stdClass(); //opcional 0-99 +$std->idetrab[0]->calctrib[0]->infocrcontrib[0]->tpcr = '113851'; +$std->idetrab[0]->calctrib[0]->infocrcontrib[0]->vrcr = 325.87; + +$std->idetrab[0]->infocrirrf[0] = new \stdClass(); //opcional 0-99 +$std->idetrab[0]->infocrirrf[0]->tpcr = '593656'; //593656 - IRRF - Decisão da Justiça do Trabalho 188951 - IRRF - RRA - Decisão da Justiça do Trabalho +$std->idetrab[0]->infocrirrf[0]->vrcr = 326.91; + +$std->idetrab[0]->infocrirrf[0]->infoir = new \stdClass(); //opcional +$std->idetrab[0]->infocrirrf[0]->infoir->vrrendtrib = 2555.34; //opcional +$std->idetrab[0]->infocrirrf[0]->infoir->vrrendtrib13 = 2555.34; //opcional +$std->idetrab[0]->infocrirrf[0]->infoir->vrrendmolegrave = 2000; //opcional +$std->idetrab[0]->infocrirrf[0]->infoir->vrrendisen65 = 2000; //opcional +$std->idetrab[0]->infocrirrf[0]->infoir->vrjurosmora = 32.48; //opcional +$std->idetrab[0]->infocrirrf[0]->infoir->vrrendisenntrib = 2000; //opcional +$std->idetrab[0]->infocrirrf[0]->infoir->descisenntrib = 'Bla bla bla'; //opcional 1-60 +$std->idetrab[0]->infocrirrf[0]->infoir->vrprevoficial = 800; //opcional + +$std->idetrab[0]->infocrirrf[0]->inforra = new \stdClass(); //opcional +$std->idetrab[0]->infocrirrf[0]->inforra->descrra = 'bla bla bla'; // 1-50 +$std->idetrab[0]->infocrirrf[0]->inforra->qtdmesesrra = 4; + +$std->idetrab[0]->infocrirrf[0]->inforra->despprocjud = new \stdClass(); //opcional +$std->idetrab[0]->infocrirrf[0]->inforra->despprocjud->vlrdespcustas = 200; +$std->idetrab[0]->infocrirrf[0]->inforra->despprocjud->vlrdespadvogados = 12000; + +$std->idetrab[0]->infocrirrf[0]->inforra->ideadv[0] = new \stdClass(); //opcional 0-99 +$std->idetrab[0]->infocrirrf[0]->inforra->ideadv[0]->tpisnc = 1; +$std->idetrab[0]->infocrirrf[0]->inforra->ideadv[0]->nrisnc = '12345678901234'; +$std->idetrab[0]->infocrirrf[0]->inforra->ideadv[0]->vlradv = 12000; + +$std->idetrab[0]->infocrirrf[0]->deddepen[0] = new \stdClass(); //opcional 0-999 +$std->idetrab[0]->infocrirrf[0]->deddepen[0]->tprend = '11'; +$std->idetrab[0]->infocrirrf[0]->deddepen[0]->cpfdep = '12345678901'; +$std->idetrab[0]->infocrirrf[0]->deddepen[0]->vlrdeducao = 300; + +$std->idetrab[0]->infocrirrf[0]->penalim[0] = new \stdClass(); //opcional 0-99 +$std->idetrab[0]->infocrirrf[0]->penalim[0]->tprend = '11'; +$std->idetrab[0]->infocrirrf[0]->penalim[0]->cpfdep = '12345678901'; +$std->idetrab[0]->infocrirrf[0]->penalim[0]->vlrpensao = 1000; + +$std->idetrab[0]->infocrirrf[0]->infoprocret[0] = new \stdClass(); //opcional 0-50 +$std->idetrab[0]->infocrirrf[0]->infoprocret[0]->tpprocret = 1; +$std->idetrab[0]->infocrirrf[0]->infoprocret[0]->nrprocret = '12345678901234567'; +$std->idetrab[0]->infocrirrf[0]->infoprocret[0]->codsusp = '123'; //opcional + +$std->idetrab[0]->infocrirrf[0]->infoprocret[0]->infovalores[0] = new \stdClass(); //opcional 0-2 +$std->idetrab[0]->infocrirrf[0]->infoprocret[0]->infovalores[0]->indapuracao = 1; +$std->idetrab[0]->infocrirrf[0]->infoprocret[0]->infovalores[0]->vlrnretido = 100; +$std->idetrab[0]->infocrirrf[0]->infoprocret[0]->infovalores[0]->vlrdepjud = 20; +$std->idetrab[0]->infocrirrf[0]->infoprocret[0]->infovalores[0]->vlrcmpanocal = 300; +$std->idetrab[0]->infocrirrf[0]->infoprocret[0]->infovalores[0]->vlrcmpanoant = 20; +$std->idetrab[0]->infocrirrf[0]->infoprocret[0]->infovalores[0]->vlrrendsusp = 400; + +$std->idetrab[0]->infocrirrf[0]->infoprocret[0]->infovalores[0]->dedsusp[0] = new \stdClass(); //opcional 0-25 +$std->idetrab[0]->infocrirrf[0]->infoprocret[0]->infovalores[0]->dedsusp[0]->indtpdeducao = '1'; +$std->idetrab[0]->infocrirrf[0]->infoprocret[0]->infovalores[0]->dedsusp[0]->vlrdedsusp = 300; +$std->idetrab[0]->infocrirrf[0]->infoprocret[0]->infovalores[0]->dedsusp[0]->benefpen[0] = new \stdClass(); //opcional 0-99 +$std->idetrab[0]->infocrirrf[0]->infoprocret[0]->infovalores[0]->dedsusp[0]->benefpen[0]->cpfdep = '12345678901'; +$std->idetrab[0]->infocrirrf[0]->infoprocret[0]->infovalores[0]->dedsusp[0]->benefpen[0]->vlrdepensusp = 300; + +$std->idetrab[0]->infoircomplem = new \stdClass(); //opcional +$std->idetrab[0]->infoircomplem->dtlaudo = '2023-10-31'; +$std->idetrab[0]->infoircomplem->infodep[0] = new \stdClass(); //opcional 0-999 +$std->idetrab[0]->infoircomplem->infodep[0]->cpfdep = '12345678901'; +$std->idetrab[0]->infoircomplem->infodep[0]->dtnascto = '2020-12-01'; +$std->idetrab[0]->infoircomplem->infodep[0]->nome = 'Chica da Silva'; +$std->idetrab[0]->infoircomplem->infodep[0]->depirrf = 'S'; +$std->idetrab[0]->infoircomplem->infodep[0]->tpdep = '03'; +$std->idetrab[0]->infoircomplem->infodep[0]->descrdep = 'bla bla bla'; + + + + + +// Schema must be decoded before it can be used for validation +$jsonSchemaObject = json_decode($jsonSchema); +if (empty($jsonSchemaObject)) { + echo "
"; + print_r($jsonSchema); + echo ""; + die(); +} + +// The SchemaStorage can resolve references, loading additional schemas from file as needed, etc. +$schemaStorage = new SchemaStorage(); + +// This does two things: +// 1) Mutates $jsonSchemaObject to normalize the references (to file://mySchema#/definitions/integerData, etc) +// 2) Tells $schemaStorage that references to file://mySchema... should be resolved by looking in $jsonSchemaObject +$definitions = realpath(__DIR__."/../../../jsonSchemes/definitions.schema"); +$schemaStorage->addSchema("file:{$definitions}", $jsonSchemaObject); + +// Provide $schemaStorage to the Validator so that references can be resolved during validation +$jsonValidator = new Validator(new Factory($schemaStorage)); + +// Do validation (use isValid() and getErrors() to check the result) +$jsonValidator->validate( + $std, + $jsonSchemaObject, + Constraint::CHECK_MODE_COERCE_TYPES //tenta converter o dado no tipo indicado no schema +); + +if ($jsonValidator->isValid()) { + echo "The supplied JSON validates against the schema.