diff --git a/Pilot_KD_Parino/QPHY_AutoWrire/Bill5.cs b/Pilot_KD_Parino/QPHY_AutoWrire/Bill5.cs index 4522799..c8e0719 100644 --- a/Pilot_KD_Parino/QPHY_AutoWrire/Bill5.cs +++ b/Pilot_KD_Parino/QPHY_AutoWrire/Bill5.cs @@ -548,8 +548,8 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire } //2、收款单的待核销金额与订单的待最近30天发货通知单金额(除了医院客户) - var SaleBILLLIS2Sa222 = SaleBILLLISNew.Where(t => t.FISHX != "已核销配对" && t.FDAMOUNT > 0).OrderBy(t => t.FClient).ThenByDescending(t => t.FBIllNO).ToList(); - ReceiveBILLLIST = ReceiveBILLLIST2.Where(a => a.F_RowNew == 1 && a.FISHX != "已核销配对" && a.FDAMOUNT > 0).OrderBy(t => t.FClient).ThenByDescending(t => t.FBIllNO).ToList(); + var SaleBILLLIS2Sa222 = 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 oneToOneTemp2 = (from q in SaleBILLLIS2Sa222 join u in ReceiveBILLLIST on new { q.FClient, FDAMOUNT= q.FaHuoAmount30Days } equals new { u.FClient, u.FDAMOUNT } @@ -633,15 +633,96 @@ 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 SaleBILLLIS2Sa222 + 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 => + { + 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.FBIllNO).ToList(); - ReceiveBILLLIST = ReceiveBILLLIST2.Where(a => a.F_RowNew == 1 && a.FISHX != "已核销配对" && a.FDAMOUNT > 0).OrderBy(t => t.FClient).ThenByDescending(t => t.FBIllNO).ToList(); + 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.FBIllNO).ToList(); + 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();