using GZ_LTHPilot_ORDER.Service; using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.Util; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; namespace GZ_LTHPilot_ORDER.T_IV_SALESIC.ServicePlugIn { [Description("服务插件:发票审核,刷新销售订单累计开票金额字段"), HotUpdate] public class Audit : AbstractOperationServicePlugIn { public override void OnPreparePropertys(PreparePropertysEventArgs e) { base.OnPreparePropertys(e); e.FieldKeys.Add("F_PaperNumber"); e.FieldKeys.Add("F_contractno"); e.FieldKeys.Add("FALLAMOUNTFOR"); e.FieldKeys.Add("FSALEORGID"); } /// /// 审核插件执行后插件、事务提交后事件 /// /// public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e) { base.AfterExecuteOperationTransaction(e); foreach (var bill in e.DataEntitys) { var org = bill["SALEORGID"] as DynamicObject; var orgId = org["Id"].ToString(); // 销售组织 var entryList = bill["SALESICENTRY"] as DynamicObjectCollection; // 根据合同号分组 var grouped = entryList.GroupBy(n => n["F_contractno"].ToString()); // 销售订单服务 var saleOrderService = new SaleOrderService(this.Context); // 发票服务 SaleSicsService saleSicsService = new SaleSicsService(this.Context); foreach (var group in grouped) { // 纸质合同号 var contractNo = group.Key; // TODO 根据组织和纸质合同号查找销售订单 var saleOrderList = saleOrderService.GetSaleOrderByOrgIdAndContractNo(orgId, contractNo); if (saleOrderList.Count == 0) { continue; } foreach (var saleOrder in saleOrderList) { // TODO 刷新销售订单单头的累计开票金额 saleSicsService.UpdateSaleOrderSumSicsamountBySaleOrder(saleOrder); } } } } } }