[RESOLVIDO] Mestre / Detalhe - Cálculo de valor

Olá pessoal !

Desenvolvi uma aplicação form Mestre/detalhe (Orçamento/itens), sendo que, no grid dos itens, calculo o valor de uma coluna, através de uma function/método php, conforme abaixo:

{VL_SUBTOTAL} = {VL_UNITARIO} * {QT_ITEM} - (({VL_UNITARIO} * {QT_ITEM}) * ({PR_DESCONTO} / 100));

Quando altero QT_ITEM, VL_UNITARIO e PR_DESCONTO, se utilizo o tudo funciona.

Quando altero as mesmas colunas (sem utilizar o ) e clico no botão salvar, ocorre o seguinte:

  • O valor calculado apresenta o valor correto por alguns instantes e, antes de desabilitar a edição do registro, volta a apresentar o valor anterior ao cálculo (apresentando o valor incorreto na tela).

  • Na tabela atualiza corretamente.

  • Se faço nova pesquisa de todas as linhas da grid, fica correto.

Já tentei de tudo. Parece que algum processo padrão resgata o valor antigo de algum lugar e sobrepõe ao valor calculado, só na tela.

Algum dos colegas pode me ajudar nesta parada ?

Sds
Schuma

repita a soma na onvalidate.
Se não tirar o foco do ultimo campo pelo tab o evento ajax deste não é executado.

…repeti a soma na onvalidate; …o problema continua.

…também tentei mudar o foco com sc_set_focus;

Olha só… criei os eventos onchange para os atributos envolvidos no cálculo; criei a function/método php; chamo o método nos eventos ajax onchange; estou chamando o método nos eventos onbeforeupdate e onafterupdate… nada.

O curioso, é que este problema acontece no detalhe da grid, porém se ou clico no botão atualizar do form mestre, atualiza a VL_SUBTOTAL corretamente (acredito que ocorra um refresh forçado).

Haroldo, não tem como fazer um refresh na grid vinculado ao botão salvar da mesma ?

Sds
Schuma

a ação do submit é via ajax, acho que o refresh não vai dar certo.
Faça um teste, acrescente um campo qualquer (manual) na ultima coluna só para teste, e veja se ao sair do ultimo campo valido com o clique do mouse no salvar, se vai funcionar.

Grande Haroldo!

Não entendi direito mas vamos lá… Coloquei um novo campo na grid, após o valor a ser calculado.

Quando clico no novo campo após alterar o “desconto”, calcula o campo corretamente e não muda após salvar (show de bola).

O problema é que, se só alterar o “desconto” e salvar, por alguns instantes o “valor calculado” fica correto e ao desabilitar a edição do registro, após salvar, volta o “valor antigo incorreto” (parece que busca de algum lugar ao fechar a edição).

(na base do MySql fica tudo correto).

Sds
Schuma

tem como disponibilizar na web para vermos rodando?

Grande Haroldo !

Refiz as aplicações Mestre e Detalhe (do zero).

…Resolvido.

Grato pela força !

Sds
Schuma