parcelamento com entrada
22/01/2010
0
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
datavencimento := date + strtointdef( dias[i],0 );
if i = (dias.Count-1) then
parcela := valor - ((dias.Count-1) * valorparcela)
else parcela := valorparcela;
dm1.tabprazo.Insert;
dm1.tabprazoVALOR.Value := parcela;
dm1.tabprazoCODPARCELA.Value := i + 1 ;
dm1.tabprazoDVencimento.Value := datavencimento;
dm1.tabprazoSITPARCELA.Value := 1;
//dm1.tabprazoCODFORNECEDOR.Value := dm1.tabpedidoCODFORNECEDOR.Value;
//dm1.tabprazoCODPEDIDO.Value := dm1.tabpedidoCODPEDIDO.Value;
dm1.tabprazo.Post;
end;
dias.Free;
end;
alguem pode me ajudar a colocar a entrada neste parcelamento Exemplo : a pessoa quer dar uma entrada de 200 reais e parcelar o restante em 3 vezez, jogando assim a primeira parcela de 200 e as outras de acordo com as data escolhidas 0,30,60,90 dias
Marcio Pinto
Posts
22/01/2010
Emerson Nascimento
procedure tfrmcred.parcelarvenda(valor:double; condicao:string; entrada: double = 0);
var
dias: tstringlist;
nparcelas, i, icond: integer;
datavencimento: tdate;
parcela, valorparcela: double;
begin
if ansiuppercase(condicao) = 'A VISTA' then
begin
condicao := '0';
entrada := 0;
end;
condicao := stringreplace(condicao, ' ', '', [rfReplaceAll]);
dias := tstringlist.Create;
dias.Delimiter := ',';
dias.DelimitedText := condicao;
nparcelas := dias.Count;
if entrada > 0 then icond := 1 else icond := 0;
if condicao <> '0' then
try
valorparcela := roundto((valor - entrada) / (nparcelas - icond),-2);
except
valorparcela := roundto(valor,-2);
entrada := 0;
end;
for i := 0 to nparcelas - 1 do
begin
datavencimento := date + strtointdef( dias[i],0 );
if i = (nparcelas - 1) then
parcela := (valor - entrada) - ((nparcelas - 1 - icond) * valorparcela)
else
if (i = 0) and (entrada > 0) then
parcela := entrada
else
parcela := valorparcela;
tabprazo.Append;
tabprazoVALOR.Value := parcela;
tabprazoCODPARCELA.Value := i + 1 ;
tabprazoVencimento.AsSQLTimeStamp := DateTimeToSQLTimeStamp(datavencimento);
tabprazoSITPARCELA.Value := 1;
tabprazoTOTPARCELAS.Value := nparcelas;
// tabprazoCODFORNECEDOR.Value := dm1.tabpedidoCODFORNECEDOR.Value;
// tabprazoCODPEDIDO.Value := dm1.tabpedidoCODPEDIDO.Value;
tabprazo.Post;
end;
dias.Free;
end;
pode ser usada passando ou não o valor de entrada .
// passando valor de entrada
parcelarvenda(1560.87, '0, 30, 60, 09', 520);
// sem valor de entrada (será calculado pela rotina)
parcelarvenda(1560.87, '0, 30, 60, 09'); ou
parcelarvenda(1560.87, '0, 30, 60, 09', 0);
23/01/2010
Marcio Pinto
24/01/2010
Evaristo Neto
Imagine o seguinte:
entrada = VendasTotal - valor da entrada
Se houver algum valor em "entrada", ou seja, maior que 0 entao:
1 - Vc adiciona esse registro na tabela de faturas com os dados referentes ao lançamento;
CdsFaturas.Append;
CdsFaturasFORMAPGTO.value:="tipo do pagamento - dinheiro, cartao, cheque a vista)"
cdsfaturasVALOR.asfloat:=StrToFloat(Trim(EdtEntrada.Text));
CdsFaturasVALORPAGO.asfloat:=StrToFloat(Trim(EdtEntrada.Text));
2 - Pegue a diferença (total da venda - valor da entrada e divida nas parcelas restantes) e insira na tabela faturas com os respectivos vencimentos
for i:=1 to strtoint(Trim(EdtParcelas.Text)) - 1 do
cdsfaturasVALOR.asfloat:=(VendasTotal - strtofloat(Trim(EdtEntrada.text))) / (strtoint(Trim(EdtParcelas.text))-1);
[]´s
Evaristo
25/01/2010
Emerson Nascimento
parcelarvenda(300, '0, 30, 60, 09', 150) ?
debugue, pois aqui está funcionando perfeitamente.
26/01/2010
Marcio Pinto
Clique aqui para fazer login e interagir na Comunidade :)