如何解决多行分录一起下推生成检验单分单情况下,部分检验单质检员为空的情况原创
2人赞赏了该文章
839次浏览
编辑于2020年11月27日 09:01:36
说明:检验单上质检员赋值顺序:(1)物料维护质检员且检验单单据类型参数为按质检员分单时,检验单质检员取物料质检员 ;(2)物料不维护质检员或者单据类型参数不为按质检员分单的情况下,检验单质检员取当前登录用户绑定的质检员;
问题描述:检验单单据类型参数“分单依据”不为按质检员分单或物料未维护质检员的情况下,多行检验单上游单据分录一起下推检验单,满足单据转换规则中设置的分单依据时,下推生成的多张检验单中部分检验单质检员为空,此时想要实现质检员设置为当前用户绑定的质检员;
解决方案:二开单据转换插件,挂在标准产品下推检验单的单据转换规则插件之后,示例代码如下:(标准产品后续补丁会优化)
using Kingdee.BOS.Core; using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn.Args; using Kingdee.K3.Core.MFG.EnumConst; using Kingdee.K3.MFG.App.ConvertPlugIn; using System; using System.Collections.Generic; using System.Linq; using System.Text; using Kingdee.K3.Core.MFG.EntityHelper; using Kingdee.K3.MFG.App; using Kingdee.K3.BD.Contracts; using Kingdee.BOS.Orm.DataEntity; namespace Kingdee.K3.MFG.QM.App.BillConvertServicePlugIn.ToInspect { public class test : BaseBillConvertServicePlugIn { public override void AfterConvert(AfterConvertEventArgs e) { base.AfterConvert(e); ExtendedDataEntity[] billHeads = e.Result.FindByEntityKey(CONST_QM_InspectBill.CONST_FBillHead.ENTITY_FBillHead); DynamicObject[] newDatas = billHeads.Select(s => s.DataEntity).ToArray(); foreach(ExtendedDataEntity billHead in billHeads) { long inspectorId = billHead.DataEntity.GetDynamicValue<long>(CONST_QM_InspectBill.CONST_FBillHead.ORM_InspectorId_Id); if (inspectorId <= 0) { long inspectOrgId = billHead.DataEntity.GetDynamicValue<long>(CONST_QM_InspectBill.CONST_FBillHead.ORM_InspectOrgId_Id); inspectorId = AppServiceContext.GetService<IStaffService>().GetUserOperatorId(this.Context, this.Context.UserId, inspectOrgId, "ZJY"); billHead.DataEntity.SetDynamicObjectItemValue(CONST_QM_InspectBill.CONST_FBillHead.ORM_InspectorId_Id, inspectorId); } } AppServiceContext.DBService.LoadReferenceObject(this.Context, newDatas.ToArray(), newDatas.FirstOrDefault().DynamicObjectType); } } }
赞 2
2人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读