Pessoal, estou com um get criado retornando informações das ordens de produção (SC2) a partir da consulta do número da OP. Fiz toda a operação usando dbseek e outras funções que deixarei abaixo. Gostaria de saber se tem como trazer o mesmo conteúdo mas por uma query sql ? Ao invés de fazer validações com o dbseek relacionando as tabelas. Costumo usar begin sql em endpoints GET que não precisam usar parâmetros.
Código abaixo do get criado sem query:
WsMethod GET DETALHE WsService RELATOP1
Local oJson := JsonObject():New() Local oJsonItem := Nil Local lRet := .T.
SC2->(DbSetOrder(1))
If SC2->( DbSeek( cFilAnt + self:aUrlParms[1] ) )
oJson['Filial'] := SC2->C2_FILIAL oJson['Num.Op'] := SC2->C2_NUM oJson['Cod.Produto'] := SC2->C2_PRODUTO oJson['Quantidade'] :=SC2->C2_QUANT oJson['Uni.Medida'] := SC2->C2_UM oJson['Item'] := SC2->C2_ITEM oJson['Entrega'] := SC2->C2_DATPRF oJson['Fabril'] := {}
SB1->(DbSetOrder(1)) SB1->( DbSeek(xFilial('SB1') + SC2->C2_PRODUTO) )
While SB1->(!Eof()) .And. SB1->B1_COD == SC2->C2_PRODUTO
oJsonItem := JsonObject():New() oJsonItem['Descrição'] := SB1->B1_DESC oJsonItem['Proc.Fabril'] := SB1->B1_XDOP
Aadd(oJson['Fabril'], oJsonItem)
SB1->(DbSkip())
EndDo
self:SetResponse(oJson:ToJson())
Else
SetRestFault(400, 'Ordem não foi encontrado!') lRet := .F.
EndIF Return lRet
Erick, um DBSeek vira uma query dentro do banco de dados, então um DBSeek com toda a certeza pode virar uma query, só depende realmente de efetuar a devida implementação.
— Daniel Mendes 13 de Jun de 2024