Python单据转换插件处理寄售结算单结算币别错乱问题

在版本PT-146881 [7.7.0.202106]之前,由于直接调拨单的单据插件会依据调出库存组织(调出库存组织是直接调拨单上的主业务组织),调出货主(表头上的字段)获取结算币别,但是在寄售结算单中,结算币别应该要依据寄售结算单的结算组织获取,因此有客户提单了此需求,通版在PT-146881 [7.7.0.202106]版本中,把寄售结算单上的结算币别,汇率类型,本位币都从直接调拨单的直接上游(比如发货通知单或销售订单)获取,而不是直接调拨单上获取(默认情况下,直接调拨单到寄售结算单的单据转换中的字段映射就是从直接调拨单上携带的),但在这个补丁处理时,有一个小bug,那就是结算币别会被汇率类型取代,比如说在寄售结算单中的汇率类型为固定汇率,那么它的结算币别始终会是人民币,因为固定汇率和人民币默认在数据库中的ID是一样的(如果汇率是即期汇率,结算币别始终是香港元,通过下图Sql脚本查询结果中的FRATETYPEID和FCURRENCYID字段值对应),如下图1-1所示:

图1-1
在后一个版本中,通版已经修复了这个问题,因此建议客户直接升级到PT-146884 [7.7.0.202108]版本中,如果客户有特殊要求不能升级,则可在直接调拨单到寄售结算单单据转换中的参照下图1-2所示,添加一个Python插件:

图1-2
上图中如果点确定按钮时有弹出Python语法错误提示,可直接忽略,附件中包含有Python脚本,可直接从附件拷贝出来。下文为其Python脚本代码(注:不要直接从论坛中拷贝以下Python脚本,要从附件中拷贝,因为下文的空格会被HTML转义)
import clr
clr.AddReference('System')
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Kingdee.BOS.DataEntity')
from System import *
global settleCurrency
settleCurrency = None;
def OnAfterCreateLink(e):
dataSet = e.TargetExtendedDataEntities;
heads = dataSet.FindByEntityKey("FBillHead");
for head in heads:
headFinance = head.DataEntity["SaleCconsignSettleFinance"];
headFinance = headFinance[0];
global settleCurrency;
if settleCurrency is not None:
headFinance["SettleCurrId_Id"] = Convert.ToInt32(settleCurrency["Id"])
headFinance["SettleCurrId"] = settleCurrency;
Python单据转换插件处理寄售结算单结算币别错乱问题
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



