背景
費用報銷單分錄的報銷未付款金額,客戶需要打印出來一個匯總,不顯示單據體。
1,拖一個金額字段冗余在單據頭。
2,套打里面吧這個字段設置到對應的打印位置。
3,掛插件

1 #-*- coding: utf-8 -*- 2 import clr 3 clr.AddReference("System") 4 clr.AddReference("System.Core") 5 clr.AddReference("Kingdee.BOS") 6 clr.AddReference("Kingdee.BOS.Core") 7 clr.AddReference("Kingdee.BOS.DataEntity") 8 clr.AddReference("Kingdee.BOS.ServiceHelper") 9 import sys 10 from System import * 11 from System.Collections.Generic import * 12 from System.Threading import * 13 from Kingdee.BOS.Log import * 14 from Kingdee.BOS.Core.Log import * 15 from Kingdee.BOS.Core import * 16 from Kingdee.BOS.Core.DynamicForm import * 17 from Kingdee.BOS.KDThread import * 18 from Kingdee.BOS.DataEntity import * 19 from Kingdee.BOS.Orm.DataEntity import * 20 from Kingdee.BOS.ServiceHelper import * 21 from Kingdee.BOS.Core.Metadata import SelectorItemInfo ##字段選擇實體類 22 from Kingdee.BOS.Core.SqlBuilder import QueryBuilderParemeter ##查詢參數實體類 23 #修改默認編碼為utf8 24 reload(sys) 25 sys.setdefaultencoding('utf-8') 26 27 def OnPrepareNotePrintData(e): 28 if e.DataSourceId == "FBillHead": 29 # 獲取到單據頭的數據包 30 qureyObjs = e.DataObjects 31 # 獲取數據包行數 32 _count = e.DataObjects.Count 33 # 獲取到單據頭的數據包類型 34 DevDynamicTypy = qureyObjs[0].DynamicObjectType 35 # 是否需要注冊字段 36 IsNeedReg = True 37 for p in DevDynamicTypy.Properties: 38 if str(p.Name).lower() == "F_Dev_ReimbNotPaySum".lower(): 39 IsNeedReg = False 40 # 如果需要注冊字段就注冊字段 41 if IsNeedReg: 42 #注冊一個F_PAEZ_Amount字段 43 DevDynamicTypy.RegisterSimpleProperty("F_Dev_ReimbNotPaySum", str,None,False,[]) 44 # 循環把數據包的數據賦值回去。 45 for i in range(0,_count): 46 # 創建一個新的數據包 47 obj = DynamicObject(DevDynamicTypy) 48 # 把舊數據包的值全部給新數據包 49 for p in qureyObjs[0].DynamicObjectType.Properties: 50 obj[p] = e.DataObjects[0][p] 51 # 查詢出未付款金額 52 sql = "/*dialect*/select CAST(SUM(FREIMBNOTPAYAMOUNT) AS DECIMAL(18,2)) as FREIMBNOTPAYAMOUNT from t_ER_ExpenseReimbEntry where fid = " + str(qureyObjs[0][0]) 53 dyc = DBServiceHelper.ExecuteDynamicObject(this.Context, sql) 54 if dyc != None: 55 Amount = dyc[0][0] 56 # 把未付款金額的數據給OBJ數據包 57 obj["F_Dev_ReimbNotPaySum"] = Amount; 58 # 最后用新的數據包來替換舊的數據包 59 e.DataObjects[i] = obj
4,套打使用GetValue("F_PAEZ_Amount")
5,完成