需求是想在报销单下推付款单时,根据组织和结算方式是电汇的时候,把我方银行账号设置固定值(是基础资料赋值)
问题:下推下来的付款单银行账号是赋了值的,但是一保存,再进来这个单子的时候,这个字段就没了
代码如下:
public override void AfterConvert(AfterConvertEventArgs e)
{
BaseDataField FBANKACNTID = e.TargetBusinessInfo.GetField("FACCOUNTID") as BaseDataField;
IViewService viewService = ServiceHelper.GetService
//分公司
long Bankid1 = 221983;
long Bankid2 = 221974;
DynamicObject[] BankObjs1 = viewService.LoadFromCache(this.Context,
new object[] { Bankid1 },
FBANKACNTID.RefFormDynamicObjectType);
//子公司
DynamicObject[] BankObjs2 = viewService.LoadFromCache(this.Context,
new object[] { Bankid2 },
FBANKACNTID.RefFormDynamicObjectType);
//stockFld.RefIDDynamicProperty.SetValue(newRowObj, stockId);
//stockFld.DynamicProperty.SetValue(newRowObj, stockObjs[0]);
// 目标单第二单据体:明细
Entity secondEntity = e.TargetBusinessInfo.GetEntity("FPAYBILLENTRY");
// 目标单关联子单据体
Entity linkEntity = null;
Form form = e.TargetBusinessInfo.GetForm();
if (form.LinkSet != null
&& form.LinkSet.LinkEntitys != null
&& form.LinkSet.LinkEntitys.Count != 0)
{
linkEntity = e.TargetBusinessInfo.GetEntity(
form.LinkSet.LinkEntitys[0].Key);
}
if (linkEntity == null)
{
return;
}
// 获取生成的全部下游单据
ExtendedDataEntity[] data = e.Result.FindByEntityKey("FBillHead");
if (data != null && data.Length > 0)
{
foreach (ExtendedDataEntity entity in data)
{
DynamicObject billObj = entity.DataEntity;
// 定义一个集合,用于收集本单对应的源单内码
//HashSet
//// 开始到主单据体中,读取关联的源单内码
long SETTLEORGID = Convert.ToInt64(billObj["SETTLEORGID_Id"]);
if (SETTLEORGID == 100004)
{
//&& PaySettlleTypeID==4
DynamicObjectCollection secondEntityRows =
secondEntity.DynamicProperty.GetValue(billObj) as DynamicObjectCollection;
foreach (var secondEntryRow in secondEntityRows)
{
long PaySettlleTypeID = Convert.ToInt64(secondEntryRow["SETTLETYPEID_Id"]);
if (PaySettlleTypeID == 4)
{
//secondEntryRow["FACCOUNTID_Id"] = 214347;
//secondEntryRow["FACCOUNTID"] = BankObjs1[0];
FBANKACNTID.RefIDDynamicProperty.SetValue(secondEntryRow, 214347);
FBANKACNTID.DynamicProperty.SetValue(secondEntryRow, BankObjs1[0]);
}
}
}
else if (SETTLEORGID == 100005)
{
DynamicObjectCollection secondEntityRows =
secondEntity.DynamicProperty.GetValue(billObj) as DynamicObjectCollection;
foreach (var secondEntryRow in secondEntityRows)
{
long PaySettlleTypeID = Convert.ToInt64(secondEntryRow["SETTLETYPEID_Id"]);
if (PaySettlleTypeID == 4)
{
//secondEntryRow["FACCOUNTID_Id"] = 213762;
//secondEntryRow["FACCOUNTID"] = BankObjs2[0];
FBANKACNTID.RefIDDynamicProperty.SetValue(secondEntryRow, 213762);
FBANKACNTID.DynamicProperty.SetValue(secondEntryRow, BankObjs2[0]);
}
}
}
}
}
}
这是我赋值完后付款单的数据包图片,我所赋值字段是红线圈住的
推荐阅读