Ir para conteúdo
  • Cadastre-se

Joceandro Perin

Membros
  • Total de ítens

    207
  • Registro em

  • Última visita

  • Days Won

    1

Tudo que Joceandro Perin postou

  1. Boa tarde galera O campo natAtividade dos eventos S-2200 e S-2206 está setando o valor incorreto, verifiquei aqui que está pegando o ord da tipagem e somando mais um, se eu passar navUrbano, ele sempre seta navRural.. Acredito que esse problema começou a ocorrer depois da inclusão da opção navNaoInformar na tipagem.. Ajustei os fontes para pegar a conversão, desta forma não haverá problemas.. Como estava.. Gerador.wCampo(tcStr, '', 'natAtividade', 1, 1, 1, ord(objInfoCeletista.NatAtividade) + 1); Ajustado para... Gerador.wCampo(tcStr, '', 'natAtividade', 1, 1, 1, eSNatAtividadeToStr(objInfoCeletista.NatAtividade)); Ajustei tbm o campo tpRegJor para seguir o mesmo padrão.. @Italo Jurisato Junior Segue os fontes para avaliação.. pcesS2206.pas pcesS2300.pas pcesS2306.pas
  2. Bom dia galera Nos processos judiciais existem duas opções a mais.. 1 - IRRF 2 - Contribuições sociais do trabalhador 3 - FGTS 4 - Contribuição sindical Na tipagem existem apenas duas.. Ajustei e incluí as duas novas opções faltantes.. tpTpTributo = (tptIRRF, tptPrevidenciaria, tptFGTS, tptContribSind); @Italo Jurisato Junior Segue unit para avaliação.. pcesConversaoeSocial.pas
  3. Verifiquei aqui em outros grupos e o problema é no servidor do eSocial mesmo..
  4. Aqui tbm não consigo consultar, retorna o erro 500..
  5. Essa que você passou é a correta a que funciona, aí foi ajustado pra essa.. function TItemLoteEventos.GetIDEvento: string; var Ini: Integer; begin Result := EmptyStr; Ini := pos('Id=', XML); if ini > 0 then Result := OnlyNumber(Copy(XML, Ini + 4, 38)); end; nessa implementação ele remove a string "ID" deixando apenas a numeração.. Aí retorna o erro do ID incorreto.. Eu acho que o Italo ajustou essa função pra poder gerar os XML em diretório com uma ID pra não sobrepor sempre o mesmo XML, e assim manter o histórico dos XML gerados..
  6. Ahh, pode ser então ws do esocial com problema.. Com os ajustes que foi feito ontem, o envio não estava funcionando, aí voltando a função GetIDEvento para a implementação anterior, volta a funcionar..
  7. Certo, você enviou em ambiente de produção ou homologação? Se for homologação, você pode zerar a base e enviar tudo novamente, se for produção, tem que enviar todas as exclusões observando a data iniValid que foi enviado anteriormente.. Então, essa informação do iniValid e finValid como envio dos registros pela primeira vez como 2016-01 para ambiente de homologação e 2018-01 para produção, foi orientação do eSocial.. Mas não está bem clara nos manuais como tem que ser enviado a alteração, eu vi outros colegas desenvolvedores nos grupos de whatsapp do eSocial enviando dessa forma e aqui funcionou, estou conseguindo enviar a inclusão, alteração e exclusão..
  8. Voltei a implementação anterior da função , GetIDEvento e o envio funcionou, mas a consulta retorna erro 500 @Italo Jurisato Junior alguma ideia??
  9. Tem coisa errada nas tags iniValid e finValid.. É bem confuso de entender como tem que ser enviado, mas quando é enviado pela primeira vez, deve ser informado a iniValid = 2016-01 para homologação e 2018-01 para produção e finValid só deve ser enviado se esse registro terá uma data fim de validade, caso contrário não deve enviar nenhuma informação nessas tags.. Quando for uma alteração, o iniValid da tag idePeriodo deverá ser o do último enviado e iniValid da tag novoPeriodo o mês em questão e assim por diante conforme haja novas alterações.. Bem confuso esse negócio
  10. Pelo que eu vi aqui o erro acontece no método Validar da unit ACBreSocialLoteEventos Parece que foi alterado o método GetIDEvento dessa unit, e não está mais retornado a string "ID"
  11. Tbm estou com esse erro dps de sincronizar os fontes ontem
  12. Bom dia, Peguei mais uma situação aqui, meu executável voltou a ficar preso em memória quando subo o evento S-1050.. Pelo debug consegui ver que está preso por causa do objeto THorarioIntervaloCollection.. Observei que esses objetos são destruídos, porém usando o Free, mesmo assim ele continua em memória, troquei pelo FreeAndNil e resolveu o problema.. @Italo Jurisato Junior @Rafael Dias Mandei as units para avaliação.. pcesRetornoClass.pas pcesS1050.pas
  13. Eu acho que você deve enviar usando a versão 2.4.01, a versão 2.4.02 eu acho que não está subindo ainda..
  14. Boa tarde galera.. Na função GerarFGTS da unit pcesS2300, está passando a tipagem sem fazer a conversão pro gerador, desta forma está gerando inconsistência no eSocial.. Como estava.. procedure TEvtTSVInicio.GerarFGTS(obj: TFGTS); begin if obj.dtOpcFGTS > 0 then begin Gerador.wGrupo('fgts'); Gerador.wCampo(tcStr, '', 'opcFGTS', 1, 1, 1, obj.OpcFGTS); Gerador.wCampo(tcDat, '', 'dtOpcFGTS', 10, 10, 0, obj.dtOpcFGTS); Gerador.wGrupo('/fgts'); end; end; Ajustado para.. procedure TEvtTSVInicio.GerarFGTS(obj: TFGTS); begin if obj.dtOpcFGTS > 0 then begin Gerador.wGrupo('fgts'); Gerador.wCampo(tcStr, '', 'opcFGTS', 1, 1, 1, eSOpcFGTSToStr(obj.OpcFGTS)); Gerador.wCampo(tcDat, '', 'dtOpcFGTS', 10, 10, 0, obj.dtOpcFGTS); Gerador.wGrupo('/fgts'); end; end; @Italo Jurisato Junior @Rafael Dias Segue unit.. Abraço.. pcesS2300.pas
  15. Bom dia galera.. Peguei uma situação aqui em que o empregado não se enquadra no regime de jornada 1 - Submetidos a Horário de Trabalho (Cap. II da CLT) campo tpRegJor, porém a tag horContratual está sempre montando, e ao enviar esses empregados está retornando inconsistências.. Observei que a montagem desta tag somente é obrigatória respeitando a seguinte validação.. O preenchimento é obrigatório se {tpRegJor} = [1] Como não estou passando valores para essas tags, ele está setando valores default, gerando as inconsistências no eSocial.. @Italo Jurisato Junior @Rafael Dias Mandei as units com os ajustes para avaliação.. Obrigado.. pcesGerador.pas pcesS2206.pas
  16. Boa tarde galera.. A tipagem tpNivelEstagio deve possuir duas opções a mais conforme layout 2.4.01.. 8 - Especial; 9 - Mãe social. (Lei 7644, de 1987) Adicionei as duas opções faltantes na unit pcesConversaoeSocial... tpNivelEstagio = (nvFundamental, nvMedio, nvEnsinoProfis, nvSuperior, nvEspecial, nvMaeSocial); Adequado a unit pcesS2300 para passar corretamente a conversão pro gerador.. @Italo Jurisato Junior @Rafael Dias Segue as units para avaliação, obrigado.. pcesConversaoeSocial.pas pcesS2300.pas
  17. Boa tarde Alisson, estava gerando com o enum da tipagem e deveria pegar o convertido.. Por exemplo, se pegar direto da tipagem vc tem um sequencial 0,1,2,3.. e não é esse o código correto porque a tabela dos motivos de afastamento tem furos no sequencial sem contar que 0 não existe.. Veja..
  18. Isso, no layout 2.4.01, Página 72.. Fica na parte de cima, tabela de Resumo dos Registros..
  19. Desculpe, falei manual mas está no layout nas regras de validação..
  20. Bom dia, estava com esse problema, aí observei uma validação que tem e consegui enviar.. No manual a condição para montagem é F (até 31/12/2017 se {codCateg} = [104]). N (nas demais situações). Então pelo meu entendimento, se a aposentadoria foi até 31/12/2017 e a Categoria for 104 - Empregado - Doméstico, ele aceita a montagem, se for diferente disso, deve ser passado N ou não montar essa tag..
  21. Humm, pode ser outro detalhe então, a tabela 1060 eu ainda não montei porque a obrigatoriedade dela passa a ser em Janeiro de 2019 junto com o evento 2240 e demais eventos pertinentes a saúde e segurança do trabalho.. Não sei se alguém já tentou enviar essa tabela com sucesso, poderia dar uma opinião..
  22. Bom dia, uma coisa que eu vi de diferente no teu XML, foi a tag <verProc>, estou gerando assim <verProc>1.0</verProc>
  23. Boa tarde galera.. Peguei uma situação aqui em que o empregado está afastado há algum tempo.. Quando ele vai gerar o campo codMotAfast está setando o valor errado, ajustei a unit pcesGerador para passar a tipagem convertida pra string pro gerador, desta forma seta o valor correto.. Como estava.. procedure TeSocialEvento.GerarAfastamento(pAfastamento: TAfastamento); begin if pAfastamento.DtIniAfast > 0 then begin Gerador.wGrupo('afastamento'); Gerador.wCampo(tcDat, '', 'dtIniAfast', 10, 10, 1, pAfastamento.DtIniAfast); Gerador.wCampo(tcStr, '', 'codMotAfast', 1, 1, 1, pAfastamento.codMotAfast); Gerador.wGrupo('/afastamento'); end; end; Ajustado para.. procedure TeSocialEvento.GerarAfastamento(pAfastamento: TAfastamento); begin if pAfastamento.DtIniAfast > 0 then begin Gerador.wGrupo('afastamento'); Gerador.wCampo(tcDat, '', 'dtIniAfast', 10, 10, 1, pAfastamento.DtIniAfast); Gerador.wCampo(tcStr, '', 'codMotAfast', 1, 1, 1, eStpMotivosAfastamentoToStr(pAfastamento.codMotAfast)); Gerador.wGrupo('/afastamento'); end; end; @Italo Jurisato Junior, @Rafael Dias Mandei a unit para avaliação.. Abraços.. pcesGerador.pas
  24. Realmente não sei te dizer em que momento utiliza, só sei que quando você seta teOrgaoPublico ou tePessoaFisica, ele passa a montar o ID com todo CNPJ/CPF que é orientado no manual.. Com CPF eu já testei e sei que passa, agora órgão público não sei o motivo..
  25. Segue um exemplo do que eu fiz.. Tem servido como um "quebra galho" por enquanto.. function TrataErro(Msg: string): string; var Tamanho, PosFin, PosIni: Integer; begin try Result := Msg; Result := StringReplace(Result, Chr(09), '', [rfReplaceAll]); // Tab Result := StringReplace(Result, Chr(10), '', [rfReplaceAll]); // Line feed Result := StringReplace(Result, Chr(13), '', [rfReplaceAll]); // Carriage return Result := StringReplace(Result, Chr(39), '', [rfReplaceAll]); // Apostrophe Result := StringReplace(Result, '1824 - Element ', '', [rfReplaceAll]); Result := StringReplace(Result, ': is not a valid value of the local atomic type.', '', [rfReplaceAll]); PosIni := Pos('{', Result); PosFin := Pos('}', Result); if (PosIni > 0) and (PosFin > 0) then begin Tamanho := PosFin - PosIni; System.Delete(Result, PosIni, Tamanho); Result := StringReplace(Result, '}', ' > ', [rfReplaceAll]); end; except Result := Msg; end; end;
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.