Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Só coloquei o exemplo dentro de uma macro de Bloco de código para facilitar na hora de copiar.

...

Produto:

Microsiga Protheus®

Ocorrência:

Exemplo do funcionamento da rotina automática padrão MVC de Programação de Férias (GPEA050)

Passo a passo:

Bloco de código
languagejava
firstline1
titleExemplo de implementação
linenumberstrue
collapsetrue
#Include 'Protheus.ch'


#Include 'FWMVCDef.ch'


#Include "TBIConn.ch"
User Function GPEA050AUTO()
Local aArea := GetArea()
Local aDadSRA := {}
Local aDadSRF := {}
Local cMatricula := "995522"
Private oModel //Modelo
Private aRotina
Private lGp050Auto := .T. //Variável que define se é inserção automática


User Function GPEA050AUTO()

Local aArea := GetArea()
Local aDadSRA := {}
Local aDadSRF := {}
Local cMatricula := "995522"

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

dbSelectArea("SRA")



dbSetOrder(1)

If 

If !dbSeek(
 xFilial
 xFilial("SRA")
 
 +
 cMatricula)
     Alert("Funcionário não localizado.")
     Return()
Endif
oModel := FWLoadModel
 cMatricula)
     Alert("Funcionário não localizado.")
     Return()
Endif


oModel := FWLoadModel("GPEA050")
 
 //
Carrega o modelo
Carrega o modelo

oModel:SetOperation(MODEL_OPERATION_INSERT)
 
 //
Seta operação de inclusão
Seta operação de inclusão
oModel:Activate()
 
 //
Ativa o modelo
Ativa o modelo

oModel:LoadValue("GPEA050_SRA"
 
 ,
 
 "RA_MAT"
 
 ,
 SRA
 SRA->RA_
MAT 
MAT )


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


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



oModel:SetValue("GPEA050_SRF",
 
 "RF_FILIAL"
 
 ,
 SRA
 SRA->RA_FILIAL)


oModel:SetValue("GPEA050_SRF",
 
 "RF_MAT"
 
 ,
 SRA
 SRA->RA_MAT)


oModel:SetValue("GPEA050_SRF",
 
 "RF_DATABAS"
 
 ,
 CTOD
 CTOD('31/03/2021'))


oModel:SetValue("GPEA050_SRF",
 
 "RF_PD"
 
 ,
 
 '129')


oModel:SetValue("GPEA050_SRF",
 
 "RF_DIASDIR"
 
 ,
 30
 30.0)


oModel:SetValue("GPEA050_SRF",
 
 "RF_
DATAINI 
DATAINI ",
 CTOD
 CTOD('05/04/2020'))


oModel:SetValue("GPEA050_SRF",
 
 "RF_DATAFIM"
 
 ,
 CTOD
 CTOD('19/03/2022'))


oModel:SetValue("GPEA050_SRF",
 
 "RF_STATUS"
 
 ,
 
 '1')

//Validação e Gravação do Modelo
If 


//Validação e Gravação do Modelo
If oModel:VldData()


	oModel:CommitData()


	MsgInfo("
Registro INCLUIDO
Registro INCLUIDO!",
 
 "Atenção")

Else
aErro 

Else
	aErro :=
 
 oModel:GetErrorMessage()

cArqErrAuto 

	
	cArqErrAuto :=
 "Id do formulário de origem
 "Id do formulário de origem:"+
 
 '
 
 ['
 
 +
 AllToChar
 AllToChar(
 aErro
 aErro[1]
 
 )
 
 +
 
 ']'
 
 +
 Chr
 Chr(13)
 
 +
 Chr
 Chr(10)

cArqErrAuto 

	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
oModel:DeActivate()
oModel:Destroy()
oModel := NIL
RestArea(aArea)
 "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

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 "D MG 01 " e Matrícula "995522".


2. Visualizando o registro do funcionário. Ele não possui o período base de férias 31/03/2021 cadastrado.


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


4. O fonte retornou que a inclusã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 foi cadastrado mais um registro para o funcionário, conforme os dados informados na execauto.

OBS: para realizar a manutenção do registro ou a exclusão de uma ou mais linhas, deve-se utilizar MODEL_OPERATION_UPDATE.


Programa Fonte:GPEA050