Pesquisar na Comunidade
Showing results for tags 'ct-e homologação mg'.
Encontrado 1 registro
-
Boa tarde a todos. Começou um cliente novo conosco ontem em ambiente de homologação de CT-e de MG. Tive problemas retornando exception do Acbr "Conhecimento(s) não cofirmados: n->". Investigando melhor o assunto, notei que o retorno de lote processado estava diferente na tag infProt (arquivo está em anexo). Fiz uma alteração no pcnLeitor.pas na rotina TLeitor.rExtrai e funcionou. Segue abaixo como ficou (o trecho em negrito foi o que adicionei): function TLeitor.rExtrai(const nivel: integer; const TagInicio: string; TagFim: string = ''; const item: integer = 1): AnsiString; var Texto: AnsiString; i,j: integer; begin //NOTA: Extrai um grupo de dentro do nivel informado FNivel.strings[0] := FArquivo; if Trim(TagFim) = '' then TagFim := TagInicio; Texto := FNivel.Strings[nivel - 1]; Result := ''; FGrupo := ''; for i := 1 to item do if i < item then Texto := copy(Texto, pos('</' + Trim(TagFim) + '>', Texto) + length(Trim(TagFim)) + 3, maxInt); ///////////////// /// infProt MG if TagInicio = 'infProt' then begin Texto := StringReplace(Texto,'ns3:','',[rfReplaceAll]); Texto := StringReplace(Texto,'ns6:','',[rfReplaceAll]); Texto := StringReplace(Texto,' xmlns="http://www.portalfiscal.inf.br/cte"','',[rfReplaceAll]); end; j := pos('</' + Trim(TagFim) + '>', Texto); if j = 0 then j := pos('</' + Trim(TagFim) + ':', Texto); // Correção para WebServices do Ceará/MG //Correção para leitura de tags em que a primeira é diferente da segunda Ex: <infProt id=XXX> e a segunda apenas <infProt> // Texto := copy(Texto, 1, pos('</' + Trim(TagFim) + '>', Texto) + length(Trim(TagFim)) + 3); Texto := copy(Texto, 1, j + length(Trim(TagFim)) + 3); i := pos('<' + Trim(TagInicio) + '>', Texto); if i = 0 then i := pos('<' + Trim(TagInicio) + ' ', Texto); if i = 0 then i := pos('<' + Trim(TagInicio) + ':', Texto); //correção para webservice do Ceará if i = 0 then exit; Texto := copy(Texto, i, maxInt); // Alterado por Claudemir em 13/03/2013: j:=pos('</' + Trim(TagFim) + '>',Texto); // j:=pos('</' + Trim(TagFim) + '>', Texto) + length(Trim(TagFim)) + 3; j:=pos('</' + Trim(TagFim) + '>', Texto); if j=0 then j:=pos('</' + Trim(TagFim) + ':', Texto); //correção para webservice do Ceará // Result := TrimRight(copy(Texto, 1, j - 1)); Result := TrimRight(copy(Texto, 1, j - 1 + (length(Trim(TagFim)) + 3))); FNivel.strings[nivel] := Result; FGrupo := result; end; Alguém já se deparou com esse problema? Estou esquecendo de algo, ou essa alteração que fiz está correta? Outro problema que tive foi que ontem, quando me deparei com esse problema, atualizei os fontes do ACBr conforme meu amigo Juliomar me sugeriu e, após isso, começou a gerar um exception em branco no envio de evento de cancelamento de CT-e. Tive que voltar os fontes anteriores. 311000002104204-pro-rec.xml