Histórico da Página
...
INTERNALID = Indica se deve retornar o ID(Recno) como informação complementar das linhas do GRID (padrão: false)
USESX3ORDER = Indica se deve ignorar a ordem dos campos passado no body e carregar os dados de acordo com a ordem da SX3 (padrão: false)
- Disponível a partir da lib 20240812
Exemplo de utilização
Ao publicar um modelo de dados, se o mesmo utilizar alias, basta publicá-lo.
...
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
#INCLUDE "TOTVS.CH" #INCLUDE "FWMVCDEF.CH" PUBLISH USER MODEL REST NAME Branch RESOURCE OBJECT oRestBranch Class oRestBranch From FwRestModel Data lSm0Closed Method Activate() Method DeActivate() Method Total() Method SetAlias() Method Skip() Method Seek() EndClass Method Activate() Class oRestBranch self:lSm0Closed := .F. If Select("SM0") == 0 self:lSm0Closed := .T. OpenSm0(, .F.) EndIf Return _Super:Activate() Method DeActivate() Class oRestBranch If self:lSm0Closed SM0->(dbCloseArea()) EndIf Return _Super:DeActivate() Method Total() Class oRestBranch Local nRecno := SM0->(Recno()) Local nTotal := 0 If self:Seek() While !SM0->(Eof()) nTotal++ self:Skip() End EndIf SM0->(dbGoTo(nRecno)) Return nTotal Method SetAlias() Class oRestBranch self:cAlias := "SM0" Return .T. Method Skip(nSkip) Class oRestBranch Local lRet := .F. SM0->(DbSkip(nSkip)) lRet := !SM0->(Eof()) Return lRet Method Seek(cPk) Class oRestBranch Local lRet := .F. If Empty(cPK) SM0->(DbGotop()) lRet := !SM0->(Eof()) Else cPK := SubStr(cPK, Len(xFilial("SM0")) + 1) // Removo o valor da filial que e inserido automaticamente pelo model no valor da PK. SM0->(dbSetOrder(1)) lRet := SM0->(DbSeek(cPK)) Endif Return lRet // MODELO DE DADOS Static Function Modeldef() Local oStruSM0 := DefStrModel() oModel := FWFormModel():New( 'MYFILIAL', {|| }, {|| }, {|| }, {|| } ) oModel:AddFields( 'SM0MASTER', , oStruSM0, {|| }, {|| },{|oM| MyLoad() }) oModel:SetDescription( "Empresas Protheus" ) oModel:GetModel( 'SM0MASTER' ):SetDescription( "Empresas Protheus" ) oModel:SetPrimaryKey( {"M0_CODIGO", "M0_CODFIL"} ) Return oModel Static Function DefStrModel() Local oStruct := FWFormModelStruct():New() Local bValid := { || .T.} Local bWhen := { || } Local bRelac := { || } // TABELA oStruct:AddTable( "SM0", {}, "Filiais", {|| }) // INDICES oStruct:AddIndex(1, "1", "M0_CODIGO", "Cód Empresa", "", "", .T.) // CAMPOS oStruct:AddField( "Cód Empresa" , "Cód Empresa" , "M0_CODIGO" , "C", 50, 0, bValid, bWhen, , , bRelac, .F., , , ) oStruct:AddField( "Cód Filial" , "Cód Filial" , "M0_CODFIL" , "C", 50, 0, bValid, bWhen, , , bRelac, .F., , , ) oStruct:AddField( "Nome Empresa" , "Nome Empresa" , "M0_NOMECOM", "C", 50, 0, bValid, bWhen, , , bRelac, .F., , , ) oStruct:AddField( "CNPJ" , "CNPJ" , "M0_CGC" , "C", 50, 0, bValid, bWhen, , , bRelac, .F., , , ) oStruct:AddField( "UF" , "UF" , "M0_ESTENT" , "C", 50, 0, bValid, bWhen, , , bRelac, .F., , , ) oStruct:AddField( "Insc Estadual" , "Insc Estadual" , "M0_INSC" , "C", 50, 0, bValid, bWhen, , , bRelac, .F., , , ) oStruct:AddField( "Insc Municipal", "Insc Municipal" , "M0_INSCM" , "C", 50, 0, bValid, bWhen, , , bRelac, .F., , , ) oStruct:AddField( "Cód Munic" , "Cód Munic" , "M0_CODMUN" , "C", 50, 0, bValid, bWhen, , , bRelac, .F., , , ) oStruct:AddField( "Nome Filial" , "Nome Filial" , "M0_FILIAL" , "C", 50, 0, bValid, bWhen, , , bRelac, .F., , , ) oStruct:AddField( "Município" , "Município" , "M0_CIDENT" , "C", 50, 0, bValid, bWhen, , , bRelac, .F., , , ) oStruct:AddField( "Inscrição" , "Inscrição" , "M0_INSCANT", "C", 50, 0, bValid, bWhen, , , bRelac, .F., , , ) oStruct:AddField( "NIRE" , "NIRE" , "M0_NIRE" , "C", 50, 0, bValid, bWhen, , , bRelac, .F., , , ) oStruct:AddField( "Data do Nire" , "Data do Nire" , "M0_DTRE" , "D", 08, 0, bValid, bWhen, , , bRelac, .F., , , ) oStruct:AddField( "End Cob" , "End Cob" , "M0_ENDCOB" , "C", 50, 0, bValid, bWhen, , , bRelac, .F., , , ) Return oStruct Static Function MyLoad() Local aRet := {} aRet := {{SM0->M0_CODIGO, SM0->M0_CODFIL, SM0->M0_NOMECOM, SM0->M0_CGC, SM0->M0_ESTENT, SM0->M0_INSC, SM0->M0_INSCM, SM0->M0_CODMUN,; SM0->M0_FILIAL, SM0->M0_CIDENT, SM0->M0_INSCANT, SM0->M0_NIRE, SM0->M0_DTRE, SM0->M0_ENDCOB}, ; SM0->(Recno())} Return aRet |
...
Exemplo de alteração de registro utilizando API:
* A documentação da utilização da API RESTFul FWMODEL pode ser visualizada acessando a URL da mesma no seu servidor REST. Exemplo: http://localhost:9090/rest/index/FWMODEL
- Para alteração de registro, é recomendável (não obrigatório, dependendo da lógica do serviço do cliente) a utilização do PK Id. Para obter o PK de determinado registro, iremos efetuar um GET no endereço do servidor REST, utilizando o modelo de uma rotina do módulo jurídico (JURA068), para efeito de exemplo:
...
- Após essa alteração, ao efetuar novamente um GET para obter informações do servidor REST, notamos que o valor foi alterado corretamente.
Caracteres XML Reservados
Importante se atentar a utilização dos caracteres XML reservados, devendo estes serem tratados na origem conforme tabela abaixo para evitar erros de parser do XML.
Caractere reservado | Entidade nomeada |
---|---|
< | < |
> | > |
& | & |
" | " |
' | ' |