Fonte: ISSBarueri.LerXml
- Método: procedure TNFSeR_ISSBarueri.LerRegistroTipo2(const ALinha: String);
if NaoEstaVazio(Trim(Copy(ALinha, 22, 6))) then
begin
NFSe.DataEmissao := EncodeDataHora(Trim(Copy(ALinha, 13, 8)), 'YYYYMMDD');
//NFSe.DataEmissao := NFSe.DataEmissao + StrToTime(Format('%S:%S:%S', [Trim(Copy(ALinha, 22, 2)), Trim(Copy(ALinha, 24, 2)), Trim(Copy(ALinha, 26, 2))])); --> deixei em comentário pois dá erro na conversão de data e hora.
NFSe.DataEmissao := NFSe.DataEmissao + StrToTime(Format('%S:%S:%S', [Trim(Copy(ALinha, 21, 2)), Trim(Copy(ALinha, 23, 2)), Trim(Copy(ALinha, 25, 2))])); -> esses são os campos certos a serem pegos. mudar pra essa linha.
end
else
NFSe.DataEmissao := EncodeDataHora(Trim(Copy(ALinha, 13, 8)), 'YYYYMMDD');
Fonte: ISSBarueri.Provider;
- Método: procedure TACBrNFSeProviderISSBarueri.TratarRetornoConsultaLoteRps(Response: TNFSeConsultaLoteRpsResponse);
Aqui irei fazer uma sugestão, sendo do jeio que está, funciona, porém se deixar do jeito que está, temos que mexer no ISSBarueri.GravarXML.
Na linha 870:
NumRps := Trim(Copy(Dados[0], Pos('PMB002', Dados[0]), Length(Dados[0])));
NumRps := StringReplace(NumRps, 'PMB002', '', [rfReplaceAll]);
Ele assume que o Numero do RPS é a identificação dele, que é montado no Método ISSBarueri.GravarXML -> GravarXML, porém ele usa PadRight(AIdentificacaoRemessa, 11, '0') sendo assim temos um problem. Se o seu numero de RPS foi "60", ele vai tornar o numero "60000000000000", quando vc pegar este campo no retorno, ele vai te retornar "6000000000000" e não o "60" que vc passou.
Correção: PadLeft(AIdentificacaoRemessa, 11, '0') // Identificação da Remessa do Contribuinte , fazer um PadLef(); asssim ficaria "00000000000000000060", corrigindo isto. StrToInt(00000000000000000060) = 60
Correção:
procedure TNFSeW_ISSBarueri.GerarRegistroTipo1(const AIdentificacaoRemessa: String);
begin
FConteudoTxt.Add(
'1'+ // Tipo do Registro S Numérico 1 1 1 1
PadRight(OnlyNumber(NFSe.Prestador.IdentificacaoPrestador.InscricaoMunicipal), 7, ' ')+ // Inscrição do Contribuinte S Texto 7 2 8 Inscrição do Prestador de Serviço
'PMB002'+ // Versão do Lay-Out S Texto 6 9 14 Versão do Lay-Out "PMB002"
PadLeft(AIdentificacaoRemessa, 11, '0') // Identificação da Remessa do Contribuinte - Corrigido.
);
end;
Sugestão número 2: que é a mais fácil,
Na linha 870:
NumRps := Trim(Copy(Dados[0], Pos('PMB002', Dados[0]), Length(Dados[0])));
NumRps := StringReplace(NumRps, 'PMB002', '', [rfReplaceAll]);
Pegar a verdadeira posição, o NumRps, está sendo pego da identificação sendo que tem um campo só pra ele.
NumRps := Trim(Copy(Dados[1], 55, 11);
Dúvidas só me chamares, implementado e válidado. Estou para ajudar os amigos em qualquer dúvida.