From d41b16306e77591f7f383e823a5e3ed10511fd5a Mon Sep 17 00:00:00 2001 From: yuyubo <1870149533@qq.com> Date: Mon, 9 Jun 2025 18:48:05 +0800 Subject: [PATCH] 11 --- Pilot_KD_Parino/Common/CombinaClass.cs | 23 ++++- Pilot_KD_Parino/QPHY_AutoWrire/Bill5.cs | 60 ++++++++++--- .../QPHY_AutoWrireRecord/FUpdateAmount.cs | 84 ++++++++++-------- .../QPHY_AutoWrireRecord/UpdateAmount.cs | 80 +++++++++-------- Pilot_KD_Parino/SQL/SqlManage_yuyubo.cs | 45 +++++----- .../VRYF_FHTZDHXJL/FUpdateAmount.cs | 77 +++++++++-------- .../VRYF_FHTZDHXJL/UpdateAmount.cs | 85 +++++++++++-------- 7 files changed, 274 insertions(+), 180 deletions(-) diff --git a/Pilot_KD_Parino/Common/CombinaClass.cs b/Pilot_KD_Parino/Common/CombinaClass.cs index 49199dc..fab563f 100644 --- a/Pilot_KD_Parino/Common/CombinaClass.cs +++ b/Pilot_KD_Parino/Common/CombinaClass.cs @@ -127,22 +127,22 @@ namespace Pilot_KD_Parino.Common public string FISHX { get; set; } /// - /// 金额 + /// 订单含税金额(本位币) /// public double FALLAMOUNT { get; set; } /// - /// 已核销金额 + /// 已核销金额(原币) /// public double FYAMOUNT { get; set; } /// - /// 待核销金额 + /// 待核销金额(原币) /// public double FDAMOUNT { get; set; } /// - /// 金额(原币) + /// 订单含税金额(原币) /// public double FALLAMOUNTY { get; set; } @@ -210,5 +210,20 @@ namespace Pilot_KD_Parino.Common /// 最近30天开票金额 /// public double FInvoiceAmount30Days { get; set; } + + /// + /// 运杂费(原币) + /// + public double FYunZaFei_YuanBi { get; set; } + + /// + /// 汇率 + /// + public double FHuiLv { get; set; } + + /// + /// 结算币别 + /// + public string FBiBie { get; set; } } } diff --git a/Pilot_KD_Parino/QPHY_AutoWrire/Bill5.cs b/Pilot_KD_Parino/QPHY_AutoWrire/Bill5.cs index de6645e..52853eb 100644 --- a/Pilot_KD_Parino/QPHY_AutoWrire/Bill5.cs +++ b/Pilot_KD_Parino/QPHY_AutoWrire/Bill5.cs @@ -14,9 +14,11 @@ using Kingdee.BOS.Core.List; using Kingdee.BOS.Core.Msg; using Kingdee.BOS.Core.Report.PlugIn.Args; using Kingdee.BOS.JSON; +using Kingdee.BOS.Log; using Kingdee.BOS.Orm; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.Orm.Exceptions; +using Kingdee.BOS.ServiceHelper; using Kingdee.BOS.Util; using Newtonsoft.Json; using NPOI.SS.Formula.Functions; @@ -348,7 +350,7 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire this.View.Model.SetValue("FBILLNO", SaleBILLLIS[i].FBIllNO, i); //日期 this.View.Model.SetValue("FDate", SaleBILLLIS[i].FDate, i); - //金额 + //订单含税金额(本位币) this.View.Model.SetValue("F_MBBA_Decimal_c1c", SaleBILLLIS[i].FALLAMOUNT, i); //类型 this.View.Model.SetValue("FType", SaleBILLLIS[i].FType, i); @@ -356,9 +358,9 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire this.View.Model.SetValue("FCONTRACTNUMBER", SaleBILLLIS[i].FCONTRACTNUMBER, i); //客户名称 this.View.Model.SetValue("FClient", SaleBILLLIS[i].FClient, i); - //已核销金额 + //已核销金额(原币) this.View.Model.SetValue("F_MBBA_Decimal_vb1", SaleBILLLIS[i].FYAMOUNT, i); - //待核销金额 + //待核销金额(原币) this.View.Model.SetValue("F_MBBA_Decimal_emq", SaleBILLLIS[i].FDAMOUNT, i); //单据编号(收款单) this.View.Model.SetValue("FSKBILLNO", SaleBILLLIS[i].FSKBIllNO, i); @@ -427,13 +429,18 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire FWeiYi = item["FWeiYi"]?.ToString(), FaHuoAmount30Days = Convert.ToDouble( item["FaHuoAmount30Days"].ToString()), FInvoiceAmount30Days= Convert.ToDouble(item["FInvoiceAmount30Days"].ToString()), + FHuiLv = Convert.ToDouble(item["FHuiLv"]), + FBiBie = Convert.ToString(item["FBiBie"]), + FYunZaFei_YuanBi = Convert.ToDouble(item["FYunZaFei_YuanBi"]), + FALLAMOUNTY = Convert.ToDouble(item["FJiaShuiHeJi_YuanBi"]), }).ToList(); var SaleBILLLISNew = SaleBILLLIS.Where(a => a.FISHX != "已核销配对").ToList(); var ReceiveBILLLIST2 = new List(); //获取收款单单据体数据 DynamicObjectCollection FEntity2 = this.View.Model.DataObject["FEntity2"] as DynamicObjectCollection; - + //string sdsad = JsonConvert.SerializeObject(FEntity2); + //Logger.Error("", "442"+ sdsad, new Exception()); ReceiveBILLLIST2 = FEntity2.Select(item => new CombinaClass { FBIllNO = item["FBILLNO2"]?.ToString(), @@ -447,8 +454,13 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire FSalesman = Convert.ToInt32(item["FSalesman2_Id"]), FCONTRACTNUMBER = item["FCONTRACTNUMBER2"]?.ToString(), FRow = Convert.ToInt32(item["Seq"]) - 1, - F_RowNew = Convert.ToInt32(item["F_RowNew"]) + F_RowNew = Convert.ToInt32(item["F_RowNew"]), + FHuiLv = Convert.ToDouble(item["FHuiLv2"]), + FBiBie = Convert.ToString(item["FBiBie2"]), + FALLAMOUNTY = Convert.ToDouble(item["FShouKuanJinE_YuanBi"]), }).ToList(); + + //Logger.Error("","462",new Exception()); //重置并只取父级树形数据 ReceiveBILLLIST = new List(); ReceiveBILLLIST = ReceiveBILLLIST2.Where(a => a.F_RowNew == 1 && a.FISHX != "已核销配对").OrderBy(t => t.FClient).ThenBy(t => t.FCONTRACTNUMBER).ThenBy(t => t.FDate).ToList(); @@ -467,10 +479,10 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire Dictionary shouKuanDetail = new Dictionary(); //先挑1张收款单对应一张销售订单 - //1、收款单的待核销金额与订单的待核销金额 + //1、收款单的待核销金额与订单的待核销金额, 2025-06-09 增加结算币别也要相等 var oneToOneTemp = (from q in SaleBILLLIS2Sal - join u in ReceiveBILLLIST on new { q.FClient, q.FDAMOUNT } equals new { u.FClient, u.FDAMOUNT } - select new { q.FClient, q.FBIllNO, q.FCONTRACTNUMBER, u.FDAMOUNT, UFbillNo = u.FBIllNO }).ToList(); + join u in ReceiveBILLLIST on new { q.FClient, q.FDAMOUNT,q.FBiBie } equals new { u.FClient, u.FDAMOUNT,u.FBiBie } + select new { q.FClient, q.FBIllNO, q.FCONTRACTNUMBER, u.FDAMOUNT, UFbillNo = u.FBIllNO, u.FBiBie }).ToList(); //var dasdsas = oneToOneTemp.Where(h => h.FBIllNO == "PL-XSDD20250400471").FirstOrDefault(); var saleList1 = oneToOneTemp.Select(t => t.FBIllNO).Distinct().ToList(); var ReceiveList1 = oneToOneTemp.Select(t => t.UFbillNo).Distinct().ToList(); @@ -636,13 +648,13 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire if (SourceType == 0) //只有销售单有这两种匹配逻辑 { - //3、收款单的待核销金额与订单的待最近30天开票金额(客户说只有医院客户,但是代码不做客户名称判断) + //3、收款单的待核销金额与订单的待最近30天开票金额(客户说只有医院客户,但是代码不做客户名称判断), 2025-06-09 增加结算币别也要相等 var SaleBILLLIS2Sa333 = SaleBILLLISNew.Where(t => t.FISHX != "已核销配对" && t.FDAMOUNT > 0).OrderBy(t => t.FClient).ThenByDescending(t => t.FDate).ToList(); ReceiveBILLLIST = ReceiveBILLLIST2.Where(a => a.F_RowNew == 1 && a.FISHX != "已核销配对" && a.FDAMOUNT > 0).OrderBy(t => t.FClient).ThenByDescending(t => t.FDate).ToList(); var oneToOneTemp3 = (from q in SaleBILLLIS2Sa333 - join u in ReceiveBILLLIST on new { q.FClient, FDAMOUNT = q.FInvoiceAmount30Days } equals new { u.FClient, u.FDAMOUNT } - select new { q.FClient, q.FBIllNO, q.FCONTRACTNUMBER, u.FDAMOUNT, UFbillNo = u.FBIllNO }).ToList(); + join u in ReceiveBILLLIST on new { q.FClient, FDAMOUNT = q.FInvoiceAmount30Days ,q.FBiBie} equals new { u.FClient, u.FDAMOUNT,u.FBiBie } + select new { q.FClient, q.FBIllNO, q.FCONTRACTNUMBER, u.FDAMOUNT, UFbillNo = u.FBIllNO, u.FBiBie }).ToList(); //var dasdsas = oneToOneTemp.Where(h => h.FBIllNO == "PL-XSDD20250400471").FirstOrDefault(); var saleList33 = oneToOneTemp3.Select(t => t.FBIllNO).Distinct().ToList(); var ReceiveList33 = oneToOneTemp3.Select(t => t.UFbillNo).Distinct().ToList(); @@ -727,7 +739,7 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire ReceiveBILLLIST.ForEach(t => { - var tempList = SaleBILLLIS2Sa2.Where(h => h.FClient == t.FClient && h.FISHX != "已核销配对" && t.FDAMOUNT > 0).OrderByDescending(h => h.FDate).ToList(); + var tempList = SaleBILLLIS2Sa2.Where(h =>h.FBiBie==t.FBiBie && h.FClient == t.FClient && h.FISHX != "已核销配对" && t.FDAMOUNT > 0).OrderByDescending(h => h.FDate).ToList(); var FDAMOUNT = t.FDAMOUNT; List heTongList = new List(); @@ -927,7 +939,7 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire { this.View.Model.SetValue("FDate2", DateTime.Now.AddDays(-1 * Convert.ToInt32(tempList2[i].FDate)).ToString("yyyy-MM-dd"), Rowindex + i); } - this.View.Model.SetValue("F_MBBA_Decimal_imu", tempList2[i].FALLAMOUNT, Rowindex + i); + this.View.Model.SetValue("F_MBBA_Decimal_imu", tempList2[i].FALLAMOUNT+ tempList2[i].FYunZaFei_YuanBi * tempList2[i].FHuiLv, Rowindex + i); this.View.Model.SetValue("FClient2", tempList2[i].FClient, Rowindex + i); this.View.Model.SetValue("F_RowNew", 2, Rowindex + i); this.View.Model.SetValue("FCreated2", tempList2[i].FCreated, Rowindex ); @@ -938,6 +950,12 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire this.View.Model.SetValue("F_BenCi", benci, Rowindex + i); this.View.Model.SetValue("F_MBBA_Decimal_3iy", tempList2[i].FYAMOUNT, Rowindex + i ); this.View.Model.SetValue("F_ISHX", false, Rowindex + i); + + this.View.Model.SetValue("FBiBie2", tempList2[i].FBiBie, Rowindex + i); + this.View.Model.SetValue("FHuiLv2", tempList2[i].FHuiLv, Rowindex + i); + this.View.Model.SetValue("FShouKuanJinE_YuanBi", tempList2[i].FALLAMOUNTY + tempList2[i].FYunZaFei_YuanBi, Rowindex + i); + //Logger.Error("", "956", new Exception()); + } @@ -1583,6 +1601,10 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire FInvoiceAmount = Convert.ToDecimal(item["FInvoiceAmount"]), FaHuoAmount30Days = Convert.ToDouble(item["FaHuoAmount30Days"]), FInvoiceAmount30Days = Convert.ToDouble(item["FInvoiceAmount30Days"]), + FHuiLv= Convert.ToDouble(item["FHuiLv"]), + FBiBie = Convert.ToString(item["FBiBie"]), + FYunZaFei_YuanBi = Convert.ToDouble(item["F_EXPENSES"]), + FALLAMOUNTY= Convert.ToDouble(item["FALLAMOUNTY"]), }).ToList(); @@ -1600,6 +1622,9 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire FSalesman = Convert.ToInt32(item["FSALEERID"]), F_RowNew = 1, BenCi = 0, + FHuiLv = Convert.ToDouble(item["FHuiLv"]), + FBiBie = Convert.ToString(item["FBiBie"]), + FALLAMOUNTY = Convert.ToDouble(item["FALLAMOUNTY"]), }).ToList(); var kehu = ReceiveBILLLIST.Select(t => t.FClient).Distinct().ToList(); @@ -1637,6 +1662,10 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire this.View.Model.SetValue("FInvoiceAmount", SaleBILLLIS2[i].FInvoiceAmount, i); this.View.Model.SetValue("FInvoiceAmount30Days", SaleBILLLIS2[i].FInvoiceAmount30Days, i); this.View.Model.SetValue("FaHuoAmount30Days", SaleBILLLIS2[i].FaHuoAmount30Days, i); + this.View.Model.SetValue("FBiBie", SaleBILLLIS2[i].FBiBie, i); + this.View.Model.SetValue("FHuiLv", SaleBILLLIS2[i].FHuiLv, i); + this.View.Model.SetValue("FYunZaFei_YuanBi", SaleBILLLIS2[i].FYunZaFei_YuanBi, i); + this.View.Model.SetValue("FJiaShuiHeJi_YuanBi", SaleBILLLIS2[i].FALLAMOUNTY, i); //FaHuoAmount30Days = Convert.ToDouble(item["FaHuoAmount30Days"]), //FInvoiceAmount30Days = Convert.ToDouble(item["FInvoiceAmount30Days"]), @@ -1666,6 +1695,11 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire this.View.Model.SetValue("F_RowNew", ReceiveBILLLIST[i].F_RowNew, RowindexNew); this.View.Model.SetValue("F_ISHX", false, RowindexNew); + this.View.Model.SetValue("FBiBie2", ReceiveBILLLIST[i].FBiBie, i); + this.View.Model.SetValue("FHuiLv2", ReceiveBILLLIST[i].FHuiLv, i); + this.View.Model.SetValue("FYunZaFei_YuanBi2", ReceiveBILLLIST[i].FYunZaFei_YuanBi, RowindexNew); + this.View.Model.SetValue("FShouKuanJinE_YuanBi", ReceiveBILLLIST[i].FALLAMOUNTY, RowindexNew); + //Logger.Error("", "1701", new Exception()); } this.View.UpdateView("FEntity2"); } diff --git a/Pilot_KD_Parino/QPHY_AutoWrireRecord/FUpdateAmount.cs b/Pilot_KD_Parino/QPHY_AutoWrireRecord/FUpdateAmount.cs index 45e23c0..bfbc16b 100644 --- a/Pilot_KD_Parino/QPHY_AutoWrireRecord/FUpdateAmount.cs +++ b/Pilot_KD_Parino/QPHY_AutoWrireRecord/FUpdateAmount.cs @@ -6,6 +6,7 @@ using Pilot_KD_Parino.SQL; using System; using System.ComponentModel; using System.Linq; +using System.Threading; namespace Pilot_KD_Parino.QPHY_AutoWrireRecord { @@ -48,7 +49,7 @@ namespace Pilot_KD_Parino.QPHY_AutoWrireRecord FALLAMOUNT = Convert.ToDecimal(item["FALLAMOUNT2"]); - string sql2 = string.Format(@"/*dialect*/Select B.FENTRYID,B.FRECADVANCEAMOUNT,ISNULL(B.F_ORDER,'') as 'F_ORDER' From + string sql2 = string.Format(@"/*dialect*/Select B.FENTRYID,B.FRECADVANCEAMOUNT,ISNULL(B.F_ORDER,'') as 'F_ORDER',a.FID From T_SAL_ORDER A JOIN T_SAL_ORDERPLAN B @@ -57,43 +58,52 @@ namespace Pilot_KD_Parino.QPHY_AutoWrireRecord Order by F_ORDER desc ,FENTRYID desc", item["FBILLNO2"]); 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; - } - - //} - } - } + var fidList = sql2List.Select(t => t["FID"].ToString()).ToList().Distinct().ToList(); + fidList.ForEach(t => + { + string sql3 = $@"exec PR_ResetSALORDERPLAN_MBBA_yuyubo {t};"; + DBUtils.ExecuteDynamicObject(Context, sql3); + Thread.Sleep(300); + }); + + ////如果只有一个直接赋值 + //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/QPHY_AutoWrireRecord/UpdateAmount.cs b/Pilot_KD_Parino/QPHY_AutoWrireRecord/UpdateAmount.cs index 8b4c7f8..bc118c4 100644 --- a/Pilot_KD_Parino/QPHY_AutoWrireRecord/UpdateAmount.cs +++ b/Pilot_KD_Parino/QPHY_AutoWrireRecord/UpdateAmount.cs @@ -6,6 +6,7 @@ using Pilot_KD_Parino.SQL; using System; using System.ComponentModel; using System.Linq; +using System.Threading; namespace Pilot_KD_Parino.QPHY_AutoWrireRecord { @@ -34,7 +35,7 @@ namespace Pilot_KD_Parino.QPHY_AutoWrireRecord FALLAMOUNT = Convert.ToDecimal(item["FALLAMOUNT2"]); - string sql2 = string.Format(@"/*dialect*/Select B.FENTRYID,B.FRECADVANCEAMOUNT,ISNULL(B.F_ORDER,'') as 'F_ORDER' From + string sql2 = string.Format(@"/*dialect*/Select B.FENTRYID,B.FRECADVANCEAMOUNT,ISNULL(B.F_ORDER,'') as 'F_ORDER' ,a.FID From T_SAL_ORDER A JOIN T_SAL_ORDERPLAN B @@ -43,43 +44,50 @@ namespace Pilot_KD_Parino.QPHY_AutoWrireRecord Order by F_ORDER,FENTRYID", item["FBILLNO2"]); var sql2List = DBUtils.ExecuteDynamicObject(Context, sql2); - //如果只有一个直接赋值 - if (sql2List.Count == 1) + var fidList = sql2List.Select(t => t["FID"].ToString()).ToList().Distinct().ToList(); + fidList.ForEach(t => { - 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"]); + string sql3 = $@"exec PR_ResetSALORDERPLAN_MBBA_yuyubo {t};"; 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 < FRECADVANCEAMOUNT) - { - decimal fAmount = 0; - decimal chazhi = FRECADVANCEAMOUNT- F_MBBA_Decimal_uky; - //判断是否整条对冲 - if (FALLAMOUNT - chazhi >= 0) - { - fAmount = chazhi; - } - 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; - } - - //} - } - } + Thread.Sleep(300); + }); + ////如果只有一个直接赋值 + //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 < FRECADVANCEAMOUNT) + // { + // decimal fAmount = 0; + // decimal chazhi = FRECADVANCEAMOUNT- F_MBBA_Decimal_uky; + // //判断是否整条对冲 + // if (FALLAMOUNT - chazhi >= 0) + // { + // fAmount = chazhi; + // } + // 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/SQL/SqlManage_yuyubo.cs b/Pilot_KD_Parino/SQL/SqlManage_yuyubo.cs index 77732cb..d0a624d 100644 --- a/Pilot_KD_Parino/SQL/SqlManage_yuyubo.cs +++ b/Pilot_KD_Parino/SQL/SqlManage_yuyubo.cs @@ -21,7 +21,7 @@ namespace Pilot_KD_Parino.SQL { //定义SQL,调用物料视图 string sql = string.Format($@"/*dialect*/ - SELECT A.FID, + SELECT A.FID, A.FSALEERID, A.FCONTACTUNIT, A.FREMARK, @@ -30,15 +30,15 @@ namespace Pilot_KD_Parino.SQL DATEDIFF(D, A.FDATE, GETDATE()) AS 'FDATE', A.FRECAMOUNT AS 'FALLAMOUNT', A.FRECAMOUNTFOR as 'FALLAMOUNTY', - A.FRECAMOUNT-A.F_AMOUNT as 'FDAMOUNT', + A.FRECAMOUNTFOR-A.F_AMOUNT as 'FDAMOUNT', A.FCURRENCYID as 'FCurr', - A.FCREATORID as 'FCREATORID' + A.FCREATORID as 'FCREATORID', + A.FSETTLERATE AS FHuiLv, + (SELECT ll.FNAME FROM dbo.T_BD_CURRENCY_L ll WITH(NOLOCK) where ll.FCURRENCYID=A.FSETTLECUR ) FBiBie FROM T_AR_RECEIVEBILL A WHERE A.FDOCUMENTSTATUS = 'C' - AND A.FISINIT != '1' - - AND A.FRECAMOUNT != A.F_AMOUNT - AND A.FRECAMOUNT >= A.F_AMOUNT {where} + AND A.FISINIT != '1' + AND A.FRECAMOUNTFOR >= A.F_AMOUNT {where} order by FCONTACTUNIT,A.FID desc ", FORGID); return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); } @@ -56,7 +56,7 @@ namespace Pilot_KD_Parino.SQL * */ string sql = string.Format($@"/*dialect*/ - SELECT FDAMOUNT2 as FDAMOUNT, * FROM + SELECT FDAMOUNT2 as FDAMOUNT, * FROM ( SELECT A.FID, A.FBusinessType, A.FSALERID, @@ -69,7 +69,7 @@ namespace Pilot_KD_Parino.SQL C.FBILLALLAMOUNT_LC AS 'FALLAMOUNT' , C.FBILLALLAMOUNT as 'FALLAMOUNTY', ISNULL(A.F_AMOUNT,0) as 'FYAMOUNT', - C.FBILLALLAMOUNT_LC-A.F_AMOUNT as 'FDAMOUNT2', + C.FBILLALLAMOUNT+a.F_EXPENSES-A.F_AMOUNT as 'FDAMOUNT2', C.FSETTLECURRID as 'FCurr', case when DATEDIFF(MONTH, A.FDATE, GETDATE())<3 then 'True' else 'False' end as 'FIs30' , '销售订单' as 'FTYPE', @@ -79,8 +79,8 @@ namespace Pilot_KD_Parino.SQL ( SELECT SUM(F_GeneralInvoice) AS '发票总金额' FROM ( SELECT F_PaperNumber, t0.FSALEORGID, - CASE WHEN F_ORDERCATEGORY ='67283ced82f38d' THEN FAFTERTOTALTAX - WHEN F_ORDERCATEGORY !='67283ced82f38d' AND F_GENERALINVOICE='Y' THEN 0 ELSE FAFTERTOTALTAX END AS F_GeneralInvoice + CASE WHEN F_ORDERCATEGORY ='67283ced82f38d' THEN FAFTERTOTALTAXFOR + WHEN F_ORDERCATEGORY !='67283ced82f38d' AND F_GENERALINVOICE='Y' THEN 0 ELSE FAFTERTOTALTAXFOR END AS F_GeneralInvoice --FAFTERTOTALTAX FROM T_IV_SALESIC t0 WITH(NOLOCK) INNER JOIN T_SAL_ORDER aa1 WITH(NOLOCK) ON t0.F_PAPERNUMBER=aa1.F_contractnumber AND t0.FSETTLEORGID=aa1.FSALEORGID @@ -89,7 +89,8 @@ INNER JOIN T_SAL_ORDER aa1 WITH(NOLOCK) ON t0.F_PAPERNUMBER=aa1.F_contractnumbe GROUP BY F_PaperNumber, FSALEORGID ) as FInvoiceAmount, -(select SUM(bb.F_TotalAmoun) from dbo.T_SAL_DELIVERYNOTICE bb WITH(NOLOCK) WHERE bb.FSaleOrgId=a.FSALEORGID AND bb.F_Papercontract=a.F_contractnumber +(select SUM(bbf.FAllAmount) from dbo.T_SAL_DELIVERYNOTICE bb LEFT JOIN T_SAL_DELIVERYNOTICEENTRY_F bbf WITH(NOLOCK) ON bb.FID=bbf.FID + WHERE bb.FSaleOrgId=a.FSALEORGID AND bb.F_Papercontract=a.F_contractnumber AND 30 >= DATEDIFF(DAY,bb.FDATE,GETDATE()) AND bb.FDocumentStatus='C' ) as FaHuoAmount30Days, ( SELECT SUM(F_GeneralInvoice) AS '发票总金额' FROM ( @@ -104,11 +105,14 @@ INNER JOIN T_SAL_ORDER aa1 WITH(NOLOCK) ON t0.F_PAPERNUMBER=aa1.F_contractnumbe GROUP BY F_PaperNumber, FSALEORGID ) as FInvoiceAmount30Days ,[整单累计退货金额]=ISNULL(( - SELECT SUM(CC.FBillAllAmount_LC) AS '累计退货金额' + SELECT SUM(CC.FBILLALLAMOUNT) AS '累计退货金额' FROM T_SAL_ORDER AA INNER JOIN T_SAL_ORDERFIN CC ON CC.FID =AA.FID WHERE AA.FDOCUMENTSTATUS= 'C' AND ISNULL(AA.F_CONTRACTNUMBER,'') !='' AND AA.F_contractnumber LIKE A.F_contractnumber+'%' AND AA.fid<>A.fid AND aa.FSALEORGID=a.FSALEORGID),0) + ,a.F_EXPENSES + ,(SELECT ll.FNAME FROM dbo.T_BD_CURRENCY_L ll WITH(NOLOCK) where ll.FCURRENCYID=c.FSettleCurrId ) AS [FBiBie] + , c.FExchangeRate FHuiLv FROM T_SAL_ORDER A INNER JOIN T_SAL_ORDERFIN C ON C.FID =A.FID WHERE @@ -145,7 +149,7 @@ GROUP BY F_PaperNumber, FSALEORGID C.FBILLALLAMOUNT_LC AS 'FALLAMOUNT' , C.FBILLALLAMOUNT as 'FALLAMOUNTY', ISNULL(A.F_AMOUNT,0) as 'FYAMOUNT', - C.FBILLALLAMOUNT_LC-A.F_AMOUNT as 'FDAMOUNT2', + C.FBILLALLAMOUNT-A.F_AMOUNT as 'FDAMOUNT2', C.FSETTLECURRID as 'FCurr', case when DATEDIFF(MONTH, A.FDATE, GETDATE())<3 then 'True' else 'False' end as 'FIs30' , '发货通知单' as 'FTYPE', @@ -155,12 +159,12 @@ GROUP BY F_PaperNumber, FSALEORGID ( SELECT SUM(F_GeneralInvoice) AS '发票总金额' FROM ( SELECT F_PaperNumber, t0.FSALEORGID, - CASE WHEN F_ORDERCATEGORY ='67283ced82f38d' THEN FAFTERTOTALTAX - WHEN F_ORDERCATEGORY !='67283ced82f38d' AND F_GENERALINVOICE='Y' THEN 0 ELSE FAFTERTOTALTAX END AS F_GeneralInvoice + CASE WHEN F_ORDERCATEGORY ='67283ced82f38d' THEN FAFTERTOTALTAXFOR + WHEN F_ORDERCATEGORY !='67283ced82f38d' AND F_GENERALINVOICE='Y' THEN 0 ELSE FAFTERTOTALTAXFOR END AS F_GeneralInvoice --FAFTERTOTALTAX FROM T_IV_SALESIC t0 WITH(NOLOCK) INNER JOIN T_SAL_ORDER aa1 WITH(NOLOCK) ON t0.F_PAPERNUMBER=aa1.F_contractnumber AND t0.FSETTLEORGID=aa1.FSALEORGID - --WHERE F_PaperNumber='P202502070004' + ) AD WHERE AD.F_PaperNumber = A.F_Papercontract AND ad.FSALEORGID=a.FSALEORGID GROUP BY F_PaperNumber, FSALEORGID ) as FInvoiceAmount, @@ -168,12 +172,15 @@ GROUP BY F_PaperNumber, FSALEORGID 0 as FaHuoAmount30Days, 0 as FInvoiceAmount30Days ,[整单累计退货金额]=0 +,c.FExchangeRate as FHuiLv +,0 as F_EXPENSES + ,(SELECT ll.FNAME FROM dbo.T_BD_CURRENCY_L ll WITH(NOLOCK) where ll.FCURRENCYID=c.FSettleCurrID ) AS [FBiBie] FROM T_SAL_DELIVERYNOTICE A INNER JOIN T_SAL_DELIVERYNOTICEFIN C ON C.FID =A.FID WHERE - C.FBILLALLAMOUNT_LC > 0 + C.FBILLALLAMOUNT > 0 AND A.FDOCUMENTSTATUS = 'C' AND ISNULL(A.F_Papercontract,'')!='' - AND (A.F_AMOUNT < C.FBILLALLAMOUNT_LC + AND (A.F_AMOUNT < C.FBILLALLAMOUNT or A.F_AMOUNT IS NULL) {where} ) A ORDER BY A.FCUSTID,a.FID desc "); return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); diff --git a/Pilot_KD_Parino/VRYF_FHTZDHXJL/FUpdateAmount.cs b/Pilot_KD_Parino/VRYF_FHTZDHXJL/FUpdateAmount.cs index 681850b..3dd4097 100644 --- a/Pilot_KD_Parino/VRYF_FHTZDHXJL/FUpdateAmount.cs +++ b/Pilot_KD_Parino/VRYF_FHTZDHXJL/FUpdateAmount.cs @@ -6,6 +6,7 @@ using Pilot_KD_Parino.SQL; using System; using System.ComponentModel; using System.Linq; +using System.Threading; namespace Pilot_KD_Parino.VRYF_FHTZDHXJL { @@ -46,7 +47,7 @@ namespace Pilot_KD_Parino.VRYF_FHTZDHXJL FALLAMOUNT = Convert.ToDecimal(item["FALLAMOUNT2"]); //要计算的核销金额 - string sql2 = string.Format($@"/*dialect*/Select B.FENTRYID,B.FRECADVANCEAMOUNT,ISNULL(B.F_ORDER,'') as 'F_ORDER' From + string sql2 = string.Format($@"/*dialect*/Select B.FENTRYID,B.FRECADVANCEAMOUNT,ISNULL(B.F_ORDER,'') as 'F_ORDER',a.FID From T_SAL_ORDER A JOIN T_SAL_ORDERPLAN B @@ -55,43 +56,51 @@ namespace Pilot_KD_Parino.VRYF_FHTZDHXJL Order by F_ORDER desc ,FENTRYID desc "); var sql2List = DBUtils.ExecuteDynamicObject(Context, sql2); - //如果只有一个直接赋值 - if (sql2List.Count == 1) + + var fidList = sql2List.Select(t => t["FID"].ToString()).ToList().Distinct().ToList(); + fidList.ForEach(t => { - 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"]); + string sql3 = $@"exec PR_ResetSALORDERPLAN_MBBA_yuyubo {t};"; 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; + Thread.Sleep(300); + }); + ////如果只有一个直接赋值 + //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; - } + // //判断是否整条对冲 + // 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 65788ac..9ddb5aa 100644 --- a/Pilot_KD_Parino/VRYF_FHTZDHXJL/UpdateAmount.cs +++ b/Pilot_KD_Parino/VRYF_FHTZDHXJL/UpdateAmount.cs @@ -9,6 +9,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using Kingdee.BOS.App.Data; +using System.Threading; namespace Pilot_KD_Parino.VRYF_FHTZDHXJL { @@ -39,7 +40,7 @@ namespace Pilot_KD_Parino.VRYF_FHTZDHXJL FALLAMOUNT = Convert.ToDecimal(item["FALLAMOUNT2"]); - string sql2 = string.Format($@"/*dialect*/Select B.FENTRYID,B.FRECADVANCEAMOUNT,ISNULL(B.F_ORDER,'') as 'F_ORDER' From + string sql2 = string.Format($@"/*dialect*/Select B.FENTRYID,B.FRECADVANCEAMOUNT,ISNULL(B.F_ORDER,'') as 'F_ORDER',a.FID From T_SAL_ORDER A JOIN T_SAL_ORDERPLAN B @@ -48,43 +49,53 @@ namespace Pilot_KD_Parino.VRYF_FHTZDHXJL Order by F_ORDER ,FENTRYID"); var sql2List = DBUtils.ExecuteDynamicObject(Context, sql2); - //如果只有一个直接赋值 - if (sql2List.Count == 1) - { - string sql3 = string.Format(@"Update T_SAL_ORDERPLAN Set F_MBBA_Decimal_uky = {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 < FRECADVANCEAMOUNT) - { - decimal fAmount = 0; - decimal chazhi = FRECADVANCEAMOUNT - F_MBBA_Decimal_uky; - //判断是否整条对冲 - if (FALLAMOUNT - chazhi >= 0) - { - fAmount = chazhi; - } - 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; - } - //} - } - } + var fidList = sql2List.Select(t => t["FID"].ToString()).ToList().Distinct().ToList(); + fidList.ForEach(t => + { + string sql3 = $@"exec PR_ResetSALORDERPLAN_MBBA_yuyubo {t};"; + DBUtils.ExecuteDynamicObject(Context, sql3); + Thread.Sleep(300); + }); + + + ////如果只有一个直接赋值 + //if (sql2List.Count == 1) + //{ + // string sql3 = string.Format(@"Update T_SAL_ORDERPLAN Set F_MBBA_Decimal_uky = {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 < FRECADVANCEAMOUNT) + // { + // decimal fAmount = 0; + // decimal chazhi = FRECADVANCEAMOUNT - F_MBBA_Decimal_uky; + // //判断是否整条对冲 + // if (FALLAMOUNT - chazhi >= 0) + // { + // fAmount = chazhi; + // } + // 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; + // } + + // //} + // } + //} } } }