Neste artigo veremos
· Criação das páginas para liberação de locação;
· Bloqueio de locações para usuários devedores;
· Bloqueio de novas reservas para usuários devedores.
Qual a finalidade
· Com o bloqueio de reservas e multas para usuários devedores, evitamos que o mesmo faça novas reservas sem antes liquidar seus débitos e atrasos nas devoluções.
Quais situações utilizam esses recursos?
· A principal situação está no fato de evitar mais problemas com um determinado usuário que costuma atrasar a entrega do filme e não pagar as devidas multas.
Resumo DevMan
Na última parte de nosso mini-curso veremos como bloquear novas reservas para clientes devedores. Esse recurso é bastante útil no dia-a-dia e evita que o cliente alugue muitos filmes sem antes eliminar todos os seus débitos.
Outro recurso interessante que veremos será incluído na área administrativa que possibilitará o operador da locadora bloquear, ou não, o cliente inadimplente ou com filmes em atraso.
Finalizando, neste artigo, o desenvolvimento da nossa aplicação ASP.NET com Delphi for .NET, sobre um sistema on-line de vídeo-locadora, veremos uma funcionalidade de grande valia para que você possa implementar em seu sistema, o controle de atrasos e multas. Criaremos uma nova tabela na base de dados onde armazenaremos todos os registros dos valores de multas aplicados a clientes decorrentes de atrasos na devolução de suas locações.
Para o processo de reservas de locações pelo cliente, faremos uma verificação no momento da reserva, onde apenas usuários sem registros de atrasos ou multas estarão aptos a novas reservas. Para o controle da locadora, nas páginas onde os administradores possuem acesso, criaremos também uma verificação no momento em que um usuário é selecionado, bem como a regra de criação de multa em devoluções de locações atrasadas, e posterior criação de páginas para pagamento das mesmas. Veja que as implementações não terão grandes dificuldades ao serem desenvolvidas. Mãos na massa!
Adicionando a tabela de multas ao banco de dados
Utilizando o gerenciador de banco de dados IBExpert, ative o registro da base de dados da locadora on-line e abra o SQL Editor (“F12”) onde iremos digitar os comandos SQL para criação da tabelas de “MULTAS”, Primary Keys e Foreign Keys, além também da criação de um mecanismo de auto-incremento para a chave primária da tabela.
Digite no editor SQL a instrução da Listagem 1 e logo após execute-a (“F9”). Para compilar e gravar a ação utilize o botão Commit Transaction (Ctrl+Shift+C), observando no DataBase Explorer que a nova tabela acabou de ser adicionada.
Listagem 1. Adicionando tabela de multas à base de dados
CREATE TABLE MULTAS(
COD_MULTA INTEGER NOT NULL,
COD_LOCACAO INTEGER,
PAGO CHAR(1) DEFAULT 'N',
DATA_PGTO DATE DEFAULT 'TODAY',
VALOR DECIMAL(12,2) DEFAULT 0);
ALTER TABLE MULTAS
ADD CONSTRAINT PK_MULTAS
PRIMARY KEY (COD_MULTA);
CREATE GENERATOR GEN_MULTAS_ID;
SET TERM ^;
CREATE TRIGGER MULTAS_BI FOR MULTAS
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
IF (NEW.COD_MULTA IS NULL) THEN
NEW.COD_MULTA = GEN_ID(GEN_MULTAS_ID,1);
END
^
SET TERM ; ^
ALTER TABLE MULTAS
ADD CONSTRAINT FK_MULTAS
FOREIGN KEY (COD_LOCACAO)
REFERENCES LOCACAO(COD_LOCACAO);
Ao observar o código, veja que nas primeiras linhas estamos criando as tabelas e os respectivos campos, definindo a cada um dos mesmos um tipo e tamanho se necessário. Na seqüência, a criação da chave-primária da tabela, à qual também atribuímos um Generator e uma Trigger que irá definir um valor automático para o campo, caso o mesmo não seja informado no momento de uma nova inclusão. Na segunda parte da instrução, criamos uma chave estrangeira relacionada à tabela LOCACAO por onde conseguiremos obter o registro causador da multa, nome do vídeo que está atrasado e cliente da locação. Realizadas as mudanças na base de dados, passaremos à implementação das rotinas de programação na aplicação.
Criando uma unit para controle de multas e atrasos
No Delphi 2006, abra o projeto que estamos desenvolvendo e crie uma nova Unit através do menu File>New>Other>Delphi for .NET Projects>New Files>Unit. Nesta Unit criaremos duas funções e um procedimento, onde, as funções farão verificações de registros de locações em atraso de um usuário e dos registros de multas sem pagamento. O procedimento será utilizado para adicionar novos registros de multas no momento em que uma devolução for feita com atraso.
Criada a Unit salve-a com o nome uControleMultas.pas e após isso adicione os códigos de acordo com a Listagem 2 onde todas as linhas codificadas encontram-se comentadas de acordo com a ação que executa. Adicionaremos também nesta Unit uma constante contendo o Path de conexão com a base de dados. Durante a codificação das functions e procedures note que também estamos declarando todas as variáveis de comunicação com a base de dados, que serão criadas e configuradas em tempo de execução.
A partir destas funções e procedimento teremos todo o controle relacionado aos atrasos e multas de usuários, bastando que agora sejam codificadas as páginas para que passem a utilizar as verificações criadas nesta Unit. Nosso primeiro passo será realizar as verificações na página de acesso do cliente, onde ele próprio tem a opção de realizar uma nova reserva, opção que passará a ser bloqueada caso alguma irregularidade seja encontrada. Antes disso vejamos o que estamos fazendo em cada procedimento.
A função UsuarioPossuiLocacaoAtrasada será utilizada para verificar se o usuário possui uma locação atrasada conforme o próprio nome diz. Em primeiro lugar estamos criando um componente de conexão, (Conn) atribuindo a ele a string de conexão, e logo em seguida, conectamos a base de dados. Na seqüência atribuímos a propriedade SelectCommand do DataAdapter o comando SQL para seleção dos vídeos. Note que estamos fazendo um Inner Join com a tabela Locacao, assim conseguimos saber se este usuário possui alguma locação ...