Versão atual:

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

Versão (1):

Ver a versão formatada

parametro de filial REST - API - POST

Comentário

new question