Gerar Parcelas de Carnê

Como gerar parcelas de carnê de pagamento.

<wordtidy>
Criando um Gerador de Parcelas – Carnê de pagamento

Salve,salve delphianos.
Neste artigo vou ensinar como criar um gerador de carnê de pagamento.
Delphi 7 com Firebird 2.1.
Em primeira mão iremos construir nosso banco de dados.
Mão na massa.Abra o Ibexpert. Depois de configurar seu caminho e tudo mais, vamos criar a base de dados.
 
 
</wordtidy>    <wordtidy>
Iremos criar 2 tabelas.
1 – cliente
2 – Parcela
 
Vamos criar os Geradores e depois de autoincremento.
Abra o Ibexpert. Click no SQLEditor(F12). Digite : create sequence seq_cliente. Pronto!
 
 

Tabela de clientes
 
 
 
 

Tabela de parcelas não precisa de chave primária.

 
Agora vamos para o Delphi 7.
Crie um DataModulo e coloque as conexões do dbexpress.
 
 
 
 
 
 
 
Feito isso dê o nome do Datamodulo de DM e salve com U_DM.
Agora vamos adicionar os componentes de conexões do banco da dados.
1-      Primeiro o SQLConnection
2-      Configure o caminho da conexão. 
As propriedades do SQLConnection
Não esqueça de configurar o (loginprompt) para false e o (vendorlib) para fbclient.dll
 
 
 
 
 
 Database: localhost:c:\carne\banco.fdb
Faça o teste de conexão veja se esta tudo ok e vamos para o outro componente.
           Conexão com o SQLDataSet.
 

Conecte o SQLConnection com o Con1 e na propriedade Commandtext digite:
Clausula SQL ‘Select * from cliente’
 


            No DataSetProvider ligue no sdscleinte
Mudando as propriedades: poAllowComandtext
e UpdateMode para upWhereKeyOnly.
 
 
 
 ClienteDataSet – Ligado /DataSetProvider – (Propriedade) ProviderName (nome da tabela)
 
 
 
 
Coloquei apenas o campo de nome para apenas ter o exemplo.
Agora vamos criar o formulário de cadastro de cliente.
Faça você mesmo.
 
 
 Criar Master/Detail
Coloque um dataset a mais para criar um master/detalhe ligando no sdscliente.
Assim as ligações dos demais são iguais, só vai mudar no cdscliente que vai aparecer um novo DataSetField que é o sdsparcelas na tabela de cliente. Não se preoculpe...
feito isso vamos para o próximo passo.
SDSparcela configure o param
O SDSparcela é ligado na propriedade DataSourse no Dsdetalhe como
Mostra a figura abaixo. Não precisaremos de DataSetProvider.
 
 
 
 
Agora colocaremos mas 3 componentes de conexão de banco de dados. Para criamos o gerador de parcelas. Ele vai gerar a quantidade de parcelas no carnê.
Coloque o SQLDataSet e na propriedade commandtext digite: SELECT COUNT(NUM_PARCELAS) FROM PARCELA. As outras ligações em normais mesmo.
Agora vamos montar nosso formulário de . As outras ligações em normais mesmo.
Agora vamos montar nosso formulário de gerar carnê.
o formulário de cliente é bem simples mesmo. Feito isso vamos para o próximo de carnê.
Adiciona alguns clientes.
 
 
 
 
 
 
 
 
 
 
 
 
 
No formulário Carnê adicione:
1 Dblookcombobox da palheta Datacontrol. (id_cliente)
3 edits da palheta Standard ( 1 –parcelas, 1 –valor –1  Descricao do produto comprado)
1 DateTimePicker da palheta Win32 (data)
1 DBGRig para ver os dados ( visualizar as parcelas geradas)
coloque no formulário

os 2 edits com os nomes de
EdtValor e EdParcela
em o DateTimePicker com o nome de EdtData

conectando ao banco

Usaremos a palheta DBExpress

Obs.não esqueça de abrir o banco de dados
do cliente no evento onshow.

No Evento onClick do botão incluir coloque

procedure TForm1.Btn_IncluirClick(Sender: TObject);
var
i: integer;
Begin
Dm.cdsparcela.Open; //Abro o Banco
verificaparcela; //Chamo um procedimento para verificar se tem prestação pendente
i:=0; // Minha variável no caso i inicialmente é 0
for i := 1 to StrToInt(edParcela.Text) do  // minha variável recebe 1 do numero de parcelas no caso o digitado dentro de edParcela.Text


begin
if dm.cdsparcela.RecordCount < i then // verifico o numero é menor do que o da variavel
dm.cdsparcela.Insert  // se for insiro

else  //senao edito
dm.cdsparcela.Edit; //PARC vai receber o numero de parcelas que eu digitei
dm.cdsparcela.FieldByName('descricao').Value:=edtdescricao.Text;
dm.cdsparcela.FieldByName('PARC').Value := i; //VALOR vai receber o valor digitado  dividido pelo numero de parcelas
dm.cdsparcela.FieldByName('VALOR').Value :=(StrToFloat(edtValor.Text)/StrToInt(edParcela.Text)));
dm.cdsparcela.FieldByName('DATA').Value:= incMonth( Date, i - 1); //DATA recebe a data replicando conforme o numero das parcelas
dm.cdsparcela.Post;  //Gravo no banco
dm.cdsparcela.Next; //vou para o próximo
end;
//Dou um updade para gravar esse registro no banco lembre-se que quando
dm.cdsparcelas.ApplyUpdates(0); //ApplyUpdates(0) para gravar no banco o (0) significa o numero de erros
showmessage('Arquivo incuido com sucesso'); //Mando uma mensagem de texto
end;

em private declare o procedimento de verificacao
procedure verificaparcela; Ctrl+Shift+C para criar o procedimento

procedure TForm1.verificaparcela;
var  //Crio uma variavel para verificar o resultado
result:string;
begin
if dm.cdsparcela.Fields.Fields[2].AsString<>'' then  //Aqui verifico se a coluna em que esta a parcela esta vazia
begin
dm.cdsgerar.Open; //Abro o ClientDataset de verificação de contagem dos campos
begin
result:=dm.cdsgerarCOUNT.AsString; //result vai receber a quantidade de parcelas em aberto
Showmessage('Você possui '+ result +' parcelas pendentes' + #13
+ 'Nao é possivel efetuar pagamento'); //envio uma mesagem para o usuario falando que tem a quantidade que retornar em aberto
abort; //aborto a operação e fecho o ClientDataSet referente a contagem dos campos
dm.cdsgerar.Close;
end;
end;
end;
Para criar as parcelas na impressão. Trabalho com Quirk Report.
Basta colocar um botão de Imprimir Parcelas e digite o seguinte código.
Coloque no Quirk 1 bands. Detalhes.
Ligue o QuickRep1 na DM.cdsparcela e coloque os compontes.
 
procedure Tfrm_parcelas.btn2Click(Sender: TObject);
begin
Frm_RelPArc.QuickRep1.Preview;
end;

Ate a próxima.
 
 
 
 
 
Descrição colunista:
Maxiwel Eduardo C. Rodrigues;
cladelphi@hotmail.com/cladelphi@yahoo.com
Cursando Administração: é desenvolvedor Delphi desde 2000, atua como gerente de TI na Secretaria de Saúde Caxias-MA. Técnico em Informática, analista de Sistema. Professor e programador.
</wordtidy>

Artigos relacionados