Retorno do JSON com todos os pedidos de venda abertos sem passar o número

Boa noite,

Estou tentando fazer com que o retorno do Json de uma API me retorne todos os pedidos de venda abertos se eu não passar o número nos parâmetros, mas não consigo de forma nenhuma. Ele me traz com sucesso se eu passo o número sem problemas. Alguém consegue me ajudar nesse ponto? Já tentei de tudo mas não consegui.

Segue o código abaixo:

_cSQLPed := "SELECT C5_NUM, C5_CLIENTE, C5_LOJACLI, C5_XNUMORC, C5_EMISSAO, C5_XXTPVEI, C5_XXTPCAR, A1_NOME, A1_EST, A1_MUN, A1_CGC, C6_ITEM, C6_PRODUTO, C6_DESCRI, C6_UM,"

_cSQLPed += " C6_QTDVEN - C6_QTDENT AS SALDO, C6_SEGUM, B1_TIPCONV, B1_CONV, B1_GRUPO, C5_XXCARPA, C5_TPFRETE, C5_XXVLFRE,"

_cSQLPed += " C6_XXESSAL, C5_XXOBSCO, C5_VEND1, A3_NOME"

_cSQLPed += " FROM " + RetSQLName("SC5") + " SC5"

_cSQLPed += " INNER JOIN " + RetSQLName("SC6") + " SC6"

_cSQLPed += " ON C5_FILIAL = C6_FILIAL AND C5_NUM = C6_NUM"

_cSQLPed += " INNER JOIN " + RetSQLName("SA1") + " SA1"

_cSQLPed += " ON C5_CLIENTE = A1_COD AND C5_LOJACLI = A1_LOJA"

_cSQLPed += " INNER JOIN " + RetSQLName("SB1") + " SB1"

_cSQLPed += " ON C6_PRODUTO = B1_COD"

_cSQLPed += " INNER JOIN " + RetSQLName("SA3") + " SA3"

_cSQLPed += " ON C5_VEND1 = A3_COD"

cSQLPed += " WHERE SC5.D_E_L_E_T <> '' AND SC6.DE_L_E_T <> '' AND SA1.DE_L_E_T <> '' AND SB1.DE_L_E_T <> '' AND SA3.DE_L_E_T <> '*'"

_cSQLPed += " AND C6_FILIAL = '" + _cFilial + "'"

if !empty(_cPedido)

_cSQLPed += " AND C5_NUM = '"+_cPedido+"'"

endif

// Não exibir pedidos já faturados

_cSQLPed += " AND (C6_QTDVEN - C6_QTDENT) > 0"

// Não exibir os pedidos com eliminação de resíduo

_cSQLPed += " AND C6_BLQ <> 'R'"

_cSQLPed += " ORDER BY C6_ITEM"

LogMsg('SALW0300', 10, 5, 1, '', '', 'SALW0300 - Query Pedido: ' + _cSQLPed)

_cAliasPed := GetNextAlias()

_cSQLPed := ChangeQuery(_cSQLPed)

DbUseArea(.T., "TOPCONN", TCGenQry(,,_cSQLPed),_cAliasPed, .F., .T.)

DbSelectArea(_cAliasPed)

_oJson := JsonObject():New()

_oJson["filial"] := _cFilial

If !( (_cAliasPed)->( Eof() ) )

While !(_cAliasPed)->( Eof() )

_cSubGrupo := u_xSubGrupo( (_cAliasPed)->B1_GRUPO, (_cAliasPed)->C6_DESCRI )

_cFila := u_xFilaMot( (_cAliasPed)->B1_GRUPO, (_cAliasPed)->C5_CLIENTE + (_cAliasPed)->C5_LOJACLI)

_cEspSal := u_xEspeSal( (_cAliasPed)->C6_XXESSAL )

//Consulta o status de crédito do cliente

_aCredCli := u_xConCred( AllTrim((_cAliasPed)->A1_CGC) )

_oJson["dadospedido"] := {}

_oJsonPed := JsonObject():New()

_oJsonPed["numPedido"] := (_cAliasPed)->C5_NUM

_oJsonPed["clienteCGC"] := AllTrim((_cAliasPed)->A1_CGC)

_oJsonPed["clienteCod"] := (_cAliasPed)->C5_CLIENTE + (_cAliasPed)->C5_LOJACLI

_oJsonPed["clienteNome"] := AllTrim( (_cAliasPed)->A1_NOME )

_oJsonPed["clienteCredito"] := _aCredCli[1][2]

aAdd(_oJson["dadositem"], JsonObject():New())

_oJsonIt := JsonObject():New()

_oJsonIt["itempedido"] := (_cAliasPed)->C6_ITEM

_oJsonIt["itemCod"] := AllTrim( (_cAliasPed)->C6_PRODUTO )

_oJsonIt["nomeItem"] := AllTrim( (_cAliasPed)->C6_DESCRI )

_oJsonIt["especificacao"] := _cEspSal

_oJsonIt["subgrupo"] := _cSubGrupo

_oJsonIt["unidademedida"] := AllTrim( (_cAliasPed)->C6_UM )

_oJsonIt["saldo"] := StrTran( CValToChar( (_cAliasPed)->SALDO ), ',' , '.' )

_oJsonIt["segundaum"] := (_cAliasPed)->C6_SEGUM

_oJsonIt["tipoconversao"] := (_cAliasPed)->B1_TIPCONV

_oJsonIt["fatorconversao"] := StrTran( CValToChar( (_cAliasPed)->B1_CONV ), ',' , '.' )

_oJsonIt["tipoFilaCod"] := _cFila

aAdd(_oJson["dadospedido"], _oJsonPed)

aAdd(_oJson["dadospedido"], _oJsonIt)

(_cAliasPed)->( DbSkip() )

EndDo

::SetResponse(encodeUTF8(_oJson:TOJson()))

Obrigado desde já!

compartilhar
  • Fala ai Leonardo, tudo bem? É bom ter certeza que sua variável está vazia , tentou dar um conout nela antes do if para ver o conteudo?

    Leandro Lemos   15 de Aug de 2024
  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 TOTVS DevForum!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags advpl json api jsonobject ou faça a sua própria pergunta.