[RESOLVIDO] - Função sc_master_value não atualiza Mestre

Olá pessoal.
Tenho um método php:

$sql_001 = "SELECT vr_tt_prod_nf, identra_nf_prod"
   . " FROM 
            vw_soma_tt_nf"
   . " WHERE 
            identra_nf_prod  = '" . {identra_nf_prod} . "'";
sc_lookup(rs_001, $sql_001);
$vvar_vr_tt_prod_nf = {rs_001[0][0]};
/*sc_exec_sql("UPDATE entrada_nf_produto
             SET valor_tt_nf_produto = $vvar_vr_tt_prod_nf
          WHERE identra_nf_prod = {identra_nf_prod}");
*/
$_upd="UPDATE entrada_nf_produto
             SET valor_tt_nf_produto = $vvar_vr_tt_prod_nf
             WHERE identra_nf_prod = {identra_nf_prod}";
sc_exec_sql($_upd);
{total_nf} = $vvar_vr_tt_prod_nf;
sc_master_value('valor_tt_nf_produto', $vvar_vr_tt_prod_nf);

O campo {total_nf} é atualizado corretamente no form detalhe mas no form mestre nada acontece.
Alguém teria alguma sugestão?

Celso no sample tem um exemplo de um app de pedidos que faz justamente o que você quer. Ele atualiza o mestre depois que o detalhe é manipulado. Dê uma olhada no código, é bem fácil de entender.

Fred, você se refere a isso:

[code]

sc_lookup(dataset,“select SUM((quantity*unitprice)- discount) FROM order_details
WHERE orderid = {orderid}”);
if(!empty({dataset[0][0]}))
{
$total = {dataset[0][0]};
sc_exec_sql(“UPDATE orders SET priceorder = $total WHERE orderid = {orderid}”);
sc_format_num($total, ‘.’, ‘,’, 2, ‘S’, ‘1’, ‘’);
sc_master_value(‘priceorder’,$total);
} else {
$total = 0;
sc_format_num($total, ‘.’, ‘,’, 2, ‘S’, ‘1’, ‘’);
sc_master_value(‘priceorder’,$total);
}[/code]
Ainda não consegui ver aonde estou errando.

É isso mesmo, o que ocorre?

Ainda não viu o erro?

Dica tá na penúltima e última linha do código.

Verdade amigo Jailton.

Tenta usar a mesma lógica do exemplo amigo Celso.

sc_lookup (rs, "SELECT vr_tt_prod_nf, identra_nf_prod"
   . " FROM 
            vw_soma_tt_nf"
   . " WHERE 
            identra_nf_prod  = '" . {identra_nf_prod} . "'");

if(!empty({rs[0][0]})){

sc_exec_sql("UPDATE entrada_nf_produto SET valor_tt_nf_produto = $vvar_vr_tt_prod_nf
             WHERE identra_nf_prod = {identra_nf_prod}");

sc_format_num($vvar_vr_tt_prod_nf, '.', ',',  2,  'S',  '1',  '');
sc_master_value('priceorder',$vvar_vr_tt_prod_nf);

}else{

 $vvar_vr_tt_prod_nf = 0;
 sc_format_num($vvar_vr_tt_prod_nf, '.', ',',  2,  'S',  '1',  '');
 sc_master_value('priceorder',$vvar_vr_tt_prod_nf);

}

Agora rodou mas não atualiza o form mestre.


sc_lookup(dataset,"SELECT vr_tt_prod_nf, identra_nf_prod FROM vw_soma_tt_nf WHERE identra_nf_prod = {identra_nf_prod}");
if(!empty({dataset[0][0]}))
{
 $vvar_vr_tt_prod_nf = {dataset[0][0]};
 sc_exec_sql("UPDATE entrada_nf_produto SET valor_tt_nf_produto = $vvar_vr_tt_prod_nf WHERE identra_nf_prod = {identra_nf_prod}");
 {total_nf} = $vvar_vr_tt_prod_nf;   
 sc_format_num($vvar_vr_tt_prod_nf, '.', ',',  2,  'S',  '1',  '');
 sc_master_value('valor_tt_nf_produto',$vvar_vr_tt_prod_nf);
} else {
 $vvar_vr_tt_prod_nf = 0;
 sc_format_num($vvar_vr_tt_prod_nf, '.', ',',  2,  'S',  '1',  '');
 sc_master_value('valor_tt_nf_produto',$vvar_vr_tt_prod_nf);
}

No Mestre você colocou o que no onLoad ?

No detalhe:
Esse código tem que esta nos eventos: onAfterinsert, onAfterupdate e onAfterdelete. Eu geralmente crio uma função Php e chamo ela nesses eventos. No próprio Sample faz dessa forma.

No mestre:
No evento onLoad eu uso outra função com o seguinte código:

if({idpedido} != ''){

	$str_sql = "SELECT SUM((preco*quantidade)-desconto) AS total
	            FROM pedido_produtos WHERE idpedido = {idpedido}";
	   
	sc_lookup(dataset,$str_sql);
	sc_format_num($total_itens, '.', ',', 2, 'S', '1', '');
	{total_itens} = (!empty({dataset}[0][0]))?{dataset}[0][0]:{total_itens};   
	   
   
}

Onde atualiza o meu campo Total_itens no meu mestre.
Essa ideia peguei do sample e funciona 100%.

O campo [font=dejavu sans mono][size=x-small]vvar_vr_tt_prod_nf [/size][/font]só é atualizado no carregamento do form mestre.

Não está funcionando dinamicamente ao alterar o detalhe não está atualizando o mestre.
Também crio uma função no detalhe que é chamada nos eventos: [font=verdana]onAfterinsert, onAfterupdate e onAfterdelete.[/font]

Me mostra o que vc colocou no onLoad do detalhe!


if ({finaliza_entrada_prod_nf} == 'S'){
	sc_btn_display('delete', 'off');
	sc_btn_display('update', 'off');
	sc_btn_display('new',    'off');	
}else{	
	//sc_field_display({nf_S}, 'off');
	//sc_field_display({nf_N}, 'on');
}

Fiz o teste no Sample deixei em branco o evento onLoad do form mestre.
A app funcionou normal.
https://youtu.be/FgNkhvw0GJQ

O vídeo esta como privado!

Publicado o vídeo:
https://www.youtube.com/watch?v=FgNkhvw0GJQ

Esta funcionando normal!

Então Fred no Samples Funciona já no meu jeguinho não funciona.
Só funciona com refresh no mestre.

Rapaz, hoje fiz uns testes no meu Pedidos, que usa essa mesma lógica do Sample, porém com mais complexidade por causa de “n” validadores, e esta funcionando normal. Acho que o problema esta no seu código! Pois se fosse a macro, não funcionaria no sample.

Um SC field display feito errado faz parar de funcionar todo JavaScript.

Inspecione a pagina e veja se tem erros.

Achei isso no console:

unreachable code after return statement grid_exame_01_ajax.js:53:4
A codificação de caracteres de um documento em um frame não foi declarada. O documento pode ser exibido de forma diferente se aberto fora de um frame. NM_Blank_Page.htm
O método getPreventDefault() não deve mais ser usado. No lugar, use defaultPrevented. jquery.js:2:0
unreachable code after return statement form_entrada_nf_produto:2039:4
TypeError: parent.clearFastMenu is not a function form_entrada_nf_produto:5621:6
O método getPreventDefault() não deve mais ser usado. No lugar, use defaultPrevented. jquery.js:2:0
unreachable code after return statement form_produtos_nf:2532:4
O método getPreventDefault() não deve mais ser usado. No lugar, use defaultPrevented. jquery.js:2:0
A propriedade inputEncoding não deve mais ser usada. form_entrada_nf_produto:123:0
unreachable code after return statement form_produtos_nf:1:56
A propriedade inputEncoding não deve mais ser usada.