Jump to content


Photo

Trigger Para Baixar Estoque De Kits


  • Faça o login para participar
2 replies to this topic

#1 Luan Stocco

Luan Stocco

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Não informado

Posted 20/01/2012, 07:37

Bom dia Pessoal,

Estou com o seguinte problema.

Tenho uma tabela de produtos, nesta tabela esta os produtos finais e tambem as materias primas (que podem ser vendidas avulso).

Por exemplo:

Produto Caminhão dentro deste produto esta vinculado varios outros produtos Peneu, Mangueira, so que dentre estes vinculos podem ocorrer outros vinculos, ex, Mangueira pode ter Terminal, Rosca e assim sucessivamente, ou seja, podem ter sei la 10 20 cadeias de vinculo.

Voltando a base de dados, eu tenho essa tabela de produtos contendo tudo, e tenho outra tabela de vinculo, que faço a relação entre os produtos, e tenho outra tabela de estoque, que é onde eu faço as baixas de estoque.

O que acontece é o seguinte, preciso que no momento que um produto seja debitado do estoque, no caso o Caminhão automaticamente TODOS os vinculos sejam debitados tambem, fiz uma trigger para isso, so que o mysql entende que é um loop infinito.

Segue tabelas e triggers.

TABELA DE PRODUTOS
CREATE TABLE `produtos` (
	`id_produto` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
	`cod_produto` VARCHAR(255) NULL DEFAULT NULL,
	`desc_produto` VARCHAR(120) NULL DEFAULT NULL,
	`valor_produto` DECIMAL(10,2) UNSIGNED NULL DEFAULT NULL,
	PRIMARY KEY (`id_produto`),
	UNIQUE INDEX `id_produto` (`id_produto`)
)

TABELA DE VINCULOS
CREATE TABLE `estrutura` (
	`id_estrutura` BIGINT(20) NOT NULL AUTO_INCREMENT,
	`id_produto` BIGINT(20) NOT NULL DEFAULT '0',
	`id_produto_vinculado` BIGINT(20) NOT NULL DEFAULT '0',
	`nome_produto` VARCHAR(120) NOT NULL,
	`qtde_estrutura` DECIMAL(10,2) NOT NULL DEFAULT '0.00',
	PRIMARY KEY (`id_estrutura`)
)

TABELA DE ESTOQUE
CREATE TABLE `estoque` (
	`id_estoque` BIGINT(20) NOT NULL AUTO_INCREMENT,
	`id_venda` BIGINT(20) NULL DEFAULT '0',
	`id_produto` BIGINT(20) NULL DEFAULT '0',
	`tipo_estoque` CHAR(7) NULL DEFAULT 'Entrada',
	`qtde_estoque` DECIMAL(10,2) NULL DEFAULT '0.00',
	`obs_estoque` VARCHAR(50) NULL DEFAULT NULL,
	PRIMARY KEY (`id_estoque`)
)

TRIGGER NA TABELA DE ESTOQUE
DROP TRIGGER IF EXISTS `estoque_trigger`;
SET SESSION SQL_MODE='';
DELIMITER //
CREATE TRIGGER `estoque_trigger` AFTER INSERT ON `estoque` FOR EACH ROW BEGIN
INSERT INTO estoque(id_venda,id_produto,tipo_estoque,qtde_estoque,obs_estoque) SELECT NEW.id_venda,id_produto_vinculado,NEW.tipo_estoque,(NEW.qtde_estoque * qtde_estrutura),NEW.obs_estoque FROM estrutura WHERE id_produto = NEW.id_produto;
END//
DELIMITER ;

me ajudem galera heheheh..

Abraço

#2 Luan Stocco

Luan Stocco

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Não informado

Posted 23/01/2012, 07:49

ninguem?

#3 mentio

mentio

    Novato no fórum

  • Usuários
  • 4 posts
  • Sexo:Masculino
  • Localidade:london

Posted 11/03/2012, 10:35

me ajudem galera heheheh..Posted Image




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq