Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

C Alves

[Resolvido] Gerar vencimentos de duplicata

Recommended Posts

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

 

se não me engano, você tem que declarar a unit Math na uses

Compartilhar este post


Link para o post
Compartilhar em outros sites

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;

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Problema resolvido.

Obrigado pela ajuda dos amigos desse forum.

 

Breve o Senhor Jesus voltará. Prepara-te para encontrares com o teu Deus.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.