自定义单据A明细有字段B,付款对象类别,付款对象。
在付款单源单明细和明细内增加对应的A字段。
下推的时候,单据A的B字段自动带入付款单源单明细对应字段,然后希望B字段同时写到明细的对应字段,故写插件,大致代码如下。
现有情况,实际业务人员会勾选B字段不同,但是付款对象相同的一起下推,希望生成同一张付款单。
假如上游单据有2张
B 付款对象类别 付款对象 付款金额
住宿费 员工 B 100
打车费 员工 B 200
下推到付款单以后,付款单源单明细里面也有
住宿费 员工 B 100
打车费 员工 B 200
但是付款单明细里面只有
住宿费 员工 B 100
导致无法保存,请问如何修改?虽说可以修改按B字段不同生成不同应付单,但是这不是用户需求。
代码里的payEntry = (extendedDataEntity.DataEntity["PAYBILLENTRY"] as DynamicObjectCollection);
payentry的count为1;
public override void AfterConvert(AfterConvertEventArgs e)
{
base.AfterConvert(e);
int num = 0;
ExtendedDataEntity[] array = e.Result.FindByEntityKey("FBillHead");
ExtendedDataEntity[] array2 = array;
for (int i = 0; i < array2.Length; i++)
{
ExtendedDataEntity extendedDataEntity = array2[i];
DynamicObjectCollection payEntry;
DynamicObjectCollection sourceEntry;
payEntry = (extendedDataEntity.DataEntity["PAYBILLENTRY"] as DynamicObjectCollection);
sourceEntry = (extendedDataEntity.DataEntity["PAYBILLSRCENTRY"] as DynamicObjectCollection);
//DynamicObject dynamicObjectByID = CNCommonFunction.GetDynamicObjectByID(e.Context, "CN_RECPAYPURPOSE", num2);
decimal total;
for (int j = 0; j < payEntry.Count; j++)
{
payEntry[j]["B"] = sourceEntry[j]["B"];
}
num++;
}
}
推荐阅读