using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel; using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Core.Metadata.EntityElement; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.Util; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; using Pilot_KD_Parino.Common; using Kingdee.BOS.ServiceHelper; using Kingdee.K3.FIN.Core; using Kingdee.BOS.App.Data; namespace Pilot_KD_Parino.QPHY_AutoWrire { [HotUpdate] [Description("收款核销")] //最初的版本 不用了 public class Bill : AbstractDynamicFormPlugIn { public List SaleBILLLIS = new List(); public List ReceiveBILLLIST = new List(); //拿来匹配的集合 public List SaleBILLLIS2 = new List(); public override void AfterDoOperation(AfterDoOperationEventArgs e) { base.AfterDoOperation(e); //新增匹配 if (e.Operation.Id.ToString().ToUpper().Equals("ADDROW3")) { var Rowindex = this.View.Model.GetEntryRowCount("FEntity3"); this.View.Model.CreateNewEntryRow("FEntity3"); this.View.Model.SetValue("FROWID", SequentialGuid.NewGuid().ToString(), Rowindex); this.View.Model.SetValue("FPARENTROWID", SequentialGuid.NewGuid().ToString(), Rowindex); } //新增匹配 if (e.Operation.Id.ToString().ToUpper().Equals("ADDROW")) { int CurrentIndex = this.View.Model.GetEntryCurrentRowIndex("FEntity"); if (CurrentIndex == -1) { this.View.ShowErrMessage("请选择行!"); return; } int CurrentIndex2 = this.View.Model.GetEntryCurrentRowIndex("FEntity3"); if (CurrentIndex2 == -1) { this.View.ShowErrMessage("请选择行!"); return; } var FROWID = Convert.ToString(this.View.Model.GetValue("FROWID", CurrentIndex2)); this.View.Model.SetValue("FPARENTROWID", FROWID, CurrentIndex2); //获取单据体行数据 DynamicObjectCollection FEntity = this.View.Model.DataObject["FEntity"] as DynamicObjectCollection; DynamicObject obj = FEntity[CurrentIndex]; DynamicObjectCollection FEntity3 = this.View.Model.DataObject["FEntity3"] as DynamicObjectCollection; DynamicObject obj2 = FEntity3[CurrentIndex2]; //子单据体数据包 EntryEntity FEntity4 = this.View.BusinessInfo.GetEntryEntity("FEntity4"); //获取子单据体数据 var FSubEntityObjs = FEntity4.DynamicProperty.GetValue(obj2) as DynamicObjectCollection; this.View.Model.DeleteEntryRow("FEntity", CurrentIndex); if (Convert.ToString(obj2["FBILLNO3"]) == "") { var RowId = SequentialGuid.NewGuid().ToString(); this.View.Model.SetValue("FROWID", RowId, CurrentIndex2); this.View.Model.SetValue("FPARENTROWID", RowId, CurrentIndex2); this.View.Model.SetValue("FBILLNO3", obj["FBILLNO"], CurrentIndex2); this.View.Model.SetValue("FDATE3", obj["FDATE"], CurrentIndex2); this.View.Model.SetValue("FALLAMOUNT3", obj["FALLAMOUNT"], CurrentIndex2); this.View.Model.SetValue("FType3", obj["FType"], CurrentIndex2); //--------------20250121--------------↓ this.View.Model.SetValue("FCONTRACTNUMBER3", obj["FCONTRACTNUMBER"], CurrentIndex2); this.View.Model.SetValue("FClient3", obj["FClient"], CurrentIndex2); this.View.Model.SetValue("FProject3", obj["FProject"], CurrentIndex2); this.View.Model.SetValue("FCreated3", obj["FCreated"], CurrentIndex2); this.View.Model.SetValue("FCurr3", obj["FCurr"], CurrentIndex2); this.View.Model.SetValue("FAmountY3", obj["FAmountY"], CurrentIndex2); //--------------20250121--------------↑ } else { var Rowindex = this.View.Model.GetEntryRowCount("FEntity3"); this.View.Model.CreateNewEntryRow("FEntity3"); this.View.Model.SetValue("FROWID", SequentialGuid.NewGuid().ToString(), Rowindex); this.View.Model.SetValue("FPARENTROWID", FROWID, Rowindex); this.View.Model.SetValue("FBILLNO3", obj["FBILLNO"], Rowindex); this.View.Model.SetValue("FDATE3", obj["FDATE"], Rowindex); this.View.Model.SetValue("FALLAMOUNT3", obj["FALLAMOUNT"], Rowindex); this.View.Model.SetValue("FType3", obj["FType"], Rowindex); //--------------20250121--------------↓ this.View.Model.SetValue("FCONTRACTNUMBER3", obj["FCONTRACTNUMBER"], Rowindex); this.View.Model.SetValue("FClient3", obj["FClient"], Rowindex); this.View.Model.SetValue("FProject3", obj["FProject"], Rowindex); this.View.Model.SetValue("FCreated3", obj["FCreated"], Rowindex); this.View.Model.SetValue("FCurr3", obj["FCurr"], Rowindex); this.View.Model.SetValue("FAmountY3", obj["FAmountY"], Rowindex); //--------------20250121--------------↑ //获取子单据体数据 var FSubEntityObjsNew = FEntity4.DynamicProperty.GetValue(FEntity3[Rowindex]) as DynamicObjectCollection; foreach (var item in FSubEntityObjs) { //新增子单据体行 var FSubEntityObj = FSubEntityObjsNew.DynamicCollectionItemPropertyType.CreateInstance() as DynamicObject; FSubEntityObj["FBILLNO4"] = item["FBILLNO4"]; FSubEntityObj["FDate4"] = item["FDate4"]; FSubEntityObj["FALLAMOUNT4"] = item["FALLAMOUNT4"]; //--------------20250121--------------↓ FSubEntityObj["FRemark4"] = item["FRemark4"]; FSubEntityObj["FClient4"] = item["FClient4"]; FSubEntityObj["FCurr4"] = item["FCurr4"]; FSubEntityObj["FAmountY4"] = item["FAmountY4"]; //--------------20250121--------------↑ FSubEntityObjsNew.Add(FSubEntityObj); } } var FEntity3List = FEntity3.Where(t => Convert.ToString(t["PARENTROWID"]) == FROWID).ToList(); this.View.Model.SetValue("FALLAMOUNTSUM", FEntity3List.Sum(t => Convert.ToDouble(t["FALLAMOUNT3"])), CurrentIndex2); // 重新加载数据包 //DBServiceHelper.LoadReferenceObject(this.Context, FEntity3.ToArray(), FEntity3.FirstOrDefault().DynamicObjectType, false); this.View.UpdateView("FEntity3"); this.View.UpdateView("FEntity"); for (int i = 0; i < this.View.Model.GetEntryRowCount("FEntity3"); i++) { this.View.GetControl("FEntity3").ExpandedRow(i); } var List = FEntity3.Where(t => t["PARENTROWID"] == obj2["PARENTROWID"]).ToList(); //获取总金额 var FALLAMOUNT3Sum = Convert.ToDouble(List.Sum(t => Convert.ToDouble(t["FALLAMOUNT3"]))); //获取第一行数据 var ListFirst = FEntity3.Where(t => t["ROWID"] == obj2["PARENTROWID"]).ToList(); //设置总金额 if (ListFirst.Count > 0) { this.View.Model.SetValue("FALLAMOUNTSUM", FALLAMOUNT3Sum, Convert.ToInt32(ListFirst[0]["SEQ"]) - 1); } } //新增匹配 if (e.Operation.Id.ToString().ToUpper().Equals("ADDROW2")) { int CurrentIndex = this.View.Model.GetEntryCurrentRowIndex("FEntity2"); int CurrentIndex2 = this.View.Model.GetEntryCurrentRowIndex("FEntity3"); if (CurrentIndex == -1) { this.View.ShowErrMessage("请选择行!"); return; } if (CurrentIndex2 == -1) { this.View.ShowErrMessage("请选择行!"); return; } DynamicObjectCollection FEntity2 = this.View.Model.DataObject["FEntity2"] as DynamicObjectCollection; DynamicObject obj = FEntity2[CurrentIndex]; DynamicObjectCollection FEntity3 = this.View.Model.DataObject["FEntity3"] as DynamicObjectCollection; DynamicObject obj2 = FEntity3[CurrentIndex2]; //子单据体数据包 EntryEntity FEntity4 = this.View.BusinessInfo.GetEntryEntity("FEntity4"); var List = FEntity3.Where(t => t["PARENTROWID"] == obj2["PARENTROWID"]).ToList(); foreach (var item in List) { //获取子单据体数据 var FSubEntityObjs = FEntity4.DynamicProperty.GetValue(item) as DynamicObjectCollection; //新增子单据体行 var FSubEntityObj = FSubEntityObjs.DynamicCollectionItemPropertyType.CreateInstance() as DynamicObject; FSubEntityObj["FBILLNO4"] = obj["FBILLNO2"]; FSubEntityObj["FDate4"] = obj["FDate2"]; FSubEntityObj["FALLAMOUNT4"] = obj["FALLAMOUNT2"]; //--------------20250121--------------↓ FSubEntityObj["FRemark4"] = obj["FRemark2"]; FSubEntityObj["FClient4"] = obj["FClient2"]; FSubEntityObj["FCurr4"] = obj["FCurr2"]; FSubEntityObj["FAmountY4"] = obj["FAmountY2"]; //--------------20250121--------------↑ FSubEntityObjs.Add(FSubEntityObj); } // 重新加载数据包 DBServiceHelper.LoadReferenceObject(this.Context, FEntity3.ToArray(), FEntity3.FirstOrDefault().DynamicObjectType, false); this.View.Model.DeleteEntryRow("FEntity2", CurrentIndex); this.View.UpdateView("FEntity3"); this.View.UpdateView("FEntity4"); this.View.UpdateView("FEntity2"); for (int i = 0; i < this.View.Model.GetEntryRowCount("FEntity3"); i++) { this.View.GetControl("FEntity3").ExpandedRow(i); } } //删除匹配 if (e.Operation.Id.ToString().ToUpper().Equals("DELETEROW")) { int CurrentIndex2 = this.View.Model.GetEntryCurrentRowIndex("FEntity3"); if (CurrentIndex2 == -1) { this.View.ShowErrMessage("请选择行!"); return; } DynamicObjectCollection FEntity3 = this.View.Model.DataObject["FEntity3"] as DynamicObjectCollection; DynamicObject obj2 = FEntity3[CurrentIndex2]; var List = FEntity3.Where(t => t["PARENTROWID"] == obj2["PARENTROWID"]).ToList(); if (List.Count == 1) { var Rowindex = this.View.Model.GetEntryRowCount("FEntity"); this.View.Model.CreateNewEntryRow("FEntity"); this.View.Model.SetValue("FBILLNO", obj2["FBILLNO3"], Rowindex); this.View.Model.SetValue("FDATE", obj2["FDATE3"], Rowindex); this.View.Model.SetValue("FALLAMOUNT", obj2["FALLAMOUNT3"], Rowindex); this.View.Model.SetValue("FType", obj2["FType3"], Rowindex); //--------------20250121--------------↓ this.View.Model.SetValue("FCONTRACTNUMBER", obj2["FCONTRACTNUMBER3"], Rowindex); this.View.Model.SetValue("FClient", obj2["FClient3"], Rowindex); this.View.Model.SetValue("FProject", obj2["FProject3"], Rowindex); this.View.Model.SetValue("FCreated", obj2["FCreated3"], Rowindex); this.View.Model.SetValue("FCurr", obj2["FCurr3"], Rowindex); this.View.Model.SetValue("FAmountY", obj2["FAmountY3"], Rowindex); //--------------20250121--------------↑ //子单据体数据包 EntryEntity FEntity4 = this.View.BusinessInfo.GetEntryEntity("FEntity4"); //获取子单据体数据 var FSubEntityObjs = FEntity4.DynamicProperty.GetValue(obj2) as DynamicObjectCollection; foreach (var item in FSubEntityObjs) { Rowindex = this.View.Model.GetEntryRowCount("FEntity2"); this.View.Model.CreateNewEntryRow("FEntity2"); this.View.Model.SetValue("FBILLNO2", item["FBILLNO4"], Rowindex); this.View.Model.SetValue("FDATE2", item["FDATE4"], Rowindex); this.View.Model.SetValue("FALLAMOUNT2", item["FALLAMOUNT4"], Rowindex); //--------------20250121--------------↓ this.View.Model.SetValue("FRemark2", item["FRemark4"], Rowindex); this.View.Model.SetValue("FClient2", item["FClient4"], Rowindex); this.View.Model.SetValue("FCurr2", item["FCurr4"], Rowindex); this.View.Model.SetValue("FAmountY2", item["FAmountY4"], Rowindex); //--------------20250121--------------↑ } } else { var Rowindex = this.View.Model.GetEntryRowCount("FEntity"); this.View.Model.CreateNewEntryRow("FEntity"); this.View.Model.SetValue("FBILLNO", obj2["FBILLNO3"], Rowindex); this.View.Model.SetValue("FDATE", obj2["FDATE3"], Rowindex); this.View.Model.SetValue("FALLAMOUNT", obj2["FALLAMOUNT3"], Rowindex); this.View.Model.SetValue("FType", obj2["FType3"], Rowindex); //--------------20250121--------------↓ this.View.Model.SetValue("FCONTRACTNUMBER", obj2["FCONTRACTNUMBER3"], Rowindex); this.View.Model.SetValue("FClient", obj2["FClient3"], Rowindex); this.View.Model.SetValue("FProject", obj2["FProject3"], Rowindex); this.View.Model.SetValue("FCreated", obj2["FCreated3"], Rowindex); this.View.Model.SetValue("FCurr", obj2["FCurr3"], Rowindex); this.View.Model.SetValue("FAmountY", obj2["FAmountY3"], Rowindex); //--------------20250121--------------↑ } this.View.Model.DeleteEntryRow("FEntity3", CurrentIndex2); List = FEntity3.Where(t => t["PARENTROWID"] == obj2["PARENTROWID"]).ToList(); //获取总金额 var FALLAMOUNT3Sum = Convert.ToDouble(List.Sum(t => Convert.ToDouble(t["FALLAMOUNT3"]))); //获取第一行数据 var ListFirst = FEntity3.Where(t => t["ROWID"] == obj2["PARENTROWID"]).ToList(); //设置总金额 if (ListFirst.Count > 0) { this.View.Model.SetValue("FALLAMOUNTSUM", FALLAMOUNT3Sum, Convert.ToInt32(ListFirst[0]["SEQ"]) - 1); } } //删除匹配 if (e.Operation.Id.ToString().ToUpper().Equals("DELETEROW2")) { int CurrentIndex4 = this.View.Model.GetEntryCurrentRowIndex("FEntity4"); if (CurrentIndex4 == -1) { this.View.ShowErrMessage("请选择行!"); return; } int CurrentIndex3 = this.View.Model.GetEntryCurrentRowIndex("FEntity3"); if (CurrentIndex3 == -1) { this.View.ShowErrMessage("请选择行!"); return; } DynamicObjectCollection FEntity3 = this.View.Model.DataObject["FEntity3"] as DynamicObjectCollection; //子单据体数据包 EntryEntity FEntity4 = this.View.BusinessInfo.GetEntryEntity("FEntity4"); DynamicObject obj3 = FEntity3[CurrentIndex3]; var FSubEntityObjs = FEntity4.DynamicProperty.GetValue(obj3) as DynamicObjectCollection; var FSubEntityObj = FSubEntityObjs[CurrentIndex4]; var Rowindex = this.View.Model.GetEntryRowCount("FEntity2"); this.View.Model.CreateNewEntryRow("FEntity2"); this.View.Model.SetValue("FBILLNO2", FSubEntityObj["FBILLNO4"], Rowindex); this.View.Model.SetValue("FDATE2", FSubEntityObj["FDATE4"], Rowindex); this.View.Model.SetValue("FALLAMOUNT2", FSubEntityObj["FALLAMOUNT4"], Rowindex); //--------------20250121--------------↓ this.View.Model.SetValue("FRemark2", FSubEntityObj["FRemark4"], Rowindex); this.View.Model.SetValue("FClient2", FSubEntityObj["FClient4"], Rowindex); this.View.Model.SetValue("FCurr2", FSubEntityObj["FCurr4"], Rowindex); this.View.Model.SetValue("FAmountY2", FSubEntityObj["FAmountY4"], Rowindex); //--------------20250121--------------↑ var List = FEntity3.Where(t => t["PARENTROWID"] == obj3["PARENTROWID"]).ToList(); foreach (var item in List) { FSubEntityObjs = FEntity4.DynamicProperty.GetValue(item) as DynamicObjectCollection; var FSubEntityObjsNew = FSubEntityObjs.Where(t => t["FBILLNO4"] == FSubEntityObj["FBILLNO4"]).ToList(); foreach (var item2 in FSubEntityObjsNew) { FSubEntityObjs.Remove(item2); } } DBServiceHelper.LoadReferenceObject(this.Context, FEntity3.ToArray(), FEntity3.FirstOrDefault().DynamicObjectType, false); this.View.UpdateView("FEntity3"); this.View.UpdateView("FEntity4"); } } /// /// 点击按钮操作 /// /// public override void AfterBarItemClick(AfterBarItemClickEventArgs e) { base.AfterBarItemClick(e); //获取数据 if (e.BarItemKey.ToString().ToUpper().Equals("FGETDATE")) { SaleBILLLIS = new List(); ReceiveBILLLIST = new List(); List SaleBILLLISnew = new List(); List ReceiveBILLLISTNew = new List(); //删除四个单据体 this.View.Model.DeleteEntryData("FEntity"); this.View.Model.DeleteEntryData("FEntity2"); this.View.Model.DeleteEntryData("FEntity3"); this.View.Model.DeleteEntryData("FEntity4"); DynamicObject FOrgId = this.View.Model.GetValue("FOrgId") as DynamicObject; //DynamicObject FCustId = this.View.Model.GetValue("FCustId") as DynamicObject; DynamicObjectCollection FCustId2 = this.View.Model.GetValue("FCustId") as DynamicObjectCollection; var FIDTEST = FCustId2?.Select(n => (n["FCustId"] as DynamicObject)["msterID"].ToString()).ToList(); string fCUSTId = ""; foreach (var item in FIDTEST) { string sqlKH = string.Format(@"/*dialect*/ Select FCUSTID From T_BD_CUSTOMER Where FMASTERID = '{0}' AND FUSEORGID = {1} AND FDOCUMENTSTATUS = 'C'", item, Convert.ToString(FOrgId["ID"])); var sqlKHList = DBUtils.ExecuteDynamicObject(Context, sqlKH); if (sqlKHList.Count() > 0) { fCUSTId += "'" + sqlKHList[0]["FCUSTID"] + "',"; } } fCUSTId += "'0'"; if (FIDTEST == null) { this.View.ShowErrMessage("请输入客户信息!"); return; } //string fCUSTId = "'" + string.Join("','", FIDTEST) + "'"; //调用SQL获取数据 var WriteOrderDate = SQL.SqlManage.GetWriteOrderDate2(this.Context, Convert.ToString(FOrgId["ID"]), fCUSTId); var WriteReceiveDate = SQL.SqlManage.GetWriteReceiveDate2(this.Context, Convert.ToString(FOrgId["ID"]), fCUSTId); foreach (var item in WriteOrderDate) { SaleBILLLIS.Add(new CombinaClass() { FBIllNO = Convert.ToString(item["FBIllNO"]), FDate = Convert.ToString(item["FDate"]), FALLAMOUNT = Convert.ToDouble(item["FALLAMOUNT"]), FIs30 = Convert.ToBoolean(item["FIs30"]), FType = Convert.ToString(item["FType"]), FCONTRACTNUMBER = Convert.ToString(item["F_CONTRACTNUMBER"]), FClient = Convert.ToInt32(item["FCUSTID"]), FCreated = Convert.ToInt32(item["FCREATORID"]), FProject = Convert.ToInt32(item["F_PROJECTNAME"]), FALLAMOUNTY = Convert.ToDouble(item["FALLAMOUNTY"]), FCurr = Convert.ToInt32(item["FCurr"]) }); } foreach (var item in WriteReceiveDate) { ReceiveBILLLIST.Add(new CombinaClass() { FBIllNO = Convert.ToString(item["FBIllNO"]), FDate = Convert.ToString(item["FDate"]), FALLAMOUNT = Convert.ToDouble(item["FALLAMOUNT"]), FClient = Convert.ToInt32(item["FCONTACTUNIT"]), FRemark = Convert.ToString(item["FREMARK"]), FALLAMOUNTY = Convert.ToDouble(item["FALLAMOUNTY"]), FCurr = Convert.ToInt32(item["FCurr"]) }); } SaleBILLLIS2 = SaleBILLLIS.Where(t => t.FIs30 == true).ToList(); #region 代码注释 //SaleBILLLIS = new List() //{ // new CombinaClass(){FBIllNO="A01",FDate="0",FALLAMOUNT=100,FIs30=true,FType = "销售订单" }, // new CombinaClass(){FBIllNO="A02",FDate="1",FALLAMOUNT=100,FIs30=true,FType = "销售订单" }, // new CombinaClass(){FBIllNO="A03",FDate="2",FALLAMOUNT=500,FIs30=true,FType = "销售订单" }, // new CombinaClass(){FBIllNO="A04",FDate="3",FALLAMOUNT=100,FIs30=true,FType = "销售订单" }, // new CombinaClass(){FBIllNO="A05",FDate="4",FALLAMOUNT=100,FIs30=true,FType = "销售订单" }, // new CombinaClass(){FBIllNO="A06",FDate="5",FALLAMOUNT=100 ,FIs30=true,FType = "应收单" }, // new CombinaClass(){FBIllNO="A07",FDate="6",FALLAMOUNT=100 ,FIs30=true,FType = "应收单" }, // new CombinaClass(){FBIllNO="A08",FDate="7",FALLAMOUNT=100 ,FIs30=true,FType = "应收单" }, // new CombinaClass(){FBIllNO="A09",FDate="8",FALLAMOUNT=100,FIs30=true,FType = "应收单" }, // new CombinaClass(){FBIllNO="A10",FDate="9",FALLAMOUNT=100 ,FIs30=true,FType = "应收单" }, // new CombinaClass(){FBIllNO="A11",FDate="10",FALLAMOUNT=100,FIs30=true,FType = "应收单" }, // new CombinaClass(){FBIllNO="A12",FDate="11",FALLAMOUNT=100 ,FIs30=true,FType = "应收单" }, // new CombinaClass(){FBIllNO="A13",FDate="12",FALLAMOUNT=100,FIs30=true,FType = "应收单" }, // new CombinaClass(){FBIllNO="A14",FDate="13",FALLAMOUNT=100 ,FIs30=true,FType = "应收单" }, // new CombinaClass(){FBIllNO="A15",FDate="14",FALLAMOUNT=100 ,FIs30=true,FType = "应收单" }, // new CombinaClass(){FBIllNO="A16",FDate="15",FALLAMOUNT=100,FIs30=true,FType = "应收单" }, // new CombinaClass(){FBIllNO="A17",FDate="16",FALLAMOUNT=100,FIs30=true,FType = "应收单" }, // new CombinaClass(){FBIllNO="A18",FDate="17",FALLAMOUNT=100 ,FIs30=true,FType = "应收单" }, // new CombinaClass(){FBIllNO="A19",FDate="18",FALLAMOUNT=100,FIs30=true,FType = "应收单" }, // new CombinaClass(){FBIllNO="A20",FDate="19",FALLAMOUNT=100,FIs30=true,FType = "应收单" }, // new CombinaClass(){FBIllNO="A21",FDate="20",FALLAMOUNT=100,FIs30=true ,FType = "应收单" }, // new CombinaClass(){FBIllNO="A22",FDate="21",FALLAMOUNT=9500 ,FIs30=true,FType = "应收单" }, // new CombinaClass(){FBIllNO="A22",FDate="21",FALLAMOUNT=100 ,FIs30=true,FType = "应收单" }, // new CombinaClass(){FBIllNO="A23",FDate="22",FALLAMOUNT=100 ,FIs30=true,FType = "应收单"}, // new CombinaClass(){FBIllNO="A24",FDate="23",FALLAMOUNT=100 ,FIs30=true,FType = "应收单"}, // new CombinaClass(){FBIllNO="A25",FDate="24",FALLAMOUNT=100,FIs30=true ,FType = "应收单"}, // new CombinaClass(){FBIllNO="A26",FDate="25",FALLAMOUNT=100 ,FIs30=true,FType = "应收单"}, // new CombinaClass(){FBIllNO="A27",FDate="26",FALLAMOUNT=100,FIs30=true ,FType = "应收单"}, // new CombinaClass(){FBIllNO="A28",FDate="27",FALLAMOUNT=100,FIs30=true,FType = "应收单" }, // new CombinaClass(){FBIllNO="A29",FDate="28",FALLAMOUNT=100,FIs30=true,FType = "应收单" }, // new CombinaClass(){FBIllNO="A30",FDate="29",FALLAMOUNT=100,FIs30=true ,FType = "应收单"}, // new CombinaClass(){FBIllNO="A01",FDate="0",FALLAMOUNT=100,FIs30=true ,FType = "应收单"}, // new CombinaClass(){FBIllNO="A02",FDate="1",FALLAMOUNT=100,FIs30=true ,FType = "应收单"}, // new CombinaClass(){FBIllNO="A03",FDate="2",FALLAMOUNT=500,FIs30=true ,FType = "应收单"}, // new CombinaClass(){FBIllNO="A04",FDate="3",FALLAMOUNT=100,FIs30=true,FType = "应收单" }, // new CombinaClass(){FBIllNO="A05",FDate="4",FALLAMOUNT=100,FIs30=true ,FType = "应收单"}, // new CombinaClass(){FBIllNO="A06",FDate="5",FALLAMOUNT=100 ,FIs30=true,FType = "应收单"}, // new CombinaClass(){FBIllNO="A07",FDate="6",FALLAMOUNT=100 ,FIs30=true,FType = "应收单"}, // new CombinaClass(){FBIllNO="A08",FDate="7",FALLAMOUNT=100 ,FIs30=true,FType = "应收单"}, // new CombinaClass(){FBIllNO="A09",FDate="8",FALLAMOUNT=100 ,FIs30=true,FType = "应收单"}, // new CombinaClass(){FBIllNO="A10",FDate="9",FALLAMOUNT=100 ,FIs30=true,FType = "应收单"}, // new CombinaClass(){FBIllNO="A11",FDate="10",FALLAMOUNT=100,FIs30=true ,FType = "应收单"}, // new CombinaClass(){FBIllNO="A12",FDate="11",FALLAMOUNT=100 ,FIs30=true,FType = "应收单"}, // new CombinaClass(){FBIllNO="A13",FDate="12",FALLAMOUNT=100 ,FIs30=true,FType = "应收单"}, // new CombinaClass(){FBIllNO="A14",FDate="13",FALLAMOUNT=100 ,FIs30=true,FType = "应收单"}, // new CombinaClass(){FBIllNO="A15",FDate="14",FALLAMOUNT=100 ,FIs30=true,FType = "应收单"}, // new CombinaClass(){FBIllNO="A16",FDate="15",FALLAMOUNT=100 ,FIs30=true,FType = "应收单"}, // new CombinaClass(){FBIllNO="A17",FDate="16",FALLAMOUNT=100 ,FIs30=true,FType = "应收单"}, // new CombinaClass(){FBIllNO="A18",FDate="17",FALLAMOUNT=100,FIs30=true ,FType = "应收单"}, // new CombinaClass(){FBIllNO="A19",FDate="18",FALLAMOUNT=100 ,FIs30=true,FType = "应收单"}, // new CombinaClass(){FBIllNO="A20",FDate="19",FALLAMOUNT=100 ,FIs30=true,FType = "应收单"}, // new CombinaClass(){FBIllNO="A21",FDate="20",FALLAMOUNT=100 ,FIs30=true,FType = "应收单"}, // new CombinaClass(){FBIllNO="A22",FDate="21",FALLAMOUNT=9500 ,FIs30=true,FType = "应收单"}, // new CombinaClass(){FBIllNO="A22",FDate="21",FALLAMOUNT=100,FIs30=true ,FType = "应收单"}, // new CombinaClass(){FBIllNO="A23",FDate="22",FALLAMOUNT=100 ,FIs30=true,FType = "应收单"}, // new CombinaClass(){FBIllNO="A24",FDate="23",FALLAMOUNT=100 ,FIs30=true,FType = "应收单"}, // new CombinaClass(){FBIllNO="A25",FDate="24",FALLAMOUNT=100,FIs30=true ,FType = "应收单"}, // new CombinaClass(){FBIllNO="A26",FDate="25",FALLAMOUNT=100 ,FIs30=true,FType = "应收单"}, // new CombinaClass(){FBIllNO="A27",FDate="26",FALLAMOUNT=100 ,FIs30=true,FType = "应收单"}, // new CombinaClass(){FBIllNO="A28",FDate="27",FALLAMOUNT=100 ,FIs30=true,FType = "应收单"}, // new CombinaClass(){FBIllNO="A29",FDate="28",FALLAMOUNT=100,FIs30=true,FType = "应收单" }, // new CombinaClass(){FBIllNO="A30",FDate="29",FALLAMOUNT=100 ,FIs30=true,FType = "应收单"}, //}; //ReceiveBILLLIST = new List() //{ // new CombinaClass(){FBIllNO="C01",FDate="0",FALLAMOUNT=100 }, // new CombinaClass(){FBIllNO="C02",FDate="1",FALLAMOUNT=100 }, // new CombinaClass(){FBIllNO="C03",FDate="2",FALLAMOUNT=600 }, // new CombinaClass(){FBIllNO="C04",FDate="3",FALLAMOUNT=700 }, // new CombinaClass(){FBIllNO="C05",FDate="4",FALLAMOUNT=200 }, // new CombinaClass(){FBIllNO="C06",FDate="5",FALLAMOUNT=300 }, // new CombinaClass(){FBIllNO="C07",FDate="6",FALLAMOUNT=1400 }, // new CombinaClass(){FBIllNO="C08",FDate="7",FALLAMOUNT=1600 }, // new CombinaClass(){FBIllNO="C09",FDate="8",FALLAMOUNT=1800 }, // new CombinaClass(){FBIllNO="C10",FDate="9",FALLAMOUNT=200 }, // new CombinaClass(){FBIllNO="C21",FDate="20",FALLAMOUNT=100 }, // new CombinaClass(){FBIllNO="C22",FDate="21",FALLAMOUNT=100 }, // new CombinaClass(){FBIllNO="C23",FDate="22",FALLAMOUNT=100 }, // new CombinaClass(){FBIllNO="C24",FDate="23",FALLAMOUNT=100 }, // new CombinaClass(){FBIllNO="C25",FDate="24",FALLAMOUNT=100 }, // new CombinaClass(){FBIllNO="C26",FDate="25",FALLAMOUNT=100 }, // new CombinaClass(){FBIllNO="C27",FDate="26",FALLAMOUNT=100 }, // new CombinaClass(){FBIllNO="C28",FDate="27",FALLAMOUNT=100 }, // new CombinaClass(){FBIllNO="C29",FDate="28",FALLAMOUNT=100 }, // new CombinaClass(){FBIllNO="C30",FDate="29",FALLAMOUNT=100 }, //}; //SaleBILLLIS2 = SaleBILLLIS.Where(t => t.FIs30 == true).ToList(); #endregion //绑定销售订单数据 for (int i = 0; i < SaleBILLLIS.Count; i++) { int rowindex = this.View.Model.GetEntryRowCount("FEntity"); this.View.Model.CreateNewEntryRow("FEntity"); //单据编号 this.View.Model.SetValue("FBILLNO", SaleBILLLIS[i].FBIllNO, i); //日期 this.View.Model.SetValue("FDate", DateTime.Now.AddDays(-1 * Convert.ToInt32(SaleBILLLIS[i].FDate)).ToString("yyyy-MM-dd"), i); //金额 this.View.Model.SetValue("FALLAMOUNT", SaleBILLLIS[i].FALLAMOUNT, i); //类型 this.View.Model.SetValue("FType", SaleBILLLIS[i].FType, i); //纸质合同号 this.View.Model.SetValue("FCONTRACTNUMBER", SaleBILLLIS[i].FCONTRACTNUMBER, i); //客户名称 this.View.Model.SetValue("FClient", SaleBILLLIS[i].FClient, i); //项目名称 this.View.Model.SetValue("FProject", SaleBILLLIS[i].FProject, i); //制单人 this.View.Model.SetValue("FCreated", SaleBILLLIS[i].FCreated, i); //币别 this.View.Model.SetValue("FCurr", SaleBILLLIS[i].FCurr, i); //金额(原币) this.View.Model.SetValue("FAmountY", SaleBILLLIS[i].FALLAMOUNTY, i); this.View.UpdateView("FEntity"); } //绑定收款单数据 for (int i = 0; i < ReceiveBILLLIST.Count; i++) { int rowindex = this.View.Model.GetEntryRowCount("FEntity2"); this.View.Model.CreateNewEntryRow("FEntity2"); //单据编号 this.View.Model.SetValue("FBILLNO2", ReceiveBILLLIST[i].FBIllNO, i); //日期 this.View.Model.SetValue("FDate2", DateTime.Now.AddDays(-1 * Convert.ToInt32(ReceiveBILLLIST[i].FDate)).ToString("yyyy-MM-dd"), i); //金额 this.View.Model.SetValue("FALLAMOUNT2", ReceiveBILLLIST[i].FALLAMOUNT, i); //客户名称 this.View.Model.SetValue("FClient2", ReceiveBILLLIST[i].FClient, i); //备注 this.View.Model.SetValue("FRemark2", ReceiveBILLLIST[i].FRemark, i); //币别 this.View.Model.SetValue("FCurr2", ReceiveBILLLIST[i].FCurr, i); //金额(原币) this.View.Model.SetValue("FAmountY2", ReceiveBILLLIST[i].FALLAMOUNTY, i); this.View.UpdateView("FEntity2"); } } //自动匹配 if (e.BarItemKey.ToString().ToUpper().Equals("FAUTOWRITE")) { //销售订单绑定数据 var SaleBILLLISNew = new List(SaleBILLLIS); List FBILLNOLIST = new List(); List FClient = new List(); List result = new List(); var FStartTime = DateTime.Now; #region 匹配销售订单 var SaleBILLLIS2Sal = SaleBILLLIS2.Where(t => t.FType == "销售订单").ToList(); //-----------20250117--------------------↓ //将销售订单根据客户分组 var FClientList = SaleBILLLIS2Sal.GroupBy(t => t.FClient).ToList(); //计算分组汇总合计金额用于配对收款单 for (int i = 0; i < FClientList.Count; i++) { List result2 = new List(); var SaleSumAmount = SaleBILLLIS2Sal.Where(a => a.FClient == FClientList[i].Key).ToList(); CombinationGenerator.GetCombinations(SaleSumAmount, 0, FBILLNOLIST, FClient, ref result2, 0); result.AddRange(result2); } //------------20250117-------------------↑ //存储收款单 List ReceiveBILLLISTNew = new List(ReceiveBILLLIST); //存储对应销售订单/应收单以及收款单的 List resultNew = new List(); //先挑1张收款单对应一张销售订单 for (int i = 0; i < ReceiveBILLLIST.Count; i++) { var aaa = CombinationGenerator.GetCombinationsDataByList2(result, ReceiveBILLLIST[i].FALLAMOUNT, ReceiveBILLLIST[i].FClient); if (aaa.Count > 0) { //FBIllNO存放对应的销售订单编号、FBIllNO2存放对应收款单编号 aaa[0].FBIllNO2 = new List(); aaa[0].FBIllNO2.Add(ReceiveBILLLIST[i].FBIllNO); resultNew.Add(aaa[0]); result = CombinationGenerator.DeleteCombinationsDataByList(result, aaa[0].FBIllNO); foreach (var item in SaleBILLLIS.Where(t => aaa[0].FBIllNO.Contains(t.FBIllNO))) { SaleBILLLISNew.Remove(item); SaleBILLLIS2Sal.Remove(item); } ReceiveBILLLISTNew.Remove(ReceiveBILLLIST[i]); } } //先挑1张收款单对应多张张销售订单 for (int i = 0; i < ReceiveBILLLISTNew.Count; i++) { var resultNew2 = CombinationGenerator.GetCombinationsDataByList(result, ReceiveBILLLISTNew[i].FALLAMOUNT, ReceiveBILLLIST[i].FClient); if (resultNew2.Count > 0) { resultNew2[0].FBIllNO2 = new List(); resultNew2[0].FBIllNO2.Add(ReceiveBILLLISTNew[i].FBIllNO); resultNew.Add(resultNew2[0]); result = CombinationGenerator.DeleteCombinationsDataByList(result, resultNew2[0].FBIllNO); foreach (var item in SaleBILLLIS.Where(t => resultNew2[0].FBIllNO.Contains(t.FBIllNO))) { SaleBILLLISNew.Remove(item); SaleBILLLIS2Sal.Remove(item); } ReceiveBILLLISTNew.Remove(ReceiveBILLLISTNew[i]); } } //-----------20250118--------------------↓ //将收款单根据客户分组 var SKFClientList = ReceiveBILLLISTNew.GroupBy(t => t.FClient).ToList(); result = new List(); for (int i = 0; i < SKFClientList.Count; i++) { List result2 = new List(); var SaleSumAmount = ReceiveBILLLISTNew.Where(a => a.FClient == SKFClientList[i].Key).ToList(); CombinationGenerator.GetCombinations(SaleSumAmount, 0, FBILLNOLIST, FClient, ref result2, 0); result.AddRange(result2); } //1个销售订单对应多张收款单 for (int i = 0; i < SaleBILLLIS2Sal.Count; i++) { var resultNew2 = CombinationGenerator.GetCombinationsDataByListTK(result, SaleBILLLIS2Sal[i].FALLAMOUNT, SaleBILLLIS2Sal[i].FClient); if (resultNew2.Count > 0) { resultNew2[0].FBIllNO = new List(); resultNew2[0].FBIllNO.Add(SaleBILLLIS2Sal[i].FBIllNO); resultNew.Add(resultNew2[0]); result = CombinationGenerator.DeleteCombinationsDataByList(result, resultNew2[0].FBIllNO2); foreach (var item in ReceiveBILLLIST.Where(t => resultNew2[0].FBIllNO2.Contains(t.FBIllNO))) { ReceiveBILLLISTNew.Remove(item); } SaleBILLLIS2Sal.Remove(SaleBILLLIS2Sal[i]); } } //-----------20250118--------------------↑ #region 多对多注释(销售订单) //先挑多张收款单对应多张张销售订单 //var resultNew3 = CombinationGenerator.GetCombinationsDataByList(result, ReceiveBILLLISTNew.Sum(t => t.FALLAMOUNT)); //if (resultNew3.Count > 0) //{ // resultNew3[0].FBIllNO2 = new List(); // for (int i = 0; i < ReceiveBILLLISTNew.Count; i++) // { // resultNew3[0].FBIllNO2.Add(ReceiveBILLLISTNew[i].FBIllNO); // } // resultNew.Add(resultNew3[0]); // result = CombinationGenerator.DeleteCombinationsDataByList(result, resultNew3[0].FBIllNO); // foreach (var item in SaleBILLLIS.Where(t => resultNew3[0].FBIllNO.Contains(t.FBIllNO))) // { // SaleBILLLISNew.Remove(item); // SaleBILLLIS2Sal.Remove(item); // } // ReceiveBILLLISTNew.Clear(); //} #endregion #endregion #region 匹配应收单 var SaleBILLLIS2Receive = SaleBILLLIS2.Where(t => t.FType == "应收单").ToList(); result = new List(); //-----------20250117--------------------↓ var FClientList2 = SaleBILLLIS2Sal.GroupBy(t => t.FClient).ToList(); //计算分组汇总合计金额用于配对收款单 for (int i = 0; i < FClientList2.Count; i++) { List result2 = new List(); var SaleSumAmount = SaleBILLLIS2Sal.Where(a => a.FClient == FClientList2[i].Key).ToList(); CombinationGenerator.GetCombinations(SaleSumAmount, 0, FBILLNOLIST, FClient, ref result2, 0); result.AddRange(result2); } //------------20250117-------------------↑ //先挑1张收款单对应一张销售订单 for (int i = 0; i < ReceiveBILLLISTNew.Count; i++) { var aaa = CombinationGenerator.GetCombinationsDataByList2(result, ReceiveBILLLISTNew[i].FALLAMOUNT, ReceiveBILLLISTNew[i].FClient); if (aaa.Count > 0) { aaa[0].FBIllNO2 = new List(); aaa[0].FBIllNO2.Add(ReceiveBILLLISTNew[i].FBIllNO); resultNew.Add(aaa[0]); result = CombinationGenerator.DeleteCombinationsDataByList(result, aaa[0].FBIllNO); foreach (var item in SaleBILLLIS.Where(t => aaa[0].FBIllNO.Contains(t.FBIllNO))) { SaleBILLLISNew.Remove(item); SaleBILLLIS2Receive.Remove(item); } ReceiveBILLLISTNew.Remove(ReceiveBILLLIST[i]); } } //先挑1张收款单对应多张张销售订单 for (int i = 0; i < ReceiveBILLLISTNew.Count; i++) { var resultNew2 = CombinationGenerator.GetCombinationsDataByList(result, ReceiveBILLLISTNew[i].FALLAMOUNT, ReceiveBILLLISTNew[i].FClient); if (resultNew2.Count > 0) { resultNew2[0].FBIllNO2 = new List(); resultNew2[0].FBIllNO2.Add(ReceiveBILLLISTNew[i].FBIllNO); resultNew.Add(resultNew2[0]); result = CombinationGenerator.DeleteCombinationsDataByList(result, resultNew2[0].FBIllNO); foreach (var item in SaleBILLLIS.Where(t => resultNew2[0].FBIllNO.Contains(t.FBIllNO))) { SaleBILLLISNew.Remove(item); SaleBILLLIS2Receive.Remove(item); SaleBILLLIS2.Remove(item); } ReceiveBILLLISTNew.Remove(ReceiveBILLLISTNew[i]); } } //-----------20250118--------------------↓ //将收款单根据客户分组 var SKFClientList2 = ReceiveBILLLISTNew.GroupBy(t => t.FClient).ToList(); result = new List(); for (int i = 0; i < SKFClientList.Count; i++) { List result2 = new List(); var SaleSumAmount = ReceiveBILLLISTNew.Where(a => a.FClient == SKFClientList[i].Key).ToList(); CombinationGenerator.GetCombinations(SaleSumAmount, 0, FBILLNOLIST, FClient, ref result2, 0); result.AddRange(result2); } //1个应收单对应多张收款单 for (int i = 0; i < SaleBILLLIS2Receive.Count; i++) { var resultNew2 = CombinationGenerator.GetCombinationsDataByListTK(result, SaleBILLLIS2Receive[i].FALLAMOUNT, SaleBILLLIS2Receive[i].FClient); if (resultNew2.Count > 0) { resultNew2[0].FBIllNO = new List(); resultNew2[0].FBIllNO.Add(SaleBILLLIS2Receive[i].FBIllNO); resultNew.Add(resultNew2[0]); result = CombinationGenerator.DeleteCombinationsDataByList(result, resultNew2[0].FBIllNO2); foreach (var item in ReceiveBILLLIST.Where(t => resultNew2[0].FBIllNO2.Contains(t.FBIllNO))) { ReceiveBILLLISTNew.Remove(item); } SaleBILLLIS2Receive.Remove(SaleBILLLIS2Receive[i]); } } //-----------20250118--------------------↑ #region 多对多注释(应收单) //先挑多张收款单对应多张张销售订单 //resultNew3 = CombinationGenerator.GetCombinationsDataByList(result, ReceiveBILLLISTNew.Sum(t => t.FALLAMOUNT)); //if (resultNew3.Count > 0) //{ // resultNew3[0].FBIllNO2 = new List(); // for (int i = 0; i < ReceiveBILLLISTNew.Count; i++) // { // resultNew3[0].FBIllNO2.Add(ReceiveBILLLISTNew[i].FBIllNO); // } // resultNew.Add(resultNew3[0]); // result = CombinationGenerator.DeleteCombinationsDataByList(result, resultNew3[0].FBIllNO); // foreach (var item in SaleBILLLIS.Where(t => resultNew3[0].FBIllNO.Contains(t.FBIllNO))) // { // SaleBILLLISNew.Remove(item); // SaleBILLLIS2Receive.Remove(item); // SaleBILLLIS2.Remove(item); // } // ReceiveBILLLISTNew.Clear(); //} #endregion #endregion //删除数据 this.View.Model.DeleteEntryData("FEntity"); this.View.Model.DeleteEntryData("FEntity2"); //绑定销售订单数据 for (int i = 0; i < SaleBILLLISNew.Count; i++) { int rowindex = this.View.Model.GetEntryRowCount("FEntity"); this.View.Model.CreateNewEntryRow("FEntity"); //单据编号 this.View.Model.SetValue("FBILLNO", SaleBILLLISNew[i].FBIllNO, i); //日期 this.View.Model.SetValue("FDate", DateTime.Now.AddDays(-1 * Convert.ToInt32(SaleBILLLISNew[i].FDate)).ToString("yyyy-MM-dd"), i); //金额 this.View.Model.SetValue("FALLAMOUNT", SaleBILLLISNew[i].FALLAMOUNT, i); //类型 this.View.Model.SetValue("FType", SaleBILLLISNew[i].FType, i); //纸质合同号 this.View.Model.SetValue("FCONTRACTNUMBER", SaleBILLLISNew[i].FCONTRACTNUMBER, i); //客户名称 this.View.Model.SetValue("FClient", SaleBILLLISNew[i].FClient, i); //项目名称 this.View.Model.SetValue("FProject", SaleBILLLISNew[i].FProject, i); //制单人 this.View.Model.SetValue("FCreated", SaleBILLLISNew[i].FCreated, i); //币别 this.View.Model.SetValue("FCurr", SaleBILLLISNew[i].FCurr, i); //金额(原币) this.View.Model.SetValue("FAmountY", SaleBILLLISNew[i].FALLAMOUNTY, i); } this.View.UpdateView("FEntity"); //绑定收款单数据 for (int i = 0; i < ReceiveBILLLISTNew.Count; i++) { int rowindex = this.View.Model.GetEntryRowCount("FEntity2"); this.View.Model.CreateNewEntryRow("FEntity2"); //单据编号 this.View.Model.SetValue("FBILLNO2", ReceiveBILLLISTNew[i].FBIllNO, i); //日期 this.View.Model.SetValue("FDate2", DateTime.Now.AddDays(-1 * Convert.ToInt32(ReceiveBILLLISTNew[i].FDate)).ToString("yyyy-MM-dd"), i); //金额 this.View.Model.SetValue("FALLAMOUNT2", ReceiveBILLLISTNew[i].FALLAMOUNT, i); //客户名称 this.View.Model.SetValue("FClient2", ReceiveBILLLISTNew[i].FClient, i); //备注 this.View.Model.SetValue("FRemark2", ReceiveBILLLISTNew[i].FRemark, i); //币别 this.View.Model.SetValue("FCurr2", ReceiveBILLLISTNew[i].FCurr, i); //金额(原币) this.View.Model.SetValue("FAmountY2", ReceiveBILLLISTNew[i].FALLAMOUNTY, i); } this.View.UpdateView("FEntity2"); this.View.Model.DeleteEntryData("FEntity3"); //获取单据体行数据 DynamicObjectCollection FEntity3 = this.View.Model.DataObject["FEntity3"] as DynamicObjectCollection; //子单据体数据包 EntryEntity FEntity4 = this.View.BusinessInfo.GetEntryEntity("FEntity4"); //绑定树形单据体 for (int i = 0; i < resultNew.Count; i++) { ////新增子单据体行 //DynamicObject FEntryIdObj = FEntity3.DynamicCollectionItemPropertyType.CreateInstance() as DynamicObject; int Rowindex = this.View.Model.GetEntryRowCount("FEntity3"); int RowindexNew = Rowindex; this.View.Model.CreateNewEntryRow("FEntity3"); string FROWID = SequentialGuid.NewGuid().ToString(); this.View.Model.SetValue("FROWID", FROWID, RowindexNew); this.View.Model.SetValue("FPARENTROWID", FROWID, RowindexNew); this.View.Model.SetValue("FBILLNO3", resultNew[i].FBIllNO[0], RowindexNew); this.View.Model.SetValue("FDATE3", DateTime.Now.AddDays(-1 * Convert.ToDouble(SaleBILLLIS.Where(t => t.FBIllNO == resultNew[i].FBIllNO[0]).ToList()[0].FDate)).ToString("yyyy-MM-dd"), RowindexNew); this.View.Model.SetValue("FALLAMOUNT3", SaleBILLLIS.Where(t => t.FBIllNO == resultNew[i].FBIllNO[0]).ToList()[0].FALLAMOUNT, RowindexNew); this.View.Model.SetValue("FALLAMOUNTSUM", resultNew[i].FALLAMOUNT, RowindexNew); //-----2025-01-15改--------↓ this.View.Model.SetValue("FCONTRACTNUMBER3", SaleBILLLIS.Where(a => a.FBIllNO == resultNew[i].FBIllNO[0]).ToList()[0].FCONTRACTNUMBER, RowindexNew); this.View.Model.SetValue("FClient3", SaleBILLLIS.Where(a => a.FBIllNO == resultNew[i].FBIllNO[0]).ToList()[0].FClient, RowindexNew); this.View.Model.SetValue("FProject3", SaleBILLLIS.Where(a => a.FBIllNO == resultNew[i].FBIllNO[0]).ToList()[0].FProject, RowindexNew); this.View.Model.SetValue("FCreated3", SaleBILLLIS.Where(a => a.FBIllNO == resultNew[i].FBIllNO[0]).ToList()[0].FCreated, RowindexNew); this.View.Model.SetValue("FAmountY3", SaleBILLLIS.Where(a => a.FBIllNO == resultNew[i].FBIllNO[0]).ToList()[0].FALLAMOUNTY, RowindexNew); this.View.Model.SetValue("FCurr3", SaleBILLLIS.Where(a => a.FBIllNO == resultNew[i].FBIllNO[0]).ToList()[0].FCurr, RowindexNew); //-----2025-01-15改--------↑ this.View.Model.SetValue("FType3", SaleBILLLIS.Where(t => t.FBIllNO == resultNew[i].FBIllNO[0]).ToList()[0].FType, RowindexNew); //获取子单据体数据 var FSubEntityObjs = FEntity4.DynamicProperty.GetValue(FEntity3[RowindexNew]) as DynamicObjectCollection; foreach (var item in resultNew[i].FBIllNO2) { //新增子单据体行 var FSubEntityObj = FSubEntityObjs.DynamicCollectionItemPropertyType.CreateInstance() as DynamicObject; FSubEntityObj["FBILLNO4"] = item; FSubEntityObj["FDate4"] = DateTime.Now.AddDays(-1 * Convert.ToDouble(ReceiveBILLLIST.Where(t => t.FBIllNO == item).ToList()[0].FDate)).ToString("yyyy-MM-dd"); FSubEntityObj["FALLAMOUNT4"] = ReceiveBILLLIST.Where(t => t.FBIllNO == item).ToList()[0].FALLAMOUNT; //-----2025-01-15改--------↓ FSubEntityObj["FClient4_Id"] = ReceiveBILLLIST.Where(t => t.FBIllNO == item).ToList()[0].FClient; FSubEntityObj["FRemark4"] = ReceiveBILLLIST.Where(t => t.FBIllNO == item).ToList()[0].FRemark; FSubEntityObj["FCurr4_Id"] = ReceiveBILLLIST.Where(t => t.FBIllNO == item).ToList()[0].FCurr; FSubEntityObj["FAmountY4"] = ReceiveBILLLIST.Where(t => t.FBIllNO == item).ToList()[0].FALLAMOUNTY; //-----2025-01-15改--------↑ FSubEntityObjs.Add(FSubEntityObj); } for (int j = 1; j < resultNew[i].FBIllNO.Count; j++) { //新增子单据体行 //FEntryIdObj = FEntity3.DynamicCollectionItemPropertyType.CreateInstance() as DynamicObject; //Rowindex = this.View.Model.GetEntryRowCount("FEntity3"); //FEntryIdObj["ROWID"] = Rowindex; //FEntryIdObj["PARENTROWID"] = Rowindex; //FEntryIdObj["FBILLNO3"] = resultNew[i].FBIllNO[j]; //FEntryIdObj["FDATE3"] = DateTime.Now.AddDays(-1 * Convert.ToDouble(SaleBILLLIS.Where(t => t.FBIllNO == resultNew[i].FBIllNO[j]).ToList()[0].FDate)); //FEntryIdObj["FALLAMOUNT3"] = SaleBILLLIS.Where(t => t.FBIllNO == resultNew[i].FBIllNO[j]).ToList()[0].FALLAMOUNT; //FEntryIdObj["FALLAMOUNTSUM"] = ""; //FEntity3.Add(FEntryIdObj); Rowindex = this.View.Model.GetEntryRowCount("FEntity3"); this.View.Model.CreateNewEntryRow("FEntity3"); this.View.Model.SetValue("FROWID", SequentialGuid.NewGuid().ToString(), Rowindex); this.View.Model.SetValue("FPARENTROWID", FROWID, Rowindex); this.View.Model.SetValue("FBILLNO3", resultNew[i].FBIllNO[j], Rowindex); this.View.Model.SetValue("FDATE3", DateTime.Now.AddDays(-1 * Convert.ToDouble(SaleBILLLIS.Where(t => t.FBIllNO == resultNew[i].FBIllNO[j]).ToList()[0].FDate)).ToString("yyyy-MM-dd"), Rowindex); this.View.Model.SetValue("FALLAMOUNT3", SaleBILLLIS.Where(t => t.FBIllNO == resultNew[i].FBIllNO[j]).ToList()[0].FALLAMOUNT, Rowindex); //-----2025-01-15改--------↓ this.View.Model.SetValue("FCONTRACTNUMBER3", SaleBILLLIS.Where(a => a.FBIllNO == resultNew[i].FBIllNO[j]).ToList()[0].FCONTRACTNUMBER, Rowindex); this.View.Model.SetValue("FClient3", SaleBILLLIS.Where(a => a.FBIllNO == resultNew[i].FBIllNO[j]).ToList()[0].FClient, Rowindex); this.View.Model.SetValue("FProject3", SaleBILLLIS.Where(a => a.FBIllNO == resultNew[i].FBIllNO[j]).ToList()[0].FProject, Rowindex); this.View.Model.SetValue("FCreated3", SaleBILLLIS.Where(a => a.FBIllNO == resultNew[i].FBIllNO[j]).ToList()[0].FCreated, Rowindex); this.View.Model.SetValue("FCurr3", SaleBILLLIS.Where(a => a.FBIllNO == resultNew[i].FBIllNO[j]).ToList()[0].FCurr, Rowindex); this.View.Model.SetValue("FAmountY3", SaleBILLLIS.Where(a => a.FBIllNO == resultNew[i].FBIllNO[j]).ToList()[0].FALLAMOUNTY, Rowindex); //-----2025-01-15改--------↑ this.View.Model.SetValue("FType3", SaleBILLLIS.Where(t => t.FBIllNO == resultNew[i].FBIllNO[j]).ToList()[0].FType, Rowindex); //获取子单据体数据 FSubEntityObjs = FEntity4.DynamicProperty.GetValue(FEntity3[Rowindex]) as DynamicObjectCollection; foreach (var item in resultNew[i].FBIllNO2) { //新增子单据体行 var FSubEntityObj = FSubEntityObjs.DynamicCollectionItemPropertyType.CreateInstance() as DynamicObject; FSubEntityObj["FBILLNO4"] = item; FSubEntityObj["FDate4"] = DateTime.Now.AddDays(-1 * Convert.ToDouble(ReceiveBILLLIST.Where(t => t.FBIllNO == item).ToList()[0].FDate)).ToString("yyyy-MM-dd"); FSubEntityObj["FALLAMOUNT4"] = ReceiveBILLLIST.Where(t => t.FBIllNO == item).ToList()[0].FALLAMOUNT; //-----2025-01-15改--------↓ FSubEntityObj["FClient4_Id"] = ReceiveBILLLIST.Where(t => t.FBIllNO == item).ToList()[0].FClient; FSubEntityObj["FRemark4"] = ReceiveBILLLIST.Where(t => t.FBIllNO == item).ToList()[0].FRemark; FSubEntityObj["FCurr4_Id"] = ReceiveBILLLIST.Where(t => t.FBIllNO == item).ToList()[0].FCurr; FSubEntityObj["FAmountY4"] = ReceiveBILLLIST.Where(t => t.FBIllNO == item).ToList()[0].FALLAMOUNTY; //-----2025-01-15改--------↑ FSubEntityObjs.Add(FSubEntityObj); } } } if (FEntity3.Count > 0) { // 重新加载数据包 DBServiceHelper.LoadReferenceObject(this.Context, FEntity3.ToArray(), FEntity3.FirstOrDefault().DynamicObjectType, false); } this.View.UpdateView("FEntity3"); this.View.UpdateView("FEntity4"); var FEndTime = DateTime.Now; TimeSpan timeSpan = FEndTime - FStartTime; this.View.ShowMessage(string.Format("匹配成功,匹配耗费时长为:{0}s", Math.Round(timeSpan.TotalMilliseconds / 1000))); } //生成核销记录单 if (e.BarItemKey.ToString().ToUpper().Equals("FCREATERECORD")) { DynamicObject FOrgId = this.View.Model.GetValue("FOrgId", 0) as DynamicObject; string Message = string.Empty; bool ErrMessage = false; //子单据体数据包 EntryEntity FEntity4 = this.View.BusinessInfo.GetEntryEntity("FEntity4"); //获取单据体行数据 DynamicObjectCollection FEntity3 = this.View.Model.DataObject["FEntity3"] as DynamicObjectCollection; //获取单据体总行号 int RowIndex = this.View.Model.GetEntryRowCount("FEntity3"); List FPARENTROWIDList = new List(); List RowList = new List(); for (int i = 0; i < RowIndex; i++) { //获取FPARENTROWID var FPARENTROWID = Convert.ToString(this.View.Model.GetValue("FPARENTROWID", i)); if (FPARENTROWIDList.Contains(FPARENTROWID)) { continue; } else { FPARENTROWIDList.Add(FPARENTROWID); //获取对应组别 var FEntity3List = FEntity3.Where(t => Convert.ToString(t["PARENTROWID"]) == FPARENTROWID).ToList(); //获取对应单据体 //获取子单据体数据 var FSubEntityObjs = FEntity4.DynamicProperty.GetValue(FEntity3[i]) as DynamicObjectCollection; //判断是否是同一客户 var FClient4List = FSubEntityObjs[0]["FClient4"] as DynamicObject; int FClient4Id = Convert.ToInt32(FClient4List["Id"]); var FClient3List = FEntity3List[0]["FClient3"] as DynamicObject; var testId = Convert.ToInt32(FClient3List["Id"]); if (testId != FClient4Id) { foreach (var item in FEntity3List) { RowList.Add(Convert.ToString(item["SEQ"])); } ErrMessage = true; Message = Message + string.Format("(销售订单/应收单)匹对收款单客户不一致,不允许核销\r\n"); continue; } //手工匹配,判断匹配金额是否相等,不相等则弹出报错信息 if (FEntity3List.Sum(t => Convert.ToDouble(t["FALLAMOUNT3"])) != FSubEntityObjs.Sum(t => Convert.ToDouble(t["FALLAMOUNT4"]))) { foreach (var item in FEntity3List) { RowList.Add(Convert.ToString(item["SEQ"])); } ErrMessage = true; Message = Message + string.Format("存在核销金额不相等的记录,不允许核销\r\n"); continue; } //判断销售订单和应收单是否合并核销,如果是,则不允许 var FSalCount = FEntity3.Where(t => Convert.ToString(t["FTYPE3"]) == "销售订单").ToList(); var FReceiveCount = FEntity3.Where(t => Convert.ToString(t["FTYPE3"]) == "应收单").ToList(); if (FSalCount.Count > 0 && FReceiveCount.Count > 0) { foreach (var item in FEntity3List) { RowList.Add(Convert.ToString(item["SEQ"])); } ErrMessage = true; Message = Message + string.Format("存在销售订单与应收单合并核销的记录,不允许核销\r\n"); continue; } //创建核销记录单 string FBILLNO = CommonHelper.CreateAutoWrireRecord(this.Context, Convert.ToString(FOrgId["ID"]), FEntity3List, FSubEntityObjs); Message = Message + string.Format("生成核销记录单成功,单号为:'{0}'\r\n", FBILLNO); } } if (!ErrMessage) { this.View.ShowMessage(Message); this.View.Model.DeleteEntryData("FEntity4"); this.View.UpdateView("FEntity4"); } else { this.View.ShowErrMessage(Message); } int Rowindex = this.View.Model.GetEntryRowCount("FEntity3"); for (int i = Rowindex - 1; i >= 0; i--) { if (!RowList.Contains(Convert.ToString(i + 1))) { this.View.Model.DeleteEntryRow("FEntity3", i); } } this.View.UpdateView("FEntity4"); } } } }