操作插件写法
金蝶云社区-勤劳的小蜜蜂
勤劳的小蜜蜂
3人赞赏了该文章 2076次浏览 未经作者许可,禁止转载编辑于2019年05月02日 08:34:05

using Kingdee.BOS.App.Data;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Orm.DataEntity;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace HUALI.K3.SCM.PUR.Business.ServicePlugln
{
[Description("计划订单关闭状态后更新销售订单分录字段:去库存状态")] //描述该插件的功能
[Kingdee.BOS.Util.HotUpdate] //7.1以后版本支持热部署
public class OrderAndStock:AbstractOperationServicePlugIn
{
public override void OnPreparePropertys(PreparePropertysEventArgs e) //有些单据中字段没有加载到的,可在本方法强制加载
{
e.FieldKeys.Add("FEntity");
e.FieldKeys.Add("FRELEASESTATUS");//业务状态
e.FieldKeys.Add("FSALEORDERNO");//需求单号
e.FieldKeys.Add("FSALEORDERENTRYSEQ");//需求单据行号
}
///


/// 操作结束后功能处理
///

///
public override void EndOperationTransaction(EndOperationTransactionArgs e)
{
base.EndOperationTransaction(e);
//判断是否一张计划订单都没有选中
if (e.DataEntitys.Count() < 1)
{
return;
}
//遍历所选中的计划订单
foreach (DynamicObject Entity in e.DataEntitys) //遍历数据包
{
if (Entity != null)
{
String FRELEASESTATUS = (String)Entity["ReleaseStatus"];

//计划订单业务状态必须是已关闭4:手工关闭
if (FRELEASESTATUS == "4")
{
//修改对应销售订单分录去库存字段值
String FSALEORDERNO = (String)Entity["SaleOrderNo"];//需求单据号
String FSALEORDERENTRYSEQ = (String)Entity["SaleOrderEntrySeq"];//需求单据行号
if(!"".Equals(FSALEORDERNO) && !"".Equals(FSALEORDERNO))
{
updateOrder(FSALEORDERNO, FSALEORDERENTRYSEQ);
}
}
}
}
}
//修改对应销售订单分录去库存字段值、FSTATUS 反馈状态
private void updateOrder(string fSALEORDERNO, string fSALEORDERENTRYSEQ)
{
string sql = string.Format(@"/*dialect*/ update ORDEREntry set FSTATUS=1 ,FDIRECTSALE=1 from T_SAL_ORDERENTRY ORDEREntry
left join T_SAL_ORDER SAL_ORDER
on SAL_ORDER.FID=ORDEREntry.FID
where SAL_ORDER.FBILLNO='{0}' and ORDEREntry.FSEQ='{1}'", fSALEORDERNO, fSALEORDERENTRYSEQ);
DBUtils.Execute(this.Context, sql.ToString());
}
}
}