Artigo Clube Delphi 65 - Sistema SysCash

Artigo da revista Clube Delphi edição 65.

Esse artigo faz parte da revista Clube Delphi Edição 65. Clique aqui para ler todos os artigos desta edição

Clique aqui para ler esse artigo em PDF.

Sistema SysCash

Parte III - Controle de usuários e relatórios

Nesta terceira e última parte da série, implementaremos os relatórios e a parte de segurança do sistema SysCash. O sistema deverá conter os relatórios de fluxo de caixa (contas a pagar/receber), movimentação diária e por período e relatório de histórico.

A segurança do sistema será feita utilizando usuários cadastrados no próprio servidor de banco de dados IB/FB. Vamos criar as novas telas e relatórios do sistema utilizando o fonte da parte I do curso.

 

Nota: Para o desenvolvimento dos relatórios utilizaremos a ferramenta Rave Reports que acompanha o Delphi 7 e 2005.

 

Relatório de Fluxo de Caixa

Através do relatório de fluxo de caixa, o usuário poderá visualizar e imprimir todas as previsões referente às contas a pagar e receber lançadas no sistema. Para buscar as previsões ativas, isso é, ainda não vencidas e/ou baixadas no sistema, utilizaremos a view Vw_Previsoes criada na segunda parte da série.

Lembre-se que na view fazemos o filtro no campo Pre_Previsao para trazer apenas as previsões ainda ativas. Antes de criarmos o layout do relatório de fluxo no Rave, devemos criar uma tela para que o usuário possa filtrar, antes da visualização e impressão.

Nessa tela disponibilizaremos para o usuário as opções para buscar todas as previsões com vencimento até uma data específica ou através de um período de datas. O usuário deve também ter a opção de visualizar as contas a pagar ou receber individualmente.

Adicione um novo formulário à aplicação, altere seu nome para “FrmFluxo” e salve a unit como “untFrmFluxo.pas”. Adicione alguns componentes visuais e configure-os como mostra a Figura 1.

 

Figura 1. Formulário para aplicação de filtros antes da visualização/impressão do relatório de fluxo de caixa

 

Utilizaremos os componentes Label adicionados abaixo de cada campo data, para trazer o dia da semana equivalente à data informada pelo usuário. Para isso, adicione uma nova unit na aplicação e salve-a como “untFuncoes.pas”. Dentro dessa unit declare o código, conforme a Listagem 1. Utilizaremos retornaDia para trazer o dia da semana a partir da data informada.

 

Listagem 1. Função que retorna o dia da semana

function retornaDia(dt: TDate): string;

var

  i: Integer;

begin

  Result := '()';

  i := DayOfTheWeek(dt);

  case i of

1: Result := '(Segunda-feira)';

2: Result := '(Terça-feira)';

3: Result := '(Quarta-feira)';

4: Result := '(Quinta-feira)';

5: Result := '(Sexta-feira)';

6: Result := '(Sábado)';

7: Result := '(Domingo)';

  end;

end;

 

Nota: Para utilizar a função DayOfTheWeek, declare a unit DateUtils na seção uses da unit. Declare também a unit Controls.

 

Antes de implementarmos o botão Visualizar, devemos criar o relatório no Rave Reports. Selecione o DMPrincipal e adicione os componentes RvProject e RvSystem, ambos da paleta Rave. Altere o nome do RvProject para “rvSysCash” e aponte sua propriedade Engine para o RvSystem1. Selecione a opção Rave Visual Designer através do menu de contexto do RvProject para abrir o Rave Designer.

Crie um novo arquivo de relatório Rave (File|New) e salve-o como “SysCash.rav” (File|Save). Feche o Rave Designer e volte a aplicação Delphi. Aponte a propriedade ProjectFile do RvProject para o arquivo recém criado. Adicione também ao DMPrincipal os componentes RvRenderHTML, RvRenderPDF, RvRenderRTF e RvRenderText para que possamos salvar os relatórios nesses formatos de arquivo.

Para armazenar os DataSets que serão utilizados pelos relatórios da aplicação, vamos criar um novo Data Module. Adicione, através do menu File|New>Other>Delphi Files>Data Module, altere seu nome para “DMRelatorio” e salve a unit como “untDMRelatorio.pas”.

Adicione ao DMRelatorio os componentes SQLDataSet (dbExpress), DataSetProvider e ClientDataSet (Data Access). Altere o nome dos componentes para “datasetFluxo”, “dspFluxo” e “cdsFluxo”, respectivamente.

Ligue os componentes através de suas propriedades (não esqueça da adicionar a unit do DMPrincipal e ligar a propriedade SQLConnection do datasetFluxo para o conSysCash) e para a propriedade CommandText do datasetFluxo digite a seguinte instrução SQL:

 

select CODIGO, CF_TIPO, NOME_CLIFOR, DESCRICAO,

  EMISSAO, VENCIMENTO, VALOR, CREDEB

from VW_PREVISOES

order by VENCIMENTO

 

Para que possamos enviar novas instruções SQL através do cdsFluxo, precisamos alterar a propriedade Options|poAllowCommandText do dspFluxo para True. Para disponibilizar as informações obtidas no cdsFluxo para o relatório no Rave, precisamos adicionar um RvDataSetConnection (Rave).

Altere seu nome para “RvDataSetFluxo” e aponte sua propriedade DataSet para cdsFluxo. Agora sim, vamos para o desenvolvimento do relatório propriamente dito. Entre no Rave Designer através do rvSysCash no DMPrincipal e altere o nome do relatório para “rptFluxo” (selecione o relatório no item Report Library" [...] continue lendo...

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados