应收转销的旧单据,如何刷新新增的转出客户字段
金蝶云社区-非零
非零
0人赞赏了该文章 907次浏览 未经作者许可,禁止转载编辑于2015年12月29日 23:46:05

对应收单进行扩展,增加了转出客户这个字段:F_Bmh_TransCustomer


在应收转销时,把转出客户给写入。

为此,把原先的Kingdee.K3.FIN.AP.Business.PlugIn.AutoWriteOffWizardEdit全部搬过来,并且把原来的禁用(不如此,好像会出错,不知道为什么)。

并且加上如下一段程序:
[code]public override void WizardStepChanged(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.WizardForm.WizardStepChangedEventArgs e)
{
base.WizardStepChanged(e);
if (e.WizardStep.ContainerKey == "FCompletePanel")
{
UpdateReceivable();
}
}

private void UpdateReceivable()
{
//获取保存服务
ISaveService saveService = Kingdee.BOS.App.ServiceHelper.GetService();

FormMetadata materialMetada = MetaDataServiceHelper.Load(this.Context, "AR_receivable") as FormMetadata;
//构建过滤条件
QueryBuilderParemeter queryParameter = new QueryBuilderParemeter();
queryParameter.BusinessInfo = materialMetada.BusinessInfo;
queryParameter.FilterClauseWihtKey = "F_BMH_TRANSCUSTOMER=0 and FBILLTYPEID='545301011e96f8'";
DynamicObject[] objs = BusinessDataServiceHelper.Load(
this.Context,
materialMetada.BusinessInfo.GetDynamicObjectType(),
queryParameter);

if (objs != null)
{
var customerId = 0;

foreach (var obj in objs)
{
customerId = GetCustomerId(Convert.ToInt32(obj["ID"]));
obj["F_Bmh_TransCustomer_Id"] = customerId;
}

saveService.Save(this.Context, objs);
}

}
///


/// 获取客户编号
///

/// 应收单编号
///
private int GetCustomerId(int fID)
{
int custId = 0;
var sql = string.Format(@"Select top 1 FCUSTOMERID from T_AR_RECEIVABLE r inner join T_AR_RECMACTHLOGENTRY l on r.FID=l.FSRCBILLID
where l.FSOURCETYPE<>'545301011e96f8' and l.FID=(select lg.FID from T_AR_Receivable re inner join T_AR_RECMACTHLOGENTRY lg
on re.FID=lg.FSRCBILLID where re.FID={0})", fID);
using (IDataReader dr = DBServiceHelper.ExecuteReader(this.Context, sql))
{
while (dr.Read())
{
custId = dr.GetInt32(0);
}
}

return custId;
}[/code]这个,对新操作的应收转销单,转出客户填写正常。

现在的问题是:
在开发前,K3已经在运行一段时间了,已经生成了大量的应收转销单据。
现在要求把旧单据的转出客户也写进去,但去T_AR_RECEIVABLE这个表查看了,如果只是把查到的转出客户ID直接写到F_BMH_TRANSCUSTOMER里,并不会起作用。
我觉得,应该是有个中间表在把这个数据保存着,这个会在哪里呢?
那我该如何在让已有的旧数据也保存上它们原先的转出客户?