RELAÇÃO ENTRE TABELAS PARA DAR BAIXA NO ESTOQUE

04/04/2013

4

AMIGOS
ESTOU DESENVOLVENDO UM SISTEMA EM DELPHI USANDO O INTERBASE 6.0 PARA BANCO DE DADOS SQL QUE CONTROLA A ENTRADA E SAIDA DE MERCADORIAS DE UMA PREFEITURA.
TENHO UMA TABELA CHAMADA PRODUTOS ONDE EU CADASTRO OS PRODUTOS COMPRADOS PELA PREFEITURA E TENHO UMA TABELA CHAMADA TRANSFERENCIA QUE SERVE PARA EU TRANSFERIR UM DETERMINADO PRODUTO PARA AS FILIAS QUE SÃO AS SECRETARIAS
COMO EU FAÇO PARA QUE QUANDO EU TRANSFERIR UMA CERTA QUANTIDADE DE PRODUTO PARA UMA FILIAL DESSE BAIXA NA TABELA PRODUTOS ??
VEJA COMO EU FIZ A TABELA PRODUTOS:

CREATE TABLE "PRODUTOS"
(
"COD" INTEGER NOT NULL,
"DESCRI" VARCHAR(50),
"GRUPO" VARCHAR(20),
"FORNECEDOR" VARCHAR(50),
"QUANTIDADE" VARCHAR(10),
"PRECOCOMPRA" DECIMAL(8, 2),
"DATACOMPRA" TIMESTAMP,
"DATACAD" TIMESTAMP,
"OBS" VARCHAR(100),
"PRECOUNI" DECIMAL(8, 2),
"QUANTI" DECIMAL(8, 2),
CONSTRAINT "PK_PRODUTOS" PRIMARY KEY ("COD")
);

E A TABELA TRANSFERECIA:

CREATE TABLE "TRANSFERENCIA"
(
"CODIGO" INTEGER NOT NULL,
"FILIAL" VARCHAR(50),
"PRODUTO" VARCHAR(50),
"DATA" TIMESTAMP,
"QUANTIDADE" DECIMAL(8, 2),
"OBS" VARCHAR(100),
"DATADIC" TIMESTAMP,
"QUANTADIC" DECIMAL(8, 2),
"CODIGOPRODUTO" INTEGER NOT NULL,
CONSTRAINT "TRANSFERENCIA_PK" PRIMARY KEY ("CODIGO")
);
ALTER TABLE "TRANSFERENCIA" ADD CONSTRAINT "SAIDAPRODUTO" FOREIGN KEY ("CODIGOPRODUTO") REFERENCES PRODUTOS ("COD");

DESDE JA AGRADEÇO A ATENÇÃO
Responder

Posts

04/04/2013

William

Colega escrevi um artigo para controle de estoque, mas usando MySQL. Acredito que vai ajudar vc um pouco!

Segue link:
[url]http://www.devmedia.com.br/implementando-controle-de-estoque-no-mysql-com-triggers-e-procedures/26352[/url]
Responder

06/04/2013

Jean Carlos

Caro amigo, muito obrigado pela ajuda.
Eu nao conheço nada sobre triggers por isso ficou dificel de eu entder a sua aula.
Mais depois de bater muito a cabeça consegui resolver meu problema de uma maneira mais simples.
Ex:
Criei uma tabela chamada PRODUTOS onde serão cadastrados todos os produtos que entra na prefeitura,
e criei uma tabela chamada SAIDAPRODUTOS, na tabela PRODUTO tem um campo chamado ENTRAQUANTIDADE
e na tabela SAIDAPRODUTO tem um campo chamado SAIQUANTIDADE ambas eu coloquei como numeric o valor do campo,
desta forma eu consegui fazer o seguinte:
no evento OnEnter do dbedit SAIQUANTIDADE eu coloquei o codigo "datamodulo.tblprodutos.edit"
no evendo OnExit de mesmo dbedit coloquei o codigo
datamodulo.tblprodutos.entraquantidade.value:=
datamodulo.tblprodutos.entraquantidade.value-
datamodulo.tblsaiprodutossaiquantidade.value

e desta forma consegui dar baixa no na tabela produtos que estou usando tmbém como controle de estoque
Eu ja tinha feito esta mesma forma antes, nao tinha dado certo porque o valor dos campos descritos a cima eu coloquei como inteiro então dava erro na hora de copilar.
O que você acha desta formula que eu fiz será viavel p mim ou irá me trazer algum problema no futuro ??

Desde ja le agradeço a atenção
Responder

06/04/2013

Jean Carlos

Caro amigo, muito obrigado pela ajuda.
Eu nao conheço nada sobre triggers por isso ficou dificel de eu entder a sua aula.
Mais depois de bater muito a cabeça consegui resolver meu problema de uma maneira mais simples.
Ex:
Criei uma tabela chamada PRODUTOS onde serão cadastrados todos os produtos que entra na prefeitura,
e criei uma tabela chamada SAIDAPRODUTOS, na tabela PRODUTO tem um campo chamado ENTRAQUANTIDADE
e na tabela SAIDAPRODUTO tem um campo chamado SAIQUANTIDADE ambas eu coloquei como numeric o valor do campo,
desta forma eu consegui fazer o seguinte:
no evento OnEnter do dbedit SAIQUANTIDADE eu coloquei o codigo "datamodulo.tblprodutos.edit"
no evendo OnExit de mesmo dbedit coloquei o codigo
datamodulo.tblprodutos.entraquantidade.value:=
datamodulo.tblprodutos.entraquantidade.value-
datamodulo.tblsaiprodutossaiquantidade.value;
datamodulo.tblprodutos.Refresh;

e desta forma consegui dar baixa no na tabela produtos que estou usando tmbém como controle de estoque
Eu ja tinha feito esta mesma forma antes, nao tinha dado certo porque o valor dos campos descritos a cima eu coloquei como inteiro então dava erro na hora de copilar.
O que você acha desta formula que eu fiz será viavel p mim ou irá me trazer algum problema no futuro ??

Desde ja le agradeço a atenção
Responder

06/04/2013

William

Jean, existem diversas maneiras de se controlar estoque, no meu post eu demonstrei a forma como controlo o estoque nas minhas aplicações onde deixo as regras de negócio no banco.

Mas já vi casos em que após finalizar uma venda ou saída, o sistema executa um loop e vai baixando produto a produto, é outra forma!!

Só aconselho vc a baixar o estoque somente ao finalizar esse documento de saída, não usando evento dos DBEdits, fica mais legível também para futuras manutenções.
Responder

22/09/2015

Antony Moraes

alguem poderia me ajudar gostaria de saber como procedo com uma trigger para que de baixa em varios produtos de uma vez exemplo uma cesta basica que tem varios produtos cadastrados,criei um vinculo e consegui dar baixa em todos mas quando vendo um produto individual por ele ter o vinculo acaba dando baixa nos outros tambem.
Responder