实现保存时自动删除数量为0的行原创
34人赞赏了该文章
4,571次浏览
编辑于2022年07月18日 11:40:02
目前8.0版本,部分单据需要使用插件(或python脚本)实现,后续版本可能会有更多单据直接使用参数配置即可实现。
实现方式:
销售出库单、销售退货单:
单据编辑界面--【选型--业务参数--勾选“保存时自动删除实发(退)数量为0的行”】即可
直接调拨单、生产领料单、生产退料单:
单据编辑界面--【选型--业务参数--勾选“保存时清除实发(退)为零的分录”】即可
其他单据未添加参数控制的,可以用以下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);
采购入库单表单插件.zip(0.68KB)
赞 34
34人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读