83 lines
3.8 KiB
Python
83 lines
3.8 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.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); |