1037 lines
65 KiB
C#
Raw Normal View History

2025-04-07 21:06:39 +08:00
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<CombinaClass> SaleBILLLIS = new List<CombinaClass>();
public List<CombinaClass> ReceiveBILLLIST = new List<CombinaClass>();
//拿来匹配的集合
public List<CombinaClass> SaleBILLLIS2 = new List<CombinaClass>();
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<TreeEntryGrid>("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<TreeEntryGrid>("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");
}
}
/// <summary>
/// 点击按钮操作
/// </summary>
/// <param name="e"></param>
public override void AfterBarItemClick(AfterBarItemClickEventArgs e)
{
base.AfterBarItemClick(e);
//获取数据
if (e.BarItemKey.ToString().ToUpper().Equals("FGETDATE"))
{
SaleBILLLIS = new List<CombinaClass>();
ReceiveBILLLIST = new List<CombinaClass>();
List<CombinaClass> SaleBILLLISnew = new List<CombinaClass>();
List<CombinaClass> ReceiveBILLLISTNew = new List<CombinaClass>();
//删除四个单据体
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<CombinaClass>()
//{
// 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<CombinaClass>()
//{
// 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<CombinaClass>(SaleBILLLIS);
List<string> FBILLNOLIST = new List<string>();
List<int> FClient = new List<int>();
List<DataItem> result = new List<DataItem>();
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<DataItem> result2 = new List<DataItem>();
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<CombinaClass> ReceiveBILLLISTNew = new List<CombinaClass>(ReceiveBILLLIST);
//存储对应销售订单/应收单以及收款单的
List<DataItem> resultNew = new List<DataItem>();
//先挑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<string>();
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<string>();
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<DataItem>();
for (int i = 0; i < SKFClientList.Count; i++)
{
List<DataItem> result2 = new List<DataItem>();
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<string>();
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<string>();
// 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<DataItem>();
//-----------20250117--------------------↓
var FClientList2 = SaleBILLLIS2Sal.GroupBy(t => t.FClient).ToList();
//计算分组汇总合计金额用于配对收款单
for (int i = 0; i < FClientList2.Count; i++)
{
List<DataItem> result2 = new List<DataItem>();
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<string>();
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<string>();
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<DataItem>();
for (int i = 0; i < SKFClientList.Count; i++)
{
List<DataItem> result2 = new List<DataItem>();
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<string>();
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<string>();
// 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<string> FPARENTROWIDList = new List<string>();
List<string> RowList = new List<string>();
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");
}
}
}
}