Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde pessoal.
Tô precisando gerar vencimento de duplicatas mas estou com problemas e não é por falta
de material na internet não. Se alguém puder me orientar agradeço muito. Tô usando
delphi 7, interbase 7.5 e componente da peleta interbase.
Na tabela tenho os campos condição de pagamento, número de parcelas, prazo1,prazo2,até
prazo6.
No formulário tenho um EditCondPagamento, Um EdtNumParcelas desativado e outros 6 Edits invisiveis:EdtPrazo1,....,6.
Se condição de pagamento é <> de avista então o EditeNúmero de parcelas é ativado e entra-se com o número de parcela. De acordo com esse número de parcela os Edits de prazo ficam visíveis. Nesses Edits de prazo entra-se com o número de dias para o vencimento de cada duplicata. Ex: EdtPrazo1=30 dias, Edtprazo2=60 dias.
Fiz um programinha de teste separado para tentar descobrir como gerar os vencimentos e estou usando seguinte código que algum colega postou na internet:
procedure TForm1.ParcelarVenda(Valor: double; Condicao: string);
var
dias: TStringList;
i: integer;
espaco: shortint;
datavencimento: TDate;
parcela, valorparcela: double;
begin
if AnsiUpperCase( Condicao ) = 'A VISTA' then
Condicao := '0';
espaco := pos(' ',condicao);
if espaco > 0
then Condicao := Copy(Condicao,1,espaco-1);
dias := TStringList.Create;
dias.Delimiter := '/';
dias.DelimitedText := Condicao;
try
valorparcela := RoundTo(Valor / dias.Count,-2);
except
valorparcela := RoundTo(Valor,-2);
end;
for i := 0 to dias.Count-1 do
begin
// calcula a data de vencvimento e o valor da parcela
datavencimento := date + StrToIntDef( dias*,0 );*
if i = (dias.Count-1)
then parcela := valor - ((dias.Count-1) valorparcela) *
else parcela := valorparcela;
inclui o registro no dataset
dataset.append;
dataset.fieldbyname('vencimento').asdate := datavencimento;
dataset.fieldbyname('valor').asdate := parcela;
{demais campos}
dataset.post;
end;
dias.Free;
end;
Tá dando erro na função RoundTo.Não está declarada.
Se algum colega puder me dar uma orientação fico muito grato.
obrigado.
Cara eu uso essa rotina para gerar parcelas fuciona certinho. Tenta ai!
procedure TFrm_Aprovar.Bnt_AdionarClick(Sender: TObject);
var
Dias,Parcela:Integer;
begin
Parcela:=1;
Dias:=0;
//valor:=strtoInt(Edt_Vezes.Text)/strtofloat(Edt_total.Text);
DmDados.Tbl_Duplicata.Open;
while Parcela <= StrToInt(Edt_Vezes.Text) do
Begin
DmDados.Tbl_Duplicata.Insert;
Dias:=Dias+30;
DmDados.Tbl_DuplicataIDDULIPLICATA.Value:=Parcela;
DmDados.Tbl_Duplicata.FieldByName('Valor').AsFloat:=strtofloat(Edt_total.Text)/strtoInt(Edt_Vezes.Text);
DmDados.Tbl_DuplicataDATA_FATURAMENTO.Value:=Date + Dias;
DmDados.Tbl_Duplicata.Post;
inc(Parcela);
end;Elton e Dario,
muito obrigado pela atenção e ajuda de vocês.
Ontem e hoje tá muito corrido e ainda não consegui resolver o problema.
Nesse feriado prolongado vou colocar em pratica a orientação de vocês
e em seguida posto o resultado.
Obrigado mais uma vez
Problema resolvido.
Obrigado pela ajuda dos amigos desse forum.
Breve o Senhor Jesus voltará. Prepara-te para encontrares com o teu Deus.
>
Boa tarde pessoal.
Tô precisando gerar vencimento de duplicatas mas estou com problemas e não é por falta
de material na internet não. Se alguém puder me orientar agradeço muito. Tô usando
delphi 7, interbase 7.5 e componente da peleta interbase.
Na tabela tenho os campos condição de pagamento, número de parcelas, prazo1,prazo2,até
prazo6.
No formulário tenho um EditCondPagamento, Um EdtNumParcelas desativado e outros 6 Edits invisiveis:EdtPrazo1,....,6.
Se condição de pagamento é <> de avista então o EditeNúmero de parcelas é ativado e entra-se com o número de parcela. De acordo com esse número de parcela os Edits de prazo ficam visíveis. Nesses Edits de prazo entra-se com o número de dias para o vencimento de cada duplicata. Ex: EdtPrazo1=30 dias, Edtprazo2=60 dias.
Fiz um programinha de teste separado para tentar descobrir como gerar os vencimentos e estou usando seguinte código que algum colega postou na internet:
procedure TForm1.ParcelarVenda(Valor: double; Condicao: string);
var
begin
if AnsiUpperCase( Condicao ) = 'A VISTA' then
if i = (dias.Count-1)
then parcela := valor - ((dias.Count-1) valorparcela) *
else parcela := valorparcela;
inclui o registro no dataset
dataset.append;
dataset.fieldbyname('vencimento').asdate := datavencimento;
dataset.fieldbyname('valor').asdate := parcela;
{demais campos}
dataset.post;
end;
dias.Free;
end;
Tá dando erro na função RoundTo.Não está declarada.
Se algum colega puder me dar uma orientação fico muito grato.
obrigado.
se não me engano, você tem que declarar a unit Math na uses