From a2d87de6f3fdea498befa42e3f50995090f8d8db Mon Sep 17 00:00:00 2001
From: yuyubo <1870149533@qq.com>
Date: Tue, 19 Aug 2025 19:58:03 +0800
Subject: [PATCH] 11
---
Pilot_KD_Parino/Pilot_KD_Parino.csproj | 4 +-
.../FaHuoHeXiaoJiLuSave.cs | 88 +++++++++++++++++++
.../FaHuoHeXiaoYanZheng.cs | 68 ++++++++++++++
.../QPHY_AutoWrireRecord/HeXiaoJiLu.cs | 87 ------------------
.../HeXiaoJiLuYanZheng.cs | 72 +++++++++++++++
Pilot_KD_Parino/SQL/SqlManage_yuyubo.cs | 10 ++-
.../Sal_Order/SaleOrderJieSuanJia.cs | 5 +-
7 files changed, 241 insertions(+), 93 deletions(-)
create mode 100644 Pilot_KD_Parino/QPHY_AutoWrireRecord/FaHuoHeXiaoJiLuSave.cs
create mode 100644 Pilot_KD_Parino/QPHY_AutoWrireRecord/FaHuoHeXiaoYanZheng.cs
delete mode 100644 Pilot_KD_Parino/QPHY_AutoWrireRecord/HeXiaoJiLu.cs
create mode 100644 Pilot_KD_Parino/QPHY_AutoWrireRecord/HeXiaoJiLuYanZheng.cs
diff --git a/Pilot_KD_Parino/Pilot_KD_Parino.csproj b/Pilot_KD_Parino/Pilot_KD_Parino.csproj
index d36c3e4..4aba525 100644
--- a/Pilot_KD_Parino/Pilot_KD_Parino.csproj
+++ b/Pilot_KD_Parino/Pilot_KD_Parino.csproj
@@ -335,8 +335,10 @@
+
-
+
+
diff --git a/Pilot_KD_Parino/QPHY_AutoWrireRecord/FaHuoHeXiaoJiLuSave.cs b/Pilot_KD_Parino/QPHY_AutoWrireRecord/FaHuoHeXiaoJiLuSave.cs
new file mode 100644
index 0000000..12d027b
--- /dev/null
+++ b/Pilot_KD_Parino/QPHY_AutoWrireRecord/FaHuoHeXiaoJiLuSave.cs
@@ -0,0 +1,88 @@
+using Kingdee.BOS;
+using Kingdee.BOS.App.Core;
+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.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Pilot_KD_Parino.QPHY_AutoWrireRecord
+{
+ [Description("发货通知单核销记录单保存前校验插件"), HotUpdate]
+ public class FaHuoHeXiaoJiLuSave : AbstractOperationServicePlugIn
+ {
+ public override void BeforeDoSaveExecute(BeforeDoSaveExecuteEventArgs e)
+ {
+ base.BeforeDoSaveExecute(e);
+ var dd = e.DataEntities[0];
+ if (dd["DocumentStatus"].ToString() == "C")
+ {
+ return;
+ }
+ var sssd = JsonHelper.ToJson(dd);
+ Logger.Error("发货通知单核销记录单保", sssd, new Exception());
+ var list1 = dd["FEntity"] as DynamicObjectCollection;
+ var list2 = dd["FEntity2"] as DynamicObjectCollection;
+ var amount1 = list1.Sum(t => decimal.Parse(t["FALLAMOUNT22"]?.ToString()));
+ var amount2 = list2.Sum(t => decimal.Parse(t["FALLAMOUNT33"]?.ToString()));
+ //throw new KDBusinessException("", $@"销售单明细本次核销合计金额{amount1},收款单明细本次核销合计金额{amount2},{amount1}不等于{amount2},不允许保存");
+
+
+
+ if (amount1 != amount2)
+ {
+ throw new KDBusinessException("", $@"发货通知单本次核销合计金额{amount1.ToString("F2")},收款单明细本次核销合计金额{amount2.ToString("F2")},{amount1.ToString("F2")}不等于{amount2.ToString("F2")},不允许保存");
+ }
+
+
+ var billList = list1.Select(t => t["FBILLNO2"]).ToList();
+ string bill = string.Join("','", billList);
+ string sql = $@"/*dialect*/SELECT bb.F_CONTRACTNUMBER,bb.F_AMOUNT,fin.FBillAllAmount,bb.F_expenses, a.FBILLNO
+ ,(fin.FBillAllAmount+bb.F_expenses-bb.F_AMOUNT) AS XiaoFamount
+ ,C.FBILLALLAMOUNT-A.F_AMOUNT as FaHuoFamount
+ FROM T_SAL_DELIVERYNOTICE a
+ INNER JOIN T_SAL_DELIVERYNOTICEFIN C ON C.FID =A.FID
+ INNER JOIN VRYF_t_Cust_Entry100024 b
+ ON a.FBILLNO=b.FBILLNO2
+ INNER JOIN dbo.T_SAL_ORDER bb
+ ON a.F_PAPERCONTRACT=bb.F_CONTRACTNUMBER
+ INNER JOIN dbo.T_SAL_ORDERFIN fin ON bb.FID=fin.FID
+ WHERE a.FBILLNO in ('{bill}') ";
+ var data = DBServiceHelper.ExecuteDynamicObject(this.Context, sql);
+ var one1 = (from q in data
+ join b in list1 on q["FBILLNO"].ToString() equals b["FBILLNO2"].ToString()
+ where decimal.Parse(b["FALLAMOUNT22"]?.ToString()) > decimal.Parse(q["XiaoFamount"]?.ToString())
+ || decimal.Parse(b["FALLAMOUNT22"]?.ToString()) > decimal.Parse(q["FaHuoFamount"]?.ToString())
+ select q["FBILLNO"]).ToList();
+ if (one1.Count > 0)
+ {
+ throw new KDBusinessException("", $@"发货通知单编号{string.Join(",", one1)} 核销金额+已核销金额 大于 订单总金额 ");
+ }
+
+ billList = list2.Select(t => t["FBILLNO3"]).ToList();
+ bill = string.Join("','", billList);
+ sql = $@"/*dialect*/SELECT a.FBILLNO,(a.FRECAMOUNTFOR-a.F_AMOUNT) as F_AMOUNT FROM dbo.T_AR_RECEIVEBILL a
+ WHERE a.FBILLNO in ('{bill}') ";
+ data = DBServiceHelper.ExecuteDynamicObject(this.Context, sql);
+
+ one1 = (from q in data
+ join b in list2 on q["FBILLNO"].ToString() equals b["FBILLNO3"].ToString()
+ where decimal.Parse(b["FALLAMOUNT33"]?.ToString()) > decimal.Parse(q["F_AMOUNT"]?.ToString())
+ select q["FBILLNO"]).ToList();
+ if (one1.Count > 0)
+ {
+ throw new KDBusinessException("", $@"收款单编号{string.Join(",", one1)} 核销金额+已核销金额 大于 订单总金额 ");
+ }
+
+ }
+
+ }
+}
diff --git a/Pilot_KD_Parino/QPHY_AutoWrireRecord/FaHuoHeXiaoYanZheng.cs b/Pilot_KD_Parino/QPHY_AutoWrireRecord/FaHuoHeXiaoYanZheng.cs
new file mode 100644
index 0000000..06f3bad
--- /dev/null
+++ b/Pilot_KD_Parino/QPHY_AutoWrireRecord/FaHuoHeXiaoYanZheng.cs
@@ -0,0 +1,68 @@
+using Kingdee.BOS;
+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.ComponentModel;
+using System.Data;
+using System.Linq;
+
+namespace Pilot_KD_Parino.QPHY_AutoWrireRecord
+{
+ [Description("发货通知提交和审核前校验插件"), HotUpdate]
+ public class FaHuoHeXiaoYanZheng : 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*/SELECT bb.F_CONTRACTNUMBER,bb.F_AMOUNT,fin.FBillAllAmount,bb.F_expenses, a.FBILLNO
+ ,(fin.FBillAllAmount+bb.F_expenses-bb.F_AMOUNT) AS XiaoFamount
+ ,C.FBILLALLAMOUNT-A.F_AMOUNT as FaHuoFamount,b.FALLAMOUNT22
+ FROM T_SAL_DELIVERYNOTICE a
+ INNER JOIN T_SAL_DELIVERYNOTICEFIN C ON C.FID =A.FID
+ INNER JOIN VRYF_t_Cust_Entry100024 b
+ ON a.FBILLNO=b.FBILLNO2
+ INNER JOIN dbo.T_SAL_ORDER bb
+ ON a.F_PAPERCONTRACT=bb.F_CONTRACTNUMBER
+ INNER JOIN dbo.T_SAL_ORDERFIN fin ON bb.FID=fin.FID
+ WHERE b.fid={Id} ";
+ var data = DBServiceHelper.ExecuteDynamicObject(this.Context, sql);
+ var one1 = data.Where(q => decimal.Parse(q["FALLAMOUNT22"]?.ToString()) > decimal.Parse(q["XiaoFamount"]?.ToString())
+ || decimal.Parse(q["FALLAMOUNT22"]?.ToString()) > decimal.Parse(q["FaHuoFamount"]?.ToString()))
+ .Select(q => q["FBILLNO"]).ToList();
+ if (one1.Count > 0)
+ {
+ throw new KDBusinessException("", $@"发货通知单编号{string.Join(",", one1)} 核销金额+已核销金额 大于 订单总金额 ");
+ }
+
+ sql = $@"/*dialect*/SELECT a.FBILLNO,(a.FRECAMOUNTFOR-a.F_AMOUNT) as F_AMOUNT,b.FALLAMOUNT33 FROM dbo.T_AR_RECEIVEBILL a
+ INNER JOIN VRYF_t_Cust_Entry100025 b
+ ON a.FBILLNO=b.FBILLNO3
+ WHERE b.FID={Id} ";
+ data = DBServiceHelper.ExecuteDynamicObject(this.Context, sql);
+ one1 = data.Where(q => decimal.Parse(q["FALLAMOUNT33"]?.ToString()) > decimal.Parse(q["F_AMOUNT"]?.ToString()))
+ .Select(q => q["FBILLNO"]).ToList();
+ if (one1.Count > 0)
+ {
+ throw new KDBusinessException("", $@"收款单编号{string.Join(",", one1)} 核销金额+已核销金额 大于 订单总金额 ");
+ }
+
+ }
+ }
+
+ }
+}
diff --git a/Pilot_KD_Parino/QPHY_AutoWrireRecord/HeXiaoJiLu.cs b/Pilot_KD_Parino/QPHY_AutoWrireRecord/HeXiaoJiLu.cs
deleted file mode 100644
index 5aa1e4d..0000000
--- a/Pilot_KD_Parino/QPHY_AutoWrireRecord/HeXiaoJiLu.cs
+++ /dev/null
@@ -1,87 +0,0 @@
-using DevExpress.Data.PLinq.Helpers;
-using Kingdee.BOS.App;
-using Kingdee.BOS.App.Data;
-using Kingdee.BOS.Contracts;
-using Kingdee.BOS.Core.DynamicForm;
-using Kingdee.BOS.Core.DynamicForm.PlugIn;
-using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
-using Kingdee.BOS.Core.Metadata;
-using Kingdee.BOS.Core.Metadata.FieldElement;
-using Kingdee.BOS.Log;
-using Kingdee.BOS.Orm.DataEntity;
-using Kingdee.BOS.ServiceHelper;
-using Kingdee.BOS.Util;
-using Org.BouncyCastle.Asn1.X509;
-using System;
-using System.ComponentModel;
-using System.Data;
-using System.Linq;
-
-namespace Pilot_KD_Parino.QPHY_AutoWrireRecord
-{
- [HotUpdate]
- [Description("收款核销5_2025-04-07")]
- public class HeXiaoJiLu : AbstractDynamicFormPlugIn
- {
-
- #region DataChanged(单据体值更新事件)
- ///
- /// 单据体值更新事件
- ///
- ///
- public override void DataChanged(DataChangedEventArgs e)
- {
- return;
- base.DataChanged(e);
-
- //this.View.ShowMessage(e.Field.Key.ToString());
- if (e.Field.Key.Equals("FCONTRACTNUMBER") )
- {
- //this.View.ShowMessage("22");
- var entity = this.View.BusinessInfo.GetEntity("FEntity");
- if (entity == null)
- return;
- var tempRow = this.Model.GetEntityDataObject(entity, e.Row);//行数据包
- if (tempRow["F_VRYF_Base_qtr"] != null && tempRow["F_VRYF_Base_qtr"].ToString() != "")
- {
- return;
- }
- else
- {
- //var json = JsonUtil.Serialize(tempRow);
- //Logger.Error("采购订单信息", json, new Exception());
- if (tempRow["F_MBBA_Text_qtr"] != null && tempRow["F_MBBA_Text_qtr"].ToString() != "")
- {
- string heTong = tempRow["F_MBBA_Text_qtr"].ToString();
- long orgId = this.Context.CurrentOrganizationInfo.ID;
- string sql1 = string.Format($@"/*dialect*/SELECT TOP 1 a.*,b.Fname FROM dbo.T_SAL_ORDER a WITH(NOLOCK)
- LEFT JOIN dbo.V_BD_SALESMAN_L b WITH(NOLOCK) ON a.FSalerId=b.fid WHERE a.F_contractnumber='{heTong}' and a.FSALEORGID='{orgId}'");
- this.View.ShowMessage(sql1);
- Logger.Error("采购订单信息", sql1, new Exception());
- var sql1List = DBUtils.ExecuteDynamicObject(Context, sql1);
- if (sql1List != null && sql1List.Count > 0)
- {
- var one = sql1List.FirstOrDefault();
- //FormMetadata destFormMetadata = ServiceHelper.GetService().Load(this.Context, "SAL_SaleOrder", one["FID"].ToString(), true) as FormMetadata;
- //var sale = BusinessDataServiceHelper.LoadSingle(this.Context, one["FID"], (destFormMetadata.BusinessInfo.GetField("F_VRYF_Base_qtr") as BaseDataField).RefFormDynamicObjectType);
- //DynamicObjectCollection FEntity = this.View.Model.DataObject["FEntity"] as DynamicObjectCollection;
- //var dsds = this.View.GetControl("F_VRYF_Base_qtr");
- //dsds.SetValue(one["FBILLNO"]);
-
- //var tempRow2 = FEntity[e.Row];
- //tempRow2["F_VRYF_Base_qtr"] = sale;
-
- //this.View.Model.SetValue("F_VRYF_Base_qtr", sale, e.Row);
- this.View.Model.SetValue("F_VRYF_Base_qtr", one["FID"], e.Row);
- //this.View.Model.SetValue("F_VRYF_Base_qtr", one["FBILLNO"], e.Row);
- //this.View.Model.SetValue("F_VRYF_Base_qtr", one["FBILLNO"], e.Row);
- //this.View.Model.SetValue("F_VRYF_Base_qtr", one["FBILLNO"], e.Row);
- this.View.UpdateView("FEntity");
- }
- }
- }
- }
- }
- #endregion
- }
-}
diff --git a/Pilot_KD_Parino/QPHY_AutoWrireRecord/HeXiaoJiLuYanZheng.cs b/Pilot_KD_Parino/QPHY_AutoWrireRecord/HeXiaoJiLuYanZheng.cs
new file mode 100644
index 0000000..34a0d0c
--- /dev/null
+++ b/Pilot_KD_Parino/QPHY_AutoWrireRecord/HeXiaoJiLuYanZheng.cs
@@ -0,0 +1,72 @@
+using DevExpress.Data.PLinq.Helpers;
+using Kingdee.BOS;
+using Kingdee.BOS.App;
+using Kingdee.BOS.App.Data;
+using Kingdee.BOS.Contracts;
+using Kingdee.BOS.Core.DynamicForm;
+using Kingdee.BOS.Core.DynamicForm.PlugIn;
+using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
+using Kingdee.BOS.Core.Metadata;
+using Kingdee.BOS.Core.Metadata.FieldElement;
+using Kingdee.BOS.Log;
+using Kingdee.BOS.Orm.DataEntity;
+using Kingdee.BOS.ServiceHelper;
+using Kingdee.BOS.Util;
+using Org.BouncyCastle.Asn1.X509;
+using Pilot_KD_Parino.Common;
+using System;
+using System.ComponentModel;
+using System.Data;
+using System.Linq;
+
+namespace Pilot_KD_Parino.QPHY_AutoWrireRecord
+{
+ [Description("销售核销单提交和审核前校验插件"), HotUpdate]
+ public class HeXiaoJiLuYanZheng : 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("销售销记录提交或者审核3", sdsas, new Exception());
+ //获取单据Id
+ string Id = sheet["Id"].ToString();
+ string sql = $@"/*dialect*/SELECT bb.F_CONTRACTNUMBER,bb.F_AMOUNT,fin.FBillAllAmount,bb.F_expenses, bb.FBILLNO
+ ,(fin.FBillAllAmount+bb.F_expenses-bb.F_AMOUNT) AS XiaoFamount
+ ,b.FALLAMOUNT22
+ FROM T_AutoWrireRecordEntry b
+ INNER JOIN dbo.T_SAL_ORDER bb
+ ON b.FBILLNO2=bb.FBILLNO
+ INNER JOIN dbo.T_SAL_ORDERFIN fin ON bb.FID=fin.FID
+ WHERE b.fid={Id} ";
+ var data = DBServiceHelper.ExecuteDynamicObject(this.Context, sql);
+ var one1 = data.Where(q => decimal.Parse(q["FALLAMOUNT22"]?.ToString()) > decimal.Parse(q["XiaoFamount"]?.ToString()))
+ .Select(q => q["FBILLNO"]).ToList();
+ if (one1.Count > 0)
+ {
+ throw new KDBusinessException("", $@"销售单编号{string.Join(",", one1)} 核销金额+已核销金额 大于 订单总金额 ");
+ }
+
+ sql = $@"/*dialect*/SELECT a.FBILLNO,(a.FRECAMOUNTFOR-a.F_AMOUNT) as F_AMOUNT,b.FALLAMOUNT33 FROM dbo.T_AR_RECEIVEBILL a
+ INNER JOIN T_AutoWrireRecordEntry2 b
+ ON a.FBILLNO=b.FBILLNO3
+ WHERE b.FID={Id} ";
+ data = DBServiceHelper.ExecuteDynamicObject(this.Context, sql);
+ one1 = data.Where(q => decimal.Parse(q["FALLAMOUNT33"]?.ToString()) > decimal.Parse(q["F_AMOUNT"]?.ToString()))
+ .Select(q => q["FBILLNO"]).ToList();
+ if (one1.Count > 0)
+ {
+ throw new KDBusinessException("", $@"收款单编号{string.Join(",", one1)} 核销金额+已核销金额 大于 订单总金额 ");
+ }
+
+ }
+ }
+
+ }
+}
diff --git a/Pilot_KD_Parino/SQL/SqlManage_yuyubo.cs b/Pilot_KD_Parino/SQL/SqlManage_yuyubo.cs
index 812a694..f2bb327 100644
--- a/Pilot_KD_Parino/SQL/SqlManage_yuyubo.cs
+++ b/Pilot_KD_Parino/SQL/SqlManage_yuyubo.cs
@@ -150,6 +150,12 @@ GROUP BY F_PaperNumber, FSALEORGID
C.FBILLALLAMOUNT as 'FALLAMOUNTY',
ISNULL(A.F_AMOUNT,0) as 'FYAMOUNT',
C.FBILLALLAMOUNT-A.F_AMOUNT as 'FDAMOUNT2',
+ (SELECT TOP 1
+ (fin.FBillAllAmount+bb.F_expenses-bb.F_AMOUNT) AS XiaoFamount
+ FROM dbo.T_SAL_ORDER bb
+ INNER JOIN dbo.T_SAL_ORDERFIN fin ON bb.FID=fin.FID
+ WHERE a.F_PAPERCONTRACT=bb.F_CONTRACTNUMBER AND a.FSALEORGID=bb.FSALEORGID ) AS FDAMOUNT2222,
+
C.FSETTLECURRID as 'FCurr',
case when DATEDIFF(MONTH, A.FDATE, GETDATE())<3 then 'True' else 'False' end as 'FIs30' ,
'发货通知单' as 'FTYPE',
@@ -182,7 +188,9 @@ GROUP BY F_PaperNumber, FSALEORGID
AND A.FDOCUMENTSTATUS = 'C' AND ISNULL(A.F_Papercontract,'')!=''
AND (A.F_AMOUNT < C.FBILLALLAMOUNT
or A.F_AMOUNT IS NULL) {where}
- ) A ORDER BY A.FCUSTID,a.FID desc ");
+ ) A
+ WHERE a.FDAMOUNT2 <= a.FDAMOUNT2222
+ ORDER BY A.FCUSTID,a.FID desc ");
return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null);
}
diff --git a/Pilot_KD_Parino/Sal_Order/SaleOrderJieSuanJia.cs b/Pilot_KD_Parino/Sal_Order/SaleOrderJieSuanJia.cs
index 224d472..971d519 100644
--- a/Pilot_KD_Parino/Sal_Order/SaleOrderJieSuanJia.cs
+++ b/Pilot_KD_Parino/Sal_Order/SaleOrderJieSuanJia.cs
@@ -1,6 +1,4 @@
-using FarPoint.Excel;
-using Kingdee.BOS;
-using Kingdee.BOS.Core.Bill;
+using Kingdee.BOS;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Log;
@@ -9,7 +7,6 @@ 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;