Bom, ultimamente venho criando uma api para a consulta de funcionarios da empresa, eu utilizava o dbselectarea() para pegar a tabela mas ele vinha apenas a tabela da empresa 1 filial 1 e não de todas, então, criei uma query que faz isso pra chamar essa query na função da api. Segue o código:
WSMETHOD GET WSSERVICE apiFun
Local oJson := JsonObject():New()
Local oJsonAux
Local oQuery, cQuery, currentDate, currentMM, currentDD, date, mm, dd
Local aFuncionarios := {}
currentDate := DtoS(Date())
currentMM := SubStr(currentDate, 5, 2)
currentDD := SubStr(currentDate, 7, 2)
cQuery := "SELECT A.RA_FILIAL, A.RA_MAT ,A.RA_NOMECMP, A.RA_CC, A.RA_NASC , C.CTT_DESC01, 'INDUSTRIA' AS EMPRESA " + ;
"FROM SRA010 A LEFT JOIN CTT010 C ON A.RA_CC = C.CTT_CUSTO AND C.D_E_L_E_T_ = '' " + ;
"WHERE A.D_E_L_E_T_ = '' AND A.RA_DEMISSA='' " + ;
"UNION ALL " + ;
"SELECT B.RA_FILIAL, B.RA_MAT, B.RA_NOMECMP, B.RA_CC, B.RA_NASC , C.CTT_DESC01, 'LOJA' AS EMPRESA " + ;
"FROM SRA060 B LEFT JOIN CTT060 C ON B.RA_CC = C.CTT_CUSTO AND C.D_E_L_E_T_ = '' " + ;
"WHERE B.D_E_L_E_T_ = '' AND B.RA_DEMISSA='' " + ;
"UNION ALL " + ;
"SELECT C.RA_FILIAL, C.RA_MAT, C.RA_NOMECMP, C.RA_CC, C.RA_NASC, D.CTT_DESC01, 'TRANSPORTES' AS EMPRESA " + ;
"FROM SRA100 C LEFT JOIN CTT100 D ON C.RA_CC = D.CTT_CUSTO AND C.D_E_L_E_T_ = '' " + ;
"WHERE C.D_E_L_E_T_ = '' AND C.RA_DEMISSA=''"
oQuery := TCQuery():New()
If oQuery:Exec(cQuery)
While oQuery:Next()
oJsonAux := JsonObject():New()
date := AllTrim(DToS(oQuery:FieldGet("RA_NASC")))
mm := SubStr(date, 5, 2)
dd := SubStr(date, 7, 2)
If currentMM == mm
oJsonAux["filial"] := AllTrim(oQuery:FieldGet("RA_FILIAL"))
oJsonAux["name"] := AllTrim(oQuery:FieldGet("RA_NOMECMP"))
oJsonAux["sector"] := AllTrim(oQuery:FieldGet("RA_CC"))
oJsonAux["birthday"] := dd + "/" + mm
oJsonAux["company"] := AllTrim(oQuery:FieldGet("EMPRESA"))
oJsonAux["ccDesc"] := AllTrim(oQuery:FieldGet("CTT_DESC01"))
AAdd(aFuncionarios, oJsonAux)
FreeObj(oJsonAux)
EndIf
EndDo
Else
Self:SetResponse("Erro SQL: " + oQuery:GetLastError())
Return .F.
EndIf
oQuery:Destroy()
oJson["FUNCIONARIOS"] := aFuncionarios
Self:SetContentType("application/json")
Self:SetResponse(oJson)
Return .T.
Quando eu rodo e chamo essa api, ele me diz invalid class TCquery, o protheus ja esta atualizado mas não sei como eu faço essa chamada dos dados pela query. Alguem sabe como me ajudar?