Produto: | Protheus |
Ocorrência: | Exemplo prático de como cadastrar operações em rotinas automáticas. |
Passo a passo: | O programa PCPA124 - Operações utiliza o conceito de MVC. Para possibilitar sua utilização em rotinas automáticas, é necessário instanciar o modelo de dados do programa e executar as funções responsáveis pela persistência de dados. Para mais detalhes dos métodos disponíveis nas rotinas MVC, consulte o manual https://tdn.totvs.com/display/public/framework/AdvPl+utilizando+MVC. Abaixo estão fontes com exemplos. |
Observações: | Para possibilitar a utilização de variáveis estáticas cujo nome inicia com MODEL_OPERATION_ e para que funcione corretamente o comando Prepare environment, é necessário utilizar os includes FWMVCDEF.CH e TBICONN.CH no arquivo fonte. |
Exemplo Inclusão
#INCLUDE 'FWMVCDEF.CH' #Include "TBICONN.CH" //Inclusão de um roteiro User Function incRot() Local oModel, oMdlDet, oMdlH3 Local cErro := "" Local lRet := .T. Prepare environment empresa '99' filial '01' modulo 'PCP' INCLUI := .T. ALTERA := .F. oModel := FWLoadModel('PCPA124') //Carrega o modelo do programa PCPA124 oModel:SetOperation(MODEL_OPERATION_INSERT) //Seta a operação de inclusão no modelo. If oModel:Activate() //Ativa o modelo. If !oModel:SetValue("PCPA124_CAB","G2_CODIGO" , "02") //Atribui o código do roteiro no modelo. (G2_CODIGO) //Se ocorreu algum erro na atribuição, recupera o erro. cErro := u_getErr(oModel) lRet := .F. EndIf If lRet .And. !oModel:SetValue("PCPA124_CAB","G2_PRODUTO", "PRD_EXEMPLO") //Atribui o código do produto no modelo. (G2_PRODUTO) //Se ocorreu algum erro na atribuição, recupera o erro. cErro := u_getErr(oModel) lRet := .F. EndIf oMdlDet := oModel:GetModel("PCPA124_SG2") //Recupera o submodelo detalhe. If lRet .And. !oMdlDet:SetValue("G2_OPERAC","10") //Atribui o código da operação no modelo. (G2_OPERAC) //Se ocorreu algum erro na atribuição, recupera o erro. cErro := u_getErr(oModel) lRet := .F. EndIf If lRet .And. !oMdlDet:SetValue("G2_DESCRI","OPERAC. TESTE") //Atribui a descrição da operação no modelo. (G2_DESCRI) //Se ocorreu algum erro na atribuição, recupera o erro. cErro := u_getErr(oModel) lRet := .F. EndIf If lRet .And. !oMdlDet:SetValue("G2_RECURSO","REC01") //Atribui o código do recurso no modelo. (G2_RECURSO) //Se ocorreu algum erro na atribuição, recupera o erro. cErro := u_getErr(oModel) lRet := .F. EndIf If lRet .And. !oMdlDet:SetValue("G2_SETUP",1) //Atribui o tempo de setup no modelo. (G2_SETUP) //Se ocorreu algum erro na atribuição, recupera o erro. cErro := u_getErr(oModel) lRet := .F. EndIf If lRet .And. !oMdlDet:SetValue("G2_LOTEPAD",100) //Atribui o lote padrão no modelo. (G2_LOTEPAD) //Se ocorreu algum erro na atribuição, recupera o erro. cErro := u_getErr(oModel) lRet := .F. EndIf If lRet .And. !oMdlDet:SetValue("G2_TEMPAD",1) //Atribui o tempo padrão no modelo. (G2_TEMPAD) //Se ocorreu algum erro na atribuição, recupera o erro. cErro := u_getErr(oModel) lRet := .F. EndIf If lRet .And. !oMdlDet:SetValue("G2_TPOPER",'1') //Atribui o tipo de operação no modelo. (G2_TPOPER) //Se ocorreu algum erro na atribuição, recupera o erro. cErro := u_getErr(oModel) lRet := .F. EndIf If lRet .And. !oMdlDet:SetValue("G2_CTRAB",'CT01') //Atribui o Centro de trabalho no modelo. (G2_CTRAB) //Se ocorreu algum erro na atribuição, recupera o erro. cErro := u_getErr(oModel) lRet := .F. EndIf If lRet //Adiciona recursos alternativos. oMdlH3 := oModel:GetModel("PCPA124_SH3_R") If !oMdlH3:SetValue("H3_RECALTE",'REC02') //Atribui o Recurso alternativo //Se ocorreu algum erro na atribuição, recupera o erro. cErro := u_getErr(oModel) lRet := .F. EndIf If lRet .And. !oMdlH3:SetValue("H3_TIPO",'A') //Atribui o Tipo do Recurso alternativo //Se ocorreu algum erro na atribuição, recupera o erro. cErro := u_getErr(oModel) lRet := .F. EndIf //Adiciona um novo recurso alternativo If lRet .And. !oMdlH3:AddLine() lRet := .F. cErro := u_getErr(oModel) EndIf If lRet .And. !oMdlH3:SetValue("H3_RECALTE",'REC03') //Atribui o Recurso alternativo //Se ocorreu algum erro na atribuição, recupera o erro. cErro := u_getErr(oModel) lRet := .F. EndIf If lRet .And. !oMdlH3:SetValue("H3_TIPO",'A') //Atribui o Tipo do Recurso alternativo //Se ocorreu algum erro na atribuição, recupera o erro. cErro := u_getErr(oModel) lRet := .F. EndIf EndIf If lRet .And. !oMdlDet:AddLine() //Adiciona uma nova linha no modelo detalhe //Se ocorreu algum erro ao adicionar uma nova linha, recupera o erro cErro := u_getErr(oModel) lRet := .F. EndIf If lRet .And. !oMdlDet:SetValue("G2_OPERAC","20") //Atribui o código da operação no modelo. (G2_OPERAC) //Se ocorreu algum erro na atribuição, recupera o erro. cErro := u_getErr(oModel) lRet := .F. EndIf If lRet .And. !oMdlDet:SetValue("G2_DESCRI","OPERAC. TESTE 2") //Atribui a descriçãoo da operação no modelo. (G2_DESCRI) //Se ocorreu algum erro na atribuição, recupera o erro. cErro := u_getErr(oModel) lRet := .F. EndIf If lRet .And. !oMdlDet:SetValue("G2_RECURSO","REC02") //Atribui o código do recurso no modelo. (G2_RECURSO) //Se ocorreu algum erro na atribuição, recupera o erro. cErro := u_getErr(oModel) lRet := .F. EndIf If lRet .And. !oMdlDet:SetValue("G2_SETUP",0) //Atribui o tempo de setup no modelo. (G2_SETUP) //Se ocorreu algum erro na atribuição, recupera o erro. cErro := u_getErr(oModel) lRet := .F. EndIf If lRet .And. !oMdlDet:SetValue("G2_LOTEPAD",90) //Atribui o lote padrão no modelo. (G2_LOTEPAD) //Se ocorreu algum erro na atribuição, recupera o erro. cErro := u_getErr(oModel) lRet := .F. EndIf If lRet .And. !oMdlDet:SetValue("G2_TEMPAD",1) //Atribui o tempo padrão no modelo. (G2_TEMPAD) //Se ocorreu algum erro na atribuição, recupera o erro. cErro := u_getErr(oModel) lRet := .F. EndIf If lRet .And. !oMdlDet:SetValue("G2_TPOPER",'1') //Atribui o tipo de operação no modelo. (G2_TPOPER) //Se ocorreu algum erro na atribuição, recupera o erro. cErro := u_getErr(oModel) lRet := .F. EndIf If lRet .And. !oMdlDet:SetValue("G2_CTRAB",'CT01') //Atribui o Centro de trabalho no modelo. (G2_CTRAB) //Se ocorreu algum erro na atribuição, recupera o erro. cErro := u_getErr(oModel) lRet := .F. EndIf If lRet //Adiciona recursos alternativos. oMdlH3 := oModel:GetModel("PCPA124_SH3_R") If !oMdlH3:SetValue("H3_RECALTE",'REC03') //Atribui o Recurso alternativo //Se ocorreu algum erro na atribuição, recupera o erro. cErro := u_getErr(oModel) lRet := .F. EndIf If lRet .And. !oMdlH3:SetValue("H3_TIPO",'A') //Atribui o Tipo do Recurso alternativo //Se ocorreu algum erro na atribuição, recupera o erro. cErro := u_getErr(oModel) lRet := .F. EndIf EndIf If lRet If oModel:VldData() //Valida as informações lRet := oModel:CommitData() //Efetiva o cadastro. If !lRet cErro := u_getErr(oModel) EndIf Else cErro := u_getErr(oModel) lRet := .F. EndIf EndIf oModel:DeActivate() //Desativa o modelo. Else lRet := .F. EndIf Return lRet
Exemplo Alteração
#INCLUDE 'FWMVCDEF.CH' #Include "TBICONN.CH" //Alteração de um roteiro User Function altRot() Local oModel, oMdlDet, oMdlH3 Local cErro := "" Local lRet := .T. Prepare environment empresa '99' filial '01' modulo 'PCP' INCLUI := .F. ALTERA := .T. SG2->(dbSetOrder(1)) SG2->(dbSeek(xFilial("SG2")+"PRODUTO" + "CODIGO" + "OPERACAO")) //Posiciona no roteiro para alteração. oModel := FWLoadModel('PCPA124') //Carrega o modelo do programa PCPA124 oModel:SetOperation(MODEL_OPERATION_UPDATE) //Seta a operação de alteração no modelo. If oModel:Activate() //Ativa o modelo. oMdlDet := oModel:GetModel("PCPA124_SG2") //Recupera o submodelo detalhe. If !oMdlDet:AddLine() //Adiciona uma nova linha no modelo detalhe cErro := u_getErr(oModel) lRet := .F. EndIf If lRet .And. !oMdlDet:SetValue("G2_OPERAC","30") //Atribui o código da operação no modelo. (G2_OPERAC) //Se ocorreu algum erro na atribuição, recupera o erro. cErro := u_getErr(oModel) lRet := .F. EndIf If lRet .And. !oMdlDet:SetValue("G2_DESCRI","OPERAC. TESTE 3") //Atribui a descriçãoo da operação no modelo. (G2_DESCRI) //Se ocorreu algum erro na atribuição, recupera o erro. cErro := u_getErr(oModel) lRet := .F. EndIf If lRet .And. !oMdlDet:SetValue("G2_RECURSO","REC03") //Atribui o código do recurso no modelo. (G2_RECURSO) //Se ocorreu algum erro na atribuição, recupera o erro. cErro := u_getErr(oModel) lRet := .F. EndIf If lRet .And. !oMdlDet:SetValue("G2_SETUP",0) //Atribui o tempo de setup no modelo. (G2_SETUP) //Se ocorreu algum erro na atribuição, recupera o erro. cErro := u_getErr(oModel) lRet := .F. EndIf If lRet .And. !oMdlDet:SetValue("G2_LOTEPAD",70) //Atribui o lote padrão no modelo. (G2_LOTEPAD) //Se ocorreu algum erro na atribuição, recupera o erro. cErro := u_getErr(oModel) lRet := .F. EndIf If lRet .And. !oMdlDet:SetValue("G2_TEMPAD",2) //Atribui o tempo padrão no modelo. (G2_TEMPAD) //Se ocorreu algum erro na atribuição, recupera o erro. cErro := u_getErr(oModel) lRet := .F. EndIf If lRet .And. !oMdlDet:SetValue("G2_TPOPER",'1') //Atribui o tipo de operação no modelo. (G2_TPOPER) //Se ocorreu algum erro na atribuição, recupera o erro. cErro := u_getErr(oModel) lRet := .F. EndIf If lRet .And. !oMdlDet:SetValue("G2_CTRAB",'CT01') //Atribui o Centro de trabalho no modelo. (G2_CTRAB) //Se ocorreu algum erro na atribuição, recupera o erro. cErro := u_getErr(oModel) lRet := .F. EndIf //Altera um recurso alternativo. If lRet //Posiciona na operação 10. If oMdlDet:SeekLine({{"G2_OPERAC","10"}}) //Recupera o modelo dos recursos alternativos oMdlH3 := oModel:GetModel("PCPA124_SH3_R") //Posiciona no recurso alternativo REC02 If oMdlH3:SeekLine({{"H3_RECALTE","REC02"}}) //Altera a eficiência If !oMdlH3:SetValue("H3_EFICIEN",50) //Atribui o Centro de trabalho no modelo. (G2_CTRAB) //Se ocorreu algum erro na atribuição, recupera o erro. cErro := u_getErr(oModel) lRet := .F. EndIf EndIf EndIf EndIf If lRet If oModel:VldData() //Valida as informações lRet := oModel:CommitData() //Efetiva o cadastro. If !lRet cErro := u_getErr(oModel) EndIf Else cErro := u_getErr(oModel) lRet := .F. EndIf EndIf oModel:DeActivate() //Desativa o modelo. Else lRet := .F. EndIf Return lRet
Exemplo exclusão
#INCLUDE 'FWMVCDEF.CH' #Include "TBICONN.CH" //Exclusão de um roteiro User Function excRot() Local oModel Local cErro := "" Local lRet := .T. Prepare environment empresa '99' filial '01' modulo 'PCP' INCLUI := .F. ALTERA := .F. SG2->(dbSetOrder(1)) SG2->(dbSeek(xFilial("SG2")+"PRODUTO" + "CODIGO" + "OPERACAO")) //Posiciona no roteiro para alteração. oModel := FWLoadModel('PCPA124') //Carrega o modelo do programa PCPA124 oModel:SetOperation(MODEL_OPERATION_DELETE) //Seta a operação de exclusão no modelo. If oModel:Activate() //Ativa o modelo. If oModel:VldData() //Valida as informações lRet := oModel:CommitData() //Efetiva a alteração If !lRet cErro := u_getErr(oModel) EndIf Else cErro := u_getErr(oModel) lRet := .F. EndIf Else lRet := .F. EndIf Return lRet
Função getErr (Função que é chamada nos exemplos)
User Function getErr(oMdl) Local aErro := oMdl:GetErrorMessage() Local cErro := "" cErro := aErro[MODEL_MSGERR_IDFORM]+":"+; aErro[MODEL_MSGERR_IDFIELD]+":"+; aErro[MODEL_MSGERR_IDFORMERR]+":"+; aErro[MODEL_MSGERR_IDFIELDERR]+":"+; aErro[MODEL_MSGERR_ID]+; aErro[MODEL_MSGERR_MESSAGE]+"/"+aErro[MODEL_MSGERR_SOLUCTION] Conout(cErro) Return cErro
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas