直接调拨单反写销售订单中新增加字段问题
金蝶云社区-杜晓军
杜晓军
0人赞赏了该文章 780次浏览 未经作者许可,禁止转载编辑于2016年05月23日 18:24:37

我公司销售流程为:销售订单——发货通知单——直接调拨单——销售出库单,现在需要实现直接调拨单保存时反写销售订单列表中的新加字段“已通知未调拨数量”。问题是:我将反写插件应用在直接调拨单反写规则中,调试的时候不能得到累积通知发货数量,只能得到关联调拨数量和基本销售数量。以下代码是我仿造发货通知单反写销售订单中的已通知发货金额写的。
using Kingdee.BOS.App.Data;
using Kingdee.BOS.BusinessEntity.BusinessFlow;
using Kingdee.BOS.Core.BusinessFlow;
using Kingdee.BOS.Core.BusinessFlow.PlugIn;
using Kingdee.BOS.Core.BusinessFlow.PlugIn.Args;
using Kingdee.BOS.Core.Metadata.FieldElement;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;
using System;
using System.ComponentModel;
using Kingdee.BOS;

namespace WriteBackNew_Test1
{
[Description("直接调拨单的反写已通知发货未调拨数量")]
public class Class12 : AbstractBusinessFlowServicePlugIn
{
//private string _ruleId = "957e9dcf-b5c9-44ca-bf22-8b4206776f32";

private void AddSaleOrderField(AfterCustomReadFieldsEventArgs e)
{
e.AddFieldKey("FBaseDeliJoinQty");//累计已通知发货数
e.AddFieldKey("F_FDA_Qty");
e.AddFieldKey("FBaseTransJoinQty");//关联调拨数量
}

public override void AfterCommitAmount(AfterCommitAmountEventArgs e)
{

if (e.SourceBusinessInfo.GetForm().Id.EqualsIgnoreCase("SAL_SaleOrder")
&& e.SourceCommitField.Key.EqualsIgnoreCase("FBaseTransJoinQty"))
{
// 累计发货通知数量
int baseQty = Convert.ToInt32(e.SourceActiveRow["FBaseDeliJoinQty"]); ////////问题在这里,取不到累计发货通知数量
// 累计关联调拨单数量:
int basetjQty = Convert.ToInt32(e.SourceActiveRow["BaseTransJoinQty"]);
// 累计未调拨数量 = 累计发货通知数量 - 关联调拨数量
int amount = baseQty - basetjQty;
// 四舍五入
//amount = System.Math.Round(amount, 2);
// 更新累计发货通知金额字段值
e.SourceActiveRow["F_FDA_Qty"] = amount;
}
}

但是我反写字段的公式是:已通知未调拨数量= 累计通知发货数量(发货通知单反写回销售订单) - 累计关联调拨数量(直接调拨单反写回销售订单),请问这种某个字段的值是其它反写插件得到的,然后要再次计算这些字段的如何处理?