Retorno HSBC - Valor de juros
Bom dia.
Estamos desenvolvendo um sistema de ERP que faz integração bancária, enviando remessas e processando retornos.
Estamos com problema no processamento de retornos do HSBC. Mesmo que o cliente pague o título no dia do vencimento, no retorno, na posição 98 até a posição 110 (valor de juros) vem um valor. Sendo que não foi cobrado juros sobre o título...
Já li o manual várias vezes e não encontro o que pode estar causando este erro. Caso alguém já passou por este problema ou envia remessas e processa arquivos de retorno do HSBC e pode me dar uma mão, agradeceria muito...
Atenciosamente,
Fernando.
Estamos desenvolvendo um sistema de ERP que faz integração bancária, enviando remessas e processando retornos.
Estamos com problema no processamento de retornos do HSBC. Mesmo que o cliente pague o título no dia do vencimento, no retorno, na posição 98 até a posição 110 (valor de juros) vem um valor. Sendo que não foi cobrado juros sobre o título...
Já li o manual várias vezes e não encontro o que pode estar causando este erro. Caso alguém já passou por este problema ou envia remessas e processa arquivos de retorno do HSBC e pode me dar uma mão, agradeceria muito...
Atenciosamente,
Fernando.
Bico
Curtidas 0
Respostas
Bico
09/02/2006
Sobe
GOSTEI 0
Weber
09/02/2006
Você pode pegar a data de pagamento e verificar se foi pago em dia, se sim não há juros caso contrário ai sim é só pegar o campo juros.
Não li o manual do hsbc mas acredito que essa ´gambiarra´ funcione.
Não li o manual do hsbc mas acredito que essa ´gambiarra´ funcione.
GOSTEI 0
Bico
09/02/2006
Bom dia Weber.
Também tinha pensado em fazer alguma coisa desse tipo.
Só que me ocorreu a seguinte idéia: O título pode vencer no final de semana e o cara pagar só na segunda. Poderia fazer uma rotina para ver se o dia de vencimento do título é no final de semana e ignorar os juros neste caso. Mas acontece que o dia de vencimento do título também pode cair em um feriado. Neste caso o cliente pagaria o título no dia seguinte e aí o procedimento acima estaria ´furado´.
Acredito que o banco esteja informando outro valor na posição do campo de juros. Sei lá, tipo em algum tipo de operação ou tipo de situação a posição do campo juros serve para informar outro valor que, não tenho nem idéia do que pode ser.
Atenciosamente,
Fernando
Também tinha pensado em fazer alguma coisa desse tipo.
Só que me ocorreu a seguinte idéia: O título pode vencer no final de semana e o cara pagar só na segunda. Poderia fazer uma rotina para ver se o dia de vencimento do título é no final de semana e ignorar os juros neste caso. Mas acontece que o dia de vencimento do título também pode cair em um feriado. Neste caso o cliente pagaria o título no dia seguinte e aí o procedimento acima estaria ´furado´.
Acredito que o banco esteja informando outro valor na posição do campo de juros. Sei lá, tipo em algum tipo de operação ou tipo de situação a posição do campo juros serve para informar outro valor que, não tenho nem idéia do que pode ser.
Atenciosamente,
Fernando
GOSTEI 0
Weber
09/02/2006
Para saber se é feriado, sabado domingo é mole.
Esta função retornar a quantidade de dias em atrazo.
Esta função retornar a quantidade de dias em atrazo.
function CalcDiasVencto(DtAtual, DtVencto: ShortString): Integer; var dDtTemp: TDateTime; function VerFeriados(DtAtual, DtVencto: ShortString): Boolean; var Ano, Mes, Dia: Currency; c,n,k,i,j,l: Currency; cFeriados: TStringList; dDtTemp: TDateTime; nI, nY: Integer; begin Ano := StrToInt(Trim(Copy(DtAtual,7,4))); c := Trunc(Ano / 100); n := Ano - (19 * Trunc(Ano / 19)); k := Trunc((c - 17) / 25); i := c - Trunc((c/4)) - Trunc((c-k)/3) + (19*n) + 15; i := i - (30*Trunc(i/30)); i := i - (Trunc(i/28)*(1-Trunc(i/28))*Trunc(29/(i+1))*Trunc((21-n)/11)); j := Ano + Trunc(Ano / 4) + i + 2 -c + Trunc(c/4); j := j - (7*Trunc(j/7)); l := i - j; Mes := 3 + Trunc((l+40)/44); Dia := l + 28 - (31*Trunc(Mes/4)); cFeriados := TStringList.Create; cFeriados.Add(FormatDateTime(´dd/mm´,StrToDate(CurrToStr(Dia)+´/´+CurrToStr(Mes)))); //Pascoa cFeriados.Add(FormatDateTime(´dd/mm´,IncDay(StrToDate(cFeriados[0]), -2))); //6.Santa cFeriados.Add(FormatDateTime(´dd/mm´,IncDay(StrToDate(cFeriados[0]),-47))); //Carnaval cFeriados.Add(FormatDateTime(´dd/mm´,IncDay(StrToDate(cFeriados[0]), 60))); //Corpus Crhist cFeriados.Add(´01/01´); //Ano Novo cFeriados.Add(´21/04´); //Tiradentes cFeriados.Add(´01/05´); //Trabalho cFeriados.Add(´07/09´); //Indenpencia cFeriados.Add(´12/10´); //N.Senhora cFeriados.Add(´02/11´); //Finados cFeriados.Add(´15/11´); //Replublica cFeriados.Add(´25/12´); //Natal cFeriados.Add(´10/05´); //Aniversario de Maringa cFeriados.Add(´15/08´); //Padroeira de Maringa dDtTemp := StrToDate(DtAtual); dDtTemp := IncDay(dDtTemp, -1); while dDtTemp >= StrToDate(DtVencto) do //domingos e sabado if (DayOfWeek(dDtTemp) = 7) or (DayOfWeek(dDtTemp) = 1) then begin cFeriados.Add(FormatDateTime(´dd/mm´,dDtTemp)); dDtTemp := IncDay(dDtTemp, -1); end else Break; Result := False; dDtTemp := StrToDate(DtVencto); for nI := 0 to cFeriados.Count -1 do if cFeriados[nI] = FormatDateTime(´dd/mm´,dDtTemp) then begin for nY := 0 to cFeriados.Count -1 do if cFeriados[nY] = FormatDateTime(´dd/mm´,IncDay(StrToDate(DtAtual), -1)) then begin Result := True; Break; end; if Result then Break; end; cFeriados.Free; end; begin Result := DaysBetween(StrToDate(DtAtual), StrToDate(DtVencto)); if StrToDate(DtAtual) <= StrToDate(DtVencto) then Result := 0 else begin dDtTemp := StrToDate(DtVencto); while StrToDate(DtAtual) > dDtTemp do begin if VerFeriados(DtAtual,DateToStr(dDtTemp)) then begin Result := Result - 1; dDtTemp := IncDay(dDtTemp, 1); end else Break; end; end; end;
GOSTEI 0