1037 lines
65 KiB
C#
1037 lines
65 KiB
C#
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");
|
||
}
|
||
}
|
||
}
|
||
}
|