Histórico da Página
...
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..
| Bloco de código | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
// Publicando o fonte
PUBLISH USER MODEL REST NAME RSB001 SOURCE RSB001 RESOURCE OBJECT JPagPfsModel //Modelo Teste
//-------------------------------------------------------------------
/*/{Protheus.doc} MenuDef
Menu Funcional
/*/
//-------------------------------------------------------------------
Static Function MenuDef()
Local aRotina := {}
Return aRotina
//-------------------------------------------------------------------
/*/{Protheus.doc} ViewDef
Modelo de exemplo
/*/
//-------------------------------------------------------------------
Static Function ViewDef()
Local oStruct := FWFormStruct(2, "Z01")
Local oModel := FWLoadModel("RSB001")
Local oView := Nil
oView := FWFormView():New()
oView:SetModel(oModel)
oView:AddField("RSB001_VIEW", oStruct, "Z01MASTER")
oView:CreateHorizontalBox("FORMFIELD", 100)
oView:SetOwnerView("RSB001_VIEW", "FORMFIELD")
oView:SetDescription("Teste Rotinas Customizadas - Contas a Pagar")
Return (oView)
//-------------------------------------------------------------------
/*/{Protheus.doc} ModelDef
Modelo de exemplo
/*/
//-------------------------------------------------------------------
Static Function Modeldef()
Local oStruct := FWFormStruct(1, "Z01")
Local oModel := NIL
oModel:= MPFormModel():New("RSB001", /*Pre-Validacao*/, {|oModel| RSB1TOK(oModel)}/*Pos-Validacao*/, /*Commit*/, /*Cancel*/)
oModel:AddFields("Z01MASTER", Nil, oStruct, /*Pre-Validacao*/, /*Pos-Validacao*/)
oModel:SetDescription("Teste Rotinas Customizadas - Contas a Pagar")
oModel:GetModel("Z01MASTER"):SetDescription("Teste Rotinas Customizadas - Contas a Pagar")
oModel:SetPrimaryKey({'Z01_FILIAL','Z01_CODIGO'})
Return (oModel)
//-------------------------------------------------------------------
/*/{Protheus.doc} JMDCPGOK
Exemplo de Validação de modelo
/*/
//-------------------------------------------------------------------
Static function RSB1TOK(oModel)
Local lRet := .T.
Local nOpc := oModel:GetOperation()
Local oModelZ01 := oModel:GetModel("Z01MASTER")
If nOpc < 5
If Upper(AllTrim(oModelZ01:GetValue("Z01_SETOR"))) == "ERROR"
lRet := JurMsgErro(EncodeUTF8("Erro de validação do campo"))
EndIf
EndIf
Return lRet |
...
Orientação para o cadastro das rotinas:
Rotina MVC: RSB001 > Nome do programa prw Nome do modelo/serviço Rest criado, este exemplo RSB001. OBS: O nome da rotina NÃO pode ter mais do que 7 caracteres.
Título da rotina: Contatos Clientes > Descrição Descrição do modelo, ; carregado de forma automática ao informar a rotina., neste exemplo Contatos Clientes
Descrição: Cadastro dos contatos dos clientes > Descrição Descrição da rotina cadastrada, visualizada na tela de consulta.
Ações da rotina:
a. Somente Visualização
...
- Rotina cadastrada somente para consulta
...
...
b. Cadastro Completo
...
- Rotina cadastrada para Visualização/Inclusão/Alteração/Exclusão dos registros.
Tipo de cadastro: Cadastro básico >
a. Cadastro básico - Manutenção do conteúdo da rotina estará disponível na própria tela de Rotinas Customizadas
...
b. Rotina - Manutenção do conteúdo da rotina estará disponível nas rotinas do PagPFS, quando selecionada esta opção, estarão disponíveis os seguintes campos
b.1
Para o Tipo de cadastro Rotina, serão disponibilizados mais dois campos:
Tela da Rotina: Rotinas disponíveis para o cadastro de rotinas customizadas.
b.2 Chave da Tabela: Os campos chaves informados aqui servirão para verificar e filtrar a rotina de origem. Os campos chave têm de seguir a mesma ordem.
Quando a origem for "Cadastro de Título a pagar" irá realizar o filtro pelos campos "FK7_FILIAL+FK7_IDDOC".
Quando a origem for "Cadastro de Desdobramento" irá realizar o filtro pelos campos "OHF_FILIAL+OHF_IDDOC+OHF_CITEM".
Quando a origem for "Cadastro de Pós-pagamento" irá realizar o filtro pelos campos "OHG_FILIAL+OHG_IDDOC+OHG_CITEM".
Filtro: Campos constantes no modelo criado poderão ser utilizados como filtros ao acessar a rotina customizada.
Ao realizar inclusão de um novo registro na tabela customizada o sistema irá preencher os dados da tabela de origem nos campos chaves realizando a relação entre as tabelas.
Obs: Todos os campos informados, tanto na Chave da Tabela quanto no Filtro devem estar marcados como Usado na SX3, caso não esteja o campo não será encontrado durante as validações.
b. Consulta da Rotina Cadastrada
...
As regras de When (X3_WHEN), Inicializador padrão (X3_RELACAO) ou , Gatilhos (SX7) não , Retorno de Consulta Padrão (mais de 1 campo) não serão reproduzidas na tela de cadastro em PO-UI.
...
Não é recomendada a utilização de campos F3 que contem 2 ou mais campos de retorno, como o código de Cliente (SA1), Fornecedor (SA2). Pois a consulta F3 será atribuída a somente um dos campos e será preenchido somente o campo que contem o F3 preenchido, o campo auxiliar deverá ser preenchido manualmente uma vez que o PO-UI não utiliza posicionamento em memória ou gatilhos (SX7).
...
A função que fornece os dados não pode realizar referências a posicionamento em memória para realizar os filtros ou posicionamento em tabela. Por exemplo: M→ED_CODIGO ou FK7→FK7_IDDOC.
Caso algum campo configurado como filtro seja do tipo Data, este deverá ter seu conteúdo informado como "YYYYMMDD" no filtro a ser realizado
06. TABELAS UTILIZADAS
...