Criei esse metodo que cadastra na tabela ct1 do protheus mas o problema e que ele cadastar na primeira filial que ele encontra na tabela e preciso que cadastre na filial que passo pelo json
WSMETHOD POST iContaContabil WSREST WSCONTACONTABIL
local jConta := JsonObject():New() local cError := jConta:fromJson( self:getContent() ) local cJson local oCT1 Local cCodigo := jConta['Cod_Conta'] Local cf := jConta['Filial']
If jConta['Cod_Conta'] == "" SetRestFault(400, EncodeUTF8('O codigo da conta não existe.')) return .F. Endif
if Empty(cError)
dbSelectArea("CT1") DbSetOrder(1)
If !CT1->(DbSeek(cf + cCodigo))
oModel := FwLoadModel("CTBA020") oModel:setOperation(3) oModel:Activate()
oCT1 := oModel:GetModel('CT1MASTER') //Objeto similar enchoice CT1 oCT1:setValue("CT1_FILIAL", Upper(jConta["Filial"])) oCT1:setValue("CT1_CONTA", Upper(jConta["Cod_Conta"])) oCT1:setValue("CT1_DESC01", Upper(jConta["Desc_Conta"])) oCT1:setValue("CT1_CTASUP", Upper(jConta["Conta_Sup"])) oCT1:setValue("CT1_CLASSE", Upper(jConta["Classe_Cta"])) oCT1:setValue("CT1_NORMAL", Upper(jConta["Cond_Normal"])) oCT1:setValue("CT1_NATCTA", Upper(jConta["Nat_Cta"]))
if oModel:VldData()
oModel:CommitData()
cJson := '{"FILIAL":"' + Upper(jConta["Desc_Conta"]) + '"'; + ',"msg":"' + "Sucesso" + '"'; +'}' // CT1_E->(dbCloseArea()) ::SetResponse(cJson) else ConErr(oModel:GetErrorMessage()[MODEL_MSGERR_MESSAGE]) SetRestFault(400)
endif
oModel:DeActivate() //desativa modelo
Else SetRestFault(400, EncodeUTF8('O codigo da conta informado ja está registrado.')) return .F. Endif
else ConErr(cError) setRestFault(400) return .F. endif
return .T.