Tempo aproximado para leitura: 00:03:00 min
Dúvida
Como realizar a inclusão de Ocorrência pelo WebService?
Ambiente
TOTVS Logística - TOTVS Frete Embarcador (Linha Protheus) - Gestão de Frete Embarcador (SIGAGFE) - Todas as Versões.
Solução
Para os usuários que possuem algum aplicativo customizado, e que precisam gerar registro de ocorrências para o transporte no produto SIGAGFE - Gestão de Frete Embarcador, foi disponibilizado o método Web Service REST.
Para utilização, é necessário a atualização do produto e a configuração do Web Service REST, conforme descrito nos pré-requisitos:
- Configuração do AppServer para disponibilizar as rotinas publicadas com o Web Service REST.
No link 02. REST com ERP Microsiga Protheus é possível encontrar todas as configurações necessárias. - Documentação do Web Service REST. No link FWRestModel. é possível encontrar toda a documentação da API RESTFull do Protheus e como utilizá-la.
Para realizar testes, pode ser utilizado qualquer programa de sua preferência, que teste API Web Service REST.
Como exemplos de programas, podemos citar o SoapUI ou a extensão Postman do navegador Chrome.
Ambos são excelentes aplicativos.
Utilizando o Postman
Abaixo uma tela utilizando a extensão Postman, executando a gravação de dados no método POST. Neste exemplo os dados da tabela GWD e os detalhes da tabela GWL estão sendo gravados:
Exemplo de utilização, quando o model apresenta uma validação, impedindo a gravação do registro. No exemplo abaixo o documento de carga não existe na base de dados:
Utilizando o Progress Datasul
Código de exemplo:
DEFINE VARIABLE h_http ASHANDLE NO-UNDO.DEFINE VARIABLE mptr_response ASMEMPTR NO-UNDO.DEFINE VARIABLE i_response_code ASINTEGERNO-UNDO.DEFINE VARIABLE c_response_status ASCHARACTER NO-UNDO.DEFINE VARIABLE lc_content ASLONGCHAR NO-UNDO.ASSIGN lc_content = ' ~{"id":"GFEA032","operation":3,"models":[~{"id":"GFEA032_GWD","modeltype":"FIELDS","fields":[~{"id":"GWD_DSOCOR","order":3,"value":"DESCRICAO CAMPO"},~{"id":"GWD_CDTIPO","order":4,"value":"99"},~{"id":"GWD_CDMOT","order":6,"value":"99"},~{"id":"GWD_DSPROB","order":8,"value":"PROBLEMA CAMPO 00000026"},~{"id":"GWD_DSSOLU","order":9,"value":"Aprovada automaticamente"},~{"id":"GWD_DTOCOR","order":10,"value":"20170506"},~{"id":"GWD_HROCOR","order":11,"value":"14:38"},~{"id":"GWD_DTCRIA","order":12,"value":"20170506"},~{"id":"GWD_HRCRIA","order":13,"value":"14:38"},~{"id":"GWD_DTBAI","order":14,"value":"20170509"},~{"id":"GWD_HRBAI","order":15,"value":"09:51"},~{"id":"GWD_SIT","order":16,"value":"2"},~{"id":"GWD_USUCRI","order":19,"value":"andre.wisnheski"},~{"id":"GWD_CDTRP","order":24,"value":"000000002"},~{"id":"GWD_ACAODC","order":26,"value":"2"},~{"id":"GWD_ACAODF","order":27,"value":"1"},~{"id":"GWD_ORIGEM","order":28,"value":"2"},~{"id":"GWD_SITTMS","order":29,"value":"0"},~{"id":"GWD_QTDVOL","order":32,"value":"12"}],"models":[~{"id":"GFEA032_GWL","modeltype":"GRID","optional":1,"struct":[~{"id":"GWL_FILIAL","order":1},~{"id":"GWL_NROCO","order":2},~{"id":"GWL_NRDC","order":3},~{"id":"GWL_FILDC","order":4},~{"id":"GWL_EMITDC","order":5},~{"id":"GWL_SERDC","order":6},~{"id":"GWL_TPDC","order":7},~{"id":"GWL_SDOCDC","order":8}],"items":[~{"id":1,"deleted":0,"fields":[~{"id":"GWL_NRDC","value":"060201"},~{"id":"GWL_FILDC","value":"D MG 01"},~{"id":"GWL_EMITDC","value":"000000003"},~{"id":"GWL_SERDC","value":"17"},~{"id":"GWL_TPDC","value":"NFS"},~{"id":"GWL_SDOCDC","value":"17"}]}]}]}]} ':U.IFNOTVALID-HANDLE(h_http)THENDO:RUN utp/ut-http-api.p PERSISTENTSETh_http.END.RUN setServerName INh_http (INPUT'10.80.18.198':U).RUN setServerPort INh_http (INPUT8022).RUN clearQueryParam INh_http.RUN setRequestHeaderINh_http (INPUT'Content-Type':U, INPUT'application/json':U).RUN setServiceUrl INh_http(INPUT'/MG2/fwmodel/GFEA032':U).RUN setServiceMethod INh_http(INPUT'POST':U).RUN setBody INh_http(INPUT lc_content, INPUT'application/json':U).RUN callService INh_http.RUN getResponseData INh_http(OUTPUT mptr_response).RUN getResponseCode INh_http(OUTPUT i_response_code).RUN getResponseStatusINh_http(OUTPUT c_response_status).IFVALID-HANDLE(h_http)THENDO:DELETEPROCEDUREh_http.END.IFi_response_code NE200ANDi_response_code NE201THENDO:MESSAGE i_response_code SKIPc_response_status SKIPSTRING(mptr_response)VIEW-ASALERT-BOX.RETURN'NOK':U.END.COPY-LOB FROM mptr_responseTOlc_content NO-CONVERT.MESSAGESTRING(lc_content)VIEW-ASALERT-BOX.
Resultado esperado quando o registro é incluído corretamente:
Resultado esperado quando ocorre uma validação que impossibilite a inclusão da ocorrência:
Importante
Caso a tabela do cadastro de Ocorrências seja exclusiva, no Headers deve ser indicado no campo tenantId o grupo de empresas e a filial que deseja localizar as informações. Abaixo um exemplo utilizando o programa Postman:
0 Comentários