电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

委外齐套分析下推领料单限制拣货仓库

来源:金蝶云社区作者:金蝶2024-09-234

委外齐套分析下推领料单限制拣货仓库

# 委外齐套分析下推领料单限制拣货仓库 ## 业务场景 委外齐套分析在完成齐套分析后会生成本次领料数,在审核后点击下推委外领料单会根据当前的本次领料数下推委外领料单并进行目标数量的填充。在完成数量填充后,单据转换根据拣货服务,自动按当前的发料组织匹配可用的库存。标准产品在该拣货过程未与委外齐套分析仓库页签勾选的仓库范围联动,导致匹配到不应考虑的仓库库存。 本文提供给一种二开办法来补充实现如何控制拣货服务在限定的仓库范围内匹配库存。 ## 实现方案 1.二开委外齐套分析至委外领料单单据转换,传入委外齐套分析仓库页签设置的仓库范围。 2.二开委外领料单拣货服务,加入考虑第1步传入的仓库范围,约束拣货服务获取的库存数据以及先后顺序。 ## 详细技术步骤 ### 二开委外领料单 ![扩展元数据.webp](/download/0100b37a9bf0e5124dedae26255535fd8094.webp) 加入扩展文本字段,用于下推时填入仓库范围 ### 扩展修改单据转换 ![注册单据转换插件.webp](/download/01000dd8122e587f48ff9958bedca28ec03d.webp) 该插件用于获取源单的仓库范围填充到领料单分录上 #### 参考插件代码 ```csharp using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn.Args; using Kingdee.BOS.Core.List; using Kingdee.BOS.Util; using Kingdee.K3.Core.MFG.EntityHelper; using Kingdee.BOS.Core; using Kingdee.BOS.Core.Metadata; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.App; using Kingdee.BOS.Contracts; namespace SampleAppPlugIn { public class SampleConvertPlugIn : AbstractConvertPlugIn { long pmBillId = 0;//委外齐套分析单内码 public override void OnInSelectedRow(InSelectedRowEventArgs e) { IEnumerable<ListSelectedRow> selectedRows = e.SelectedRows; if (!selectedRows.IsEmpty()) { pmBillId = selectedRows.FirstOrDefault().PrimaryKeyValue.ConvertTo<long>(); } } public override void OnAfterCreateLink(CreateLinkEventArgs e) { if (pmBillId == 0) return; List<ExtendedDataEntity> extendedDataEntitys = e.TargetExtendedDataEntities.FindByEntityKey("FBillHead").ToList(); if (extendedDataEntitys.IsEmpty()) return; FormMetadata prepareMtrlMetaData = ServiceHelper.GetService<IMetaDataService>().Load(this.Context,"SUB_PrepareMtrl") as FormMetadata; DynamicObject prepareMtrlBill = ServiceHelper.GetService<IViewService>().LoadSingle(this.Context, pmBillId, prepareMtrlMetaData.BusinessInfo.GetDynamicObjectType()); DynamicObjectCollection stockEntrys = prepareMtrlBill["PreparemtrlStockEntity"] as DynamicObjectCollection; List<long> selectedStocks = stockEntrys.Where(x => x.GetDynamicValue<bool>("Selected")).Select(x => x.GetDynamicValue<long>("StockId_Id")).ToList();//获取委外齐套分析单的仓库页签勾选的仓库 foreach (var pickData in extendedDataEntitys) { DynamicObject pickDataView = pickData.DataEntity; DynamicObjectCollection pickEntrys = pickDataView["Entity"] as DynamicObjectCollection; foreach (var pickEntry in pickEntrys) { List<long> stockIds = new List<long>();//用于过滤仓库范围的仓库ID集合 long issueStock = pickEntry.GetDynamicValue<long>("StockID_Id"); if (issueStock > 0) {//如果映射了用料清单的领料仓库,拣货只会按该仓库获取库存,这里清理掉用于获得其他仓库的库存 stockIds.Add(issueStock);//先加入发料仓,用于优先拣发料仓的库存 pickEntry.SetDynamicObjectItemValue("StockID_Id", 0); pickEntry.SetDynamicObjectItemValu

委外齐套分析下推领料单限制拣货仓库

# 委外齐套分析下推领料单限制拣货仓库## 业务场景委外齐套分析在完成齐套分析后会生成本次领料数,在审核后点击下推委外领料单会根据当...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信