生产退料单自定义数量字段怎么包含在未领料数量的计算逻辑中?
【应用场景】
客户自己需要加了一个退料类型的字段,这个字段要包含在未领料数量的计算逻辑上
【实现步骤】
<1>未领数量=应发-已领+良品退料+来料不良数量-多领退回数量,客户需要在用料清单上加一个字段,用于生产退料单第四种退料类型反写回来。 二开一个反写插件,挂在生产退料单的反写插件上面,如下图:
<2>二开代码实例如下:
using Kingdee.BOS.Core.BusinessFlow.PlugIn.Args;
using Kingdee.K3.Core.MFG;
using Kingdee.K3.MFG.App.ServicePlugIn;
using Kingdee.K3.Core.MFG.EntityHelper;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace EK.Kingdee.K3.MFG.PRD.App.ServicePlugIn
{
public class ReturnMtrlBussinessFlow : AbstractMfgBusinessFlowServicePlugIn
{
/// <summary>
/// 获取是否跟新wip和已消耗数参数
/// </summary>
/// <param name="e"></param>
public override void BeforeTrackBusinessFlow(BeforeTrackBusinessFlowEventArgs e)
{
base.BeforeTrackBusinessFlow(e);
base.GetIsUpdateWipConsume();
}
/// <summary>
/// 待反写用料清单分录内码
/// </summary>
private List<long> UpdatePpbomEntryIds { get; set; }
/// <summary>
/// 重载此事件用于收集PPBOM分录ID
/// </summary>
/// <param name="e"></param>
public override void AfterCommitAmount(AfterCommitAmountEventArgs e)
{
base.AfterCommitAmount(e);
if (!base.IsUpdateWipConsume) return;
if (UpdatePpbomEntryIds == null) UpdatePpbomEntryIds = new List<long>();
if (string.CompareOrdinal(e.Rule.SourceFormId, MFGFormIdConst.SubSys_PRD.PPBOMBill) == 0)
{
UpdatePpbomEntryIds.Add(e.SourceActiveRow.GetDynamicObjectItemValue<long>("Id"));
}
}
/// <summary>
/// 所有单据反写完成,统一反写用料清单的未领数量
/// </summary>
/// <param name="e"></param>
public override void FinishWriteBack(FinishWriteBackEventArgs e)
{
base.FinishWriteBack(e);
if (!UpdatePpbomEntryIds.IsEmpty())
{
//这里通过SQL语句更新未领数量
}
}
}
}
生产退料单自定义数量字段怎么包含在未领料数量的计算逻辑中?
本文2024-09-23 03:22:21发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-158433.html