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.

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

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