2025-04-07 21:06:39 +08:00

1037 lines
65 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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");
}
}
}
}