Árvore de páginas

Execauto GPEA050(MVC)

Produto:

Microsiga Protheus®

Ocorrência:

Exemplo do funcionamento da rotina automática padrão MVC de Controle de Dias de Direito (GPEA050)

Passo a passo:

Exemplo de implementação
#Include 'Protheus.ch'
#Include 'FWMVCDef.ch'
#Include "TBIConn.ch"
 
User Function GPEA050AUTO()
 
Local aArea := GetArea()
Local cMatricula := "000000000000002"
Local oGridSRF   

Private oModel //Modelo
Private aRotina
Private lGp050Auto := .T. //Variável que define se é inserção automática


// ALTERAÇÃO
//Deve-se definir o modelo que será utilizado na rotina automática e também a operação:
oModel := FwLoadModel("GPEA050")
oModel:SetOperation(MODEL_OPERATION_UPDATE)    

//Posiciona no registro que deverá ser alterado e depois ativa o model
dbSelectArea("SRA")
SRA->(DbSetOrder(1))
SRA->(dbSeek(fwXfilial("SRA")+cMatricula))
SRF->(DbSetOrder(1)) // RF_FILIAL+RF_MAT+DTOS(RF_DATABAS)+RF_PD
SRF->(dbSeek(fwXfilial("SRF")+cMatricula+"20230101"+"129"))

oModel:Activate()     
     
oModel:LoadValue("GPEA050_SRA" , "RA_MAT"       , SRA->RA_MAT )
oModel:LoadValue("GPEA050_SRA" , "RA_NOME"      , SRA->RA_NOME)
oModel:LoadValue("GPEA050_SRA" , "RA_ADMISSA"   , SRA->RA_ADMISSA)

//Posiciona no registro a ser Alterado:
oGridSRF := oModel:GetModel("GPEA050_SRF")
If oGridSRF:SeekLine({{"RF_DATABAS", STOD("20230101")},{"RF_PD", "129"}}, .F., .T.)   
	
	// Informa o campo a ser alterado e o novo valor:  
	oGridSRF:SetValue("RF_DFERVAT" , 30)

    // Valida e Grava do Modelo
	If oModel:VldData()
    	oModel:CommitData()
    	MsgInfo("Registro ALTERADO!", "Atenção")
	Else
    	aErro := oModel:GetErrorMessage()
     
    	cArqErrAuto := "Id do formulário de origem:"+ ' [' + AllToChar( aErro[1] ) + ']' + Chr(13) + Chr(10)
    	cArqErrAuto += "Id do campo de origem: " + ' [' + AllToChar( aErro[2] ) + ']' + Chr(13) + Chr(10)
    	cArqErrAuto += "Id do formulário de erro: " + ' [' + AllToChar( aErro[3] ) + ']' + Chr(13) + Chr(10)
    	cArqErrAuto += "Id do campo de erro: " + ' [' + AllToChar( aErro[4] ) + ']' + Chr(13) + Chr(10)
    	cArqErrAuto += "Id do erro: " + ' [' + AllToChar( aErro[5] ) + ']' + Chr(13) + Chr(10)
    	cArqErrAuto += "Mensagem do erro: " + ' [' + AllToChar( aErro[6] ) + ']' + Chr(13) + Chr(10)
    	cArqErrAuto += "Mensagem da solução: " + ' [' + AllToChar( aErro[7] ) + ']' + Chr(13) + Chr(10)
    	cArqErrAuto += "Valor atribuído: " + ' [' + AllToChar( aErro[8] ) + ']' + Chr(13) + Chr(10)
    	cArqErrAuto += "Valor anterior: " + ' [' + AllToChar( aErro[9] ) + ']' + Chr(13) + Chr(10)
     
    	Alert ('Falha no ExecAuto MVC: ' + (Chr(13) + Chr(10)) + cArqErrAuto)
	EndIf 
Else
     Alert("Registro não encontrado na tabela SRF.")
EndIf

oModel:DeActivate()
oModel:Destroy()
 
oModel := NIL
 
RestArea(aArea)
 
Return()
  
Passo a passo exemplo:

1. Acessando a rotina de Controle de Dias de Direito (GPEA050) e posicionando no funcionário da Filial "0000010001 " e Matrícula "000000000000002".

2. Visualizando o registro do funcionário. Ele não possui valores no campo Dias F.Venc. (RF_DFERVAT) atualizado:

3. Acessando a rotina que chama o fonte do execauto em MVC para o GPEA050.


4. O fonte retornou que a alteração foi realizada com sucesso.

(Obs: Neste passo poderá ser exibido mensagens para que seja corrigido alguns cadastros. Exemplo: Caso não tenha um roteiro de férias dentro do período em aberto o sistema emitirá um alerta para correção).

5. Acessando novamente o cadastro do funcionário é possível notar que o registro  foi alterado conforme os dados informados na execauto.


Programa Fonte:GPEA050