[解锁库存插件]锁库、解锁二开代码原创
金蝶云社区-zlz
zlz
6人赞赏了该文章 2,601次浏览 未经作者许可,禁止转载编辑于2022年03月12日 10:33:58

“库存锁库是动态表单,要想实现锁库、解锁可以调用服务端方法实现:

Kingdee.K3.SCM.App.Core.StockLockService.SaveLockInfo
Kingdee.K3.SCM.App.Core.StockLockService.SaveUnLockInfo。


其中SaveLockInfo(this.Context, argsList); argsList 锁库参数可以反编译锁库客户端插件参考构建:
Kingdee.K3.SCM.Stock.Business.PlugIn.LockOperate
Kingdee.K3.SCM.Stock.Business.PlugIn.LockStockOperate
Kingdee.K3.SCM.Stock.Business.PlugIn.UnLockStockOperate。”


【订单类解锁库存】直接调用平台方法

using Kingdee.K3.SCM.ServiceHelper;

List<LockStockArgs> lockStockArgs = StockServiceHelper.GetLockInfoByID(this.Context, 
string.Join(",", entryIds), "SaleOrder", false);
lockStockArgs.ForEach(i =>
            {
                  i.UnLockQty = i.LockQty;  //数量
                  i.UnLockBaseQty = i.LockBaseQty;  //基本单位数量
                  i.UnLockSecQty = i.LockSecQty;   //辅数量
                  i.UnLockNote = "xxx添加解锁";
            });
StockServiceHelper.SaveUnLockInfo(this.Context, lockStockArgs, "SaleOrder");//会自动写锁库日志

【解锁库存】:根据维度信息找到即时库存ID,再根据即时库存ID查询锁库信息后解锁

StockLockService service = StockLockService.GetInstance();
//根据库存维度等信息查找即时库存
DynamicObject invStock = service.getInvStockID(this.Context, stockId, stockLocID, lotID, ownerTypeID, ownerID,
 materialID。。。。).FirstOrDefault();
 if ( invStock!=null)
 {
         //根据即时库存ID查找锁库信息
         List<LockStockArgs> lockStockArgs = service.GetLockInfoByID(this.Context
          , string.Format("'{0}'", Convert.ToString(invStock["FID"])), "Inv", true);
         //解锁数量
          foreach (LockStockArgs arg in lockStockArgs)
          {
                 arg.UnLockQty = Qty;
                 arg.UnLockNote = "xxx解锁";
          }
         StockServiceHelper.SaveUnLockInfo(this.Context, stockArgs, "Inv");//会自动写锁库日志
}


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

您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!

请选择打赏金币数 *

10金币20金币30金币40金币50金币60金币
可用金币: 0