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