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