116 lines
4.3 KiB
Python
116 lines
4.3 KiB
Python
#引入clr运行库
|
||
import clr
|
||
#添加对cloud插件开发的常用组件引用
|
||
clr.AddReference('System')
|
||
clr.AddReference('System.Data')
|
||
clr.AddReference('Kingdee.BOS')
|
||
clr.AddReference('Kingdee.BOS.Core')
|
||
clr.AddReference('Kingdee.BOS.App')
|
||
clr.AddReference('Kingdee.BOS.App.Core')
|
||
clr.AddReference('Kingdee.BOS.Contracts')
|
||
clr.AddReference('Kingdee.BOS.DataEntity')
|
||
clr.AddReference('Kingdee.BOS.ServiceHelper')
|
||
clr.AddReference('Kingdee.BOS.WebApi.FormService')
|
||
#dairycloud基础库中的常用实体对象(分命名空间导入,不会递归导入)
|
||
from Kingdee.BOS.Core import *
|
||
from Kingdee.BOS.Util import *
|
||
from Kingdee.BOS.Core.Bill import *
|
||
from Kingdee.BOS.Core.List import *
|
||
from Kingdee.BOS.Core.Bill.PlugIn import *
|
||
from Kingdee.BOS.Orm.DataEntity import *
|
||
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
|
||
from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import *
|
||
from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
|
||
from Kingdee.BOS.Core.Metadata.ConvertElement.ServiceArgs import *
|
||
from System import *
|
||
from System.Data import *
|
||
from Kingdee.BOS.App.Data import *
|
||
from Kingdee.BOS.App import *
|
||
from Kingdee.BOS.Orm import *
|
||
from Kingdee.BOS.Contracts import *
|
||
from System.Collections.Generic import List
|
||
from Kingdee.BOS.ServiceHelper import *
|
||
from Kingdee.BOS.App.Core import *
|
||
from Kingdee.BOS.WebApi.FormService import *
|
||
|
||
def OnPreparePropertys(e):
|
||
e.FieldKeys.Add("FVersions");
|
||
e.FieldKeys.Add("FBillNo");
|
||
e.FieldKeys.Add("FForecastYear");
|
||
|
||
def EndOperationTransaction(e):
|
||
# raise Exception("A")
|
||
if this.FormOperation.OperationId == 1:
|
||
DoClosePLN_FORECAST(e);
|
||
def DoClosePLN_FORECAST(e):
|
||
for entity in e.DataEntitys:
|
||
billNo = entity["BillNo"]
|
||
billId = entity["Id"]
|
||
|
||
sqlL = """/*dialect*/
|
||
|
||
;WITH #年度预测单 AS (
|
||
SELECT t1.FBILLNO,t1.FISCLOSE,t0.FFORECASTYEAR,t0.FBILLNO 'thisBillNo'
|
||
,ROW_NUMBER() OVER (ORDER BY t1.FBILLNO DESC) RN
|
||
,CASE WHEN t1.FBILLNO = t0.FBILLNO THEN 1 ELSE 0 END A
|
||
FROM T_PLN_FORECAST2YEAR t0
|
||
INNER JOIN T_PLN_FORECAST2YEAR t1 on t0.FFORECASTYEAR = t1.FFORECASTYEAR
|
||
WHERE t0.FBILLNO = '{0}'
|
||
--AND t1.FISCLOSE != 'B'
|
||
)
|
||
SELECT t0.FBILLNO,t0.FID,t0.FCONVERTBILLNO,t0e.FENTRYID,t0e.FCLOSESTATUS,t0.FBILLTYPEID
|
||
FROM ( SELECT TOP 1 t2.*
|
||
FROM #年度预测单 t2
|
||
INNER JOIN #年度预测单 t1 on t1.A = 1
|
||
WHERE t2.RN > t1.RN
|
||
ORDER BY t2.RN
|
||
) tt
|
||
INNER JOIN T_PLN_FORECAST t0 on t0.FCONVERTBILLNO = tt.FBILLNO
|
||
INNER JOIN T_PLN_FORECASTENTRY t0e on t0e.FID = t0.FID
|
||
WHERE 1 = 1
|
||
AND t0.FBILLTYPEID = '67707a90214919' --年度
|
||
AND (t0e.FCLOSESTATUS = 'A' OR t0e.FCLOSESTATUS = '')
|
||
|
||
""".format(billNo)
|
||
# raise Exception(sqlL);
|
||
dataList = DBServiceHelper.ExecuteDynamicObject(this.Context, sqlL)
|
||
if dataList.Count == 0:
|
||
return;
|
||
# 请求参数
|
||
|
||
id = dataList[0]["FID"]
|
||
pkEntryIds = List[str]()
|
||
para = {"CreateOrgId":this.Context.UserId,"Numbers":[],"Ids":"","PkEntryIds":[],"UseOrgId":this.Context.CurrentOrganizationInfo.ID,"NetworkCtrl":"","IgnoreInterationFlag":""}
|
||
for item in dataList:
|
||
# pkEntryIds.Add(str(item["FENTRYID"]))
|
||
para["PkEntryIds"].Add({"Id":str(item["FID"]),"EntryIds":str(item["FENTRYID"])})
|
||
|
||
# raise Exception(JsonUtil.Serialize(para))
|
||
# 业务对象标识
|
||
formId = "PLN_FORECAST"
|
||
# 操作接口编码
|
||
operateNumber = "BillClose"
|
||
resultJson = WebApiServiceCall.Execute(this.Context, formId, operateNumber, JsonUtil.Serialize(para));
|
||
# raise Exception(JsonUtil.Serialize(resultJson))
|
||
if resultJson !=None :
|
||
IsSuccess = resultJson["Result"]["ResponseStatus"]["IsSuccess"]
|
||
if IsSuccess==False:
|
||
raise Exception(JsonUtil.Serialize(resultJson))
|
||
updSql = """/*dialect*/
|
||
WITH #上版本 AS (
|
||
SELECT TOP 1 t1.*
|
||
FROM T_PLN_FORECAST2YEAR t0
|
||
INNER JOIN T_PLN_FORECAST2YEAR t1 on t0.FFORECASTYEAR = t1.FFORECASTYEAR
|
||
WHERE t0.FBILLNO = '{0}'
|
||
AND t1.FBILLNO != '{0}'
|
||
ORDER By t1.FBILLNO DESC
|
||
)
|
||
UPDATE T_PLN_FORECAST2YEAR SET FIsClose = 'B'
|
||
FROM T_PLN_FORECAST2YEAR t0
|
||
INNER JOIN #上版本 t1 on t1.FID = t0.FID
|
||
WHERE t1.FIsClose != 'B'
|
||
""".format(billNo)
|
||
|
||
res = DBServiceHelper.Execute(this.Context, updSql)
|
||
|
||
return; |