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;