parametro de filial REST - API - POST

Boa tarde, estou tentando realizar um POST de um pedido de venda utilizando a rotina automática, porém preciso usar filiais como parâmetros e a funcao PREPARE ENVIRONMENT não está me dando resultados, alguma idéia?

WSMETHOD POST  WSSERVICE pedido
    Local lPost := .T.
    Local cBody
    Local lAcepto := .F.
    Local aCabec := {}
    Local aItens := {}
    Local aLinha := {}
    LOCAL aUSR := {}
    private oObj
    PRIVATE lMsErroAuto := .F.
    ::SetContentType("application/json;charset=utf-8")

    cBody := Self:GetContent()
    FWJsonDeserialize(cBody,@oObj)

    if empty(cBody)
        cBody := "Sin Valor"
    else

        //PREPARE ENVIRONMENT EMPRESA "01" FILIAL "01"

        cDoc := GetSxeNum("SC5","C5_NUM")
        RollBAckSx8()

        aCabec := {} // Pedido 0001
        aItens := {} // Productos Detalle 01 02 03

        aadd(aCabec,{"C5_NUM"   ,cDoc,Nil})
        aadd(aCabec,{"C5_TIPO" ,"N",Nil})  // siempre es N
        aadd(aCabec,{"C5_CLIENTE",oObj:C5_CLIENTE,Nil})
        //        aadd(aCabec,{"C5_LOJACLI",'01',Nil})
        //        aadd(aCabec,{"C5_LOJAENT",'01',Nil})
        // caso
        if Type("oObj:C5_CONDPAG") <> "U"// caso exista
            aadd(aCabec,{"C5_CONDPAG",oObj:C5_CONDPAG,Nil})  
        endif
        aadd(aCabec,{"C5_MOEDA",oObj:C5_MOEDA,Nil})  // define la condicion de pago WS
        aadd(aCabec,{"C5_MOEDTIT",oObj:C5_MOEDA,Nil})  // define la condicion de pago WS

        aUSR := bscCodVen(oObj:USRCOD)
        if aUSR[3]
            aadd(aCabec,{"C5_VEND1",aUSR[1],Nil})
        ENDIF
        //        oObj:USRCOD validar si existe C5_VEND1 adicionar vendedor validar si es que hay
        //
        nCanPro := len(oObj:productos)
        For nX := 1 To nCanPro // este for deberia ser por cada producto
            aLinha := {}
            cProduto:= oObj:productos[nX]:C6_PRODUTO
            cTes:= Posicione("SB1",1,xFilial("SB1")+ cProduto,"B1_TS")
            cTes:= IIF(!EMPTY(ALLTRIM(cTes)), cTes, "501")

            aadd(aLinha,{"C6_ITEM",StrZero(nX,2),Nil}) // se define los items (este es correlativo)
            aadd(aLinha,{"C6_PRODUTO",cProduto,Nil}) // codigo del producto WS
            aadd(aLinha,{"C6_QTDVEN",oObj:productos[nX]:C6_QTDVEN,Nil}) // Cantidad obtenida por cada Pedido WS
            if Type("oObj:productos[nX]:C6_LOCAL") <> "U"// caso exista
                aadd(aLinha,{"C6_LOCAL",oObj:productos[nX]:C6_LOCAL,Nil})  
            endif
            aadd(aLinha,{"C6_PRUNIT",oObj:productos[nX]:B1_PRV1,Nil}) // precio WS

de entrada Salida
            if(oObj:productos[nX]:C6_DESCONT > 0)
                //                aadd(aLinha,{"C6_DESCONT",oObj:productos[nX]:C6_DESCONT,Nil}) // porcentaje de descuento
            else
                //                aadd(aLinha,{"C6_VALDESC",oObj:productos[nX]:C6_VALDESC,Nil}) // valor de descuento
            endif
            aadd(aLinha,{"C6_VDOBS",oObj:productos[nX]:C6_VDOBS,Nil}) // obs descuento
            aadd(aItens,aLinha)
        Next nX

        MSExecAuto({|a, b, c, d| MATA410(a, b, c, d)}, aCabec, aItens, 3, .F.)
        //        MATA410(aCabec,aItens,3) // funcion Importante

        If !lMsErroAuto
            ConOut("Incluido com sucesso! " + cDoc)
            //MostraErro()
            lAcepto := .T.
        Else
            ConOut("Erro na inclusao!")
            MostraErro("/temp","error.log")
            ConOut(MostraErro())
        EndIf
    endif

    if lAcepto
        cJson := u_pedidobyid(oObj:C5_CLIENTE,cDoc)
        //cJson := EncodeUtf8(cJson)
        ::SetResponse(cJson)
    else
        ::SetResponse('{"Status":"Fail"}')
    endif

    Return lPost
compartilhar
  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!

3 respostas

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