Atualização do conteúdo de um campo pertencente a um formulário MVC, essa atualização é realizada através de validação de usuário ou gatilho executando um loadValue.
O problema estava ao digitar o valor no campo que possui a chamada do loadValue mais de uma vez, onde o valor somente era atualizado de acordo com a regra somente na primeira vez, ao digitar novamente o conteudo do campo não era atualizado.
A ideia que levou a reprodução do comportamento seria atualizar o conteúdo do próprio campo (quando digitado qualquer valor) para um valor de acordo com a regra a ser imposta, antes um gatilho comum (acionado pelo campo e retornado para o próprio) era utilizado pelo cliente, porém após atualização para MVC de algumas rotinas bastante utilizadas, houve uma modificação nessa tratativa.
O comportamento se resume aos seguinte passos : Exemplo utilizando o campo B1_COD (MATA010)
1 - Na tela de inclusão de um produto, digitar um código qualquer.
2 - Na validação de usuário do campo B1_COD existe a chamada da função u_tstB1Cod(), que está escrita da seguinte maneira :
#include "protheus.ch"
function u_tstB1Cod()
local oView := fwViewActive()
oView:setFieldAction( 'B1_COD', { |oView| u_loadCodB1(oView) } )
return .t.
function u_loadCodB1(oView)
local oSb1Master := oView:getModel():getModel("SB1MASTER")
oSb1Master:loadValue("B1_COD", "XPTO123456") //Valor utilizado no teste
oView:refresh()
return .t.
No caso mesmo digitando um valor qualquer no campo 'n' vezes ele será atualizado para "XPTO123456" (conforme exemplo).