单据转换表体仓库设置上游单据表头供应商默认仓库无效原创
金蝶云社区-乐滋滋
乐滋滋
4人赞赏了该文章 650次浏览 未经作者许可,禁止转载编辑于2021年01月21日 14:33:32

1、委外用料清单到委外领料单的单据转换中 字段映射仓库通过自定义公式设置用料清单表头的供应商默认仓库

设置入下

2323.png

发现这里设置的是 ( 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);

                    }

                }

            }

}

最终效果如下:

2424.png


赞 4