套打按照单据体序号排序—分组出现顺序排序

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

套打按照单据体序号排序—分组出现顺序排序

应用场景:

套打时,默认是按照分组字段做升序或降序排序,如物料编码,但是某些场景需要按照单据上序号排序,而不是要按照物料编码来做升序降序排列,希望保持跟单据上显示的一致。

以我这边环境为例:

检验单套打按照检验项目和组别分组之后,默认排序会跟系统单据上不一致。如下图:

image.webp

image.webp

到套打上会按照检验项目首字母进行排序,这样就跟单据上检验项目顺序不一致,IQC反馈检验是按照顺序进行检验,所以就产生了这个需求场景。

这个时候需要通过注册python插件来干预,让其按照检验项目序号进行排序。

插件如下:

from System import *

from Kingdee.BOS import *

from Kingdee.BOS.DataEntity import *

def OnPrepareNotePrintData(e):

    if e.NotePrintTplId.Equals("LLJYBGTD1"):

        if e.DataSourceId.Equals("FItemDetail",StringComparison.OrdinalIgnoreCase):

            seqKey = "FItemDetail" + "_" + "FSeq";

            materialKey = "FInspectItemId_FNumber";

            if e.DataObjects == None or e.DataObjects.Length <= 0:

                return;

            if not e.DataObjects[0].DynamicObjectType.Properties.ContainsKey(materialKey):

                return;

            if not e.DataObjects[0].DynamicObjectType.Properties.ContainsKey(seqKey):

                return;

            rowMaterialSeq = {};

            for index in range(len(e.DataObjects)):

                material = e.DataObjects[index][materialKey];

                if not rowMaterialSeq.has_key(material):

                    rowMaterialSeq[material] = e.DataObjects[index][seqKey];

            tempList = sorted(e.DataObjects,key =lambda x:(rowMaterialSeq[x[materialKey]], x[seqKey]));

            for index in range(len(tempList)):

                e.DataObjects[index] = tempList[index];

其中

NotePrintTplId——套打模板ID(LLJYBGTD1
materialKey——对应模板的分组字段(FMaterialId_FNumber)—注意此处要取编码,因为按照检验项目排序,检验项目是个基础资料,所以要取检验项目编码,即为:FInspectItemId_FNumber,取名称无效。
seqKey——对应单据体的序号字段(FQUOTATIONENTRY_FSeq)—此处取检验项目表体标识FItemDetail

注册此python脚本到表单插件和列表插件中去。

image.webp

image.webp

效果请看下图:

image.webp

image.webp

如果列表也需要套打,记得在列表插件也注册此脚本,此插件可以干预分组排序,因为按照分组排序之后,会根据分组字段例如物料编码、检验项目、等信息按升序降序重新排序生成,如果要跟单据上保持一致,此插件可以实现这个功能。


套打按照单据体序号排序—分组出现顺序排序

应用场景:套打时,默认是按照分组字段做升序或降序排序,如物料编码,但是某些场景需要按照单据上序号排序,而不是要按照物料编码来做升序降...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息