前提:销售订单的收款条件必须为按物料明细收款
操作路径:销售订单-表单插件-注册Python脚本:
import clr
clr.AddReference('mscorlib')
from System import *
def DataChanged(e):
#监控是不是指定字段发生改变
if e.Field.Key == "FRecConditionId" or e.Field.Key == "F_VOPH_xm":
UpdatePriceAndDecimal()
def UpdatePriceAndDecimal():
FRecCondition = this.View.Model.GetValue("FRecConditionId")#表头收款条件
if not FRecCondition is None:
if FRecCondition["RECMETHOD"] == "3":#收款条件按物料明细收款
SaleOrderEntry = this.View.Model.DataObject["SaleOrderEntry"]#明细信息页签
FSaleOrderPlan = this.View.Model.DataObject["SaleOrderPlan"]#收款计划页签
if not SaleOrderEntry is None and SaleOrderEntry.Count > 0 and not FSaleOrderPlan is None and FSaleOrderPlan.Count > 0:
for itemSOEntry in SaleOrderEntry:
seqSO = itemSOEntry["Seq"]
for itemFI in FSaleOrderPlan:
seqFI = itemFI["MaterialSeq"]
if seqSO == seqFI:#当收款计划的物料行号跟明细的行号一致时
#当字段为基础资料等结构型字段时
p = this.View.BillBusinessInfo.GetField("F_VOPH_xm1")
this.View.Model.SetValue(p,itemFI,itemSOEntry["F_VOPH_xm"])
this.View.UpdateView("FSaleOrderPlan")#更新视图
实现效果:
推荐阅读