Olá pessoal,
Temos uma rotina em MVC que possuiu um campo para controle de revisão.
Esse campo se inicia com a letra A, mas gostaria que toda vez que fosse feita uma alteração nesse cadastro, o campo ficasse com a próxima letra.
Ex.: Está com A, ao alterar, o campo já ficaria com B.
Estando B, ao alterar, o campo já ficaria com C.
Tentei usar o seguinte comando no inicializador padrão do campo
IIf(!INCLUI,ALLTRIM(Soma1(ZS1->ZS1_REV)),"A")
Na inclusão preenche com A, mas nas alterações continua ficando somente A, não muda para a próxima letra.
Alguém tem uma ideia de como posso fazer esse ajuste?
Rafael, você vai precisar alimentar esse campo na confirmação do cadastro, essa opção que você colocou não vai funcionar mesmo, utilizar ou o Ponto de entrada ou as operação do modelo.
Olá Rafael, eu peguei esse mesmo tipo de situação e resolvi pelo valida do campo na ViewDef, da uma olhada com fiz e veja se te ajuda.
Simples mas resolveu, se te ajudar marca como resposta, vlw.
Local bVldDoc := {|| u_e42VDoc()}
oView:SetFieldAction( 'ZA5_NUM', bVldDoc)
/*/{Protheus.doc} User Function e42VldDoc
(Fonte responsável por validar a sequencia da contagem pelo numero do documento)
@type Function
@author Leandro Lemos
@since 15/03/2021
@version P12
@param param_name, param_type, param_descr
@return return_var, return_type, return_description
@example
(examples)
@see (links_or_references)
/*/
User Function e42VDoc()
Local aArea := GetArea()
Local oModelPad := FWModelActive()
Local oModel := oModelPad:GetModel('ZA5MASTER')
Local lOk := .T.
Local oView := FWViewActive() //Objeto da View, adicionado para dar refresh após adicioar uma nova linha
Local cSequencia := '001'
//Só processa na inclusão
IF oModel:GetOperation() == MODEL_OPERATION_INSERT
DbSelectArea('ZA5')
DbSetOrder(1)
IF (DbSeek(xFilial('ZA5')+oModel:GetValue('ZA5_NUM')))
While ZA5->(!EOF() .and. ZA5_NUM == oModel:GetValue('ZA5_NUM'))
cSequencia := Soma1(cSequencia)
ZA5->(DBSkip())
EndDo
EndIF
//Setando a sequencia
oModel:SetValue('ZA5_SEQUEN',cSequencia)
//Atualizando a View
oView:Refresh('VIEW_ZA5')
EndIF
RestArea(aArea)
Return lOk
Valeu! Muito obrigado! Deu certo aqui o lance da validação.