工序计划(单据头-单据体-子单据体结构)的下推与反写

概述
子单据体结构的下推和反写比较特殊,需要进行特殊处理。
下推
问题:
字段映射关系是子单据体字段->单据体字段,选择上游2行子单据体分录下推,下游单据只显示一行分录。



解决方法:
分组策略-按规则分组合并生成-单据体分录合并里加上可以唯一标识一行子单据体分录的字段,如工序号。


问题:
选择的是2行分录,下游单据把所有分录都下推了。
解决方法:
在单据转换插件的OnInSelectedRow方法里,把选择行的子单据体分录id加到过滤条件里。
示例代码
/// <summary>
/// 下推、从选单界面选择行返回后
/// </summary>
/// <param name="e"></param>
public override void OnInSelectedRow(BOS.Core.Metadata.ConvertElement.PlugIn.Args.InSelectedRowEventArgs e)
{
base.OnInSelectedRow(e);
//如果非整单下推,加上子单据体的过滤
bool selectByBillId = false;
this.Option.TryGetVariableValue(ConvertConst.SelectByBillId, out selectByBillId);
string subFilter = null;
if (!selectByBillId)
subFilter = GetPlanSubEntryFilter(e);
if (!subFilter.IsNullOrEmpty())
e.InSelectedRowsSQL = e.InSelectedRowsSQL.JoinFilterString(subFilter, "AND");
}
/// <summary>
/// 获取源单中子单据体选择行的过滤条件
/// </summary>
/// <param name="e">下推事件</param>
/// <returns>过滤条件</returns>
private string GetPlanSubEntryFilter(BOS.Core.Metadata.ConvertElement.PlugIn.Args.InSelectedRowEventArgs e)
{
string filterStr = string.Empty;
List<long> detailIds = new List<long>()
工序计划(单据头-单据体-子单据体结构)的下推与反写
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



