Atualizar valores de tabelas pai x filho

Eu já revisei o projeto diversas vezes esta do mesmo modo que voce ensinou…

O problema esta mesmo na Trigger da Materia Prima ele atualiza todos os produtos mas com o mesmo preço.

As demais Triggers funcionam normalmente.

Bom vou da um tempo… e vou tentar refazer tudo pra ver se acerto.

Agradeço!

Al alterar um registro de matéria prima, esta aciona a trigger after update que por si recalcula (faz update) em todos os registos cujo oid seja dessa materia prima em prod_mat,

Alterar materia prima não executa update em produto.

Reveja a trigger after update em prod_mat eh essa que executa a alteração nos produtos.

Haroldo.

Meus sinceros agradecimentos.

Agora esta funcionando ok… realmente o problema era na Trigger After Update ( tabela: mat_prod )

Surgiu uma duvida em relação a tela de cadastro de produto acabado, por favor preciso de mais uma ajuda…

Ao cadastrar um produto acabado, esse produto vai em uma determinada embalagem. (1 para muitos)

Eu fiz o cadastro de embalagem do modo que você me ensinou aqui, pois cada embalagem esta vinculada a N matérias primas…
esta funcionando perfeitamente.

Minha duvida é a seguinte.

Na tela de cadastro de produto acabado, eu fiz um mestre / detalhe para as embalagens…

Pergunta: É possível retornar as embalagens cadastradas com checkbox?
Ao selecionar uma embalagem, o sistema deve fazer o seguinte calculo automatico, semelhante a Trigger materia prima…

custo_total_produto_acabado * volume_da_embalagem + preco_embalagem_selecionada

Caso ajude segue imagem.

Antes: http://lucheti.com.br/cadastro_pf_01.jpg
(feito através de iframe , porem era necessario clicar em calcular)

Depois: http://lucheti.com.br/cadastro_pf_02.jpg

Devo um favor a ti!

Gratidão.

AI tem que mexer novamente na modelagem.
em produtos acabados você deve ter:

custo_total_materias_primas (esse será o calculados pelas triggers)

Se for apenas uma embalagem por produto:

criar id_embalagem na tabela de produtos.

Na app form de produtos, criar um checkbox para o campo id_embalagem e em lookup automatico jogar o select.

criar campo custo_final_produto.

em onbeforeinsert e update, fazer sc_lookup e pegar o vaor da embalagem e somar calcular custo_final_produto = custo_total_materias_primas + custo_embalagem.

criar trigger para embalagens, quando alterar produto fazer update em produto baseado no calculo anterior.

nas triigger prod_mat prever o calculo anterior.

você aprendendo o conceito das triggers conseguirá ir em frente.

Haroldo.

Eu entendi parcialmente a sua solução… só não ficou claro como vou salvar o valor de cada embalagem selecionada?

Na imagem abaixo, eu fiz um select e a cada linha o código criava um campo de texto dinamicamente…
http://lucheti.com.br/cadastro_pf_01.jpg

São N embalagens para 1 produto.

No caso eu devo criar um id_embalagem na tabela PRODUTOS e também o campo custo_embalagem (para salvar o valor) ?

Fiz uma pergunta no meu post anterior.

Não esta claro como você aponta uma embalagem para o produto.

Cada produto tem apenas uma única embalagem?
Cada embalagem tem apenas um único produto?
O Custo do produto esta diretamente relacionado a embalagem? Acredito que sim, somente quando um produto tem embalagem única e própria, pois geralmente o custo da embalagem é apreciado no faturamento deste produto.

Na sua imagem, tem um campo input na linha de cada tipo de embalagem o que vai nele?

Cada produto tem apenas uma única embalagem?
R: Não. O produto pode ter inúmeras embalagens

Cada embalagem tem apenas um único produto?
R: Cada embalagem tem inúmeras matérias primas que a compõe. (por exemplo Frasco 1L, vai rotulo, etiqueta, caixa de papelão… o próprio frasco…) cada embalagem pode ir para N produtos.

O Custo do produto esta diretamente relacionado a embalagem?
R: O valor da embalagem é calculado atraves da quantidade de materias primas que a compõe. O mesmo ocorre com o produto.
O custo do produto, acredito, não esta relacionado a embalagem, porém ao selecionar uma embalagem, é formado outro custo mas não para o produto acabado e nem para a embalagem cadastrada, neste caso é um outro valor que deve ser armazenado.

Na sua imagem, tem um campo input na linha de cada tipo de embalagem o que vai nele?
R: O input recebe o valor de cada embalagem selecionada (a resposta acima)

Agradeço!

Eh acho que não estou conseguindo racionar bem hoje.

Tudo bem…

Mas como eu faço um checkbox pegando de uma tabela 4 colunas e acrescentando um input text?

Por exemplo:
ID | Produto | Preço compra | Custo

Semelhante a imagem abaixo…
http://lucheti.com.br/cadastro_pf_01.jpg

Sobre a modelagem eu fiz uma outra tabela ( prod_emb ) no qual armazena o id_embalagem, id_produto_acabado, quant e total

Na hora do cadastro, funciona, esta tudo amarrrado… ainda nao fiz a Trigger para atualizar os valores na hora do insert / update / delete…

Agradeço

Mestre detalhe.

Adicione apenas as embalagens desejadas, não precisa de checkbox.

Voce diz o mesmo mestre / detalhe que vc ensinou?

produto x materia prima

Com checkbox nao tem jeito mesmo?

Acredito que você não consiga ainda desenvolver algo do jeito que você deseja.

Teria que ser na mão.

Um campo checkbox, com eventos ajax, ao selecionar, habilitar um campo manual do tipo text, após digitar o valor salvar automáticamente.

Entendi.

Eu desenvolvi aquela tela que te mostrei… o problema é que a cada checkbox selecionado… eu passava seu valor para um campo input (invisivel) (deixei 40 inputs invisíveis) … quando o cadastro estava concluído ainda era necessário intervenção do usuario para fazer os calculos… muito trabalhoso…

$zera_emb = “0”;
// Loop para exibir dados
$i = 0;
while ($linha = mysql_fetch_array($sql)){
$i++;

$cont = “”;
$id_embalagem = $linha[“id_embalagem”];
$desc_emb = $linha[“desc_emb”];
$volume_emb = $linha[“volume_emb”];
$custo_emb = $linha[“custo_emb”];

// Exibe os valores - traz o registro do BD e exibe numa text field
echo "$cont







$desc_emb
$volume_emb
$custo_emb

<input type=checkbox name="$desc_emb" id="$i" onClick="document.getElementById(‘emb_$i’).value = ‘$id_embalagem|$desc_emb|$volume_emb|$custo_emb’ " />

" ;

}

?>

Vou ver se encontro algo… se nao tiver jeito vou fazer o mestre / detalhe que voce me ensinou no começo do topico

Agradeço.

Desculpe novamente por esse transtorno… mas volto a recorrer o fórum pois surgiu mais um problema …

O meu primeiro problema foi solucionado com a dica do Haroldo… porém…

tive de mexer na modelagem do sistema e acredito que me perdi em relação de como atualizar valores através da Trigger… vamos lá

Estrutura:

Tabela Materia Prima — (funcionando ok)

id_materia_prima
desc_materia_prima
genero_materia_prima
preco_compra_mp
icms_mp
pis_mp
cofins_mp
ipi_mp
ii_mp
frete_mp
comissao_mp
preco_final_mp

====================

Tabela Produto Acabado — (funcionando ok)

id_produto_final
descricao_pf
genero_pf
custo_total_pf

====================

Tabela Produto x Materia Prima (funcionando ok)

id_produto_acabado
id_materia_prima
percentual_pf
total_pf

====================

Tabela Embalagem (funcionando ok)

id_embalagem
desc_embalagem
volume_embalagem
custo_embalagem

====================

Tabela Embalagem x Materia Prima (funcionando ok)

id_emb_em
id_mp_em
quantidade_mp_em
total_mp_em

================

Tabela Produto x Embalagem (Problema)

id_emb
id_pf
vol_emb
total_emb
preco_emb

Nao consigo fazer uma trigger para atualizar os valores da tabela Produto x Embalagem, essa tabela é um Mestre / Detalhe dentro da tela cadastro de produto. A parte de inserir o registro esta ok, nao consigo fazer a Trigger para atualizar essa tabela quando a tabela Embalagem é alterada.

Agradeço a ajuda.

Consegui resolver o problema…

O erro estava no Metodo PHP no qual faz a atulização dos produtos.

Metodo PHP (AtulizaProduto)

$_sel=“SELECT custo_emb FROM cadastro_embalagem WHERE (id_embalagem = {id_emb})”;
sc_lookup(ds,$_sel);
$_valor= $ds[0][0];
sc_master_value(‘custo_emb’, $_valor);
{total_emb}=$_valor;

Gratidão!

Thiago.

O conceito foi passado e mais com um exemplo pratico, coisa que acontece muito pouco nesse fórum, aplica-lo as suas necessidades agora tem que ser com você.

O processo eh o mesmo, reveja com calma e estude triggers stored procedes e functions.