From a4976430a8b0a0d1bc563cca5e5f414bbf4c2a1e Mon Sep 17 00:00:00 2001 From: yuyubo <1870149533@qq.com> Date: Wed, 7 May 2025 20:08:40 +0800 Subject: [PATCH] 232 --- Pilot_KD_Parino/Common/CommonHelper.cs | 25 ++ Pilot_KD_Parino/Pilot_KD_Parino.csproj | 1 + Pilot_KD_Parino/QPHY_AutoWrire/Bill5.cs | 393 +++++++++--------- .../QPHY_AutoWrireRecord/FUpdateAmount.cs | 84 +++- .../QPHY_AutoWrireRecord/UpdateAmount.cs | 17 +- Pilot_KD_Parino/SQL/SqlManage_yuyubo.cs | 58 +++ .../Sal_Order/PushSaleBillPlugIn.cs | 53 ++- .../Sal_Order/PushSaleOutBillPlugIn.cs | 46 +- .../VRYF_FHTZDHXJL/UpdateAmount.cs | 87 ++++ 9 files changed, 549 insertions(+), 215 deletions(-) create mode 100644 Pilot_KD_Parino/VRYF_FHTZDHXJL/UpdateAmount.cs diff --git a/Pilot_KD_Parino/Common/CommonHelper.cs b/Pilot_KD_Parino/Common/CommonHelper.cs index af6328b..3ef262f 100644 --- a/Pilot_KD_Parino/Common/CommonHelper.cs +++ b/Pilot_KD_Parino/Common/CommonHelper.cs @@ -1492,5 +1492,30 @@ namespace Pilot_KD_Parino.Common throw new ArgumentException("数字超出范围"); } } + + public static string CreateAutoWrireRecord3(Context ctx, string FOrgId, List DATA1, CombinaAddSK DATA2) + { + string FBILLNO; + string FID; + // 构建一个IBillView实例,通过此实例,可以方便的填写 + IBillView billView = CommonHelper.CreateBillView(ctx, "VRYF_FHTZDHXJL"); + // billView.CreateNewModelData(); + ((IBillViewService)billView).LoadData(); + // 触发插件的OnLoad事件: + // 组织控制基类插件,在OnLoad事件中,对主业务组织改变是否提示选项进行初始化。 + // 如果不触发OnLoad事件,会导致主业务组织赋值不成功 + DynamicFormViewPlugInProxy eventProxy = billView.GetService(); + eventProxy.FireOnLoad(); + CreateAutoWrireRecordData2(billView, ctx, FOrgId, DATA1, DATA2); + OperateOption saveOption = OperateOption.Create(); + Form form = billView.BillBusinessInfo.GetForm(); + if (form.FormIdDynamicProperty != null) + { + form.FormIdDynamicProperty.SetValue(billView.Model.DataObject, form.Id); + } + //保存工程项目 + CommonHelper.SaveBill(ctx, billView, saveOption, true, out FID, out FBILLNO); + return FBILLNO; + } } } diff --git a/Pilot_KD_Parino/Pilot_KD_Parino.csproj b/Pilot_KD_Parino/Pilot_KD_Parino.csproj index acbebd5..c096313 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_AutoWrire/Bill5.cs b/Pilot_KD_Parino/QPHY_AutoWrire/Bill5.cs index dd4f047..6f6cb9c 100644 --- a/Pilot_KD_Parino/QPHY_AutoWrire/Bill5.cs +++ b/Pilot_KD_Parino/QPHY_AutoWrire/Bill5.cs @@ -51,7 +51,7 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire private string parentRowId = "";//父项ID string dateFormat = "yyyy-MM-dd HH:mm:ss"; // 指定的日期格式 int status11=1; - + int SourceType = 0; /// /// 开始 /// @@ -459,7 +459,7 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire #region 新版 2025-04-07 #region 匹配销售订单 - var SaleBILLLIS2Sal = SaleBILLLIS2.Where(t => t.FType == "销售订单" && t.FISHX != "已核销配对").ToList(); + var SaleBILLLIS2Sal = SaleBILLLIS2.Where(t => t.FISHX != "已核销配对").ToList(); //将销售订单根据客户分组 //var FClientList2 = SaleBILLLIS2Sal.GroupBy(t => t.FClient).ToList(); //var FClientReceiveBillList= ReceiveBILLLIST @@ -633,163 +633,167 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire } - //3、收款单的待核销金额与订单的待最近30天开票金额(只有医院客户) - 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(); - //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(); - if (SaleBILLLIS2Sa333.Count() > ReceiveList33.Count()) + + if (SourceType == 0) //只有销售单有这两种匹配逻辑 { - List deleteFBIllNOList = new List(); - ReceiveList33.ForEach(t => - { - var temp111 = oneToOneTemp3.FirstOrDefault(h => h.UFbillNo == t && !deleteFBIllNOList.Contains(h.FBIllNO)); - if (temp111 == null) - return; - var temp11 = temp111.FBIllNO; - deleteFBIllNOList.Add(temp11); - var item = SaleBILLLISNew.Where(h => h.FBIllNO == temp11).OrderBy(h => h.FDate).FirstOrDefault(); - //更新销售订单数据 - item.FSKBIllNO = t; - item.FISHX = "已核销配对"; - item.BenCi = temp111.FDAMOUNT; - item.FDAMOUNT = item.FDAMOUNT - item.BenCi; + //3、收款单的待核销金额与订单的待最近30天开票金额(只有医院客户) + 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(); - shouKuanDetail.Add(t + "," + item.FBIllNO, item.BenCi); - //item.FYAMOUNT = item.FYAMOUNT + item.BenCi; - //item.= - List fString = new List(); - fString.Add(item.FCONTRACTNUMBER); - string fCONTRACTNUMBER = string.Join(",", fString); - //更新收款单数据 - var receiveItemTemp = ReceiveBILLLIST.FirstOrDefault(h => h.FBIllNO == t); - if (receiveItemTemp != null) + 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(); + //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(); + + if (SaleBILLLIS2Sa333.Count() > ReceiveList33.Count()) + { + List deleteFBIllNOList = new List(); + ReceiveList33.ForEach(t => { - receiveItemTemp.FCONTRACTNUMBER = fCONTRACTNUMBER; - receiveItemTemp.FISHX = "已核销配对"; - receiveItemTemp.BenCi = temp111.FDAMOUNT; - receiveItemTemp.FDAMOUNT = receiveItemTemp.FDAMOUNT - receiveItemTemp.BenCi; - //receiveItemTemp.FYAMOUNT = receiveItemTemp.FYAMOUNT + receiveItemTemp.BenCi; - } + var temp111 = oneToOneTemp3.FirstOrDefault(h => h.UFbillNo == t && !deleteFBIllNOList.Contains(h.FBIllNO)); + if (temp111 == null) + return; + var temp11 = temp111.FBIllNO; + deleteFBIllNOList.Add(temp11); + var item = SaleBILLLISNew.Where(h => h.FBIllNO == temp11).OrderBy(h => h.FDate).FirstOrDefault(); + //更新销售订单数据 + item.FSKBIllNO = t; + item.FISHX = "已核销配对"; + item.BenCi = temp111.FDAMOUNT; + item.FDAMOUNT = item.FDAMOUNT - item.BenCi; + + shouKuanDetail.Add(t + "," + item.FBIllNO, item.BenCi); + //item.FYAMOUNT = item.FYAMOUNT + item.BenCi; + //item.= + List fString = new List(); + fString.Add(item.FCONTRACTNUMBER); + string fCONTRACTNUMBER = string.Join(",", fString); + //更新收款单数据 + var receiveItemTemp = ReceiveBILLLIST.FirstOrDefault(h => h.FBIllNO == t); + if (receiveItemTemp != null) + { + receiveItemTemp.FCONTRACTNUMBER = fCONTRACTNUMBER; + receiveItemTemp.FISHX = "已核销配对"; + receiveItemTemp.BenCi = temp111.FDAMOUNT; + receiveItemTemp.FDAMOUNT = receiveItemTemp.FDAMOUNT - receiveItemTemp.BenCi; + //receiveItemTemp.FYAMOUNT = receiveItemTemp.FYAMOUNT + receiveItemTemp.BenCi; + } + + }); + } + else + { + List deleteFBIllNOList = new List(); + saleList33.ForEach(t => + { + var temp111 = oneToOneTemp3.Where(h => h.FBIllNO == t && !deleteFBIllNOList.Contains(h.UFbillNo)).OrderBy(h => h.UFbillNo).FirstOrDefault(); + if (temp111 == null) + return; + var temp11 = temp111.UFbillNo; + deleteFBIllNOList.Add(temp11); + var item = SaleBILLLISNew.FirstOrDefault(h => h.FBIllNO == t); + //更新销售订单数据 + item.FSKBIllNO = t; + item.FISHX = "已核销配对"; + item.BenCi = temp111.FDAMOUNT; + item.FDAMOUNT = item.FDAMOUNT - item.BenCi; + //item.FYAMOUNT = item.FYAMOUNT + item.BenCi; + List fString = new List(); + fString.Add(item.FCONTRACTNUMBER); + string fCONTRACTNUMBER = string.Join(",", fString); + //更新收款单数据 + var receiveItemTemp = ReceiveBILLLIST.FirstOrDefault(h => h.FBIllNO == temp11); + if (receiveItemTemp != null) + { + receiveItemTemp.FCONTRACTNUMBER = fCONTRACTNUMBER; + receiveItemTemp.FISHX = "已核销配对"; + receiveItemTemp.BenCi = temp111.FDAMOUNT; + receiveItemTemp.FDAMOUNT = receiveItemTemp.FDAMOUNT - receiveItemTemp.BenCi; + //receiveItemTemp.FYAMOUNT = receiveItemTemp.FYAMOUNT + receiveItemTemp.BenCi; + receiveItemTemp.FWeiYi = "是"; + + shouKuanDetail.Add(receiveItemTemp.FBIllNO + "," + item.FBIllNO, item.BenCi); + } + + }); + } + + //先挑1张收款单对应多张张销售订单 + var SaleBILLLIS2Sa2 = 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(); + //打包式匹配法,按时间倒序逐一核销掉. + + ReceiveBILLLIST.ForEach(t => + { + var tempList = SaleBILLLIS2Sa2.Where(h => h.FClient == t.FClient && h.FISHX != "已核销配对" && t.FDAMOUNT > 0).OrderByDescending(h => h.FDate).ToList(); + + var FDAMOUNT = t.FDAMOUNT; + List heTongList = new List(); + if (t.FCONTRACTNUMBER != null) + heTongList = t.FCONTRACTNUMBER.Split(',').ToList().Distinct().ToList(); + if (heTongList == null) + heTongList = new List(); + tempList.ForEach(sale => + { + if (FDAMOUNT == 0) + { + return; + } + double benCi = 0; + List str = new List(); + if (sale.FSKBIllNO != null) + str = sale.FSKBIllNO.Split(',').ToList(); + if (str == null) + str = new List(); + str.Add(t.FBIllNO); + sale.FSKBIllNO = string.Join(",", str); + + if (FDAMOUNT >= sale.FDAMOUNT) + { + benCi = sale.FDAMOUNT; + sale.BenCi = sale.FDAMOUNT; + sale.FDAMOUNT = 0; + sale.FISHX = "已核销配对"; + } + else + { + benCi = FDAMOUNT; + sale.BenCi = FDAMOUNT; + sale.FDAMOUNT = sale.FDAMOUNT - benCi; + } + + //sale.FYAMOUNT = sale.FYAMOUNT + sale.BenCi; + heTongList.Add(sale.FCONTRACTNUMBER); + heTongList = heTongList.Distinct().ToList(); + str = new List(); + if (t.FSKBIllNO != null) + str = t.FSKBIllNO.Split(',').ToList(); + if (str == null) + str = new List(); + str.Add(sale.FBIllNO); + + shouKuanDetail.Add(t.FBIllNO + "," + sale.FBIllNO, benCi); + + FDAMOUNT = FDAMOUNT - sale.BenCi; + t.FDAMOUNT = t.FDAMOUNT - benCi; + //t.FYAMOUNT = t.FYAMOUNT + sale.BenCi; + t.BenCi = t.BenCi + benCi; + t.FCONTRACTNUMBER = string.Join(",", heTongList); + if (heTongList.Count == 1) + t.FWeiYi = "是"; + else + t.FWeiYi = "否"; + if (t.FDAMOUNT == 0) + { + t.FISHX = "已核销配对"; + } + + }); }); } - else - { - List deleteFBIllNOList = new List(); - saleList33.ForEach(t => - { - var temp111 = oneToOneTemp3.Where(h => h.FBIllNO == t && !deleteFBIllNOList.Contains(h.UFbillNo)).OrderBy(h => h.UFbillNo).FirstOrDefault(); - if (temp111 == null) - return; - var temp11 = temp111.UFbillNo; - deleteFBIllNOList.Add(temp11); - var item = SaleBILLLISNew.FirstOrDefault(h => h.FBIllNO == t); - //更新销售订单数据 - item.FSKBIllNO = t; - item.FISHX = "已核销配对"; - item.BenCi = temp111.FDAMOUNT; - item.FDAMOUNT = item.FDAMOUNT - item.BenCi; - //item.FYAMOUNT = item.FYAMOUNT + item.BenCi; - List fString = new List(); - fString.Add(item.FCONTRACTNUMBER); - string fCONTRACTNUMBER = string.Join(",", fString); - //更新收款单数据 - var receiveItemTemp = ReceiveBILLLIST.FirstOrDefault(h => h.FBIllNO == temp11); - if (receiveItemTemp != null) - { - receiveItemTemp.FCONTRACTNUMBER = fCONTRACTNUMBER; - receiveItemTemp.FISHX = "已核销配对"; - receiveItemTemp.BenCi = temp111.FDAMOUNT; - receiveItemTemp.FDAMOUNT = receiveItemTemp.FDAMOUNT - receiveItemTemp.BenCi; - //receiveItemTemp.FYAMOUNT = receiveItemTemp.FYAMOUNT + receiveItemTemp.BenCi; - receiveItemTemp.FWeiYi = "是"; - - shouKuanDetail.Add(receiveItemTemp.FBIllNO + "," + item.FBIllNO, item.BenCi); - } - - }); - } - - - //先挑1张收款单对应多张张销售订单 - var SaleBILLLIS2Sa2 = 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(); - //打包式匹配法,按时间倒序逐一核销掉. - ReceiveBILLLIST.ForEach(t => - { - var tempList = SaleBILLLIS2Sa2.Where(h => h.FClient == t.FClient && h.FISHX != "已核销配对" && t.FDAMOUNT > 0).OrderByDescending(h => h.FDate).ToList(); - - var FDAMOUNT = t.FDAMOUNT; - List heTongList = new List(); - if (t.FCONTRACTNUMBER != null) - heTongList = t.FCONTRACTNUMBER.Split(',').ToList().Distinct().ToList(); - if (heTongList == null) - heTongList = new List(); - tempList.ForEach(sale => - { - if (FDAMOUNT == 0) - { - return; - } - double benCi = 0; - List str = new List(); - if (sale.FSKBIllNO != null) - str = sale.FSKBIllNO.Split(',').ToList(); - if (str == null) - str = new List(); - str.Add(t.FBIllNO); - sale.FSKBIllNO = string.Join(",", str); - - if (FDAMOUNT >= sale.FDAMOUNT) - { - benCi = sale.FDAMOUNT; - sale.BenCi = sale.FDAMOUNT; - sale.FDAMOUNT = 0; - sale.FISHX = "已核销配对"; - } - else - { - benCi = FDAMOUNT; - sale.BenCi = FDAMOUNT; - sale.FDAMOUNT = sale.FDAMOUNT - benCi; - } - - //sale.FYAMOUNT = sale.FYAMOUNT + sale.BenCi; - heTongList.Add(sale.FCONTRACTNUMBER); - heTongList = heTongList.Distinct().ToList(); - str = new List(); - if (t.FSKBIllNO != null) - str = t.FSKBIllNO.Split(',').ToList(); - if (str == null) - str = new List(); - str.Add(sale.FBIllNO); - - shouKuanDetail.Add(t.FBIllNO + "," + sale.FBIllNO, benCi); - - FDAMOUNT = FDAMOUNT - sale.BenCi; - t.FDAMOUNT = t.FDAMOUNT - benCi; - //t.FYAMOUNT = t.FYAMOUNT + sale.BenCi; - t.BenCi = t.BenCi + benCi; - t.FCONTRACTNUMBER = string.Join(",", heTongList); - if (heTongList.Count == 1) - t.FWeiYi = "是"; - else - t.FWeiYi = "否"; - if (t.FDAMOUNT == 0) - { - t.FISHX = "已核销配对"; - } - - }); - - }); - #region ////1个销售订单对应多张收款单 //SaleBILLLIS2Sa2 = SaleBILLLISNew.Where(t => t.FISHX != "已核销配对").OrderBy(t => t.FClient).ThenBy(t => t.FCONTRACTNUMBER).ThenBy(t => t.FDate).ToList(); @@ -903,34 +907,37 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire var Rowindex = this.View.Model.GetEntryRowCount("FEntity2"); for (int i = 0; i < tempList2.Count; i++) { - - this.View.Model.SetValue("FPARENTROWID", FROWID, item.FRow); - this.View.Model.CreateNewEntryRow("FEntity2"); - this.View.Model.SetValue("FROWID", Guid.NewGuid().ToString(), Rowindex + i); - this.View.Model.SetValue("FPARENTROWID", FROWID, Rowindex + i); - this.View.Model.SetValue("FBILLNO2", tempList2[i].FBIllNO, Rowindex + i); - if (DateTime.TryParseExact(item?.FDate, dateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime parsedDate)) + double benci = 0; + if (shouKuanDetail.ContainsKey(item.FBIllNO + "," + tempList2[i].FBIllNO)) { - this.View.Model.SetValue("FDate2", item?.FDate, Rowindex + i); + benci = shouKuanDetail[item.FBIllNO + "," + tempList2[i].FBIllNO]; + } + this.View.Model.SetValue("FPARENTROWID", FROWID, item.FRow); + if(benci==0) + continue; + this.View.Model.CreateNewEntryRow("FEntity2"); + this.View.Model.SetValue("FROWID", Guid.NewGuid().ToString(), Rowindex + 1); + this.View.Model.SetValue("FPARENTROWID", FROWID, Rowindex + 1); + this.View.Model.SetValue("FBILLNO2", tempList2[i].FBIllNO, Rowindex + 1); + if (DateTime.TryParseExact(tempList2[i].FDate, dateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime parsedDate)) + { + this.View.Model.SetValue("FDate2", tempList2[i].FDate, Rowindex + 1); } else { - this.View.Model.SetValue("FDate2", DateTime.Now.AddDays(-1 * Convert.ToInt32(item?.FDate)).ToString("yyyy-MM-dd"), Rowindex + i); + this.View.Model.SetValue("FDate2", DateTime.Now.AddDays(-1 * Convert.ToInt32(tempList2[i].FDate)).ToString("yyyy-MM-dd"), Rowindex + 1); } - this.View.Model.SetValue("F_MBBA_Decimal_imu", tempList2[i].FALLAMOUNT, 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 + i); - this.View.Model.SetValue("FCONTRACTNUMBER2", tempList2[i].FCONTRACTNUMBER, Rowindex + i); - this.View.Model.SetValue("FSalesman2", tempList2[i].FSalesman, Rowindex + i); - this.View.Model.SetValue("F_MBBA_Decimal_qtr", tempList2[i].FDAMOUNT, Rowindex + i); - - this.View.Model.SetValue("F_PendingAmount", tempList2[i].FDAMOUNT, Rowindex + i); - double benci = shouKuanDetail[item.FBIllNO + "," + tempList2[i].FBIllNO]; - - 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("F_MBBA_Decimal_imu", tempList2[i].FALLAMOUNT, Rowindex + 1); + this.View.Model.SetValue("FClient2", tempList2[i].FClient, Rowindex + 1); + this.View.Model.SetValue("F_RowNew", 2, Rowindex + 1); + this.View.Model.SetValue("FCreated2", tempList2[i].FCreated, Rowindex + 1); + this.View.Model.SetValue("FCONTRACTNUMBER2", tempList2[i].FCONTRACTNUMBER, Rowindex + 1); + this.View.Model.SetValue("FSalesman2", tempList2[i].FSalesman, Rowindex + 1); + this.View.Model.SetValue("F_MBBA_Decimal_qtr", tempList2[i].FDAMOUNT, Rowindex + 1); + this.View.Model.SetValue("F_PendingAmount", tempList2[i].FDAMOUNT, Rowindex + 1); + this.View.Model.SetValue("F_BenCi", benci, Rowindex + 1); + this.View.Model.SetValue("F_MBBA_Decimal_3iy", tempList2[i].FYAMOUNT, Rowindex + 1); + this.View.Model.SetValue("F_ISHX", false, Rowindex + 1); } @@ -1111,7 +1118,11 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire try { //创建核销记录单 - string FBILLNO = CommonHelper.CreateAutoWrireRecord2(this.Context, Convert.ToString(FOrgId), item.XSAPList, item); + string FBILLNO = ""; + if(SourceType==0) + FBILLNO = CommonHelper.CreateAutoWrireRecord2(this.Context, Convert.ToString(FOrgId), item.XSAPList, item); + else + FBILLNO = CommonHelper.CreateAutoWrireRecord3(this.Context, Convert.ToString(FOrgId), item.XSAPList, item); if (FBILLNO != "") { Message = Message + string.Format("生成核销记录单成功,单号为:'{0}'\r\n", FBILLNO); @@ -1135,7 +1146,7 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire { var tempRow = ReceiveBILLLIST2.Where(t => successFbillNo.Contains(t.FBIllNO)).ToList(); var pId = tempRow.Select(t => t.FROWID).ToList(); - var allRows = FEntity2.Where(t => pId.Contains(t["PARENTROWID"].ToString())).ToList(); + var allRows = FEntity2.Where(t => t["PARENTROWID"] !=null && pId.Contains(t["PARENTROWID"].ToString())).ToList(); allRows.ForEach(t => { this.Model.DeleteEntryRow("FEntity2", Convert.ToInt32(t["Seq"]) - 1); @@ -1393,7 +1404,7 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire if (F_RowNew != "1") return; string PARENTROWID = this.Model.GetValue("FPARENTROWID", e.Row)?.ToString(); - var dataRow = FEntity2.Where(item => item["PARENTROWID"].ToString() == PARENTROWID && int.Parse(item["F_RowNew"].ToString()) != 1).ToList(); + var dataRow = FEntity2.Where(item => item["PARENTROWID"] !=null && item["PARENTROWID"].ToString() == PARENTROWID && int.Parse(item["F_RowNew"].ToString()) != 1).ToList(); if (IsHX.ToLower() == "true" && dataRow.Where(t => t["F_ISHX"].ToString().ToLower() == "true").Count() > 0) { return; @@ -1471,6 +1482,9 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire { FilterParameter returnData = action.ReturnData as FilterParameter;//过滤框返回的数据 DynamicObject dyObj = returnData.CustomFilter as DynamicObject; + //获取应收款数据来源 0=销售订单 1=发货通知单 + SourceType = Convert.ToInt32(dyObj["F_Source_Type2"]); + //获取组织FID DynamicObject FSaleOrg = dyObj["F_ZhuZhi2"] as DynamicObject; string FSaleOrgId = ""; @@ -1499,15 +1513,17 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire if (ZZS.Count > 0) { List zzList = new List(); - //循环获取多选组织FID + //循环获取多选客户FID foreach (DynamicObject dobj in ZZS) { DynamicObject dynamic = dobj["FClientList"] as DynamicObject; zzList.Add(dynamic["ID"].ToString()); } CustFid = string.Join("','", zzList); - - where1 += $@" and A.FCUSTID in ('{CustFid}')"; + if(SourceType==0) + where1 += $@" and A.FCUSTID in ('{CustFid}')"; + else + where1 += $@" and A.FCustomerID in ('{CustFid}')"; where2 += $@" and A.FCONTACTUNIT in ('{CustFid}')"; } //this.View.ShowMessage(string.Format("选中的客户是:{0}s", CustFid)); @@ -1535,12 +1551,19 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire //删除四个单据体 this.View.Model.DeleteEntryData("FEntity"); this.View.Model.DeleteEntryData("FEntity2"); - + //var FShuaXin = this.View.Model.GetValue("FShuaXin"); - + + DynamicObjectCollection WriteOrderDate; //调用SQL获取数据 - var WriteOrderDate = SQL.SqlManage_yuyubo.GetWriteOrderDate3(this.Context, FSaleOrgId, where1); + if (SourceType == 0) + WriteOrderDate = SQL.SqlManage_yuyubo.GetWriteOrderDate3(this.Context, FSaleOrgId, where1); + else + WriteOrderDate = SQL.SqlManage_yuyubo.GetFaHuoTongZhiDan(this.Context, FSaleOrgId, where1); + var WriteReceiveDate = SQL.SqlManage_yuyubo.GetWriteReceiveDate3(this.Context, FSaleOrgId, where2); + + SaleBILLLIS = WriteOrderDate.Select(item => new CombinaClass { Fid = Convert.ToInt32(item["FID"]), diff --git a/Pilot_KD_Parino/QPHY_AutoWrireRecord/FUpdateAmount.cs b/Pilot_KD_Parino/QPHY_AutoWrireRecord/FUpdateAmount.cs index ceca63d..b5bcb8b 100644 --- a/Pilot_KD_Parino/QPHY_AutoWrireRecord/FUpdateAmount.cs +++ b/Pilot_KD_Parino/QPHY_AutoWrireRecord/FUpdateAmount.cs @@ -1,13 +1,11 @@ -using Kingdee.BOS.Core.DynamicForm.PlugIn; +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.Collections.Generic; using System.ComponentModel; using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Pilot_KD_Parino.QPHY_AutoWrireRecord { @@ -17,12 +15,80 @@ namespace Pilot_KD_Parino.QPHY_AutoWrireRecord [Description("核销记录单--反审核更新销售订单/应收单/收款单->核销金额"),HotUpdate] public class FUpdateAmount: AbstractOperationServicePlugIn { - public override void EndOperationTransaction(EndOperationTransactionArgs e) + //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.EndOperationTransaction(e); - var fId = e.DataEntitys[0][0]?.ToString(); - //获取销售订单核销金额数据 - SqlManage.FUpdateSalOrderAmount(this.Context, fId); + base.AfterExecuteOperationTransaction(e); + foreach (var rows in e.SelectedRows) + { + var Billobj = rows.DataEntity; + //获取销售订单核销金额数据 + SqlManage.FUpdateSalOrderAmount(this.Context, Convert.ToString(Billobj["Id"])); + + string sql1 = string.Format(@"/*dialect*/Select B.FBILLNO2,B.FALLAMOUNT2 From T_AutoWrireRecord A + JOIN T_AutoWrireRecordEntry 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.FBILLNO = '{0}' + Order by F_ORDER", 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"]); + if (FALLAMOUNT > 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); + } + FALLAMOUNT -= FRECADVANCEAMOUNT; + //} + } + } + } + } } } } diff --git a/Pilot_KD_Parino/QPHY_AutoWrireRecord/UpdateAmount.cs b/Pilot_KD_Parino/QPHY_AutoWrireRecord/UpdateAmount.cs index 196eb76..3831a19 100644 --- a/Pilot_KD_Parino/QPHY_AutoWrireRecord/UpdateAmount.cs +++ b/Pilot_KD_Parino/QPHY_AutoWrireRecord/UpdateAmount.cs @@ -1,14 +1,11 @@ -using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +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.Collections.Generic; using System.ComponentModel; using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Kingdee.BOS.App.Data; namespace Pilot_KD_Parino.QPHY_AutoWrireRecord { @@ -49,7 +46,7 @@ namespace Pilot_KD_Parino.QPHY_AutoWrireRecord //如果只有一个直接赋值 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"]); + 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) @@ -57,8 +54,8 @@ namespace Pilot_KD_Parino.QPHY_AutoWrireRecord for (int i = 0; i < sql2List.Count; i++) { //判断核销顺序是否为空 - if (!string.IsNullOrWhiteSpace(sql2List[i]["F_ORDER"]?.ToString())) - { + //if (!string.IsNullOrWhiteSpace(sql2List[i]["F_ORDER"]?.ToString())) + //{ //判断核销金额是否大于按照排序对冲金额 decimal FRECADVANCEAMOUNT = Convert.ToDecimal(sql2List[i]["FRECADVANCEAMOUNT"]); if (FALLAMOUNT > 0) @@ -73,11 +70,11 @@ namespace Pilot_KD_Parino.QPHY_AutoWrireRecord { fAmount = FALLAMOUNT; } - string sql3 = string.Format(@"Update T_SAL_ORDERPLAN Set F_MBBA_Decimal_uky = '{0}' Where FENTRYID = '{1}';", fAmount, sql2List[i]["FENTRYID"]); + 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 -= FRECADVANCEAMOUNT; - } + //} } } } diff --git a/Pilot_KD_Parino/SQL/SqlManage_yuyubo.cs b/Pilot_KD_Parino/SQL/SqlManage_yuyubo.cs index 6cd066f..f9f5479 100644 --- a/Pilot_KD_Parino/SQL/SqlManage_yuyubo.cs +++ b/Pilot_KD_Parino/SQL/SqlManage_yuyubo.cs @@ -120,6 +120,64 @@ GROUP BY F_PaperNumber, FSALEORGID return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); } + /// + /// 获取未核销的发货通知单信息 + /// + /// + public static DynamicObjectCollection GetFaHuoTongZhiDan(Context ctx, string FORGID, string where) + { + //定义SQL,调用物料视图 AND A.FBusinessType='NORMAL' + /* + * SELECT case when FBusinessType='NORMAL' then (FDAMOUNT2+[整单累计退货金额]) else 0 end AS FDAMOUNT, * FROM + * + */ + string sql = string.Format($@"/*dialect*/ + SELECT FDAMOUNT2 as FDAMOUNT, * FROM + ( + SELECT A.FID, A.FBusinessType, + A.FSalesManID as FSALERID, + A.F_Papercontract as F_CONTRACTNUMBER, + A.FCustomerID as FCUSTID, + A.F_PROJECTNAME, + A.FCREATORID, + A.FBILLNO AS 'FBILLNO', + DATEDIFF(D, A.FDATE, GETDATE()) AS 'FDATE', + 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.FSETTLECURRID as 'FCurr', + case when DATEDIFF(MONTH, A.FDATE, GETDATE())<3 then 'True' else 'False' end as 'FIs30' , + '发货通知单' as 'FTYPE', + 0.00 AS BenCi, + '' as F_Ordercategory2, + '' AS F_Ordercategory, + ( + 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 + --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, + +0 as FaHuoAmount30Days, + 0 as FInvoiceAmount30Days +,[整单累计退货金额]=0 + FROM T_SAL_DELIVERYNOTICE A + INNER JOIN T_SAL_DELIVERYNOTICEFIN C ON C.FID =A.FID + WHERE + C.FBILLALLAMOUNT_LC > 0 + AND A.FDOCUMENTSTATUS = 'C' AND ISNULL(A.F_Papercontract,'')!='' + AND (A.F_AMOUNT < C.FBILLALLAMOUNT_LC + 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/Sal_Order/PushSaleBillPlugIn.cs b/Pilot_KD_Parino/Sal_Order/PushSaleBillPlugIn.cs index 8f4742b..3775b11 100644 --- a/Pilot_KD_Parino/Sal_Order/PushSaleBillPlugIn.cs +++ b/Pilot_KD_Parino/Sal_Order/PushSaleBillPlugIn.cs @@ -71,6 +71,55 @@ namespace Pilot_KD_Parino.Sal_Order this.View.ShowMessage("跨组织下推订单完成"); + } + + if (e.BarItemKey.Equals("tbSaleBill666", StringComparison.OrdinalIgnoreCase)) + { + this.View.ShowMessage("该功能开发中"); + return; + var FEntity = this.View.Model.DataObject; + var json = JsonUtil.Serialize(FEntity); + //Logger.Error("FEntity", json, new Exception()); + var id = FEntity["id"]; + string formid = FEntity["FFormId"].ToString(); + + //发货通知单或者发货出库单 + string getSourceSql = $@"/*dialect*/SELECT FSTABLENAME,FSBILLID,FENTRYID FROM dbo.T_{formid}ENTRY_LK + WHERE FENTRYID IN ( SELECT FENTRYID FROM dbo.T_{formid}ENTRY WHERE FID = {id})"; + var dt = DBServiceHelper.ExecuteDynamicObject(this.Context, getSourceSql); + if (dt == null || dt.Count == 0) + { + this.View.ShowMessage("没有上查关联的销售订单"); + } + var entryIdList = dt.Select(t => t["FENTRYID"]).ToList() ; + + int tempFid = int.Parse(dt.Select(t => t["FSBILLID"]).FirstOrDefault().ToString()); + string tablename = dt.Select(t => t["FSTABLENAME"]).FirstOrDefault().ToString(); + + int stockId = 0; + + getSourceSql = $@"/*dialect*/SELECT FSTABLENAME,FSBILLID,FENTRYID FROM dbo.T_SAL_ORDERENTRY_LK + WHERE FSBILLID={tempFid}"; + dt = DBServiceHelper.ExecuteDynamicObject(this.Context, getSourceSql); + if (dt == null || dt.Count == 0) + { + this.View.ShowMessage("没有下查关联的跨组织销售订单"); + } + + var FENTRYIDList = dt.Select(t =>int.Parse( t["FENTRYID"].ToString())).ToList(); + string ids = string.Join(",", FENTRYIDList); + getSourceSql = $@"/*dialect*/ SELECT* FROM T_SAL_ORDERENTRY WHERE FENTRYID IN({ids})"; + //IOperationResult result = Invoke("SAL_SaleOrder", "PUR_PurchaseOrder", id.ToString(), "83d822ca3e374b4ab01e5dd46a0062bd", ref stockId, FEntity, null); + ////var sheet = result.SuccessDataEnity.FirstOrDefault(); + + + //result = Invoke("SAL_SaleOrder", "SAL_SaleOrder", id.ToString(), "eacb50844fc84a10b03d7b841f3a6278", ref stockId, null, FEntity); + //sheet = result.SuccessDataEnity.FirstOrDefault(); + //result = Invoke("SAL_DELIVERYNOTICE", "SAL_OUTSTOCK", sheet["id"].ToString(), "ad0779a4685a43a08f08d2e42d7bf3e9", ref stockId); + + this.View.ShowMessage("跨组织下推订单完成"); + + } } @@ -254,7 +303,7 @@ namespace Pilot_KD_Parino.Sal_Order orderSheet["F_SFHW"] = "2"; - this.View.ShowMessage("更新了1"); + //this.View.ShowMessage("更新了1"); string sqltemp1 = $@"/*dialect*/ SELECT FUseOrgId,a.FNUMBER,b.FNAME,a.FCUSTID FROM T_BD_CUSTOMER a LEFT JOIN T_BD_CUSTOMER_L b ON a.FCUSTID=b.FCUSTID @@ -476,7 +525,7 @@ namespace Pilot_KD_Parino.Sal_Order orderSheet["F_Amountstar"] = FEntity2["F_Amountstar"]; } sdsas = JsonHelper.ToJson(destObjs); - Logger.Error("目标单据数据集合4", sdsas, new Exception()); + //Logger.Error("目标单据数据集合4", sdsas, new Exception()); IOperationResult saveResult2 = BusinessDataServiceHelper.Draft(this.Context, destFormMetadata.BusinessInfo, destObjs, OperateOption.Create()); //var ddd = (from p in destObjs select p[0]).ToArray(); diff --git a/Pilot_KD_Parino/Sal_Order/PushSaleOutBillPlugIn.cs b/Pilot_KD_Parino/Sal_Order/PushSaleOutBillPlugIn.cs index 118a922..4971266 100644 --- a/Pilot_KD_Parino/Sal_Order/PushSaleOutBillPlugIn.cs +++ b/Pilot_KD_Parino/Sal_Order/PushSaleOutBillPlugIn.cs @@ -56,6 +56,7 @@ namespace Pilot_KD_Parino.Sal_Order } int tempFid = int.Parse(dt.Select(t => t["FSBILLID"]).FirstOrDefault().ToString()); string tablename = dt.Select(t => t["FSTABLENAME"]).FirstOrDefault().ToString(); + int xiaoFid = 0; //找到采购订单 for (int kk = 0; kk < 6 && tablename.ToUpper() != "T_PUR_POORDERENTRY"; kk++) { @@ -79,20 +80,46 @@ namespace Pilot_KD_Parino.Sal_Order if (dt == null || dt.Count == 0) { - this.View.ShowMessage("没有上查关联的跨组织的采购订单"); + //this.View.ShowMessage("没有上查关联的跨组织的采购订单"); return; } else { tablename = dt.Select(t => t["FSTABLENAME"]).FirstOrDefault().ToString(); - //if (tablename.ToUpper() != "T_PUR_POORDERENTRY") - // this.View.ShowMessage("没有上查关联的跨组织的采购订单 " + tablename); + tempFid = int.Parse(dt.Select(t => t["FSBILLID"]).FirstOrDefault().ToString()); } - tempFid = int.Parse(dt.Select(t => t["FSBILLID"]).FirstOrDefault().ToString()); + } if (tablename.ToUpper() != "T_PUR_POORDERENTRY") - { - throw new KDBusinessException("", "没有上查关联的跨组织的采购订单:" + tablename); + { + getSourceSql = $@"/*dialect*/SELECT FSTABLENAME,FSBILLID,FENTRYID FROM dbo.T_PUR_POORDERENTRY_LK + WHERE FSBILLID= {tempFid}"; + dt = DBServiceHelper.ExecuteDynamicObject(this.Context, getSourceSql); + if (dt == null || dt.Count == 0) + { + throw new KDBusinessException("", "没有上查关联的跨组织的采购订单:" + tablename); + } + else + { + xiaoFid = tempFid; + //tablename = dt.Select(t => t["FSTABLENAME"]).FirstOrDefault().ToString(); + //tempFid = int.Parse(dt.Select(t => t["FSBILLID"]).FirstOrDefault().ToString()); + + var FENTRYIDList = dt.Select(t => int.Parse(t["FENTRYID"].ToString())).ToList(); + string ids = string.Join(",", FENTRYIDList); + getSourceSql = $@"/*dialect*/ SELECT FID FROM T_PUR_POORDERENTRY WHERE FENTRYID IN({ids})"; + dt = DBServiceHelper.ExecuteDynamicObject(this.Context, getSourceSql); + if (dt == null || dt.Count == 0) + { + throw new KDBusinessException("", "没有上查关联的跨组织的采购订单:" + tablename); + } + else + { + tempFid =int.Parse( dt.FirstOrDefault()["FID"].ToString()); + } + + } + } int stockId = 0; @@ -111,7 +138,7 @@ namespace Pilot_KD_Parino.Sal_Order } //找到最开始的销售订单 - for (int kk = 0; kk < 6 && tablename.ToUpper() != "T_SAL_ORDERENTRY"; kk++) + for (int kk = 0; kk < 6 && tablename.ToUpper() != "T_SAL_ORDERENTRY" && xiaoFid==0; kk++) { ////发货通知单 tempFid = int.Parse(dt.Select(t => t["FSBILLID"]).FirstOrDefault().ToString()); @@ -133,13 +160,14 @@ namespace Pilot_KD_Parino.Sal_Order } tempFid = int.Parse(dt.Select(t => t["FSBILLID"]).FirstOrDefault().ToString()); } - if (tablename.ToUpper() != "T_SAL_ORDERENTRY") + if (tablename.ToUpper() != "T_SAL_ORDERENTRY" && xiaoFid == 0) { throw new KDBusinessException("", "推送销售发货通知单失败,没有上查关联的跨组织的销售订单:" + tablename); } - + if (xiaoFid > 0) + tempFid = xiaoFid; result = Invoke("SAL_SaleOrder", "SAL_DELIVERYNOTICE", tempFid.ToString(), "193822715afc48aa9fa6d6beca7700ab", ref stockId); sheet = result.SuccessDataEnity.FirstOrDefault(); result = Invoke("SAL_DELIVERYNOTICE", "SAL_OUTSTOCK", sheet["id"].ToString(), "ad0779a4685a43a08f08d2e42d7bf3e9", ref stockId); diff --git a/Pilot_KD_Parino/VRYF_FHTZDHXJL/UpdateAmount.cs b/Pilot_KD_Parino/VRYF_FHTZDHXJL/UpdateAmount.cs new file mode 100644 index 0000000..f025a76 --- /dev/null +++ b/Pilot_KD_Parino/VRYF_FHTZDHXJL/UpdateAmount.cs @@ -0,0 +1,87 @@ +using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; +using Kingdee.BOS.Core.DynamicForm.PlugIn; +using Kingdee.BOS.Util; +using Pilot_KD_Parino.SQL; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Kingdee.BOS.App.Data; + +namespace Pilot_KD_Parino.VRYF_FHTZDHXJL +{ + [HotUpdate] + [Description("核销记录单--更新销售订单金额")] + public class UpdateAmount : AbstractOperationServicePlugIn + { + public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e) + { + base.AfterExecuteOperationTransaction(e); + foreach (var rows in e.SelectedRows) + { + var Billobj = rows.DataEntity; + //获取销售订单核销金额数据 + SqlManage.UpdateSalOrderAmount(this.Context, Convert.ToString(Billobj["Id"])); + + string sql1 = string.Format(@"/*dialect*/Select B.FBILLNO2,B.FALLAMOUNT2 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.FDOCUMENTSTATUS = '{item["FDOCUMENTSTATUS"]}' and A.FSaleOrgId={item["FORGID"]} + 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"]); + if (FALLAMOUNT > 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); + } + FALLAMOUNT -= FRECADVANCEAMOUNT; + //} + } + } + } + } + } + } +}