Artigo Clube Delphi 88 - Contas a Pagar e Cobrança
Neste artigo, vamos criar mais uma tela de cadastro, que sem dúvida é uma das principais portas de entrada de dados, o de Contas a Pagar.
Clique aqui para ler esse artigo em PDF.
Mini-Curso
Contas a Pagar e Cobrança
Crie um sistema completo com Delphi, Firebird 2.0 e dbExpress - Parte 2
Na edição anterior de ClubeDelphi, iniciamos o curso de Contas a Pagar e Cobrança desenvolvendo as primeiras telas que farão parte do sistema chamado SysPague, onde vimos as principais dicas e detalhes referentes ao projeto.
Neste artigo, vamos criar mais uma tela de cadastro, que sem dúvida é uma das principais portas de entrada de dados, o de Contas a Pagar. Nela, o usuário final poderá incluir, alterar e baixar os lançamentos de contas a pagar, tais como contas de água, luz, telefone, gastos com office-boy e moto-boy etc.
Para iniciarmos nosso artigo, veremos rapidamente o que foi criado no exemplo anterior:
·Banco de dados Firebird 2.0;
·Tela principal;
·Cadastro de Clientes;
·Cadastro de Fornecedores;
·Cadastro de Contas Correntes;
·Data Module principal;
Daremos continuidade ao curso desenvolvendo o cadastro de contas a pagar como mencionado anteriormente, para isso, precisamos alterar o banco de dados, incluindo mais uma tabela.
Alterando o banco de dados de exemplo
Inicie o IBExpert e vamos criar a tabela Contas_Pagar. Após conectar ao banco de dados no IBExpert, clique com o botão direito sobre o item Tables e escolha a opção New Table. No alto da janela, aparecerá o nome da tabela sugerido, troque-o para “Contas_Pagar”.
Em seguida para criar um campo, digite o nome em Field Name, selecione seu tipo em Field Type e marque o item Not Null (caso seja necessário). Caso prefira, execute o script da Listagem 1.
Listagem 1. Criação da tabela e índices Contas_Pagar
CREATE TABLE CONTAS_PAGAR (
CODIGOVARCHAR(20) NOT NULL,
CNPJVARCHAR(18) NOT NULL,
DESCRICAOVARCHAR(60) NOT NULL,
VLR_REALNUMERIC(15,2),
VLR_PAGO NUMERIC(15,2),
JUROSNUMERIC(15,2),
MORANUMERIC(15,2),
DT_CADASTRO TIMESTAMP,
DT_VECTOTIMESTAMP,
DT_PAGTOTIMESTAMP,
BANCOINTEGER,
AGENCIAVARCHAR(10),
CONTAVARCHAR(10),
STATUSVARCHAR(1),
DT_ALTERACAO TIMESTAMP);
ALTER TABLE CONTAS_PAGAR
ADD CONSTRAINT PK_CONTAS_PAGAR
PRIMARY KEY (CODIGO, CNPJ);
ALTER TABLE CONTAS_PAGAR
ADD CONSTRAINT FK_CONTAS_PAGAR_BANCO
FOREIGN KEY (BANCO, AGENCIA, CONTA)
REFERENCES CONTAS (BANCO, AGENCIA, CONTA)
ON UPDATE CASCADE;
ALTER TABLE CONTAS_PAGAR
ADD CONSTRAINT FK_CONTAS_PAGAR_CNPJ
FOREIGN KEY (CNPJ) REFERENCES FORNECEDORES (CNPJ)
ON UPDATE CASCADE;
Nota: O campo CODIGO é do tipo VarChar para armazenar o número da conta a pagar. No caso, pode ser o número de uma nota fiscal, número de referência da conta de água etc. Caso deseje, crie um campo CODIGO como auto-incremento da tabela e crie um campo NUMERO_DOCUMENTO, por exemplo.
O interessante e mais importante nesse momento é que criaremos chaves estrangeiras para um maior controle de integridade dos dados manipulados pelo sistema. Note que na nova tabela temos os campos CNPJ, Banco, Agencia e Conta. O primeiro campo deverá conter o mesmo conteúdo do campo de mesmo nome, da tabela Fornecedores, isso porque obrigaremos o usuário final a escolher um fornecedor válido para inclusão do lançamento de contas a pagar.
Também nesses mesmos moldes, será necessário que o usuário informe o banco, agência e conta que o lançamento foi pago no ato da baixa. Feito isso, teremos que atentar ao seguinte detalhe: e se houver a necessidade de alterar o CNPJ do fornecedor, embora chave primária, ou mesmo alterar o número da conta corrente? Como ficarão nossos lançamentos no contas a pagar?
Pensando nisso usaremos um recurso bastante útil no banco de dados: Foreing Key, ou, Chave Estrangeira. As chaves estrangeiras informam para o banco, que determinado campo está associado a outro campo de outra tabela. Sendo assim, toda vez que um registro origem é alterado ou apagado, os mesmo são refletidos nas tabelas que contém essas chaves estrangeiras, mantendo a integridade dos dados.
A criação de chaves estrangeiras no banco é muito simples. Após criada a tabela Contas_Pagar, clique duas vezes nela e note que ao abrir, o IBExpert mostra algumas abas. Uma delas é a Constraints. Primeiramente criaremos uma chave primária para a base de dados usando a aba Primary Key (siga os passos a seguir, se não usou o código da " [...] continue lendo...
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo