Files
GateDge2023_ljy/05.长园/CYG.Python/PRD_MORPT/OperationEventPlugInEx.py
PastSaid b2419eec9c 2
2024-04-10 10:39:04 +08:00

83 lines
3.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#引入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.Contracts')
clr.AddReference('Kingdee.BOS.DataEntity')
clr.AddReference('Kingdee.BOS.ServiceHelper')
#dairycloud基础库中的常用实体对象分命名空间导入不会递归导入
from Kingdee.BOS.Core import *
from Kingdee.BOS.Util import *
from Kingdee.BOS.Core.Bill 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 System import *
from System.Data import *
from Kingdee.BOS.App.Data import *
from System.Collections.Generic import List
from Kingdee.BOS.ServiceHelper import *
def OnPreparePropertys(e):
e.FieldKeys.Add("F_CYG_Worktype")
e.FieldKeys.Add("FFinishQty")
e.FieldKeys.Add("FStdManHour")
e.FieldKeys.Add("FMaterialId")
e.FieldKeys.Add("FHRWORKTIME")
def EndOperationTransaction(e):
# 保存8提交9审核1反审核26删除3
if this.FormOperation.OperationId == 1:
Audit2DoUpdMoRptInfo(e)
def Audit2DoUpdMoRptInfo(e):
# sqlList = """"""
sqlLList=List[str]();
for data in e.DataEntitys:
billId = data["Id"]
formId = data["FFormId"]
for item in data["PRD_MORPTENTRY"]:
entryId =item["Id"]
entrySeq = item["Seq"]
# 默认取上游单据人员实作工时
hrWorkTime = item["HrWorkTime"]
fitTimeTotal = 0
guideTimeTotal = 0
workTimeTypeVal = item["F_CYG_Worktype"]
workTimeType = (0 if workTimeTypeVal.strip() == '' else int(workTimeTypeVal))
# 工时类型 0.空 1.含安装工时 2.指导安装工时 3.不含安装工时
if (workTimeType) > 0:
# 完成数量
finishQty = item["FinishQty"]
# 标准单位时间
stdManHour = item["StdManHour"]
# 1.标准单位时间不为空时计算人员实作工时 = (完成数量 * 标准单位时间)
if stdManHour != 0:
hrWorkTime = finishQty * stdManHour
if workTimeType != 3:
materialId = item["MaterialId"]
if workTimeType == 1:
fitTime = materialId["F_CYG_FitTime"]
fitTimeTotal = fitTime * finishQty
# 2.含安装工时 标准单位时间为0时 人员实作工时 = 上游单据工时
if stdManHour == 0:
hrWorkTime = hrWorkTime - fitTimeTotal
if workTimeType == 2:
guideTime = materialId["F_CYG_GuideTime"]
guideTimeTotal = guideTime * finishQty
# 3.指导安装工时 标准单位时间为0时 人员实作工时 = 上游单据工时
if stdManHour == 0:
hrWorkTime = hrWorkTime - guideTimeTotal
sql = ("""/*dialect*/UPDATE T_CB_WORKHOURSENTRY SET F_CYG_Worktype = '{0}' ,FFitTimeTotal = {1},FguideTimeTotal = {2},FHrWorkTimePart = {3}
WHERE FSRCBILLID = {4} AND FSRCENTRYID = {5} AND FSRCSEQ = {6} AND FSRCBILLFORMID = '{7}' ;""").format(workTimeType,fitTimeTotal,guideTimeTotal,hrWorkTime,billId,entryId,entrySeq,formId)
# sqlList = sqlList + sql;
sqlLList.Add(sql);
# DBUtils.Execute(this.Context,sqlList)
if(sqlLList.Count > 0):
DBUtils.ExecuteBatch(this.Context,sqlLList,sqlLList.Count);