No meu formulário de contas a pagar eu coloquei um TDBCombobox para neles o cliente poder escolher o tipo de vencimento da conta que são: Mensal, Quinzenal.
O problema está sendo para gerar a parcela mensal eu fiz uma formula mas que nela ela suma de 30 em 30 dias mas existem meses que tem 31 dias então a parcela cairia um dia.
Ex :
Junho .: 10/06/10
Julho .: 10/07/10
Agosto .: 09/08/10
Setembro .: 08/09/10
Outubro .: 08/09/10
O meu código para gerar a parcela é.
procedure TFrmContasPagar.Button2Click(Sender: TObject);
var parcela,resposta,i:integer;
fornecedor,referencia,documento,portador,observacao:string;
valorconta,jurosN,multaN,juros,multa:real;
dataconta, datavenc:Tdatetime;
begin
resposta := 0;
if (dmdados.IbContasPagar.State in [dsinsert] ) then
begin
showmessage ('Salve os dados antes para gerar as parcelas');
abort;
end
else
resposta := Application.MessageBox('Deseja gerar as parcelas dessa conta ?','Confirma?',4);
if resposta = 6 then
begin
dmdados.IbContasPagar.Edit;
if Trim(DbParcela.Text) = '' then
begin
showmessage ('Informe a quantidade de parcelas.');
DbParcela.SetFocus;
abort;
end;
if trim (CbParcela.Text) = '' then
begin
showmessage ('Informe o tipo de vencimento das parcelas.');
CbParcela.SetFocus;
abort;
end;
i := 1;
dataconta := dmdados.IbContasPagarPAGAR_DATACONTA.Value;
referencia := dmdados.IbContasPagarPAGAR_REFERENTE.Value;
fornecedor := dmdados.IbContasPagarPAGAR_FORNECEDORNOME.Value;
documento := dmdados.IbContasPagarPAGAR_DOCUMENTO.Value;
valorconta := dmdados.IbContasPagarPAGAR_VALORCONTA.Value;
datavenc := dmdados.IbContasPagarPAGAR_DATAVENCIMENTO.Value;
jurosN := dmdados.IbContasPagarPAGAR_JUROSNUMERO.Value;
multaN := dmdados.IbContasPagarPAGAR_MULTANUMERO.Value;
juros := dmdados.IbContasPagarPAGAR_JUROS.Value;
multa := dmdados.IbContasPagarPAGAR_MULTA.Value;
portador := dmdados.IbContasPagarPAGAR_PORTADOR.Value;
observacao := dmdados.IbContasPagarPAGAR_OBSERVACAO.Value;
parcela := dmdados.IbContasPagarPAGAR_QUANTPARCELA.Value;
dmdados.Ibcontaspagar.post;
while i <= parcela do
begin
dmdados.ibContaspagar.insert;
dmdados.IbContasPagarPAGAR_DATACONTA.Value := dataconta;
dmdados.IbContasPagarPAGAR_REFERENTE.Value := referencia;
dmdados.IbContasPagarPAGAR_FORNECEDORNOME.value := fornecedor;
dmdados.IbContasPagarPAGAR_DOCUMENTO.Value := documento;
// dmdados.IbContasPagarPAGAR_DATAVENCIMENTO.Value := (date + ((i-1)*30));
dmdados.IbContasPagarPAGAR_VALORCONTA.value := valorconta;
dmdados.IbContasPagarPAGAR_JUROSNUMERO.Value := jurosN;
dmdados.IbContasPagarPAGAR_MULTANUMERO.Value := MultaN;
dmdados.IbContasPagarPAGAR_JUROS.Value := juros;
dmdados.IbContasPagarPAGAR_MULTA.Value := multa;
dmdados.IbContasPagarPAGAR_PORTADOR.Value := portador;
dmdados.IbContasPagarPAGAR_OBSERVACAO.value := observacao;
if CbParcela.Items.Text = 'MENSAL' then
begin
dmdados.IbContasPagarPAGAR_DATAVENCIMENTO.Value := datavenc + (i-1 * 30);
showmessage('Foi uma Parcela mensal');
end
else
begin
dmdados.IbContasPagarPAGAR_DATAVENCIMENTO.Value := datavenc + (i-1 * 15);
showmessage('Foi uma Parcela mensal');
end;
dmdados.IbContasPagar.Post;
showmessage ('Parcela gerada');
inc (i);
end;
end;
DbDataConta.Enabled:=false;
DbReferente.Enabled:=false;
DbNomeFornecedor.Enabled:=false;
DbDocumento.Enabled:=false;
DbDataVencimento.Enabled:=false;
DbValorConta.Enabled:=false;
DbParcela.Enabled:=false;
CbParcela.Enabled:=false;
DbJuros.Enabled:=false;
DbMulta.Enabled:=false;
DbJurosNumero.Enabled:=false;
DbMultaNumero.Enabled:=false;
Dbportador.Enabled:=false;
DbObservacao.Enabled:=false;
end;
Pergunta
nicolasbraz
No meu formulário de contas a pagar eu coloquei um TDBCombobox para neles o cliente poder escolher o tipo de vencimento da conta que são: Mensal, Quinzenal.
O problema está sendo para gerar a parcela mensal eu fiz uma formula mas que nela ela suma de 30 em 30 dias mas existem meses que tem 31 dias então a parcela cairia um dia.
Ex :
Junho .: 10/06/10
Julho .: 10/07/10
Agosto .: 09/08/10
Setembro .: 08/09/10
Outubro .: 08/09/10
O meu código para gerar a parcela é.
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.