CONTEÚDO

  1. Visão Geral
  2. Pré-requisitos
  3. Menu
  4. Rotinas
    1. Cadastro das Rotinas Customizadas
    2. Consulta da Rotina Cadastrada
  5. Restrições
  6. Tabelas utilizadas
  7. Exemplo de Rotina MVC + Publicação do Fonte


01. VISÃO GERAL

O Cadastro de Rotinas customizadas tem por objetivo permitir que o usuário cadastre Rotinas Customizadas em MVC no formato do PagPFS (em PO-UI).

02. PRÉ-REQUISITOS

Para a utilização da tela é necessário realizar as configurações do Contas a Pagar para Escritórios de Advocacia - PagPFS

03. MENU

Para utilizar o cadastro de Rotinas Customizadas é necessário criar uma opção de Menu chamando a função PFSAPPCROT.

04. ROTINAS

O cadastro de Rotinas Customizadas contem duas principais funcionalidades:

Porem é necessário obedecer algumas restrições para utilizar a nova funcionalidade da melhor forma possível.

a. Cadastro das Rotinas Customizadas

No campo Rotina MVC o usuário deve informar o nome da Rotina que será invocada na Consulta da rotina. A rotina obrigatoriamente tem de ser MVC (Model View Controller)

Logo abaixo é apresentado uma tabela que será preenchida por Campos que serão utilizados no Filtro da Consulta da Rotina. Esses campos obrigatoriamente tem de ser da Rotina indicada no campo Rotina MVC.

Os campos apresentados no Campo Chave também serão validados, verificando se existem no modelo apresentado.

A Rotina MVC obrigatoriamente tem de ter um Modelo com o pós fixo "MASTER" conforme exemplo abaixo. Se a rotina não tiver um modelo MASTER o sistema não irá encontrar a estrutura.

Obs: A rotina precisa estar publicada e disponível para consultas REST apontando para a Classe JPagPfsModel. Para disponibilizar o modelo siga a documentação do FWRestModel. Exemplo de MVC abaixo

b. Consulta da Rotina Cadastrada

Na consulta da Rotina o usuário irá visualizar todos os registros da rotina. Para controle das colunas no Grid só serão demonstradas as colunas que estão marcadas como Browse igual a "Sim".

Na tela de Cadastro da Rotina MVC o sistema irá interpretar a Estrutura MVC obedecendo os seguintes critérios:

O botão de Salvar somente será habilitado após os campos obrigatórios serem preenchidos.

Ao clicar em Salvar o sistema irá rodar todas as validações do modelo original.

As regras de When (X3_WHEN),  Inicializador padrão (X3_RELACAO) ou Gatilhos (SX7) não serão reproduzidas na tela de cadastro.

05. RESTRIÇÕES

Restrições de Dicionário:

Os campos que utilizarem consultas F3 tem de seguir as seguintes premissas:

É altamente recomendado utilizar a Consultas JurSXB na criação da Consulta padrão, pois com ele conseguimos extrair a query e realizar os filtros apropriados.

A função que fornece os dados não pode realizar referências a memória para realizar os filtros ou posicionamento em tabela. Por exemplo: M→ED_CODIGO ou FK7→FK7_IDDOC

06. TABELAS UTILIZADAS


#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"

// Publicando o fonte
PUBLISH MODEL REST NAME JMODTST  SOURCE JMODTST RESOURCE OBJECT JPagPfsModel      //Modelo Teste

//-------------------------------------------------------------------
/*/{Protheus.doc} JMODTST
Modelo de Teste
/*/
//-------------------------------------------------------------------
Function JMODTST()
    Local oBrowse := FwLoadBrw("JMODTST")

    oBrowse:Activate()

Return Nil

//-------------------------------------------------------------------
/*/{Protheus.doc} MenuDef
Menu Funcional

/*/
//-------------------------------------------------------------------
Static Function MenuDef()
	Local aRotina := {}
Return (aRotina)

//-------------------------------------------------------------------
/*/{Protheus.doc} ViewDef
Modelo de exemplo
/*/
//-------------------------------------------------------------------
Static Function ViewDef()
	Local oStructFKF := FWFormStruct(2, "Z01")
	Local oModel     := FWLoadModel("JMODTST")
	Local oView      := Nil
	
	oView := FWFormView():New()
	oView:SetModel(oModel)
	oView:AddField("JMODTST_VIEW", oStructFKF, "Z01MASTER")
	oView:CreateHorizontalBox("FORMFIELD", 100)
	oView:SetOwnerView("JMODTST_VIEW", "FORMFIELD")
	oView:SetDescription("Teste Rotinas Customizadas") 
	oView:EnableControlBar(.T.)

Return (oView)

//-------------------------------------------------------------------
/*/{Protheus.doc} ModelDef
Modelo de exemplo
/*/
//-------------------------------------------------------------------
Static Function Modeldef()
	Local oStructFKF := FWFormStruct(1, "Z01")
	Local oModel     := NIL
	
	oModel:= MPFormModel():New("JMODTST", /*Pre-Validacao*/, {|oModel| JMODTSTOK(oModel)}/*Pos-Validacao*/, /*Commit*/, /*Cancel*/)
	oModel:AddFields("Z01MASTER", Nil, oStructFKF, /*Pre-Validacao*/, /*Pos-Validacao*/)
	oModel:SetDescription("Teste Rotinas Customizadas") 
	oModel:GetModel("Z01MASTER"):SetDescription("Teste Rotinas Customizadas") 

	oModel:SetPrimaryKey({'Z01_FILIAL','Z01_IDDOC'})

Return (oModel)

//-------------------------------------------------------------------
/*/{Protheus.doc} JMODTSTOK
Exemplo de Validação de modelo

/*/
//-------------------------------------------------------------------
Static function JMODTSTOK(oModel)
Local lRet      := .T.
Local nOpc      := oModel:GetOperation()
Local oModelZ01 := oModel:GetModel("Z01MASTER")

	If nOpc < 5
		If Upper(AllTrim(oModelZ01:GetValue("Z01_TXTOBG"))) == "ERROR"
			lRet := JurMsgErro(EncodeUTF8("Erro de validação do campo"))
		EndIf
	EndIf

Return lRet