Fórum Produto Composto #415780

23/04/2012

0

Boa noite a todos,


Fiz varias pesquisas na net e não achei algo que me ajudasse por completo.



Estou desenvolvendo um sistema ontem faço o controle de estoque com 3 trigges (after insert, after delete, after update). Para um produto normal funciona perfeitamente.

Agora estou precisando informar dentro do sistema que um produto é composto por outros produtos.
Como faço para dar baixa neles depois atraves de procedure ou triggers?
Willian Amor

Willian Amor

Responder

Posts

23/04/2012

Joel Rodrigues

Não entendi bem sua dificuldade.
Vamos a alguns detalhes:
1) Que banco você usa?
2) Você quer dar baixa nos produtos que compõe ou no que é composto?
3) Qual está sendo sua real dificuldade?
Responder

Gostei + 0

24/04/2012

Willian Amor

Não entendi bem sua dificuldade.
Vamos a alguns detalhes:
1) Que banco você usa?
2) Você quer dar baixa nos produtos que compõe ou no que é composto?
3) Qual está sendo sua real dificuldade?


ola bom dia,


Em relação as suas perguntas:

1 - uso delphi 7 com banco de dados firebird 2.1.

2 - Entao ies o processo. No caso acho q teria q dar baixa no produto e nos produtos que o compoem.

Exemplo.

Se tenho um Prato Feito, o mesmo contera 200g de arroz, 200g de feijão, 1 bife, etc.

Acho eu que teria q baixar todos, não?





3 - Como vou gravar via delhi no cadastro do produto e na hora da baixa fazer ele entender que os itens fazer parte de um determinado produto?


no meu banco tenho uma tabela produtos e uma tabela produtos_itens. Vou fazer o mestre detalhe guardar na tabela produtos_itens os itens de um produto.



ideias e sugestões são bem vindas. :)

Responder

Gostei + 0

24/04/2012

Joel Rodrigues

Bom, faz muito tempo que não uso Firebird, na verdade, usei muito pouco e nem tenho instalado aqui. Mas vou te dar uma ideia de como funciona.
Você precisará usar um CURSOR para ler cada composto do produto que está sendo vendido. A rotina será a seguinte:
PARA cada registro na tabela de compostos do produto vendido FAÇA
ATUALIZE a tabela de compostos, reduzindo a quantidade de acordo com a quantidade que compõe o produto vendido

Isso pode ser feito no momento em que você dá baixa no produto vendido.
Pesquise sobre cursores e siga esse raciocínio.
Infelizmente não posso nem te mostrar um código pronto, devido ao que expliquei, mas no que eu puder ajudar, conte comigo.

Boa sorte em seus projetos.
Responder

Gostei + 0

24/04/2012

Joel Rodrigues

Bom, faz muito tempo que não uso Firebird, na verdade, usei muito pouco e nem tenho instalado aqui. Mas vou te dar uma ideia de como funciona.
Você precisará usar um CURSOR para ler cada composto do produto que está sendo vendido. A rotina será a seguinte:
PARA cada registro na tabela de compostos do produto vendido FAÇA
ATUALIZE a tabela de compostos, reduzindo a quantidade de acordo com a quantidade que compõe o produto vendido

Isso pode ser feito no momento em que você dá baixa no produto vendido.
Pesquise sobre cursores e siga esse raciocínio.
Infelizmente não posso nem te mostrar um código pronto, devido ao que expliquei, mas no que eu puder ajudar, conte comigo.

Boa sorte em seus projetos.
Responder

Gostei + 0

24/04/2012

Willian Amor

Bom, faz muito tempo que não uso Firebird, na verdade, usei muito pouco e nem tenho instalado aqui. Mas vou te dar uma ideia de como funciona.
Você precisará usar um CURSOR para ler cada composto do produto que está sendo vendido. A rotina será a seguinte:
PARA cada registro na tabela de compostos do produto vendido FAÇA
ATUALIZE a tabela de compostos, reduzindo a quantidade de acordo com a quantidade que compõe o produto vendido

Isso pode ser feito no momento em que você dá baixa no produto vendido.
Pesquise sobre cursores e siga esse raciocínio.
Infelizmente não posso nem te mostrar um código pronto, devido ao que expliquei, mas no que eu puder ajudar, conte comigo.

Boa sorte em seus projetos.


ola amigo,

obrigado por se prontificar.

Na verdade eu tinha pesquisado e acho algo relacionado usando o For Select.

O que eu não sei realmente é montar o codigo dentro do banco e jogar na procedure.

Tava atraz de um exemplo.
Responder

Gostei + 0

24/04/2012

Joel Rodrigues

Rapaz, pedi um exemplo a um amigo meu e ele me forneceu o seguinte código:

CREATE OR ALTER PROCEDURE NEW_PROCEDURE 
as
begin
  /* Procedure Text */
  for
  select
        campo1,
        campo2,
        campo3
  from tabela
  where condicao
  into :vinto1,dados do campo1
       :vinto2,dados do campo2
       :vinto3;dados do campo3
  begin
       --Exemplo de insert para o for
       insert into tabela values (:vinto1, :vinto2, :vinto3);
  end
  suspend;
end

Responder

Gostei + 0

24/04/2012

Francisco Macário

Ola boa noite.

Como esta estruturado seu controle de estoque?
Quais tabelas estão envolvidas?

O ideal para trabalhar com produto (composto ou semi-acabado) é:

Tabela de produtos
Tabela de composição
Tabela de estoque

Ao vender um produto você baixa a quantidade dele na tabela estoque, lista a tabela de composição e baixa na tabela de estoque.

Nem sempre fazer uso de trigger é aplicavel para todos os eventos, pense nisso.
Responder

Gostei + 0

24/04/2012

Willian Amor

Ola boa noite.

Como esta estruturado seu controle de estoque?
Quais tabelas estão envolvidas?

O ideal para trabalhar com produto (composto ou semi-acabado) é:

Tabela de produtos
Tabela de composição
Tabela de estoque

Ao vender um produto você baixa a quantidade dele na tabela estoque, lista a tabela de composição e baixa na tabela de estoque.

Nem sempre fazer uso de trigger é aplicavel para todos os eventos, pense nisso.


Tenho somente a tabela produtos (a qual faço tambem o controle de estoque) e a tabela composição.

Rapaz, pedi um exemplo a um amigo meu e ele me forneceu o seguinte código:

#Código

CREATE OR ALTER PROCEDURE NEW_PROCEDURE
as
begin
/* Procedure Text */
for
select
campo1,
campo2,
campo3
from tabela
where condicao
into :vinto1,dados do campo1
:vinto2,dados do campo2
:vinto3;dados do campo3
begin
--Exemplo de insert para o for
insert into tabela values (:vinto1, :vinto2, :vinto3);
end
suspend;
end


vlw pela ajuda, to tentando montar baseando no codigo que voce me passou mais ainda nao obtive sucesso.



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar