Versão atual:

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.

Versões (3):

Ver a versão formatada

Fluig x Protheus

Comentário

new question