1、委外用料清单到委外领料单的单据转换中 字段映射仓库通过自定义公式设置用料清单表头的供应商默认仓库
设置入下
发现这里设置的是 ( FSupplierId.FWipStockId.Id )是因为供应商里面的默认仓库是一个基础资料 这里获取到供应商之后需要获取Id 但是很遗憾这样设置了发下携带下去还是空的 为什么呢?根据平台之前的回答 是因为单据转换中获取二层基础资料只能获取到名称 所以这里的id 获取不到 所以为空了
这里目前看 供应商字段携带到了下游领料单的表头
所以可以通过单据转换插件来处理
二开代码具体如下:
public override void OnAfterFieldMapping(AfterFieldMappingEventArgs e)
{
base.OnAfterFieldMapping(e);
List<ExtendedDataEntity> extendedDataEntitys = e.TargetExtendDataEntitySet.FindByEntityKey(CONST_SUB_PickMtrl.CONST_FEntity.ENTITY_FEntity).ToList();
if (extendedDataEntitys.IsEmpty()) return;
DynamicObject supplier = e.TargetExtendDataEntitySet.FindByEntityKey(CONST_SUB_PickMtrl.CONST_FBillHead.ENTITY_FBillHead).FirstOrDefault().DataEntity.GetDynamicObjectItemValue<DynamicObject>(CONST_SUB_PickMtrl.CONST_FBillHead.ORM_SupplierId, null);
long suppWipStock = supplier.GetDynamicObjectItemValue<DynamicObjectCollection>("SupplierBusiness").FirstOrDefault().GetDynamicObjectItemValue<long>("WipStockId_Id");
if (suppWipStock > 0)
{
//当前映射完数据以后 如果仓库没有值 设置为供应商的默认仓库
foreach (ExtendedDataEntity extendedDataEntity in extendedDataEntitys)
{
long stockid = 0;
DynamicObject rowData = extendedDataEntity.DataEntity;
stockid = rowData.GetDynamicObjectItemValue<long>(CONST_SUB_PickMtrl.CONST_FEntity.ORM_StockID_Id, 0);
if (stockid <= 0)
{
rowData.SetDynamicObjectItemValue(CONST_SUB_PickMtrl.CONST_FEntity.ORM_StockID_Id, suppWipStock);
}
}
}
}
最终效果如下:
推荐阅读