实现保存时自动删除数量为0的行原创
金蝶云社区-Joysing
Joysing
34人赞赏了该文章 4,571次浏览 未经作者许可,禁止转载编辑于2022年07月18日 11:40:02

目前8.0版本,部分单据需要使用插件(或python脚本)实现,后续版本可能会有更多单据直接使用参数配置即可实现。

实现方式:

销售出库单、销售退货单:

单据编辑界面--【选型--业务参数--勾选“保存时自动删除实发(退)数量为0的行”】即可

image.png

直接调拨单、生产领料单、生产退料单:

单据编辑界面--【选型--业务参数--勾选“保存时清除实发(退)为零的分录”】即可

image.png

其他单据未添加参数控制的,可以用以下python脚本实现:

(社区的代码编辑器会改变代码格式,直接复制代码可能会格式不正确,请下载附件内容)

import clr
clr.AddReference("Kingdee.BOS")
clr.AddReference("Kingdee.BOS.App")
clr.AddReference("Kingdee.BOS.Core")
clr.AddReference("Kingdee.BOS.DataEntity")
clr.AddReference("System.Data")
clr.AddReference('Kingdee.BOS.Contracts')
from Kingdee.BOS.Util import *
from System import *
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Orm import *
from Kingdee.BOS.App import *
from Kingdee.BOS.Contracts import *

#采购入库单表单插件
def BeforeSave(e):
    DeleteEntryWhenZore("FInStockEntry","FRealQty")

#数量为0时删除分录行。EntryKey:单据体标识,QtyKey:数量字段标识
def DeleteEntryWhenZore(EntryKey,QtyKey):
    entity = this.View.BillBusinessInfo.GetEntity(EntryKey);
    rows = this.Model.GetEntityDataObject(entity); #DynamicObjectCollection
    for i in range(rows.Count-1,-1,-1):#从后往前循环,不包括-1,步长为-1
        Qty=this.View.Model.GetValue(QtyKey,i)
        if Qty==0 or Qty==None:
            this.View.Model.DeleteEntryRow(EntryKey,i);


图标赞 34
34人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!