2025-04-18 10:10:08 +08:00

1472 lines
80 KiB
C#
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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

using DevExpress.Data.PLinq.Helpers;
using DocumentFormat.OpenXml.Drawing.Spreadsheet;
using Kingdee.BOS.App.Core.Utils;
using Kingdee.BOS.BusinessEntity.BusinessFlow;
using Kingdee.BOS.Core.CommonFilter;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
using Kingdee.BOS.Core.Enums;
using Kingdee.BOS.Core.List;
using Kingdee.BOS.Core.Msg;
using Kingdee.BOS.Orm;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Orm.Exceptions;
using Kingdee.BOS.Util;
using Newtonsoft.Json;
using NPOI.SS.Formula.Functions;
using Pilot_KD_Parino.Common;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.UI.WebControls;
using static Pilot_KD_Parino.QPHY_AutoWrire.Bill2;
using static Pilot_KD_Parino.QPHY_AutoWrire.Bill3;
namespace Pilot_KD_Parino.QPHY_AutoWrire
{
[HotUpdate]
[Description("收款核销5_2025-04-07")]
//交互事件,在用
public class Bill5 : AbstractDynamicFormPlugIn
{
//全局存储单据体数据
public List<CombinaClass> SaleBILLLIS = new List<CombinaClass>();
public List<CombinaClass> ReceiveBILLLIST = new List<CombinaClass>();
//拿来匹配的集合
public List<CombinaClass> SaleBILLLIS2 = new List<CombinaClass>();
int INDEXNumber = 0;
private int level = 0;//层级
private string parentRowId = "";//父项ID
string dateFormat = "yyyy-MM-dd HH:mm:ss"; // 指定的日期格式
/// <summary>
/// 开始
/// </summary>
/// <param name="e"></param>
public override void OnLoad(EventArgs e)
{
base.OnLoad(e);
var showParameter = new DynamicFormShowParameter();
showParameter.FormId = "NAAD_ZiDongHeXiao";
showParameter.ParentPageId = this.View.PageId;
showParameter.PageId = this.View.PageId + "_Filter";
showParameter.OpenStyle.CacheId = this.View.PageId;
this.View.ShowForm(showParameter, action => FilterCallBack(action));
return;
/*
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");
var FOrgId = this.Context.CurrentOrganizationInfo.ID;
var FShuaXin = this.View.Model.GetValue("FShuaXin");
//调用SQL获取数据
var WriteOrderDate = SQL.SqlManage_yuyubo.GetWriteOrderDate3(this.Context, Convert.ToString(FOrgId));
var WriteReceiveDate = SQL.SqlManage_yuyubo.GetWriteReceiveDate3(this.Context, Convert.ToString(FOrgId));
SaleBILLLIS = WriteOrderDate.Select(item => new CombinaClass
{
Fid = Convert.ToInt32(item["FID"]),
FBIllNO = Convert.ToString(item["FBIllNO"]),
FCONTRACTNUMBER = Convert.ToString(item["F_CONTRACTNUMBER"]),
FClient = Convert.ToInt32(item["FCUSTID"]),
FDate = Convert.ToString(item["FDate"]),
FALLAMOUNT = Convert.ToDouble(item["FALLAMOUNT"]),
FYAMOUNT = Convert.ToDouble(item["FYAMOUNT"]),
FDAMOUNT = Convert.ToDouble(item["FDAMOUNT"]),
FCreated = Convert.ToInt32(item["FCREATORID"]),
FSalesman = Convert.ToInt32(item["FSALERID"]),
FIs30 = Convert.ToBoolean(item["FIs30"]),
FType = Convert.ToString(item["FType"]),
BenCi = Convert.ToDouble(item["BenCi"]),
F_Ordercategory2 = Convert.ToString(item["F_Ordercategory2"]),
F_Ordercategory = Convert.ToString(item["F_Ordercategory"]),
FInvoiceAmount = Convert.ToDecimal(item["FInvoiceAmount"]),
}).ToList();
ReceiveBILLLIST = WriteReceiveDate.Select(item => new CombinaClass
{
Fid = Convert.ToInt32(item["FID"]),
FBIllNO = Convert.ToString(item["FBIllNO"]),
FDate = Convert.ToString(item["FDate"]),
FALLAMOUNT = Convert.ToDouble(item["FALLAMOUNT"]),
FYAMOUNT = Convert.ToDouble(item["FYAMOUNT"]),
FDAMOUNT = Convert.ToDouble(item["FDAMOUNT"]),
FClient = Convert.ToInt32(item["FCONTACTUNIT"]),
FCreated = Convert.ToInt32(item["FCREATORID"]),
FRemark = Convert.ToString(item["FREMARK"]),
FSalesman = Convert.ToInt32(item["FSALEERID"]),
F_RowNew = 1,
BenCi = 0,
}).ToList();
var kehu = ReceiveBILLLIST.Select(t => t.FClient).Distinct().ToList();
SaleBILLLIS = SaleBILLLIS.Where(t => kehu.Contains(t.FClient)).ToList();
SaleBILLLIS2 = SaleBILLLIS.ToList();
//绑定销售订单数据
for (int i = 0; i < SaleBILLLIS2.Count; i++)
{
int rowindex = this.View.Model.GetEntryRowCount("FEntity");
this.View.Model.CreateNewEntryRow("FEntity");
//单据编号
this.View.Model.SetValue("FBILLNO", SaleBILLLIS2[i].FBIllNO, i);
//日期
this.View.Model.SetValue("FDate", DateTime.Now.AddDays(-1 * Convert.ToInt32(SaleBILLLIS2[i].FDate)).ToString("yyyy-MM-dd"), i);
//金额
this.View.Model.SetValue("F_MBBA_Decimal_c1c", SaleBILLLIS2[i].FALLAMOUNT, i);
//类型
this.View.Model.SetValue("FType", SaleBILLLIS2[i].FType, i);
//纸质合同号
this.View.Model.SetValue("FCONTRACTNUMBER", SaleBILLLIS2[i].FCONTRACTNUMBER, i);
//客户名称
this.View.Model.SetValue("FClient", SaleBILLLIS2[i].FClient, i);
//已核销金额
this.View.Model.SetValue("F_MBBA_Decimal_vb1", SaleBILLLIS2[i].FYAMOUNT, i);
//待核销金额
this.View.Model.SetValue("F_MBBA_Decimal_emq", SaleBILLLIS2[i].FDAMOUNT, i);
//商务人员
this.View.Model.SetValue("FCreated", SaleBILLLIS2[i].FCreated, i);
//销售员
this.View.Model.SetValue("FSalesman", SaleBILLLIS2[i].FSalesman, i);
//合同类型、累计开票金额
this.View.Model.SetValue("F_Ordercategory2", SaleBILLLIS2[i].F_Ordercategory2, i);
this.View.Model.SetValue("F_Ordercategory", SaleBILLLIS2[i].F_Ordercategory, i);
this.View.Model.SetValue("FInvoiceAmount", SaleBILLLIS2[i].FInvoiceAmount, i);
}
this.View.UpdateView("FEntity");
for (int i = 0; i < ReceiveBILLLIST.Count; i++)
{
int Rowindex = this.View.Model.GetEntryRowCount("FEntity2");
int RowindexNew = Rowindex;
this.View.Model.CreateNewEntryRow("FEntity2");
string FROWID = SequentialGuid.NewGuid().ToString();
this.View.Model.SetValue("FROWID", FROWID, RowindexNew);
this.View.Model.SetValue("FPARENTROWID", FROWID, RowindexNew);
this.View.Model.SetValue("FBILLNO2", ReceiveBILLLIST[i].FBIllNO, RowindexNew);
this.View.Model.SetValue("F_BenCi", ReceiveBILLLIST[i].BenCi, RowindexNew);
this.View.Model.SetValue("F_PendingAmount", ReceiveBILLLIST[i].FDAMOUNT, RowindexNew);
this.View.Model.SetValue("FDATE2", DateTime.Now.AddDays(-1 * Convert.ToInt32(ReceiveBILLLIST[i].FDate)).ToString("yyyy-MM-dd"), RowindexNew);
this.View.Model.SetValue("F_MBBA_Decimal_imu", ReceiveBILLLIST[i].FALLAMOUNT, RowindexNew);
this.View.Model.SetValue("FClient2", ReceiveBILLLIST[i].FClient, RowindexNew);
this.View.Model.SetValue("FRemark", ReceiveBILLLIST[i].FRemark, RowindexNew);
this.View.Model.SetValue("F_MBBA_Decimal_3iy", ReceiveBILLLIST[i].FYAMOUNT, RowindexNew);
this.View.Model.SetValue("F_MBBA_Decimal_lsn", ReceiveBILLLIST[i].FDAMOUNT, RowindexNew);
this.View.Model.SetValue("FCreated2", ReceiveBILLLIST[i].FCreated, RowindexNew);
this.View.Model.SetValue("FSalesman2", ReceiveBILLLIST[i].FSalesman, RowindexNew);
this.View.Model.SetValue("F_RowNew", ReceiveBILLLIST[i].F_RowNew, RowindexNew);
this.View.Model.SetValue("F_ISHX", false, RowindexNew);
}
this.View.UpdateView("FEntity2");
*/
}
/// <summary>
/// 编辑按钮点击事件
/// </summary>
/// <param name="e"></param>
public override void BeforeF7Select(BeforeF7SelectEventArgs e)
{
base.BeforeF7Select(e);
if (e.FieldKey.EqualsIgnoreCase("FCONTRACTNUMBER2"))
{
//获取收款单号/行号
var fBillNo = this.View.Model.GetValue("FBILLNO2", e.Row).ToString();
var fRow = e.Row;
//获取收款单单据体数据
DynamicObjectCollection FEntity = this.View.Model.DataObject["FEntity"] as DynamicObjectCollection;
//新建存储类
List<StringFBILLNO> stringFBILLNO = new List<StringFBILLNO>();
foreach (var item in FEntity)
{
if (!string.IsNullOrWhiteSpace(item["FISHX"]?.ToString()))
{
StringFBILLNO stringFBILLNO1 = new StringFBILLNO();
stringFBILLNO1.FBILLNO = item["FBILLNO"]?.ToString();
stringFBILLNO.Add(stringFBILLNO1);
}
}
ShowDynamicForm(stringFBILLNO, fBillNo, fRow);
}
}
/// <summary>
/// 弹出动态表单窗口
/// </summary>
private void ShowDynamicForm(List<StringFBILLNO> stringFBILLNO, string fBillNo, int fRow)
{
// 将列表序列化为JSON字符串
string jsonFBILLNO = JsonConvert.SerializeObject(stringFBILLNO);
// 创建动态表单显示参数
DynamicFormShowParameter dynamicFormShowParameter = new DynamicFormShowParameter();
//dynamicFormShowParameter.FormId = "VRYF_WriteoffWindow"; // 表单ID
dynamicFormShowParameter.FormId = "MBBA_WriteoffWindow"; // 替换为实际动态表单ID
dynamicFormShowParameter.OpenStyle.ShowType = ShowType.Modal; // 以模态窗口形式显示
// 添加自定义参数,用于传递数据
dynamicFormShowParameter.CustomParams.Add("fBillNo", fBillNo); // 根据需要设置参数
dynamicFormShowParameter.CustomParams.Add("stringFBILLNO", jsonFBILLNO); // 根据需要设置参数
dynamicFormShowParameter.CustomParams.Add("IsEditable", "true"); // 确保表单是可编辑的
var stringFBILLNOANDList = new List<StringFBILLNOANDList>();
// 显示动态表单
this.View.ShowForm(dynamicFormShowParameter, result =>
{
if (result != null && result.ReturnData != null)
{
stringFBILLNOANDList.Add((StringFBILLNOANDList)result.ReturnData);
}
//判断是否获取到数据
if (stringFBILLNOANDList[0].FBILLNOList.Count > 0)
{
//获取销售订单/应收单单据体数据
DynamicObjectCollection FEntity = this.View.Model.DataObject["FEntity"] as DynamicObjectCollection;
//获取收款单单据体数据
DynamicObjectCollection FEntity2 = this.View.Model.DataObject["FEntity2"] as DynamicObjectCollection;
SaleBILLLIS = new List<CombinaClass>();
ReceiveBILLLIST = new List<CombinaClass>();
//用于存储子树形的数据
var SaleBILLLIS2 = new List<CombinaClass>();
SaleBILLLIS = FEntity.Select(item => new CombinaClass
{
FBIllNO = Convert.ToString(item["FBILLNO"]),
FCONTRACTNUMBER = Convert.ToString(item["FCONTRACTNUMBER"]),
FClient = Convert.ToInt32(item["FClient_Id"]),
FDate = Convert.ToString(item["FDate"]),
FALLAMOUNT = Convert.ToDouble(item["F_MBBA_Decimal_c1c"]),
FYAMOUNT = Convert.ToDouble(item["F_MBBA_Decimal_vb1"]),
FDAMOUNT = Convert.ToDouble(item["F_MBBA_Decimal_emq"]),
FSKBIllNO = Convert.ToString(item["FSKBILLNO"]),
FCreated = Convert.ToInt32(item["FCreated_Id"]),
FSalesman = Convert.ToInt32(item["FSalesman_Id"]),
FType = Convert.ToString(item["FType"]),
FISHX = item["FISHX"]?.ToString(),
FWeiYi = item["FWeiYi"]?.ToString(),
}).ToList();
ReceiveBILLLIST = FEntity2.Select(item => new CombinaClass
{
FBIllNO = Convert.ToString(item["FBILLNO2"]),
FDate = Convert.ToString(item["FDate2"]),
FALLAMOUNT = Convert.ToDouble(item["F_MBBA_Decimal_imu"]),
FYAMOUNT = Convert.ToDouble(item["F_MBBA_Decimal_3iy"]),
FDAMOUNT = Convert.ToDouble(item["F_MBBA_Decimal_lsn"]),
FClient = Convert.ToInt32(item["FClient2_Id"]),
FCONTRACTNUMBER = item["FCONTRACTNUMBER2"]?.ToString(),
FRemark = Convert.ToString(item["FRemark"]),
FCreated = Convert.ToInt32(item["FCreated2_Id"]),
FSalesman = Convert.ToInt32(item["FSalesman2_Id"]),
FISHX = item["FISHX2"]?.ToString(),
FWeiYi = item["FWeiYi2"]?.ToString(),
}).ToList();
//获取纸质合同号
List<string> fString = new List<string>();
//修改销售订单/应收单
foreach (var item in stringFBILLNOANDList[0].FBILLNOList)
{
var item2 = SaleBILLLIS.FirstOrDefault(h => h.FBIllNO == item.FBILLNO);
if (item2 != null)
{
SaleBILLLIS2.Add(item2);
item2.FSKBIllNO = stringFBILLNOANDList[0].FBILLNO;
fString.Add(item2.FCONTRACTNUMBER);
item2.FISHX = "已核销配对";
}
}
//获取纸质合同号
string fCONTRACTNUMBER = string.Join(",", fString);
//修改收款单
INDEXNumber = 1;
this.Model.SetValue("FCONTRACTNUMBER2", fCONTRACTNUMBER, fRow);
this.Model.SetValue("FISHX2", "已核销配对", fRow);
double sumAmount = 0;
int CurrentIndex2 = this.View.Model.GetEntryCurrentRowIndex("FEntity2");
var FROWID = Convert.ToString(this.View.Model.GetValue("FROWID", CurrentIndex2));
for (int i = 0; i < SaleBILLLIS2.Count; i++)
{
var Rowindex = this.View.Model.GetEntryRowCount("FEntity2");
this.View.Model.SetValue("FPARENTROWID", FROWID, CurrentIndex2);
this.View.Model.CreateNewEntryRow("FEntity2");
this.View.Model.SetValue("FROWID", SequentialGuid.NewGuid().ToString(), Rowindex);
this.View.Model.SetValue("FPARENTROWID", FROWID, Rowindex);
this.View.Model.SetValue("FBILLNO2", SaleBILLLIS2[i].FBIllNO, Rowindex);
this.View.Model.SetValue("FDATE2", SaleBILLLIS2[i].FDate, Rowindex);
this.View.Model.SetValue("F_MBBA_Decimal_imu", SaleBILLLIS2[i].FALLAMOUNT, Rowindex);
this.View.Model.SetValue("FClient2", SaleBILLLIS2[i].FClient, Rowindex);
this.View.Model.SetValue("FCreated2", SaleBILLLIS2[i].FCreated, Rowindex);
this.View.Model.SetValue("FCONTRACTNUMBER2", SaleBILLLIS2[i].FCONTRACTNUMBER, Rowindex);
this.View.Model.SetValue("FSalesman2", SaleBILLLIS2[i].FSalesman, Rowindex);
this.View.UpdateView("FEntity2");
sumAmount += SaleBILLLIS2[i].FALLAMOUNT;
}
this.Model.SetValue("F_MBBA_Decimal_qtr", sumAmount, fRow);
//删除数据
this.View.Model.DeleteEntryData("FEntity");
//绑定销售订单数据
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", SaleBILLLIS[i].FDate, i);
//金额
this.View.Model.SetValue("F_MBBA_Decimal_c1c", 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("F_MBBA_Decimal_vb1", SaleBILLLIS[i].FYAMOUNT, i);
//待核销金额
this.View.Model.SetValue("F_MBBA_Decimal_emq", SaleBILLLIS[i].FDAMOUNT, i);
//单据编号(收款单)
this.View.Model.SetValue("FSKBILLNO", SaleBILLLIS[i].FSKBIllNO, i);
//是否核销匹对
this.View.Model.SetValue("FISHX", SaleBILLLIS[i].FISHX, i);
//是否唯一
this.View.Model.SetValue("FWeiYi", SaleBILLLIS[i]?.FWeiYi, i);
//商务人员
this.View.Model.SetValue("FCreated", SaleBILLLIS[i].FCreated, i);
//销售员
this.View.Model.SetValue("FSalesman", SaleBILLLIS[i].FSalesman, i);
}
this.View.UpdateView("FEntity");
INDEXNumber = 0;
}
});
}
/// <summary>
/// 点击按钮操作
/// </summary>
/// <param name="e"></param>
public override void AfterBarItemClick(AfterBarItemClickEventArgs e)
{
base.AfterBarItemClick(e);
//点击过滤按钮,弹出过滤窗体
if (e.BarItemKey.Equals("MBBA_tbButton", StringComparison.OrdinalIgnoreCase))
{
var showParameter = new DynamicFormShowParameter();
showParameter.FormId = "NAAD_ZiDongHeXiao";
showParameter.ParentPageId = this.View.PageId;
showParameter.PageId = this.View.PageId + "_Filter";
showParameter.OpenStyle.CacheId = this.View.PageId;
this.View.ShowForm(showParameter, action => FilterCallBack(action));
}
//自动匹配
if (e.BarItemKey.ToString().Equals("MBBA_tbButton_2"))
{
//#region 全部
//销售订单绑定数据
SaleBILLLIS = new List<CombinaClass>();
DynamicObjectCollection FEntity = this.View.Model.DataObject["FEntity"] as DynamicObjectCollection;
SaleBILLLIS = FEntity.Select(item => new CombinaClass
{
FBIllNO = Convert.ToString(item["FBILLNO"]),
FCONTRACTNUMBER = Convert.ToString(item["FCONTRACTNUMBER"]),
FClient = Convert.ToInt32(item["FClient_Id"]),
FDate = Convert.ToString(item["FDate"]),
FALLAMOUNT = Convert.ToDouble(item["F_MBBA_Decimal_c1c"]),
FYAMOUNT = Convert.ToDouble(item["F_MBBA_Decimal_vb1"]),
FDAMOUNT = Convert.ToDouble(item["F_MBBA_Decimal_emq"]),
FSKBIllNO = Convert.ToString(item["FSKBILLNO"]),
FCreated = Convert.ToInt32(item["FCreated_Id"]),
FSalesman = Convert.ToInt32(item["FSalesman_Id"]),
FType = Convert.ToString(item["FType"]),
FISHX = item["FISHX"]?.ToString(),
FWeiYi = item["FWeiYi"]?.ToString(),
}).ToList();
var SaleBILLLISNew = SaleBILLLIS.Where(a => a.FISHX != "已核销配对").ToList();
var ReceiveBILLLIST2 = new List<CombinaClass>();
//获取收款单单据体数据
DynamicObjectCollection FEntity2 = this.View.Model.DataObject["FEntity2"] as DynamicObjectCollection;
ReceiveBILLLIST2 = FEntity2.Select(item => new CombinaClass
{
FBIllNO = item["FBILLNO2"]?.ToString(),
FDate = item["FDate2"]?.ToString(),
FALLAMOUNT = Convert.ToDouble(item["F_MBBA_Decimal_imu"]),
FYAMOUNT = Convert.ToDouble(item["F_MBBA_Decimal_3iy"]),
FDAMOUNT = Convert.ToDouble(item["F_MBBA_Decimal_lsn"]),
FClient = Convert.ToInt32(item["FClient2_Id"]),
FCreated = Convert.ToInt32(item["FCreated2_Id"]),
FRemark = item["FRemark"]?.ToString(),
FSalesman = Convert.ToInt32(item["FSalesman2_Id"]),
FCONTRACTNUMBER = item["FCONTRACTNUMBER2"]?.ToString(),
FRow = Convert.ToInt32(item["Seq"]) - 1,
F_RowNew = Convert.ToInt32(item["F_RowNew"])
}).ToList();
//重置并只取父级树形数据
ReceiveBILLLIST = new List<CombinaClass>();
ReceiveBILLLIST = ReceiveBILLLIST2.Where(a => a.F_RowNew == 1 && a.FISHX != "已核销配对").OrderBy(t => t.FClient).ThenBy(t => t.FCONTRACTNUMBER).ThenBy(t => t.FDate).ToList();
List<string> FBILLNOLIST = new List<string>();
List<int> FClient = new List<int>();
List<DataItem> result = new List<DataItem>();
var FStartTime = DateTime.Now;
#region 2025-04-07
#region
var SaleBILLLIS2Sal = SaleBILLLIS2.Where(t => t.FType == "销售订单" && t.FISHX != "已核销配对").ToList();
//将销售订单根据客户分组
//var FClientList2 = SaleBILLLIS2Sal.GroupBy(t => t.FClient).ToList();
//var FClientReceiveBillList= ReceiveBILLLIST
Dictionary<string, double> shouKuanDetail = new Dictionary<string, double>();
//先挑1张收款单对应一张销售订单
var oneToOneTemp = (from q in SaleBILLLIS2Sal
join u in ReceiveBILLLIST on new { q.FClient, q.FDAMOUNT } equals new { u.FClient, u.FDAMOUNT }
select new { q.FClient, q.FBIllNO, q.FCONTRACTNUMBER, u.FDAMOUNT, UFbillNo = u.FBIllNO }).ToList();
var saleList1 = oneToOneTemp.Select(t => t.FBIllNO).Distinct().ToList();
var ReceiveList1 = oneToOneTemp.Select(t => t.UFbillNo).Distinct().ToList();
if (saleList1.Count > ReceiveList1.Count)
{
List<string> deleteFBIllNOList = new List<string>();
ReceiveList1.ForEach(t =>
{
var temp111 = oneToOneTemp.FirstOrDefault(h => h.UFbillNo == t && !deleteFBIllNOList.Contains(h.FBIllNO));
if (temp111 == null)
return;
var temp11 = temp111.FBIllNO;
deleteFBIllNOList.Add(temp11);
var item = SaleBILLLISNew.Where(h => h.FBIllNO == temp11).OrderBy(h => h.FDate).FirstOrDefault();
//更新销售订单数据
item.FSKBIllNO = t;
item.FISHX = "已核销配对";
item.BenCi = temp111.FDAMOUNT;
item.FDAMOUNT = item.FDAMOUNT - item.BenCi;
shouKuanDetail.Add(t + "," + item.FBIllNO, item.BenCi);
//item.FYAMOUNT = item.FYAMOUNT + item.BenCi;
//item.=
List<string> fString = new List<string>();
fString.Add(item.FCONTRACTNUMBER);
string fCONTRACTNUMBER = string.Join(",", fString);
//更新收款单数据
var receiveItemTemp = ReceiveBILLLIST.FirstOrDefault(h => h.FBIllNO == t);
if (receiveItemTemp != null)
{
receiveItemTemp.FCONTRACTNUMBER = fCONTRACTNUMBER;
receiveItemTemp.FISHX = "已核销配对";
receiveItemTemp.BenCi = temp111.FDAMOUNT;
receiveItemTemp.FDAMOUNT = receiveItemTemp.FDAMOUNT - receiveItemTemp.BenCi;
//receiveItemTemp.FYAMOUNT = receiveItemTemp.FYAMOUNT + receiveItemTemp.BenCi;
}
});
}
else
{
List<string> deleteFBIllNOList = new List<string>();
saleList1.ForEach(t =>
{
var temp111 = oneToOneTemp.Where(h => h.FBIllNO == t && !deleteFBIllNOList.Contains(h.UFbillNo)).OrderBy(h => h.UFbillNo).FirstOrDefault();
if (temp111 == null)
return;
var temp11 = temp111.UFbillNo;
deleteFBIllNOList.Add(temp11);
var item = SaleBILLLISNew.FirstOrDefault(h => h.FBIllNO == t);
//更新销售订单数据
item.FSKBIllNO = t;
item.FISHX = "已核销配对";
item.BenCi = temp111.FDAMOUNT;
item.FDAMOUNT = item.FDAMOUNT - item.BenCi;
//item.FYAMOUNT = item.FYAMOUNT + item.BenCi;
List<string> fString = new List<string>();
fString.Add(item.FCONTRACTNUMBER);
string fCONTRACTNUMBER = string.Join(",", fString);
//更新收款单数据
var receiveItemTemp = ReceiveBILLLIST.FirstOrDefault(h => h.FBIllNO == temp11);
if (receiveItemTemp != null)
{
receiveItemTemp.FCONTRACTNUMBER = fCONTRACTNUMBER;
receiveItemTemp.FISHX = "已核销配对";
receiveItemTemp.BenCi = temp111.FDAMOUNT;
receiveItemTemp.FDAMOUNT = receiveItemTemp.FDAMOUNT - receiveItemTemp.BenCi;
//receiveItemTemp.FYAMOUNT = receiveItemTemp.FYAMOUNT + receiveItemTemp.BenCi;
receiveItemTemp.FWeiYi = "是";
shouKuanDetail.Add(receiveItemTemp.FBIllNO + "," + item.FBIllNO, item.BenCi);
}
});
}
//先挑1张收款单对应多张张销售订单
var SaleBILLLIS2Sa2 = SaleBILLLISNew.Where(t => t.FISHX != "已核销配对" && t.FDAMOUNT > 0).OrderBy(t => t.FClient).ThenByDescending(t => t.FBIllNO).ToList();
ReceiveBILLLIST = ReceiveBILLLIST2.Where(a => a.F_RowNew == 1 && a.FISHX != "已核销配对" && a.FDAMOUNT > 0).OrderBy(t => t.FClient).ThenByDescending(t => t.FBIllNO).ToList();
//打包式匹配法,按时间倒序逐一核销掉.
ReceiveBILLLIST.ForEach(t =>
{
var tempList = SaleBILLLIS2Sa2.Where(h => h.FClient == t.FClient && h.FISHX != "已核销配对" && t.FDAMOUNT > 0).OrderByDescending(h => h.FBIllNO).ToList();
var FDAMOUNT = t.FDAMOUNT;
List<string> heTongList = new List<string>();
if (t.FCONTRACTNUMBER != null)
heTongList = t.FCONTRACTNUMBER.Split(',').ToList().Distinct().ToList();
if (heTongList == null)
heTongList = new List<string>();
tempList.ForEach(sale =>
{
if (FDAMOUNT == 0)
{
return;
}
double benCi = 0;
List<string> str = new List<string>();
if (sale.FSKBIllNO != null)
str = sale.FSKBIllNO.Split(',').ToList();
if (str == null)
str = new List<string>();
str.Add(t.FBIllNO);
sale.FSKBIllNO = string.Join(",", str);
if (FDAMOUNT >= sale.FDAMOUNT)
{
benCi = sale.FDAMOUNT;
sale.BenCi = sale.FDAMOUNT;
sale.FDAMOUNT = 0;
sale.FISHX = "已核销配对";
}
else
{
benCi = FDAMOUNT;
sale.BenCi = FDAMOUNT;
sale.FDAMOUNT = sale.FDAMOUNT - benCi;
}
//sale.FYAMOUNT = sale.FYAMOUNT + sale.BenCi;
heTongList.Add(sale.FCONTRACTNUMBER);
heTongList = heTongList.Distinct().ToList();
str = new List<string>();
if (t.FSKBIllNO != null)
str = t.FSKBIllNO.Split(',').ToList();
if (str == null)
str = new List<string>();
str.Add(sale.FBIllNO);
shouKuanDetail.Add(t.FBIllNO + "," + sale.FBIllNO, benCi);
FDAMOUNT = FDAMOUNT - sale.BenCi;
t.FDAMOUNT = t.FDAMOUNT - benCi;
//t.FYAMOUNT = t.FYAMOUNT + sale.BenCi;
t.BenCi = t.BenCi + benCi;
t.FCONTRACTNUMBER = string.Join(",", heTongList);
if (heTongList.Count == 1)
t.FWeiYi = "是";
else
t.FWeiYi = "否";
if (t.FDAMOUNT == 0)
{
t.FISHX = "已核销配对";
}
});
});
#region
////1个销售订单对应多张收款单
//SaleBILLLIS2Sa2 = SaleBILLLISNew.Where(t => t.FISHX != "已核销配对").OrderBy(t => t.FClient).ThenBy(t => t.FCONTRACTNUMBER).ThenBy(t => t.FDate).ToList();
//ReceiveBILLLIST = ReceiveBILLLIST2.Where(a => a.F_RowNew == 1 && a.FISHX != "已核销配对").OrderBy(t => t.FClient).ThenBy(t => t.FDate).ToList();
//SaleBILLLIS2Sa2.ForEach(t =>
//{
// var tempList = ReceiveBILLLIST.Where(h => h.FClient == t.FClient && t.FDAMOUNT >= h.FDAMOUNT && h.FISHX != "已核销配对").OrderBy(h => h.FBIllNO).ToList();
// List<double> sales1 = new List<double> { t.FDAMOUNT };
// var payments2 = tempList.Select(k => k.FDAMOUNT).ToList();
// var matches = CombinationGenerator_yuyubo.MatchSalesAndPayments(sales1, payments2);
// var FDAMOUNT = t.FDAMOUNT;
// if (matches.Count > 0)
// {
// var FDAMOUNTList = matches[0].FirstOrDefault();
// tempList = tempList.Where(h => FDAMOUNTList.Contains(h.FDAMOUNT)).OrderBy(h => h.FDate).ToList();
// var fbillNoList = tempList.Select(h => h.FBIllNO).ToList();
// var ReceiveBILLLTempList = ReceiveBILLLIST.Where(h => fbillNoList.Contains(h.FBIllNO)).ToList();
// List<string> fString = new List<string>();
// ReceiveBILLLTempList.ForEach(item =>
// {
// //更新收款单数据
// if (FDAMOUNT > 0)
// {
// //item.FSKBIllNO = t.FBIllNO;
// item.FISHX = "已核销配对";
// item.FCONTRACTNUMBER = t.FCONTRACTNUMBER;
// fString.Add(item.FBIllNO);
// }
// });
// //更新销售订单数据
// t.FISHX = "已核销配对";
// string fCONTRACTNUMBER = string.Join(",", fString);
// //更新收款单数据
// t.FSKBIllNO = fCONTRACTNUMBER;
// }
//});
#endregion
#endregion
////删除数据
//this.View.Model.DeleteEntryData("FEntity");
#endregion
//获取已配对的数据
List<CombinaClass> SaleBILLLISNew2 = SaleBILLLISNew.Where(a => a.FSKBIllNO != "" && a.FSKBIllNO != null).ToList();
INDEXNumber = 1;
//绑定收款单数据
foreach (var item in ReceiveBILLLIST)
{
if (!string.IsNullOrWhiteSpace(item.FCONTRACTNUMBER))
{
this.View.Model.SetValue("FISHX2", item.FISHX, item.FRow);
this.View.Model.SetValue("FCONTRACTNUMBER2", item.FCONTRACTNUMBER, item.FRow);
this.View.Model.SetValue("FWeiYi2", item.FWeiYi, item.FRow);
var FROWID = Convert.ToString(this.View.Model.GetValue("FROWID", item.FRow));
var sumAmount = this.Model.GetValue("F_MBBA_Decimal_imu", item.FRow);
this.View.Model.SetValue("F_MBBA_Decimal_qtr", sumAmount, item.FRow);
this.View.Model.SetValue("F_PendingAmount", item.FDAMOUNT, item.FRow);
this.View.Model.SetValue("F_BenCi", item.BenCi, item.FRow);
this.View.Model.SetValue("F_MBBA_Decimal_3iy", item.FYAMOUNT, item.FRow);
this.View.Model.SetValue("F_ISHX", false, item.FRow);
List<string> strings = new List<string>();
if (item.FCONTRACTNUMBER != null)
strings = item.FCONTRACTNUMBER.Split(',').ToList();
var tempList2 = SaleBILLLISNew2.Where(h => strings.Contains(h.FCONTRACTNUMBER)).ToList();
var Rowindex = this.View.Model.GetEntryRowCount("FEntity2");
for (int i = 0; i < tempList2.Count; i++)
{
this.View.Model.SetValue("FPARENTROWID", FROWID, item.FRow);
this.View.Model.CreateNewEntryRow("FEntity2");
this.View.Model.SetValue("FROWID", Guid.NewGuid().ToString(), Rowindex + i);
this.View.Model.SetValue("FPARENTROWID", FROWID, Rowindex + i);
this.View.Model.SetValue("FBILLNO2", tempList2[i].FBIllNO, Rowindex + i);
if (DateTime.TryParseExact(item?.FDate, dateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime parsedDate))
{
this.View.Model.SetValue("FDate2", item?.FDate, Rowindex + i);
}
else
{
this.View.Model.SetValue("FDate2", DateTime.Now.AddDays(-1 * Convert.ToInt32(item?.FDate)).ToString("yyyy-MM-dd"), Rowindex + i);
}
this.View.Model.SetValue("F_MBBA_Decimal_imu", tempList2[i].FALLAMOUNT, Rowindex + i);
this.View.Model.SetValue("FClient2", tempList2[i].FClient, Rowindex + i);
this.View.Model.SetValue("F_RowNew", 2, Rowindex + i);
this.View.Model.SetValue("FCreated2", tempList2[i].FCreated, Rowindex + i);
this.View.Model.SetValue("FCONTRACTNUMBER2", tempList2[i].FCONTRACTNUMBER, Rowindex + i);
this.View.Model.SetValue("FSalesman2", tempList2[i].FSalesman, Rowindex + i);
this.View.Model.SetValue("F_MBBA_Decimal_qtr", tempList2[i].FDAMOUNT, Rowindex + i);
this.View.Model.SetValue("F_PendingAmount", tempList2[i].FDAMOUNT, Rowindex + i);
double benci = shouKuanDetail[item.FBIllNO + "," + tempList2[i].FBIllNO];
this.View.Model.SetValue("F_BenCi", benci, Rowindex + i);
this.View.Model.SetValue("F_MBBA_Decimal_3iy", tempList2[i].FYAMOUNT, Rowindex + i);
this.View.Model.SetValue("F_ISHX", false, Rowindex + i);
}
//if (strings.Count() == 1 && item.FWeiYi == "否")
//{
// for (int i = 0; i < SaleBILLLISNew2.Count; i++)
// {
// if (strings.Contains(SaleBILLLISNew2[i].FCONTRACTNUMBER))
// {
// var Rowindex = this.View.Model.GetEntryRowCount("FEntity2");
// this.View.Model.SetValue("FPARENTROWID", FROWID, item.FRow);
// this.View.Model.CreateNewEntryRow("FEntity2");
// this.View.Model.SetValue("FROWID", SequentialGuid.NewGuid().ToString(), Rowindex);
// this.View.Model.SetValue("FPARENTROWID", FROWID, Rowindex);
// this.View.Model.SetValue("FBILLNO2", SaleBILLLISNew2[i].FBIllNO, Rowindex);
// if (DateTime.TryParseExact(item?.FDate, dateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime parsedDate))
// {
// this.View.Model.SetValue("FDate2", item?.FDate, Rowindex);
// }
// else
// {
// this.View.Model.SetValue("FDate2", DateTime.Now.AddDays(-1 * Convert.ToInt32(item?.FDate)).ToString("yyyy-MM-dd"), Rowindex);
// }
// this.View.Model.SetValue("F_MBBA_Decimal_imu", item.FDAMOUNT, Rowindex);
// this.View.Model.SetValue("FClient2", SaleBILLLISNew2[i].FClient, Rowindex);
// this.View.Model.SetValue("FCreated2", SaleBILLLISNew2[i].FCreated, Rowindex);
// this.View.Model.SetValue("FCONTRACTNUMBER2", SaleBILLLISNew2[i].FCONTRACTNUMBER, Rowindex);
// this.View.Model.SetValue("FSalesman2", SaleBILLLISNew2[i].FSalesman, Rowindex);
// this.View.Model.SetValue("F_MBBA_Decimal_qtr", SaleBILLLISNew2[i].FALLAMOUNT, Rowindex);
// this.View.UpdateView("FEntity2");
// }
// }
//}
//else
//{
// for (int i = 0; i < SaleBILLLISNew2.Count; i++)
// {
// if (strings.Contains(SaleBILLLISNew2[i].FCONTRACTNUMBER))
// {
// var Rowindex = this.View.Model.GetEntryRowCount("FEntity2");
// this.View.Model.SetValue("FPARENTROWID", FROWID, item.FRow);
// this.View.Model.CreateNewEntryRow("FEntity2");
// this.View.Model.SetValue("FROWID", SequentialGuid.NewGuid().ToString(), Rowindex);
// this.View.Model.SetValue("FPARENTROWID", FROWID, Rowindex);
// this.View.Model.SetValue("FBILLNO2", SaleBILLLISNew2[i].FBIllNO, Rowindex);
// if (DateTime.TryParseExact(item?.FDate, dateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime parsedDate))
// {
// this.View.Model.SetValue("FDate2", item?.FDate, Rowindex);
// }
// else
// {
// this.View.Model.SetValue("FDate2", DateTime.Now.AddDays(-1 * Convert.ToInt32(item?.FDate)).ToString("yyyy-MM-dd"), Rowindex);
// }
// this.View.Model.SetValue("F_MBBA_Decimal_imu", SaleBILLLISNew2[i].FALLAMOUNT, Rowindex);
// this.View.Model.SetValue("FClient2", SaleBILLLISNew2[i].FClient, Rowindex);
// this.View.Model.SetValue("FCreated2", SaleBILLLISNew2[i].FCreated, Rowindex);
// this.View.Model.SetValue("FCONTRACTNUMBER2", SaleBILLLISNew2[i].FCONTRACTNUMBER, Rowindex);
// this.View.Model.SetValue("FSalesman2", SaleBILLLISNew2[i].FSalesman, Rowindex);
// this.View.Model.SetValue("F_MBBA_Decimal_qtr", SaleBILLLISNew2[i].FALLAMOUNT, Rowindex);
// this.View.UpdateView("FEntity2");
// }
// }
//}
this.Model.SetValue("FROWEXPANDTYPE", (int)ENUM_ROWTYPE.Expand, item.FRow);
}
}
this.View.UpdateView("FEntity2");
TreeEntryGrid entryGrid = this.View.GetControl("FEntity2") as TreeEntryGrid;
DynamicObjectCollection entryGrid2 = this.View.Model.DataObject["FEntity2"] as DynamicObjectCollection;
if (entryGrid != null)
{
var list = entryGrid2.Where(t => t["FCONTRACTNUMBER2"] != null && t["FCONTRACTNUMBER2"].ToString() != "" && t["F_RowNew"].ToString() == "1").ToList();
foreach (var item in list)
{
entryGrid.ExpandedRow(int.Parse(item["SEQ"].ToString()) - 1);
}
//for (int i = 0; i < entryGrid2.Count; i++)
//{
// entryGrid.ExpandedRow(i);
//}
}
var FEndTime = DateTime.Now;
TimeSpan timeSpan = FEndTime - FStartTime;
this.View.ShowMessage(string.Format("匹配成功,匹配耗费时长为:{0}s", Math.Round(timeSpan.TotalMilliseconds / 1000)));
INDEXNumber = 0;
}
//生成核销记录单
if (e.BarItemKey.ToString().Equals("MBBA_tbButton_5"))
{
// 弹出确认框
View.ShowMessage("确定要生成核销记录单吗?", MessageBoxOptions.YesNo, result =>
{
if (result == MessageBoxResult.Yes)
{
#region
//存储销售订单/应收单
var fCombinaAddClass1 = new List<CombinaAddClass1>();
//存储收款单
var fCombinaAddSK = new List<CombinaAddSK>();
var FOrgId = this.Context.CurrentOrganizationInfo.ID;
string Message = string.Empty;
bool ErrMessage = false;
//获取销售订单/应收单单据体数据
DynamicObjectCollection FEntity = this.View.Model.DataObject["FEntity"] as DynamicObjectCollection;
//获取收款单单据体数据
DynamicObjectCollection FEntity2 = this.View.Model.DataObject["FEntity2"] as DynamicObjectCollection;
var selectList = FEntity2.Where(t => t["F_ISHX"] != null && t["F_ISHX"].ToString().ToLower() == "true").ToList();
if (selectList.Count == 0 && selectList.Count == 0)
{
this.View.ShowWarnningMessage("未选择核销数据!");
return;
}
string hetong = "";
//selectList.ForEach(t =>
//{
// hetong += "," + t["FBILLNO2"].ToString();
//});
//this.View.ShowWarnningMessage(hetong);
//return;
//this.View.Model.SetValue("FROWID", FROWID, RowindexNew);
//this.View.Model.SetValue("FPARENTROWID", FROWID, item.FRow);
var ReceiveBILLLIST2 = selectList.Select(item => new CombinaClass()
{
FBIllNO = Convert.ToString(item["FBILLNO2"]),
FDate = Convert.ToString(item["FDate2"]),
FALLAMOUNT = Convert.ToDouble(item["F_MBBA_Decimal_imu"]),
FYAMOUNT = Convert.ToDouble(item["F_MBBA_Decimal_3iy"]),
FDAMOUNT = Convert.ToDouble(item["F_MBBA_Decimal_lsn"]),
FClient = Convert.ToInt32(item["FClient2_Id"]),
FCONTRACTNUMBER = item["FCONTRACTNUMBER2"]?.ToString(),
FRemark = Convert.ToString(item["FRemark"]),
FCreated = Convert.ToInt32(item["FCreated2_Id"]),
FSalesman = Convert.ToInt32(item["FSalesman2_Id"]),
FISHX = item["FISHX2"]?.ToString(),
FWeiYi = item["FWeiYi2"]?.ToString(),
FRow = Convert.ToInt32(item["Seq"]),
F_RowNew = Convert.ToInt32(item["F_RowNew"]),
BenCi = Convert.ToDouble(item["BenCi"]),
FROWID = Convert.ToString(item["ROWID"]),
FPARENTROWID = Convert.ToString(item["PARENTROWID"]),
});
List<string> errorList = new List<string>();
var eee = ReceiveBILLLIST2.Where(t => t.FDAMOUNT < t.BenCi).ToList();
if (eee.Count > 0)
{
string kk =string.Join(",", eee.Select(t => t.FBIllNO).ToList());
errorList.Add("这些订单的本次核销金额大于待核销金额"+ kk);
}
var shouKuanList = ReceiveBILLLIST2.Where(t => t.F_RowNew == 1).ToList();
shouKuanList.ForEach(item =>
{
var sales = ReceiveBILLLIST2.Where(t => t.FPARENTROWID == item.FROWID && t.FROWID != item.FROWID).ToList();
var heji = sales.Sum(t => t.BenCi);
if (heji != item.BenCi || heji == 0 || sales.Count == 0)
errorList.Add(item.FBIllNO + $@" 明细={heji} 收款单={item.BenCi} ");
else
{
if (errorList.Count == 0)
{
//创建对象存储
var SKList = new CombinaAddSK();
//获取纸质合同号
var stringSplit = sales.Select(t => t.FCONTRACTNUMBER).Distinct().ToList();
//找到对应销售订单
var nTestList = sales.Select(item2 => new CombinaAddClass1
{
FBIllNO = item2.FBIllNO,
FClient = Convert.ToInt32(item2.FClient),
FDate = item2.FDate,
FALLAMOUNT = Convert.ToDecimal(item2.BenCi),
FCONTRACTNUMBER = item2.FCONTRACTNUMBER,
FType = "销售订单",
FCreated = item2.FCreated,
FSalesman = item2.FSalesman,
});
SKList.XSAPList.AddRange(nTestList);
SKList.FBIllNO = item.FBIllNO;
SKList.FCONTRACTNUMBER = string.Join(",", sales.Select(t => t.FCONTRACTNUMBER).Distinct().ToList());
SKList.FClient = item.FClient;
SKList.FDate = item.FDate;
SKList.FALLAMOUNT = Convert.ToDecimal(item.BenCi);
SKList.FRemark = item.FRemark;
SKList.FCreated = item.FCreated;
SKList.FSalesman = item.FSalesman;
fCombinaAddSK.Add(SKList);
}
}
});
if (errorList.Count > 0)
{
ErrMessage = true;
hetong = string.Join(",", errorList);
Message = string.Format($"收款单号:'{hetong}'的本次核销金额不等于勾选的销售订单的合计本次核销金额,不允许核销\r\n");
if (ErrMessage)
{
this.View.ShowErrMessage(Message);
}
return;
}
#endregion
//用于存储生成成功的收款单
List<string> strings1 = new List<string>();
List<string> successFbillNo = new List<string>();
int ISXSNUM = 0;
errorList = new List<string>();
//循环收款单/新增核销记录
foreach (var item in fCombinaAddSK)
{
try
{
//创建核销记录单
string FBILLNO = CommonHelper.CreateAutoWrireRecord2(this.Context, Convert.ToString(FOrgId), item.XSAPList, item);
if (FBILLNO != "")
{
Message = Message + string.Format("生成核销记录单成功,单号为:'{0}'\r\n", FBILLNO);
strings1.Add(item.FCONTRACTNUMBER);
successFbillNo.Add(item.FBIllNO);
ISXSNUM++;
}
}
catch (Exception ex)
{
errorList.Add(ex.Message);
}
}
if (errorList.Count > 0)
Message = Message + " 有部分单失败,原因是:" + string.Join(",", errorList);
this.View.ShowMessage(Message);
if (successFbillNo.Count > 0)
{
var tempRow = ReceiveBILLLIST2.Where(t => successFbillNo.Contains(t.FBIllNO)).ToList();
var pId = tempRow.Select(t => t.FROWID).ToList();
var allRows = FEntity2.Where(t => pId.Contains(t["PARENTROWID"].ToString())).ToList();
allRows.ForEach(t =>
{
this.Model.DeleteEntryRow("FEntity2", Convert.ToInt32(t["Seq"]) - 1);
});
//tempRow.ForEach(item =>
//{
// this.Model.DeleteEntryRow("FEntity2", item.FRow - 1);
//});
}
////如果存在生成成功的、也有生成失败的不走刷新功能直接将成功的单据体数据删除!
//List<CombinaClass> SaleBILLLIStext = new List<CombinaClass>();
//foreach (var item in SaleBILLLIS)
//{
// if (strings1.Contains(item?.FCONTRACTNUMBER))
// {
// SaleBILLLIStext.Add(item);
// }
//}
//foreach (var item in SaleBILLLIStext)
//{
// SaleBILLLIS.Remove(item);
//}
//if (ISXSNUM == 1)
//{
// //删除只有一条数据的收款单
// foreach (var item in strings1)
// {
// for (int i = 0; i < ReceiveBILLLIST.Count; i++)
// {
// if (ReceiveBILLLIST[i]?.FCONTRACTNUMBER == item?.ToString())
// {
// this.Model.DeleteEntryRow("FEntity2", ReceiveBILLLIST[i].FRow);
// }
// }
// }
//}
//else
//{
// this.Model.SetValue("FShuaXin", "需要更新");
//}
}
else
{
return;
}
});
}
}
#region DataChanged()
/// <summary>
/// 单据体值更新事件
/// </summary>
/// <param name="e"></param>
public override void DataChanged(DataChangedEventArgs e)
{
base.DataChanged(e);
if (e.Field.Key.Equals("FShuaXin"))
{
//文本字段触发值更新时,模拟用户点击菜单,此处模拟点击“选项”菜单:
((IDynamicFormViewService)this.View).MainBarItemClick("MBBA_tbButton_1");
}
{
//if (e.Field.Key.Equals("FCONTRACTNUMBER2"))
//{
// if (INDEXNumber == 0)
// {
// //获取销售订单/应收单单据体数据
// DynamicObjectCollection FEntity = this.View.Model.DataObject["FEntity"] as DynamicObjectCollection;
// SaleBILLLIS = new List<CombinaClass>();
// foreach (var item in FEntity)
// {
// SaleBILLLIS.Add(new CombinaClass()
// {
// FBIllNO = item["FBILLNO"]?.ToString(),
// FCONTRACTNUMBER = item["FCONTRACTNUMBER"]?.ToString(),
// FClient = Convert.ToInt32(item["FClient_Id"]),
// FDate = item["FDate"]?.ToString(),
// FALLAMOUNT = Convert.ToDouble(item["F_MBBA_Decimal_c1c"]),
// FYAMOUNT = Convert.ToDouble(item["F_MBBA_Decimal_vb1"]),
// FDAMOUNT = Convert.ToDouble(item["F_MBBA_Decimal_emq"]),
// FSKBIllNO = item["FSKBILLNO"]?.ToString(),
// FCreated = Convert.ToInt32(item["FCreated_Id"]),
// FSalesman = Convert.ToInt32(item["FSalesman_Id"]),
// FType = item["FType"]?.ToString(),
// FISHX = item["FISHX"]?.ToString(),
// FWeiYi = item["FWeiYi"]?.ToString(),
// });
// }
// var fBILLNO = this.Model.GetValue("FBILLNO2", e.Row);
// var fCONTRACTNUMBER = this.Model.GetValue("FCONTRACTNUMBER2", e.Row);
// //判断是否为空
// if (string.IsNullOrWhiteSpace(fCONTRACTNUMBER?.ToString()))
// {
// this.Model.SetValue("FISHX2", "", e.Row);
// this.Model.SetValue("F_MBBA_Decimal_qtr", 0, e.Row);
// //获取当前的父id
// var fPARENTROWID = this.Model.GetValue("FPARENTROWID", e.Row)?.ToString();
// DynamicObjectCollection FEntity2 = this.View.Model.DataObject["FEntity2"] as DynamicObjectCollection;
// //获取行数
// List<int> ints = new List<int>();
// foreach (var fEntity in FEntity2)
// {
// if (fEntity["PARENTROWID"]?.ToString() == fPARENTROWID && fEntity["F_RowNew"]?.ToString() == "0")
// {
// ints.Add(Convert.ToInt32(fEntity["seq"]) - 1);
// }
// }
// //循环删除子项
// for (int i = 0; i < ints.Count; i++)
// {
// this.View.Model.DeleteEntryRow("FEntity2", ints[0]);
// }
// foreach (var item in SaleBILLLIS)
// {
// if (!string.IsNullOrEmpty(item.FSKBIllNO))
// {
// string[] strings = item.FSKBIllNO?.ToString()?.Split(',');
// //判断假如是一个收款单对应多个销售订单
// if (strings.Contains(fBILLNO?.ToString()) && strings.Count() == 1)
// {
// item.FSKBIllNO = "";
// item.FISHX = "";
// item.FWeiYi = "";
// }
// //判断多个收款单对应一个销售订单
// else if (strings.Contains(fBILLNO?.ToString()) && strings.Count() > 1)
// {
// List<string> strings1 = new List<string>(strings);
// strings1.Remove(fBILLNO?.ToString());
// string strings2 = string.Join(",", strings1);
// item.FSKBIllNO = strings2;
// }
// }
// }
// }
// int n = 1;
// //判断多个销售订单对应1个收款单只删除一个或多个但不是空的情况
// if (!string.IsNullOrWhiteSpace(fCONTRACTNUMBER?.ToString()))
// {
// double sumAmount = 0;
// string[] strings = fCONTRACTNUMBER?.ToString()?.Split(',');
// var FROWID = Convert.ToString(this.View.Model.GetValue("FROWID", e.Row));
// var Rowindex = this.View.Model.GetEntryRowCount("FEntity2");
// foreach (var item in SaleBILLLIS)
// {
// if (!string.IsNullOrEmpty(item.FSKBIllNO) && item.FSKBIllNO == fBILLNO?.ToString())
// {
// if (!strings.Contains(item.FCONTRACTNUMBER))
// {
// item.FSKBIllNO = "";
// item.FISHX = "";
// item.FWeiYi = "";
// }
// }
// if (strings.Contains(item.FCONTRACTNUMBER))
// {
// item.FSKBIllNO = fBILLNO?.ToString();
// item.FISHX = "已核销配对";
// this.Model.SetValue("FISHX2", "已核销配对", e.Row);
// //this.View.Model.SetValue("FPARENTROWID", FROWID, item.FRow);
// //this.View.Model.CreateNewEntryRow("FEntity2");
// //this.View.Model.SetValue("FROWID", SequentialGuid.NewGuid().ToString(), Rowindex);
// //this.View.Model.SetValue("FPARENTROWID", FROWID, Rowindex);
// //this.View.Model.SetValue("FBILLNO2", item.FBIllNO, Rowindex);
// //if (DateTime.TryParseExact(item?.FDate, dateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime parsedDate))
// //{
// // this.View.Model.SetValue("FDate2", item?.FDate, Rowindex);
// //}
// //else
// //{
// // this.View.Model.SetValue("FDate2", DateTime.Now.AddDays(-1 * Convert.ToInt32(item?.FDate)).ToString("yyyy-MM-dd"), Rowindex);
// //}
// //this.View.Model.SetValue("F_MBBA_Decimal_imu", item.FALLAMOUNT, Rowindex);
// //this.View.Model.SetValue("FClient2", item.FClient, Rowindex);
// //this.View.Model.SetValue("FCreated2", item.FCreated, Rowindex);
// //this.View.Model.SetValue("FCONTRACTNUMBER2", item.FCONTRACTNUMBER, Rowindex);
// //this.View.Model.SetValue("FSalesman2", item.FSalesman, Rowindex);
// //this.View.UpdateView("FEntity2");
// sumAmount += item.FALLAMOUNT;
// }
// }
// this.Model.SetValue("F_MBBA_Decimal_qtr", sumAmount, e.Row);
// n = SaleBILLLIS.Count(a => strings.Contains(a.FCONTRACTNUMBER));
// }
// if (n == 0)
// {
// this.Model.SetValue("FISHX2", "", e.Row);
// }
// //删除数据
// this.View.Model.DeleteEntryData("FEntity");
// //绑定销售订单数据
// 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", SaleBILLLIS[i].FDate, i);
// //金额
// this.View.Model.SetValue("F_MBBA_Decimal_c1c", 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("F_MBBA_Decimal_vb1", SaleBILLLIS[i].FYAMOUNT, i);
// //待核销金额
// this.View.Model.SetValue("F_MBBA_Decimal_emq", SaleBILLLIS[i].FDAMOUNT, i);
// //单据编号(收款单)
// this.View.Model.SetValue("FSKBILLNO", SaleBILLLIS[i].FSKBIllNO, i);
// //是否核销匹对
// this.View.Model.SetValue("FISHX", SaleBILLLIS[i].FISHX, i);
// //是否唯一
// this.View.Model.SetValue("FWeiYi", SaleBILLLIS[i]?.FWeiYi, i);
// //商务人员
// this.View.Model.SetValue("FCreated", SaleBILLLIS[i]?.FCreated, i);
// //销售员
// this.View.Model.SetValue("FSalesman", SaleBILLLIS[i]?.FSalesman, i);
// }
// this.View.UpdateView("FEntity");
// }
//}
}
if (e.Field.Key.Equals("F_ISHX"))
{
//获取销售订单/应收单单据体数据
DynamicObjectCollection FEntity2 = this.View.Model.DataObject["FEntity2"] as DynamicObjectCollection;
//获取当前复选框的值
var IsHX = this.Model.GetValue("F_ISHX", e.Row)?.ToString();
var F_RowNew = this.Model.GetValue("F_RowNew", e.Row)?.ToString();
if (F_RowNew != "1")
return;
string PARENTROWID = this.Model.GetValue("FPARENTROWID", e.Row)?.ToString();
var dataRow = FEntity2.Where(item => item["PARENTROWID"].ToString() == PARENTROWID && int.Parse(item["F_RowNew"].ToString()) != 1).ToList();
if (IsHX.ToLower() == "true" && dataRow.Where(t => t["F_ISHX"].ToString().ToLower() == "true").Count() > 0)
{
return;
}
dataRow.ForEach(item =>
{
this.Model.SetValue("F_ISHX", IsHX, int.Parse(item["SEQ"].ToString()) - 1);
//this.Model.SetValue("F_ISGX", "False", i);
});
//查询对应的销售订单/应收单-》勾选复选框
//var fc = this.Model.GetValue("FCONTRACTNUMBER2", e.Row)?.ToString();
//if (IsHX == "True")
//{
// //查看是否为唯一
// if (!string.IsNullOrEmpty(ISWeiYi) && ISWeiYi == "否")
// {
// //获取销售订单/应收单单据体数据
// DynamicObjectCollection FEntity = this.View.Model.DataObject["FEntity"] as DynamicObjectCollection;
// for (int i = 0; i < FEntity.Count; i++)
// {
// if (FEntity[i]["FCONTRACTNUMBER"]?.ToString() == fc)
// {
// this.Model.SetValue("F_ISGX", "True", i);
// }
// }
// }
//}
//if (IsHX == "False")
//{
// int n = 0;
// //判断其他收款单是否勾选
// foreach (var item in FEntity2)
// {
// if (item["F_ISHX"]?.ToString() == "True" && item["FCONTRACTNUMBER2"]?.ToString() == fc)
// {
// n++;
// }
// }
// if (n == 0)
// {
// //查看是否为唯一
// if (!string.IsNullOrEmpty(ISWeiYi) && ISWeiYi == "否")
// {
// //获取销售订单/应收单单据体数据
// DynamicObjectCollection FEntity = this.View.Model.DataObject["FEntity"] as DynamicObjectCollection;
// for (int i = 0; i < FEntity.Count; i++)
// {
// if (FEntity[i]["FCONTRACTNUMBER"]?.ToString() == fc)
// {
// this.Model.SetValue("F_ISGX", "False", i);
// }
// }
// }
// }
//}
}
}
#endregion
public enum ENUM_ROWTYPE : int
{
Default = 0,
Header = 1,/// 0000 0000 0001表头类型数据行 
Normal = 16,///0000 0001 0000普通数据行
Expand = 32,///0000 0010 0000包含展开控件数据行
ExpandWaiting = 64,///0000 0100 0000包含展开等待数据请求行
Summary = 128///0001 0000 000汇总类型数据行 
}
public void FilterCallBack(FormResult action)
{
if (action.ReturnData != null)
{
FilterParameter returnData = action.ReturnData as FilterParameter;//过滤框返回的数据
DynamicObject dyObj = returnData.CustomFilter as DynamicObject;
//获取组织FID
DynamicObject FSaleOrg = dyObj["F_ZhuZhi2"] as DynamicObject;
string FSaleOrgId = "";
string where1 = " and 1=1";
string where2 = " and 1=1";
if (FSaleOrg != null)
{
FSaleOrgId = Convert.ToString(FSaleOrg["ID"]);
where1 += $@" AND A.FSALEORGID = {FSaleOrgId}";
where2 += $@" AND A.FSALEORGID = {FSaleOrgId}";
}
////获取客户单位
//DynamicObject CUST = dyObj["FClient"] as DynamicObject;
//string CustFid = "";
//if (CUST != null)
//{
// CustFid = Convert.ToString(CUST["ID"]);
// where1 += $@" and A.FCUSTID = '{CustFid}'";
// where2 += $@" and A.FCONTACTUNIT = '{CustFid}'";
//}
//获取多选客户单位
var ZZS = returnData.CustomFilter["FClientList"] as DynamicObjectCollection;
string CustFid = "";
if (ZZS.Count > 0)
{
List<string> zzList = new List<string>();
//循环获取多选组织FID
foreach (DynamicObject dobj in ZZS)
{
DynamicObject dynamic = dobj["FClientList"] as DynamicObject;
zzList.Add(dynamic["ID"].ToString());
}
CustFid = string.Join("','", zzList);
where1 += $@" and A.FCUSTID in ('{CustFid}')";
where2 += $@" and A.FCONTACTUNIT in ('{CustFid}')";
}
//获取收款日期
var FSDate = Convert.ToString(dyObj["F_ShouKuan1"]);
if (!string.IsNullOrWhiteSpace(FSDate))
{
where2 += $@" and A.FDATE >='{FSDate}'";
}
//获取收款结束日期
var FEDate = Convert.ToString(dyObj["F_ShouKuan2"]);
if (!string.IsNullOrWhiteSpace(FEDate))
{
DateTime end = DateTime.Parse(FEDate).Date.AddDays(1);
where2 += $@" and A.FDATE < '{end}'";
}
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");
//var FShuaXin = this.View.Model.GetValue("FShuaXin");
//调用SQL获取数据
var WriteOrderDate = SQL.SqlManage_yuyubo.GetWriteOrderDate3(this.Context, FSaleOrgId, where1);
var WriteReceiveDate = SQL.SqlManage_yuyubo.GetWriteReceiveDate3(this.Context, FSaleOrgId, where2);
SaleBILLLIS = WriteOrderDate.Select(item => new CombinaClass
{
Fid = Convert.ToInt32(item["FID"]),
FBIllNO = Convert.ToString(item["FBIllNO"]),
FCONTRACTNUMBER = Convert.ToString(item["F_CONTRACTNUMBER"]),
FClient = Convert.ToInt32(item["FCUSTID"]),
FDate = Convert.ToString(item["FDate"]),
FALLAMOUNT = Convert.ToDouble(item["FALLAMOUNT"]),
FYAMOUNT = Convert.ToDouble(item["FYAMOUNT"]),
FDAMOUNT = Convert.ToDouble(item["FDAMOUNT"]),
FCreated = Convert.ToInt32(item["FCREATORID"]),
FSalesman = Convert.ToInt32(item["FSALERID"]),
FIs30 = Convert.ToBoolean(item["FIs30"]),
FType = Convert.ToString(item["FType"]),
BenCi = Convert.ToDouble(item["BenCi"]),
F_Ordercategory2 = Convert.ToString(item["F_Ordercategory2"]),
F_Ordercategory = Convert.ToString(item["F_Ordercategory"]),
FInvoiceAmount = Convert.ToDecimal(item["FInvoiceAmount"]),
}).ToList();
ReceiveBILLLIST = WriteReceiveDate.Select(item => new CombinaClass
{
Fid = Convert.ToInt32(item["FID"]),
FBIllNO = Convert.ToString(item["FBIllNO"]),
FDate = Convert.ToString(item["FDate"]),
FALLAMOUNT = Convert.ToDouble(item["FALLAMOUNT"]),
FYAMOUNT = Convert.ToDouble(item["FYAMOUNT"]),
FDAMOUNT = Convert.ToDouble(item["FDAMOUNT"]),
FClient = Convert.ToInt32(item["FCONTACTUNIT"]),
FCreated = Convert.ToInt32(item["FCREATORID"]),
FRemark = Convert.ToString(item["FREMARK"]),
FSalesman = Convert.ToInt32(item["FSALEERID"]),
F_RowNew = 1,
BenCi = 0,
}).ToList();
var kehu = ReceiveBILLLIST.Select(t => t.FClient).Distinct().ToList();
SaleBILLLIS = SaleBILLLIS.Where(t => kehu.Contains(t.FClient)).ToList();
SaleBILLLIS2 = SaleBILLLIS.ToList();
//绑定销售订单数据
for (int i = 0; i < SaleBILLLIS2.Count; i++)
{
int rowindex = this.View.Model.GetEntryRowCount("FEntity");
this.View.Model.CreateNewEntryRow("FEntity");
//单据编号
this.View.Model.SetValue("FBILLNO", SaleBILLLIS2[i].FBIllNO, i);
//日期
this.View.Model.SetValue("FDate", DateTime.Now.AddDays(-1 * Convert.ToInt32(SaleBILLLIS2[i].FDate)).ToString("yyyy-MM-dd"), i);
//金额
this.View.Model.SetValue("F_MBBA_Decimal_c1c", SaleBILLLIS2[i].FALLAMOUNT, i);
//类型
this.View.Model.SetValue("FType", SaleBILLLIS2[i].FType, i);
//纸质合同号
this.View.Model.SetValue("FCONTRACTNUMBER", SaleBILLLIS2[i].FCONTRACTNUMBER, i);
//客户名称
this.View.Model.SetValue("FClient", SaleBILLLIS2[i].FClient, i);
//已核销金额
this.View.Model.SetValue("F_MBBA_Decimal_vb1", SaleBILLLIS2[i].FYAMOUNT, i);
//待核销金额
this.View.Model.SetValue("F_MBBA_Decimal_emq", SaleBILLLIS2[i].FDAMOUNT, i);
//商务人员
this.View.Model.SetValue("FCreated", SaleBILLLIS2[i].FCreated, i);
//销售员
this.View.Model.SetValue("FSalesman", SaleBILLLIS2[i].FSalesman, i);
//合同类型、累计开票金额
this.View.Model.SetValue("F_Ordercategory2", SaleBILLLIS2[i].F_Ordercategory2, i);
this.View.Model.SetValue("F_Ordercategory", SaleBILLLIS2[i].F_Ordercategory, i);
this.View.Model.SetValue("FInvoiceAmount", SaleBILLLIS2[i].FInvoiceAmount, i);
}
this.View.UpdateView("FEntity");
for (int i = 0; i < ReceiveBILLLIST.Count; i++)
{
int Rowindex = this.View.Model.GetEntryRowCount("FEntity2");
int RowindexNew = Rowindex;
this.View.Model.CreateNewEntryRow("FEntity2");
string FROWID = SequentialGuid.NewGuid().ToString();
this.View.Model.SetValue("FROWID", FROWID, RowindexNew);
this.View.Model.SetValue("FPARENTROWID", FROWID, RowindexNew);
this.View.Model.SetValue("FBILLNO2", ReceiveBILLLIST[i].FBIllNO, RowindexNew);
this.View.Model.SetValue("F_BenCi", ReceiveBILLLIST[i].BenCi, RowindexNew);
this.View.Model.SetValue("F_PendingAmount", ReceiveBILLLIST[i].FDAMOUNT, RowindexNew);
this.View.Model.SetValue("FDATE2", DateTime.Now.AddDays(-1 * Convert.ToInt32(ReceiveBILLLIST[i].FDate)).ToString("yyyy-MM-dd"), RowindexNew);
this.View.Model.SetValue("F_MBBA_Decimal_imu", ReceiveBILLLIST[i].FALLAMOUNT, RowindexNew);
this.View.Model.SetValue("FClient2", ReceiveBILLLIST[i].FClient, RowindexNew);
this.View.Model.SetValue("FRemark", ReceiveBILLLIST[i].FRemark, RowindexNew);
this.View.Model.SetValue("F_MBBA_Decimal_3iy", ReceiveBILLLIST[i].FYAMOUNT, RowindexNew);
this.View.Model.SetValue("F_MBBA_Decimal_lsn", ReceiveBILLLIST[i].FDAMOUNT, RowindexNew);
this.View.Model.SetValue("FCreated2", ReceiveBILLLIST[i].FCreated, RowindexNew);
this.View.Model.SetValue("FSalesman2", ReceiveBILLLIST[i].FSalesman, RowindexNew);
this.View.Model.SetValue("F_RowNew", ReceiveBILLLIST[i].F_RowNew, RowindexNew);
this.View.Model.SetValue("F_ISHX", false, RowindexNew);
}
this.View.UpdateView("FEntity2");
}
}
}
}