Vinícius,
Boa noite. Bem vindo então, rsrs, abandonamos o cobrebemx também. Bom, no retorno eu trato dessa maneira:
procedure TfrmXTrataRetornoBancario.LerRetornoAcbr;
var
bErroACBr : boolean;
i : Integer;
begin
if(cmbLocalCobranca.ItemIndex=-1) then
begin
MsgInfo('Selecione um local de cobrança primeiro');
Exit;
end;
bErroACBr := false;
try
ConfigACBr; // lembrando que quando configuro deixo a tag ACBrBoleto.LeCedenteRetorno := true;
except
bErroAcbr := true;
MsgErro('Dados não foram inseridos corretamente no componente ACBr');
end;
if(bErroAcbr) then Exit;
// o arquivo pode estar em qualquer lugar.
ACBrBoleto.DirArqRetorno := ExtractFilePath(txtArqRetorno.Text);
// somente o nome do arquivo
ACBrBoleto.NomeArqRetorno := ExtractFileName(txtArqRetorno.Text);
// carrega na coleção ocorrencias de cobrança
ACBrBoleto.LerRetorno;
txtRegistros.Value := 0;
for i := 0 to ACBrBoleto.ListadeBoletos.Count - 1 do
begin
gridPesquisa.RowCount := i + 2;
gridPesquisa.Cells[0,i + 1] := IntToStr(i);
gridPesquisa.Cells[1,i + 1] := ACBrBoleto.ListadeBoletos.Objects[i].NossoNumero;
gridPesquisa.Cells[8,i + 1] := ACBrBoleto.ListadeBoletos.Objects[i].SeuNumero;
gridPesquisa.Cells[9,i + 1] := ACBrBoleto.ListadeBoletos.Objects[i].NumeroDocumento;
gridPesquisa.Cells[2,i + 1] := FormatDateTime('dd/mm/yyyy',ACBrBoleto.ListadeBoletos.Objects[i].DataCredito);
gridPesquisa.Cells[3,i + 1] := ACBrBoleto.ListadeBoletos.Objects[i].Carteira;
gridPesquisa.Cells[4,i + 1] := FormatDateTime('dd/mm/yyyy',ACBrBoleto.ListadeBoletos.Objects[i].DataOcorrencia);
gridPesquisa.Cells[5,i + 1] := ACBrBoleto.ListadeBoletos.Objects[i].CodigoLiquidacao;
gridPesquisa.Cells[6,i + 1] := ACBrBoleto.ListadeBoletos.Objects[i].CodigoLiquidacaoDescricao;
gridPesquisa.Cells[7,i + 1] := ACBrBoleto.ListadeBoletos.Objects[i].Sacado.NomeSacado;
if(ACBrBoleto.ListadeBoletos.Objects[i].ValorRecebido > 0) then
gridPesquisa.Cells[10,i + 1] := 'SIM'
else
begin
gridPesquisa.Cells[10,i + 1] := 'NAO';
gridPesquisa.Cells[2,i + 1] := '';
end;
if(trim(gridPesquisa.Cells[6,i + 1]) = 'Compensação Eletrônica') then
gridPesquisa.Cells[6,i + 1] := 'Comp.Eletrônica';
if(trim(gridPesquisa.Cells[2,i + 1]) = '') then
gridPesquisa.Cells[6,i + 1] := '';
gridPesquisa.Cells[11,i + 1] := FloatToStr(ACBrBoleto.ListadeBoletos.Objects[i].ValorRecebido);
gridPesquisa.Cells[12,i + 1] := FloatToStr(ACBrBoleto.ListadeBoletos.Objects[i].ValorDesconto);
gridPesquisa.Cells[13,i + 1] := FloatToStr(ACBrBoleto.ListadeBoletos.Objects[i].ValorMoraJuros);
gridPesquisa.Cells[14,i + 1] := FloatToStr(ACBrBoleto.ListadeBoletos.Objects[i].ValorOutrasDespesas +
ACBrBoleto.ListadeBoletos.Objects[i].ValorIOF );
gridPesquisa.Cells[15,i + 1] := FloatToStr(ACBrBoleto.ListadeBoletos.Objects[i].ValorOutrasDespesas);
gridPesquisa.Cells[16,i + 1] := FloatToStr(ACBrBoleto.ListadeBoletos.Objects[i].ValorPago);
gridPesquisa.Cells[17,i + 1] := FloatToStr(ACBrBoleto.ListadeBoletos.Objects[i].ValorDespesaCobranca);
if( DescricaoMotivoRejeicaoComando.Text <> '' ) then
// problemas na baixa, registro o motivo
grdListado.Cells[18,i + 1] := grdListado.Cells[1,i + 1]+' - '+DescricaoMotivoRejeicaoComando.Text
else
begin
// localizar título no sistema
qryPesquisa.Close;
qryPesquisa.SQL.Clear;
qryPesquisa.SQL.Add('SELECT id, vencto, venda, cliente, situacaotit FROM contasareceber WHERE nossonumero = ''' + Trim(gridPesquisa.Cells[1,i + 1]) + '''');
qryPesquisa.SQL.Add('AND empresa = ' + variables._EMP_CODI);
qryPesquisa.Open;
if(not qryPesquisa.Eof) then
begin
gridPesquisa.Cells[0 ,i + 1] := 'SIM';
gridPesquisa.Cells[20,i + 1] := qryPesquisa.FieldByName('id').AsString;
gridPesquisa.Cells[22,i + 1] := qryPesquisa.FieldByName('vencto').AsString;
gridPesquisa.Cells[23,i + 1] := qryPesquisa.FieldByName('cliente').AsString;
if qryPesquisa.FieldByName('venda').AsString = '' then
gridPesquisa.Cells[21,i + 1] := '0' // lancto avulso
else
gridPesquisa.Cells[21,i + 1] := qryPesquisa.FieldByName('venda').AsString;
if(qryPesquisa.FieldByName('situacaotit').AsString = 'P') then
gridPesquisa.Cells[8,i + 1] := 'SIM' // alguem já baixou
else
gridPesquisa.Cells[8,i + 1] := 'NAO';
end
else
begin
gridPesquisa.Cells[20,i + 1] := '';
gridPesquisa.Cells[21,i + 1] := '0';
end;
qryPesquisa.Close;
end;
gridPesquisa.Row := i + 1;
end;
end;
Dessa maneira, eu abro o arquivo de retorno, leio e pesquiso no meu bd pelo nosso número que gerei na remessa. Assim eu obtenho a ID do meu contas a receber e fica um botão na tela chamado PROCESSAR BAIXA pro usuário comandar as baixas.
Veja aí se ajuda,
Até mais,