Fluig x Protheus

Boa tarde. Estou tentando integrar uma solicitação com o Protheus porem existem 2 empresas. Estou enviando a empresa no headers como na documentação dentro da teg tenantId porem ao preencher na tabela a filial sempre fica como 00. Alguém já passou por isso ?

var tenantid = '02,01';
var clientService = fluigAPI.getAuthorizeClientService();
    var data = {
        companyId: getValue("WKCompany") + '',
        serviceCode: 'api_solicitacaoarmazem_ivn',
        endpoint: '/rest/SA',
                method: 'post',
        timeoutService: '1000',
        headers:{
            "tenantId": String(tenantid),
            "Content-Type": "application/json"
        },
        params:{
            "SA":{
                "NUM": cDoc,
                "SOLICITANTE": "cUserName",
                "EMISSAO": "dDataBase",
                "EMISSAO": "dDataBase",
                "ITENS": items
            }
        }
    };

Parte do código lado Protheus. modelo padrão.

#Include 'protheus.ch'
#Include 'parmtype.ch'
#Include 'RestFul.ch'

#INCLUDE "TBICONN.CH" 
#INCLUDE "TBICODE.CH"
#INCLUDE "TOPCONN.CH" 

User Function SA()    
Return

WSRESTFUL SA DESCRIPTION "Servi�o REST para solicitacao ao armazem"

WSDATA RECEIVE As String //Json Recebido no corpo da requi��o
//WSDATA CGC       As String //Em caso de PUT ou DELETE pega o CGC por URL

WSMETHOD POST     DESCRIPTION "Cadastra uma nova solicitacao ao armazem"         WSSYNTAX ""

END WSRESTFUL


WSMETHOD POST WSRECEIVE RECEIVE WSSERVICE SA

Local cJSON      := Self:GetContent() // Pega a string do JSON 
Local oParseJSON := Nil 
Local cJsonRet   := ""
Local cArqLog     := ""
Local cErro         := ""
//Local cCodSA1     := ""
Local lRet         := .T.
Local aArea         := GetArea()
Local nX         := 0 
Local cFiltraSCP := ""
Local bBloco    := .T.

Private lMsErroAuto := .F.

// --> Cria o diret�rio para salvar os arquivos de log
If !ExistDir("\log_cli")
    MakeDir("\log_cli")
EndIf

// --> Deserializa a string JSON
FWJsonDeserialize(cJson, @oParseJSON)


conout("Empresa:"+cEmpAnt)
conout("Filial:"+cFilAnt)

conout("Empresa: "+substr(oParseJSON:tenantId,1,2))
conout("Filial: "+substr(oParseJSON:tenantId,4,2))

//conout("Empresa: "+substr(oParseJSON:tenantId,1,2))
//conout("Filial: "+substr(oParseJSON:tenantId,4,2))

//RpcSetEnv( substr(oParseJSON:tenantId,1,2),substr(oParseJSON:tenantId,4,2), "", " ", "FAT", "", {"ZA4","SC9","SC6"}, , , ,  )

//conout("Empresa Logada: "+cEmpAnt)
//conout("Filial Logada: "+cFilAnt)


::SetContentType("application/json")

// --> Deserializa a string JSON

Problema resolvido. Acabei me esquecendo que na aplicação TOTVS eu referenciava a filial assim sempre mandando como 00. A forma correta de referenciar a empresa é no headers mesmo como mostrei no JSON da primeira parte.

compartilhar
  • Pelo que li, no codigo não teria que receber nada disso, me parece que apenas colocando a teg tenantId o próprio WS iria se encarregar disso. Apenas adicionei ali a informação para ver em qual empresa o sistema estava logando.

    Danilo Mariano   12 de May de 2020
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do fluig Forum!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags integracao protheus12 servicetask ou faça a sua própria pergunta.