o Código anexado debugando no vscode consigo retornar os dados que preciso, ocorre tudo certo com os parâmetros e a query filtra diante da inserção dos mesmos. Mas quando vou checar no postman acontece que os parâmetros inseridos são ignorados e retorna todos os dados da consulta sem a filtragem necessário dos parâmetros.
include "TOTVS.ch"
include "RESTFUL.ch"
Include "topconn.ch"
Include "tbiconn.ch"
//------------------------------------------------------------------- //{Protheus.doc} Itens de Notas Fiscais WebService para disponibilização de Itens notas fiscais de saída @author Erick Cordeiro @since 28/11/2024 @version 1.0// //------------------------------------------------------------------- WsRestful CashUpItemNFv10 Description "WebService de Item Notas fiscais v10" WSDATA dtini AS STRING OPTIONAL WSDATA dtfim AS STRING OPTIONAL WsMethod GET Description "Disponibilização de Item Notas Fiscais v10" WSSYNTAX "/GET" End WsRestful
WSMETHOD GET WSRECEIVE dtini, dtfim WSSERVICE CashUpItemNFv10
Local nPosDtini := aScan(Self:AQueryString, {|x| AllTrim(Upper(x[1])) == "dtini"}) Local nPosDtfim := aScan(Self:AQueryString, {|x| AllTrim(Upper(x[1])) == "dtfim"}) Local cDtIni := '' Local cDtFim := '' Local oBody Local cJson
//ConOut(dtini,dtfim)
If nPosDtini > 0 cDtIni := Self:AQueryString[nPosDtini][2] EndIf
If nPosDtfim > 0 cDtFim := Self:AQueryString[nPosDtfim][2] EndIf
//ConOut(cDtIni,cDtFim) // Log para depuração
oBody := u_INFcash(cDtIni,cDtFim) cJson := oBody:toJson()
::SetContentType('application/json') ::SetResponse(cJson)
Return .T.
//------------------------------------------------------------------- //{Protheus.doc} Get de Itens de Notas Fiscais WebService para disponibilização de itens de Notas Fiscais @author Erick Cordeiro @since 28/11/2024 @version 1.0 // //-------------------------------------------------------------------
User Function INFcash(cDtIni,cDtFim) Local cQuery1 := "" Local lAtivAmb := .F. Local a := 0 Local oBody := JsonObject():new() Local oLine := Nil Private xConteudo := "" Private aCampos := {} Private aNomes := {} Default cDtIni := '' Default cDtFim := '' // Default dDtini := SToD(cDtIni) // Default dDtFim := SToD(cDtFim) // Prepara o ambiente caso precise If Select("SX2") == 0 RPCClearEnv() RpcSetType(3) RpcSetEnv("01", '010101', , , "", , , , , ,) lAtivAmb := .T. // Seta se precisou montar o ambiente EndIf
// Campos da query AADD(aCampos, "D2_DOC") AADD(aCampos, "D2_EMISSAO") AADD(aCampos, "D2_SERIE") AADD(aCampos, "A1_CGC") AADD(aCampos, "M0_CGC") AADD(aCampos, "D2_COD") AADD(aCampos, "B1_DESC") AADD(aCampos, "D2_QUANT") AADD(aCampos, "D2_PRCVEN") AADD(aCampos, "D2_PEDIDO") AADD(aCampos, "D2_DESC") AADD(aCampos, "D2_ITEM") AADD(aCampos, "D2_VALICM") AADD(aCampos, "D2_CLASFIS") AADD(aCampos, "D2_VALIPI") AADD(aCampos, "D2_VALPIS") AADD(aCampos, "D2_VALCOF") AADD(aCampos, "D2_VFCPDIF") AADD(aCampos, "D2_VALFRE") AADD(aCampos, "B1_POSIPI") AADD(aCampos, "B1_CODBAR") AADD(aCampos, "D2_CF") AADD(aCampos, "D2_TOTAL") AADD(aCampos, "D2_COMIS1") AADD(aCampos, "D2_CLIENTE") AADD(aCampos, "D2_DESC") AADD(aCampos, "D2_SEGURO") // AADD(aCampos, "DTINI") // AADD(aCampos, "DTFIM")
AADD(aNomes, "NUMERO_NF") AADD(aNomes, "DT_EMISSAO") AADD(aNomes, "SERIE_NF") AADD(aNomes, "CNPJ_CLI") AADD(aNomes, "CNPJ_EMIT") AADD(aNomes, "COD_PRODUTO") AADD(aNomes, "DESCR_PRODUTO") AADD(aNomes, "QUANTIDADE") AADD(aNomes, "PRECO") AADD(aNomes, "NRO_PEDIDO") AADD(aNomes, "VLR_DESCONTO") AADD(aNomes, "SEQ") AADD(aNomes, "VLR_ICMS") AADD(aNomes, "VLR_ST") AADD(aNomes, "VLR_IPI") AADD(aNomes, "VLR_PIS") AADD(aNomes, "VLR_COFINS") AADD(aNomes, "VLR_FCP") AADD(aNomes, "VLR_FRETE") AADD(aNomes, "NCM") AADD(aNomes, "COD_BARRAS") AADD(aNomes, "CFOP") AADD(aNomes, "VLR_TOTAL") AADD(aNomes, "COMIS_PERC") AADD(aNomes, "COD_CLI") AADD(aNomes, "VLR_DESCONTO") AADD(aNomes, "VLR_SEGURO") // AADD(aNomes, "DATA_INI") // AADD(aNomes, "DATA_FIM")
// Monta a query cQuery1 := "SELECT D2DOC, D2_EMISSAO, D2_SERIE, A1_CGC, M0_CGC, D2_COD, B1_DESC, D2_QUANT, D2_PRCVEN, D2_PEDIDO, D2_DESC, D2_ITEM, " cQuery1 += "D2_VALICM, D2_CLASFIS, D2_VALIPI, D2_VALPIS, D2_VALCOF, D2_VFCPDIF, D2_VALFRE, B1_POSIPI, B1_CODBAR, D2_CF, D2_TOTAL, " cQuery1 += "D2_COMIS1, D2_CLIENTE, D2_DESC, D2_SEGURO " cQuery1 += "FROM SD2010 SD2 " cQuery1 += "INNER JOIN SYS_COMPANY ON D2_FILIAL = M0_CODFIL " cQuery1 += "INNER JOIN SB1010 SB1 ON D2_COD = B1_COD " cQuery1 += "INNER JOIN SA1010 SA1 ON D2_CLIENTE = A1_COD AND D2_LOJA = A1_LOJA " cQuery1 += "WHERE D2_FILIAL IN ('010101', '020101', '020102', '020103', '020104') AND " cQuery1 += "SD2.D_E_L_E_T = '' AND SB1.DE_L_E_T = '' AND SA1.DE_L_E_T = '' "
// cQuery1 := cQuery
// Adiciona filtro de data If !Empty(cDtIni) .and. !Empty(cDtFim) cQuery1 += " AND D2_EMISSAO BETWEEN '"+cDtini+"' AND '" +cDtFim+"'" EndIf
cQuery1 := ChangeQuery(cQuery1)
MpSysOpenQuery(cQuery1, "TMP")
If TMP->(!EOF()) TMP->(DBGOTOP()) oBody["ItemNotaFiscal"] := {} While TMP->(!EOF()) oLine := JsonObject():new() For a := 1 To Len(aCampos) xConteudo := &("TMP->"+aCampos[a]) &('oLine["'+aNomes[a]+'"] := '+IIF(ValType(xConteudo) == 'N', cValToChar(xConteudo), '"' + AllTrim(xConteudo) + '"')) Next AADD(oBody["ItemNotaFiscal"], oLine) TMP->(DbSkip()) EndDo Else SetRestFault(404, 'Item Nota Fiscal: "' + cDtIni + '", Status: Nao encontrado', .T.) EndIf
TMP->(DbCloseArea())
If lAtivAmb RPCClearEnv() Endif
return oBody // Limpa o ambiente, se