Artigo Clube Delphi 65 - Sistema SysCash

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (1)  (0)

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

imagem_pdf.jpg

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 no painel direito).

Para trazer os campos disponibilizados pelo RvDataSetFluxo, vamos criar um DataView dentro do projeto. Selecione o menu File|New Data Object e escolha o item Direct Data View na lista. Clique no botão Next e na seção Active Data Connections selecione o rvDataSetFluxo. Clique no botão Finish para criar o DataView contendo os campos que serão utilizados no relatório. O relatório rptFluxo possuirá duas páginas, onde na primeira adicionaremos o layout do relatório e na segunda armazenaremos os componentes Section que serão utilizados de acordo com os filtros informados pelo usuário no sistema.

 

Dica: Para que possamos imprimir diferentes informações em cada banda do relatório de fluxo de caixa, utilizaremos a técnica de Section presente no Rave.

 

Para adicionar uma nova página ao relatório, selecione a opção File|New Report Page. Na página 1, adicione alguns componentes visuais e configure-os de acordo com a Figura 2. Com exceção da banda bndVencimento, adicione nas demais bandas um DataMirrorSection (Report) para que possamos manipular as seções que criaremos na página 2 do relatório.

 

Figura 2. Layout do relatório de fluxo de caixa do sistema SysCash

 

Nota: A configuração completa de todos os componentes presentes no relatório está no arquivo SysCash.rav disponível para download junto com o código fonte do aplicativo.

 

A segunda página do relatório será utilizada apenas para armazenar os Sections que serão manipulados no relatório. Adicione os componentes Section, Text (Standard) e DataText (Report) e configure-os de acordo com a Figura 3. Cada grupo de Section está vinculado a um DataMirrorSection para mostrar as informações dentro das bandas de acordo com as opções e filtros informados pelo usuário.

 

Figura 3. Section utilizados pelos componentes DataMirrorSection presentes nas bandas do relatório

 

Feche o Rave Visual Designer e volte para a aplicação. Selecione o FrmFluxo e adicione o código da Listagem 2 no evento OnClick do botão Visualizar. Dependendo das opções selecionadas na tela, montamos a instrução SQL que será utilizada para fazer o filtro na view Vw_Previsoes. Para a passagem dos campos do tipo data na instrução SQL, utilizamos a função formataData para fazer a troca da posição do dia e do mês. Você pode incluir a função formataData na unit untFuncoes, digitando o seguinte código:

 

function formataData(const dt: TDate): string;

begin

  Result := FormatDateTime('mm/dd/yyyy', Dt);

"

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?