diff --git a/Pilot_KD_Parino/Pilot_KD_Parino.csproj b/Pilot_KD_Parino/Pilot_KD_Parino.csproj index c096313..9026a19 100644 --- a/Pilot_KD_Parino/Pilot_KD_Parino.csproj +++ b/Pilot_KD_Parino/Pilot_KD_Parino.csproj @@ -340,6 +340,7 @@ + diff --git a/Pilot_KD_Parino/QPHY_AutoWrireRecord/FUpdateAmount.cs b/Pilot_KD_Parino/QPHY_AutoWrireRecord/FUpdateAmount.cs index b5bcb8b..fd7b5d8 100644 --- a/Pilot_KD_Parino/QPHY_AutoWrireRecord/FUpdateAmount.cs +++ b/Pilot_KD_Parino/QPHY_AutoWrireRecord/FUpdateAmount.cs @@ -50,7 +50,7 @@ namespace Pilot_KD_Parino.QPHY_AutoWrireRecord T_SAL_ORDERPLAN B on A.FID = B.FID Where A.FBILLNO = '{0}' - Order by F_ORDER", item["FBILLNO2"]); + Order by F_ORDER desc ,FENTRYID desc", item["FBILLNO2"]); var sql2List = DBUtils.ExecuteDynamicObject(Context, sql2); //如果只有一个直接赋值 @@ -68,13 +68,15 @@ namespace Pilot_KD_Parino.QPHY_AutoWrireRecord //{ //判断核销金额是否大于按照排序对冲金额 decimal FRECADVANCEAMOUNT = Convert.ToDecimal(sql2List[i]["FRECADVANCEAMOUNT"]); - if (FALLAMOUNT > 0) + decimal F_MBBA_Decimal_uky=Convert.ToDecimal(sql2List[i]["F_MBBA_Decimal_uky"]); + if (FALLAMOUNT > 0 && F_MBBA_Decimal_uky > 0) { decimal fAmount = 0; + //判断是否整条对冲 - if (FALLAMOUNT - FRECADVANCEAMOUNT >= 0) + if (FALLAMOUNT - F_MBBA_Decimal_uky >= 0) { - fAmount = FRECADVANCEAMOUNT; + fAmount = F_MBBA_Decimal_uky; } else { @@ -82,8 +84,9 @@ namespace Pilot_KD_Parino.QPHY_AutoWrireRecord } string sql3 = string.Format(@"Update T_SAL_ORDERPLAN Set F_MBBA_Decimal_uky = ISNULL(F_MBBA_Decimal_uky,0)-{0} Where FENTRYID = {1};", fAmount, sql2List[i]["FENTRYID"]); DBUtils.ExecuteDynamicObject(Context, sql3); + FALLAMOUNT = FALLAMOUNT - fAmount; } - FALLAMOUNT -= FRECADVANCEAMOUNT; + //} } } diff --git a/Pilot_KD_Parino/QPHY_AutoWrireRecord/UpdateAmount.cs b/Pilot_KD_Parino/QPHY_AutoWrireRecord/UpdateAmount.cs index 3831a19..8b4c7f8 100644 --- a/Pilot_KD_Parino/QPHY_AutoWrireRecord/UpdateAmount.cs +++ b/Pilot_KD_Parino/QPHY_AutoWrireRecord/UpdateAmount.cs @@ -40,7 +40,7 @@ namespace Pilot_KD_Parino.QPHY_AutoWrireRecord T_SAL_ORDERPLAN B on A.FID = B.FID Where A.FBILLNO = '{0}' - Order by F_ORDER", item["FBILLNO2"]); + Order by F_ORDER,FENTRYID", item["FBILLNO2"]); var sql2List = DBUtils.ExecuteDynamicObject(Context, sql2); //如果只有一个直接赋值 @@ -56,24 +56,27 @@ namespace Pilot_KD_Parino.QPHY_AutoWrireRecord //判断核销顺序是否为空 //if (!string.IsNullOrWhiteSpace(sql2List[i]["F_ORDER"]?.ToString())) //{ - //判断核销金额是否大于按照排序对冲金额 - decimal FRECADVANCEAMOUNT = Convert.ToDecimal(sql2List[i]["FRECADVANCEAMOUNT"]); - if (FALLAMOUNT > 0) + //判断核销金额是否大于按照排序对冲金额 + decimal FRECADVANCEAMOUNT = Convert.ToDecimal(sql2List[i]["FRECADVANCEAMOUNT"]); + decimal F_MBBA_Decimal_uky = Convert.ToDecimal(sql2List[i]["F_MBBA_Decimal_uky"]); + if (FALLAMOUNT > 0 && F_MBBA_Decimal_uky < FRECADVANCEAMOUNT) + { + decimal fAmount = 0; + decimal chazhi = FRECADVANCEAMOUNT- F_MBBA_Decimal_uky; + //判断是否整条对冲 + if (FALLAMOUNT - chazhi >= 0) { - decimal fAmount = 0; - //判断是否整条对冲 - if (FALLAMOUNT - FRECADVANCEAMOUNT >= 0) - { - fAmount = FRECADVANCEAMOUNT; - } - else - { - fAmount = FALLAMOUNT; - } - string sql3 = string.Format(@"Update T_SAL_ORDERPLAN Set F_MBBA_Decimal_uky = ISNULL(F_MBBA_Decimal_uky,0)+{0} Where FENTRYID = '{1}';", fAmount, sql2List[i]["FENTRYID"]); - DBUtils.ExecuteDynamicObject(Context, sql3); + fAmount = chazhi; } - FALLAMOUNT -= FRECADVANCEAMOUNT; + else + { + fAmount = FALLAMOUNT; + } + string sql3 = string.Format(@"Update T_SAL_ORDERPLAN Set F_MBBA_Decimal_uky = ISNULL(F_MBBA_Decimal_uky,0)+{0} Where FENTRYID = '{1}';", fAmount, sql2List[i]["FENTRYID"]); + DBUtils.ExecuteDynamicObject(Context, sql3); + FALLAMOUNT = FALLAMOUNT- fAmount; + } + //} } } diff --git a/Pilot_KD_Parino/VRYF_FHTZDHXJL/FUpdateAmount.cs b/Pilot_KD_Parino/VRYF_FHTZDHXJL/FUpdateAmount.cs new file mode 100644 index 0000000..681850b --- /dev/null +++ b/Pilot_KD_Parino/VRYF_FHTZDHXJL/FUpdateAmount.cs @@ -0,0 +1,99 @@ +using Kingdee.BOS.App.Data; +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Util; +using Pilot_KD_Parino.SQL; +using System; +using System.ComponentModel; +using System.Linq; + +namespace Pilot_KD_Parino.VRYF_FHTZDHXJL +{ + /// + /// 核销记录单(发货通知单)--反审核更新核销金额 + /// + [Description("核销记录单(发货通知单)--反审核更新核销金额"), HotUpdate] + public class FUpdateAmount : AbstractOperationServicePlugIn + { + //public override void EndOperationTransaction(EndOperationTransactionArgs e) + //{ + // base.EndOperationTransaction(e); + // var fId = e.DataEntitys[0][0]?.ToString(); + // //获取销售订单核销金额数据 + // SqlManage.FUpdateSalOrderAmount(this.Context, fId); + + //} + public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e) + { + base.AfterExecuteOperationTransaction(e); + foreach (var rows in e.SelectedRows) + { + var Billobj = rows.DataEntity; + //获取销售订单核销金额数据 + string sql = string.Format(@"/*dialect*/ EXEC FUpdateSalOrderAmount2 {0} ", Convert.ToString(Billobj["Id"])); + //执行SQL + DBUtils.ExecuteDynamicObject(Context, sql); + + string sql1 = string.Format(@"/*dialect*/Select B.FBILLNO2,B.FALLAMOUNT2,FORGID,FCONTRACTNUMBER From VRYF_t_Cust100015 A + JOIN VRYF_t_Cust_Entry100024 B + on A.FID = B.FID Where A.FID = '{0}'", Billobj["Id"]); + + var sql1List = DBUtils.ExecuteDynamicObject(Context, sql1); + + foreach (var item in sql1List.ToList()) + { + decimal FALLAMOUNT = 0; + + FALLAMOUNT = Convert.ToDecimal(item["FALLAMOUNT2"]); //要计算的核销金额 + + string sql2 = string.Format($@"/*dialect*/Select B.FENTRYID,B.FRECADVANCEAMOUNT,ISNULL(B.F_ORDER,'') as 'F_ORDER' From + T_SAL_ORDER A + JOIN + T_SAL_ORDERPLAN B + on A.FID = B.FID + Where A.F_contractnumber = '{item["FCONTRACTNUMBER"]}' and A.FSaleOrgId={item["FORGID"]} + Order by F_ORDER desc ,FENTRYID desc "); + + var sql2List = DBUtils.ExecuteDynamicObject(Context, sql2); + //如果只有一个直接赋值 + if (sql2List.Count == 1) + { + string sql3 = string.Format(@"Update T_SAL_ORDERPLAN Set F_MBBA_Decimal_uky =ISNULL(F_MBBA_Decimal_uky,0)- {0} Where FENTRYID = {1};", FALLAMOUNT, sql2List[0]["FENTRYID"]); + DBUtils.ExecuteDynamicObject(Context, sql3); + } + if (sql2List.Count > 1) + { + for (int i = 0; i < sql2List.Count; i++) + { + //判断核销顺序是否为空 + //if (!string.IsNullOrWhiteSpace(sql2List[i]["F_ORDER"]?.ToString())) + //{ + //判断核销金额是否大于按照排序对冲金额 + decimal FRECADVANCEAMOUNT = Convert.ToDecimal(sql2List[i]["FRECADVANCEAMOUNT"]); //应收款金额 + decimal F_MBBA_Decimal_uky = Convert.ToDecimal(sql2List[i]["F_MBBA_Decimal_uky"]); //累计核销金额 + if (FALLAMOUNT > 0 && F_MBBA_Decimal_uky > 0) + { + decimal fAmount = 0; + + //判断是否整条对冲 + if (FALLAMOUNT - F_MBBA_Decimal_uky >= 0) + { + fAmount = F_MBBA_Decimal_uky; + } + else + { + fAmount = FALLAMOUNT; + } + string sql3 = string.Format(@"Update T_SAL_ORDERPLAN Set F_MBBA_Decimal_uky = ISNULL(F_MBBA_Decimal_uky,0)-{0} Where FENTRYID = {1};", fAmount, sql2List[i]["FENTRYID"]); + DBUtils.ExecuteDynamicObject(Context, sql3); + FALLAMOUNT = FALLAMOUNT - fAmount; + } + + //} + } + } + } + } + } + } +} diff --git a/Pilot_KD_Parino/VRYF_FHTZDHXJL/UpdateAmount.cs b/Pilot_KD_Parino/VRYF_FHTZDHXJL/UpdateAmount.cs index c9b14eb..65788ac 100644 --- a/Pilot_KD_Parino/VRYF_FHTZDHXJL/UpdateAmount.cs +++ b/Pilot_KD_Parino/VRYF_FHTZDHXJL/UpdateAmount.cs @@ -13,7 +13,7 @@ using Kingdee.BOS.App.Data; namespace Pilot_KD_Parino.VRYF_FHTZDHXJL { [HotUpdate] - [Description("核销记录单(发货通知单)--更新销售订单金额")] + [Description("核销记录单(发货通知单)--更新累计核销金额")] public class UpdateAmount : AbstractOperationServicePlugIn { public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e) @@ -23,9 +23,11 @@ namespace Pilot_KD_Parino.VRYF_FHTZDHXJL { var Billobj = rows.DataEntity; //获取销售订单核销金额数据 - SqlManage.UpdateSalOrderAmount(this.Context, Convert.ToString(Billobj["Id"])); + string sql = string.Format(@"/*dialect*/ EXEC UpdateSalOrderAmount2 {0} ", Convert.ToString(Billobj["Id"])); + //执行SQL + DBUtils.ExecuteDynamicObject(Context, sql); - string sql1 = string.Format(@"/*dialect*/Select B.FBILLNO2,B.FALLAMOUNT2 From VRYF_t_Cust100015 A + string sql1 = string.Format(@"/*dialect*/Select B.FBILLNO2,B.FALLAMOUNT2,FORGID,FCONTRACTNUMBER From VRYF_t_Cust100015 A JOIN VRYF_t_Cust_Entry100024 B on A.FID = B.FID Where A.FID = '{0}'", Billobj["Id"]); @@ -42,7 +44,7 @@ namespace Pilot_KD_Parino.VRYF_FHTZDHXJL JOIN T_SAL_ORDERPLAN B on A.FID = B.FID - Where A.FDOCUMENTSTATUS = '{item["FDOCUMENTSTATUS"]}' and A.FSaleOrgId={item["FORGID"]} + Where A.F_contractnumber = '{item["FCONTRACTNUMBER"]}' and A.FSaleOrgId={item["FORGID"]} Order by F_ORDER ,FENTRYID"); var sql2List = DBUtils.ExecuteDynamicObject(Context, sql2); @@ -59,24 +61,27 @@ namespace Pilot_KD_Parino.VRYF_FHTZDHXJL //判断核销顺序是否为空 //if (!string.IsNullOrWhiteSpace(sql2List[i]["F_ORDER"]?.ToString())) //{ - //判断核销金额是否大于按照排序对冲金额 - decimal FRECADVANCEAMOUNT = Convert.ToDecimal(sql2List[i]["FRECADVANCEAMOUNT"]); - if (FALLAMOUNT > 0) + //判断核销金额是否大于按照排序对冲金额 + decimal FRECADVANCEAMOUNT = Convert.ToDecimal(sql2List[i]["FRECADVANCEAMOUNT"]); + decimal F_MBBA_Decimal_uky = Convert.ToDecimal(sql2List[i]["F_MBBA_Decimal_uky"]); + if (FALLAMOUNT > 0 && F_MBBA_Decimal_uky < FRECADVANCEAMOUNT) + { + decimal fAmount = 0; + decimal chazhi = FRECADVANCEAMOUNT - F_MBBA_Decimal_uky; + //判断是否整条对冲 + if (FALLAMOUNT - chazhi >= 0) { - decimal fAmount = 0; - //判断是否整条对冲 - if (FALLAMOUNT - FRECADVANCEAMOUNT >= 0) - { - fAmount = FRECADVANCEAMOUNT; - } - else - { - fAmount = FALLAMOUNT; - } - string sql3 = string.Format(@"Update T_SAL_ORDERPLAN Set F_MBBA_Decimal_uky = '{0}' Where FENTRYID = '{1}';", fAmount, sql2List[i]["FENTRYID"]); - DBUtils.ExecuteDynamicObject(Context, sql3); + fAmount = chazhi; } - FALLAMOUNT -= FRECADVANCEAMOUNT; + else + { + fAmount = FALLAMOUNT; + } + string sql3 = string.Format(@"Update T_SAL_ORDERPLAN Set F_MBBA_Decimal_uky = ISNULL(F_MBBA_Decimal_uky,0)+{0} Where FENTRYID = '{1}';", fAmount, sql2List[i]["FENTRYID"]); + DBUtils.ExecuteDynamicObject(Context, sql3); + FALLAMOUNT = FALLAMOUNT - fAmount; + } + //} } } diff --git a/发货通知单的核销记录反审核.sql b/发货通知单的核销记录反审核.sql new file mode 100644 index 0000000..4517f4d --- /dev/null +++ b/发货通知单的核销记录反审核.sql @@ -0,0 +1,50 @@ + +ALTER PROC FUpdateSalOrderAmount2 +( + @fid NVARCHAR(1000) +) +AS +BEGIN + + DECLARE @F_Amount DECIMAL(18,2)=0,@FBILLNO NVARCHAR(50),@saleOrgId INT,@F_Papercontract NVARCHAR(2000) + + SELECT @F_Amount=ISNULL(SUM(CONVERT(DECIMAL(18,2), FALLAMOUNT2)),0), @FBILLNO=FBILLNO2 FROM VRYF_t_Cust100015 A + INNER JOIN VRYF_t_Cust_Entry100024 B ON A.FID = B.FID + WHERE a.FID =@FID + GROUP BY FBILLNO2 + + SELECT @saleOrgId= a.FSALEORGID,@F_Papercontract=F_Papercontract FROM T_SAL_DELIVERYNOTICE a + WHERE a.FBILLNO=@FBILLNO + +--޸ķ֪ͨۼƺ + UPDATE T_SAL_DELIVERYNOTICE SET F_Amount =ISNULL(F_Amount,0)-@F_Amount + WHERE FBILLNO =@FBILLNO ; + + UPDATE dbo.T_SAL_ORDER SET F_AMOUNT=ISNULL(F_AMOUNT,0)-@F_Amount + WHERE F_SALEORGID=@saleOrgId AND F_contractnumber=@F_Papercontract + + + --޸տۼƺ + + SELECT @F_Amount=ISNULL(SUM(CONVERT(decimal(18,2), FALLAMOUNT3)),0), @FBILLNO=FBILLNO3 FROM VRYF_t_Cust100015 A + INNER JOIN VRYF_t_Cust_Entry100025 B ON A.FID = B.FID + WHERE a.FID =@FID + GROUP BY FBILLNO3 + + UPDATE T_AR_RECEIVEBILL SET F_Amount=ISNULL(F_Amount,0)-@F_Amount + WHERE FBILLNO =@FBILLNO ; + +end + + + +--SKD00000003 + --SELECT FBILLNO3,SUM(CONVERT(decimal(18,2), FALLAMOUNT3)) AS '' FROM T_AutoWrireRecord A + -- INNER JOIN T_AutoWrireRecordEntry2 B ON A.FID = B.FID + -- WHERE A.FDOCUMENTSTATUS = 'C' + -- GROUP BY B.FBILLNO3 + + + go + --Select * From T_SAL_ORDER Where FBILLNO = 'PL-XSDD20250200007' + --Update T_SAL_ORDER Set FDOCUMENTSTATUS = 'D' Where FBILLNO = 'PL-XSDD20250200007' \ No newline at end of file diff --git a/发货通知单的核销记录审核.sql b/发货通知单的核销记录审核.sql new file mode 100644 index 0000000..f7af3ad --- /dev/null +++ b/发货通知单的核销记录审核.sql @@ -0,0 +1,50 @@ + +ALTER proc UpdateSalOrderAmount2 +( + @fid nvarchar(1000) +) +as +begin + + DECLARE @F_Amount DECIMAL(18,2)=0,@FBILLNO NVARCHAR(50),@saleOrgId INT,@F_Papercontract NVARCHAR(2000) + + SELECT @F_Amount=ISNULL(SUM(CONVERT(decimal(18,2), FALLAMOUNT2)),0), @FBILLNO=FBILLNO2 FROM VRYF_t_Cust100015 A + INNER JOIN VRYF_t_Cust_Entry100024 B ON A.FID = B.FID + WHERE a.FID =@FID + GROUP BY FBILLNO2 + + SELECT @saleOrgId= a.FSALEORGID,@F_Papercontract=F_Papercontract FROM T_SAL_DELIVERYNOTICE a + WHERE a.FBILLNO=@FBILLNO + +--޸ķ֪ͨۼƺ + UPDATE T_SAL_DELIVERYNOTICE SET F_Amount =ISNULL(F_Amount,0)+@F_Amount + WHERE FBILLNO =@FBILLNO ; + + UPDATE dbo.T_SAL_ORDER SET F_AMOUNT=ISNULL(F_AMOUNT,0)+@F_Amount + WHERE F_SALEORGID=@saleOrgId AND F_contractnumber=@F_Papercontract + + + --޸տۼƺ + + SELECT @F_Amount=ISNULL(SUM(CONVERT(decimal(18,2), FALLAMOUNT3)),0), @FBILLNO=FBILLNO3 FROM VRYF_t_Cust100015 A + INNER JOIN VRYF_t_Cust_Entry100025 B ON A.FID = B.FID + WHERE a.FID =@FID + GROUP BY FBILLNO3 + + UPDATE T_AR_RECEIVEBILL SET F_Amount=ISNULL(F_Amount,0)+@F_Amount + WHERE FBILLNO =@FBILLNO ; + +end + + + +--SKD00000003 + --SELECT FBILLNO3,SUM(CONVERT(decimal(18,2), FALLAMOUNT3)) AS '' FROM T_AutoWrireRecord A + -- INNER JOIN T_AutoWrireRecordEntry2 B ON A.FID = B.FID + -- WHERE A.FDOCUMENTSTATUS = 'C' + -- GROUP BY B.FBILLNO3 + + + go + --Select * From T_SAL_ORDER Where FBILLNO = 'PL-XSDD20250200007' + --Update T_SAL_ORDER Set FDOCUMENTSTATUS = 'D' Where FBILLNO = 'PL-XSDD20250200007' \ No newline at end of file