diff --git a/Pilot_KD_Parino/Sal_Order/SaleOrderJieSuanJia.cs b/Pilot_KD_Parino/Sal_Order/SaleOrderJieSuanJia.cs new file mode 100644 index 0000000..224d472 --- /dev/null +++ b/Pilot_KD_Parino/Sal_Order/SaleOrderJieSuanJia.cs @@ -0,0 +1,85 @@ +using FarPoint.Excel; +using Kingdee.BOS; +using Kingdee.BOS.Core.Bill; +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Log; +using Kingdee.BOS.Orm.DataEntity; +using Kingdee.BOS.ServiceHelper; +using Kingdee.BOS.Util; +using Pilot_KD_Parino.Common; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Linq; + +namespace Pilot_KD_Parino.Sal_Order +{ + [Description("销售订单提交时刷结算价相关字段"), HotUpdate] + public class SaleOrderJieSuanJia : AbstractOperationServicePlugIn + { + + DynamicObject sheet = null; + public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e) + { + + base.BeforeExecuteOperationTransaction(e); + foreach (var rows in e.SelectedRows) + { + var Billobj = rows.DataEntity; + sheet = Billobj; + var sdsas = JsonHelper.ToJson(Billobj); + Logger.Error("销售订单对象", sdsas, new Exception()); + //获取单据Id + string Id = sheet["Id"].ToString(); + string sql = $@"/*dialect*/UPDATE T_SAL_ORDERENTRY SET F_SettlementP=b.F_JSJ,F_SettlementAmount=FQty*b.F_JSJ + FROM (SELECT b.FENTRYID, c.FMaterialId,c.F_JSJ ,fin.FExchangeRate ,F_SettlementP FROM dbo.T_SAL_ORDER a + LEFT JOIN dbo.T_SAL_ORDERENTRY b ON a.fid=b.FID + LEFT JOIN T_BD_MATERIAL c ON b.FMaterialId=c.FMATERIALID + LEFT JOIN dbo.T_SAL_ORDERFIN fin ON a.fid=fin.FID + WHERE b.FID={Id}) b + WHERE T_SAL_ORDERENTRY.FENTRYID=b.FENTRYID; + +exec [UPDATESpecialContracts] {Id} "; + DBServiceHelper.Execute(this.Context, sql); + + // UPDATE T_SAL_ORDER SET F_VRYF_Amount_yrr = b.F_SettlementAmount, F_differenceAmount = fin.FBillAllAmount_LC - b.F_SettlementAmount + //FROM(SELECT b.FID, sum(F_SettlementAmount) F_SettlementAmount from dbo.T_SAL_ORDERENTRY b + //WHERE b.FID ={ Id} + // GROUP BY b.FID ) b + // LEFT JOIN dbo.T_SAL_ORDERFIN fin ON b.fid = fin.FID + //WHERE T_SAL_ORDER.FID = b.FID; + + + + sql = $@"/*dialect*/SELECT FMaterialId FROM dbo.T_SAL_ORDERENTRY + WHERE FID= {Id} AND F_SettlementP IS null"; + var data = DBServiceHelper.ExecuteDynamicObject(this.Context, sql, null, null, CommandType.Text, null); + if (data != null && data.Count > 0 ) + { + var FMaterialIdList = data.Select(t => t["FMaterialId"].ToString()).ToList(); + var SaleOrderEntryList = sheet["SaleOrderEntry"] as DynamicObjectCollection; + string mese = ""; + foreach (var item in SaleOrderEntryList) + { + if (FMaterialIdList.Contains(item["MaterialId_Id"].ToString())) + { + var name = item["MaterialId"] as DynamicObject; + mese += $@"第{item["Seq"].ToString()}分录的物料编码 {name["Number"].ToString()} 的结算价不能为空; + "; + } + } + + if (mese != "") + { + throw new KDBusinessException("", mese); + } + } + } + } + + + } +} +