关于采购订单付款条件选择按物料明细付款时在付款计划中获取明细信息字段的办法
字段配置说明
如果存在行删除的操作,可以直接使用这个脚本
import clr clr.AddReference('mscorlib') from System import * def BeforeSave(e): UpdatePriceAndDecimal() def UpdatePriceAndDecimal(): payCondition = this.View.Model.GetValue("FPayConditionId")#表头付款条件 if not payCondition is None: if payCondition["FPAYMENTMETHOD"] == "3":#付款条件按物料明细付款 poOrderEntry = this.View.Model.DataObject["POOrderEntry"]#明细信息页签 fIinstallmentEntry = this.View.Model.DataObject["FIinstallment"]#付款计划页签 if not poOrderEntry is None and poOrderEntry.Count > 0 and not fIinstallmentEntry is None and fIinstallmentEntry.Count > 0: for itemPOEntry in poOrderEntry: seqPO = itemPOEntry["Seq"] for itemFI in fIinstallmentEntry: seqFI = itemFI["FMATERIALSEQ"] if seqPO == seqFI:#当付款计划的物料行号跟明细的行号一致时 itemFI["Price_Demo"] = itemPOEntry["Price_Test"]#更新付款计划中的字段为明细信息中的值 itemFI["Decimal_Demo"] = itemPOEntry["Decimal_Test"] this.View.UpdateView("FIinstallment")#更新视图
参考案例:采购订单付款计划应付日期按交货日期偏移携带处理
import clr
clr.AddReference('mscorlib')
from System import *
def DataChanged(e):
#监控是不是指定字段发生改变
if e.Field.Key == "FPayConditionId" or e.Field.Key == "FDeliveryDate":
UpdatePriceAndDecimal()
def UpdatePriceAndDecimal():
payCondition = this.View.Model.GetValue("FPayConditionId")#表头付款条件
if not payCondition is None:
if payCondition["FPAYMENTMETHOD"] == "3":#付款条件按物料明细付款
poOrderEntry = this.View.Model.DataObject["POOrderEntry"]#明细信息页签
fIinstallmentEntry = this.View.Model.DataObject["FIinstallment"]#付款计划页签
if not poOrderEntry is None and poOrderEntry.Count > 0 and not fIinstallmentEntry is None and fIinstallmentEntry.Count > 0:
for itemPOEntry in poOrderEntry:
seqPO = itemPOEntry["Seq"]
for itemFI in fIinstallmentEntry:
seqFI = itemFI["FMATERIALSEQ"]
if seqPO == seqFI:#当付款计划的物料行号跟明细的行号一致时
itemFI["YFDATE"] = itemPOEntry["DeliveryDate"].AddDays(-5) #更新付款计划中的字段为明细信息中的值,日期偏移提前5天
this.View.UpdateView("FIinstallment")#更新视图
itemFI["Price_Demo"] = itemPOEntry["Price_Test"]#更新付款计划中的字段为明细信息中的值
itemFI["Decimal_Demo"] = itemPOEntry["Decimal_Test"]
这里为什么有四个值,没看明白,不知道具体怎么改
来评论下,文本的可以了
但是基础资料的怎么设置,不知道这个p=放在什么位置
如果是基础资料字段的话则不能简单使用数据包的形式对属性进行赋值,需要改为:
p = this.View.BillBusinessInfo.GetField("FPrice_Demo")#根据字段标识获取字段
this.View.Model.SetValue(p,itemFI,itemPOEntry["Price_Demo"])#更新付款计划中的字段为明细信息中的值
import clr
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Kingdee.BOS.App')
from Kingdee.BOS import *
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
from Kingdee.BOS.Core.Base import *
def DataChanged(e):
#监控是不是指定字段发生改变
if e.Field.Key == "FPayConditionId" or e.Field.Key == "F_TNKJ_Assistantxmh":
UpdatePriceAndDecimal()
def UpdatePriceAndDecimal():
payCondition = this.View.Model.GetValue("FPayConditionId")#表头付款条件
if not payCondition is None:
if payCondition["FPAYMENTMETHOD"] == "3":#付款条件按物料明细付款
poOrderEntry = this.View.Model.DataObject["POOrderEntry"]#明细信息页签
fIinstallmentEntry = this.View.Model.DataObject["FIinstallment"]#付款计划页签
if not poOrderEntry is None and poOrderEntry.Count > 0 and not fIinstallmentEntry is None and fIinstallmentEntry.Count > 0:
for itemPOEntry in poOrderEntry:
seqPO = itemPOEntry["Seq"]
for itemFI in fIinstallmentEntry:
seqFI = itemFI["FMATERIALSEQ"]
if seqPO == seqFI:#当付款计划的物料行号跟明细的行号一致时
itemFI["F_TNKJ_AssistantXMH_SRC"] = itemPOEntry["F_TNKJ_Assistantxmh"]#更新付款计划中的字段为明细信息中的值
this.View.UpdateView("FIinstallment")#更新视图
按照上面修改放在应付单表单插件,不生效,辛苦老师帮忙 看下什么原因呢
关于采购订单付款条件选择按物料明细付款时在付款计划中获取明细信息字段的办法
本文2024-09-16 19:06:34发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-26457.html