-
Total de ítens
2 -
Registro em
-
Última visita
Últimos Visitantes
237 visualizações
Eduardo Andrade_9326's Achievements
-
Eduardo Andrade_9326 changed their profile photo
-
acbrEsocial - falha ao interpretar o xml xmlparsedoc
um tópico no fórum postou Eduardo Andrade_9326 Dúvidas Gerais sobre o ACBr
Estou gerando o xml com os eventos do esocial no meu sistema, depois importo no acbresocial para que ele faça a assinatura e envie. Eu gero o xml da forma que ele deve ir para a fazenda, como na estrutura abaixo: <eventos><evento id="1"><esocial>...</esocial><evento id="2"><esocial>...</esocial>....</eventos> Quando tento realizar o load deste xml para o acbresocial ele dá erro: falha ao interpretar xml xmlparsedoc. Analisando o código do acbresocialeventos.pas, ele parece não esperar a estrutura acima, ele espera que venha uma lista de <esocial></esocial>, sem as tags de<evventos> e <evento>. Eu fiz um ajuste no código para que ele consiga realizar a leitura do xml com as tags <eventos> e <evento> basta substituir a função abaixo no código acbresocialeventos.pas function TEventos.LoadFromString(AXMLString: String): Boolean; var // AXML: AnsiString; AXML: String; P: integer; function PoseSocial: integer; begin Result := pos('</eSocial>', AXMLString); end; begin Result := False; AXMLString := copy(AXMLString, pos('<eSocial', AXMLString), length(AXMLString)); P := PoseSocial; while P > 0 do begin AXML := copy(AXMLString, 1, P + 9); AXMLString := Trim(copy(AXMLString, P + 10, length(AXMLString))); AXMLString := copy(AXMLString, pos('<eSocial', AXMLString), length(AXMLString)); Result := Self.Iniciais.LoadFromString(AXML); Result := Self.Tabelas.LoadFromString(AXML) or Result; Result := Self.NaoPeriodicos.LoadFromString(AXML) or Result; Result := Self.Periodicos.LoadFromString(AXML) or Result; SaveToFiles; P := PoseSocial; end; end; Se os moderadores puderem fazer o ajuste seria legal, até entendo que não é um problema comum, mas outros usuários podem sofre com este problema. -
Retorno da Receita de SP - Rejeição: Falha no schema XML
Eduardo Andrade_9326 replied to Isael Faria Junior's tópico in ACBrNFe
Estava com o mesmo e consegui resolver. Veja se o erro de vocês é igual o meu. Por algum motivo, meu arquivo de eventos estava salvo como "envevento_v1.00.xsd" e não "envEvento_v1.00.xsd". Temos o seguinte método no arquivo ACBrDFe.pas : TACBrDFe.AchaArquivoSchema(NomeSchema: String; var AVersao: Double; var ArqSchema: String); Este método verifica qual a versão que deve ser usado para o serviço. No caso do envio de evento ele recebe em NomeSchema = "envEvento" e AVersao = 4. O método verifica se existe um arquivo de schema para AVersao = 4 e como não existe procura o arquivo de schema menor e mais próximo do AVersao, depois de encontrar ele seta ArqSchema com o nome do arquivo e AVersao com a versão do arquivo mais próximo. No nosso caso deveria ser ArqSchema="envEvento_v1.00.xsd" e AVersao=4. A seguinte linha faz o teste para encontrar o arquivo: if (copy(ArqAtual, 1, LenNome) = NomeSchema) then Como o meu arquivo estava salvo como "envevento_v1.00.xsd" e o nome do esquema vem como "envEvento", eles não ficavam igual, então ArqSchema ficava vazio e AVersao ficava igual a 0, dando o erro de schema. A solução foi mudar esta linha para: if (uppercase(copy(ArqAtual, 1, LenNome)) = uppercase(NomeSchema)) then Passando toda comparação para minúsculo com o uppercase ele funciona. Note que antes de fazer a alteração eu tentei renomear o arquivo, deixando como "envEvento_v1.00.xsd", não sei se por algum problema de cache do servidor de arquivos, na busca do arquivo ele continuava trazendo "envevento_v1.00.xsd". Eu também estava com problema na carta de correção e foi resolvido com este método.