有源单批号拣货不拣已经过期的物料原创
5人赞赏了该文章
757次浏览
编辑于2022年02月18日 15:17:00
一、【业务需求】有源单批号拣货不拣已经过期的物料
二、【功能分析】
物料上有:1、启用批号管理;2、启用保质期管理;3、启用批号附属信息 相关控制参数。
批号、生产日期、有效期至是库存的三个维度
在保质期作为批号的附属信息时,一个批号仅有一个保质期(生产日期、有效期至)
保质期不是批号的附属信息时,一个批号允许有多个保质期(生产日期、有效期至)
二次开发步骤:
1.编写插件继承批号拣货插件基类;
2.批号拣货会根据相关维度条件获取即时库存数据,返回的即时库存中有两个字段"生产日期-FPRODUCEDATE"、"保质期至-FEXPIRYDATE", 用保质期至与当前时间进行比较,当当前时间 > 保质期至时,则将该库存记录移除
CASE WHEN T_BD_MATERIALSTOCK.FISEXPPARTOFLOT = '1' THEN T_BD_LOTMASTER.FPRODUCEDATE ELSE TI.FPRODUCEDATE END AS FPRODUCEDATE CASE WHEN T_BD_MATERIALSTOCK.FISEXPPARTOFLOT = '1' THEN T_BD_LOTMASTER.FEXPIRYDATE ELSE TI.FEXPIRYDATE END AS FEXPIRYDATE
using Kingdee.BOS.App.Data; using Kingdee.BOS.Core.Permission.Objects; using Kingdee.BOS.Util; using Kingdee.K3.SCM.App.Core.ConvertBusinessService; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; namespace Kingdee.K3.SCM.App.Stock.CustomizePlugIn { public class LotPickIncreaseQtyFilter : AbstractLotPickPlugIn { public override void RegexUseableInvData(Dictionary<long, DataTable> dctinvDatas) { base.RegexUseableInvData(dctinvDatas); foreach (var item in dctinvDatas) { int count = item.Value.Rows.Count; var invTable = item.Value; List<int> removeRows = new List<int>(); for (var i = count - 1; i >= 0; i--) { DataRow row = invTable.Rows[i]; DateTime expiryDate = Convert.ToDateTime(row["FEXPIRYDATE"]); if(DateTime.Now > expiryDate) { removeRows.Add(i); } } foreach (var index in removeRows) { invTable.Rows.RemoveAt(index); } } } } }
3.注册插件至对应服务配置界面。
以上二开仅供参考,是否能够达到业务要求有待实际账套业务数据验证!
赞 5
5人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读