using DevExpress.Data.Linq; using DevExpress.Data.PLinq.Helpers; using DocumentFormat.OpenXml.Drawing.Spreadsheet; using FarPoint.Excel; 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.Core.Report.PlugIn.Args; using Kingdee.BOS.JSON; 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.Data; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web.UI.WebControls; using static Kingdee.BOS.BusinessEntity.YunZhiJia.ERPInfoEnum; 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 SaleBILLLIS = new List(); public List ReceiveBILLLIST = new List(); //拿来匹配的集合 public List SaleBILLLIS2 = new List(); int INDEXNumber = 0; private int level = 0;//层级 private string parentRowId = "";//父项ID string dateFormat = "yyyy-MM-dd HH:mm:ss"; // 指定的日期格式 int status11=1; /// /// 开始 /// /// 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(); ReceiveBILLLIST = new List(); List SaleBILLLISnew = new List(); List ReceiveBILLLISTNew = new List(); //删除四个单据体 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"); */ } /// /// 编辑按钮点击事件 /// /// 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 = new List(); 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); } } /// /// 弹出动态表单窗口 /// private void ShowDynamicForm(List 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(); // 显示动态表单 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(); ReceiveBILLLIST = new List(); //用于存储子树形的数据 var SaleBILLLIS2 = new List(); 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 fString = new List(); //修改销售订单/应收单 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; } }); } /// /// 点击按钮操作 /// /// 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")) { if (status11 == 1) { this.View.ShowWarnningMessage("请先过滤一次数据后再点击[自动核销]"); return; } status11 = 1; //#region 全部 //销售订单绑定数据 SaleBILLLIS = new List(); 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(); //获取收款单单据体数据 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(); ReceiveBILLLIST = ReceiveBILLLIST2.Where(a => a.F_RowNew == 1 && a.FISHX != "已核销配对").OrderBy(t => t.FClient).ThenBy(t => t.FCONTRACTNUMBER).ThenBy(t => t.FDate).ToList(); List FBILLNOLIST = new List(); List FClient = new List(); List result = new List(); 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 shouKuanDetail = new Dictionary(); //先挑1张收款单对应一张销售订单 //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 dasdsas = oneToOneTemp.Where(h => h.FBIllNO == "PL-XSDD20250400471").FirstOrDefault(); var saleList1 = oneToOneTemp.Select(t => t.FBIllNO).Distinct().ToList(); var ReceiveList1 = oneToOneTemp.Select(t => t.UFbillNo).Distinct().ToList(); if (saleList1.Count > ReceiveList1.Count) { List deleteFBIllNOList = new List(); 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 fString = new List(); 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 deleteFBIllNOList = new List(); 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 fString = new List(); 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); } }); } //2、收款单的待核销金额与订单的待最近30天发货通知单金额(除了医院客户) var SaleBILLLIS2Sa222 = SaleBILLLISNew.Where(t => t.FISHX != "已核销配对" && t.FDAMOUNT > 0).OrderBy(t => t.FClient).ThenByDescending(t => t.FDate).ToList(); ReceiveBILLLIST = ReceiveBILLLIST2.Where(a => a.F_RowNew == 1 && a.FISHX != "已核销配对" && a.FDAMOUNT > 0).OrderBy(t => t.FClient).ThenByDescending(t => t.FDate).ToList(); var oneToOneTemp2 = (from q in SaleBILLLIS2Sa222 join u in ReceiveBILLLIST on new { q.FClient, FDAMOUNT= q.FaHuoAmount30Days } equals new { u.FClient, u.FDAMOUNT } select new { q.FClient, q.FBIllNO, q.FCONTRACTNUMBER, u.FDAMOUNT, UFbillNo = u.FBIllNO }).ToList(); //var dasdsas = oneToOneTemp.Where(h => h.FBIllNO == "PL-XSDD20250400471").FirstOrDefault(); var saleList22 = oneToOneTemp2.Select(t => t.FBIllNO).Distinct().ToList(); var ReceiveList22 = oneToOneTemp2.Select(t => t.UFbillNo).Distinct().ToList(); if (saleList22.Count > ReceiveList22.Count) { List deleteFBIllNOList = new List(); ReceiveList22.ForEach(t => { var temp111 = oneToOneTemp2.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 fString = new List(); 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 deleteFBIllNOList = new List(); saleList22.ForEach(t => { var temp111 = oneToOneTemp2.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 fString = new List(); 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); } }); } //3、收款单的待核销金额与订单的待最近30天开票金额(只有医院客户) var SaleBILLLIS2Sa333 = SaleBILLLISNew.Where(t => t.FISHX != "已核销配对" && t.FDAMOUNT > 0 ).OrderBy(t => t.FClient).ThenByDescending(t => t.FDate).ToList(); ReceiveBILLLIST = ReceiveBILLLIST2.Where(a => a.F_RowNew == 1 && a.FISHX != "已核销配对" && a.FDAMOUNT > 0).OrderBy(t => t.FClient).ThenByDescending(t => t.FDate).ToList(); var oneToOneTemp3 = (from q in SaleBILLLIS2Sa222 join u in ReceiveBILLLIST on new { q.FClient, FDAMOUNT = q.FInvoiceAmount30Days } equals new { u.FClient, u.FDAMOUNT } select new { q.FClient, q.FBIllNO, q.FCONTRACTNUMBER, u.FDAMOUNT, UFbillNo = u.FBIllNO }).ToList(); //var dasdsas = oneToOneTemp.Where(h => h.FBIllNO == "PL-XSDD20250400471").FirstOrDefault(); var saleList33 = oneToOneTemp3.Select(t => t.FBIllNO).Distinct().ToList(); var ReceiveList33 = oneToOneTemp3.Select(t => t.UFbillNo).Distinct().ToList(); if (SaleBILLLIS2Sa333.Count > ReceiveList33.Count) { List deleteFBIllNOList = new List(); ReceiveList33.ForEach(t => { var temp111 = oneToOneTemp3.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 fString = new List(); 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 deleteFBIllNOList = new List(); saleList33.ForEach(t => { var temp111 = oneToOneTemp3.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 fString = new List(); 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.FDate).ToList(); ReceiveBILLLIST = ReceiveBILLLIST2.Where(a => a.F_RowNew == 1 && a.FISHX != "已核销配对" && a.FDAMOUNT > 0).OrderBy(t => t.FClient).ThenByDescending(t => t.FDate).ToList(); //打包式匹配法,按时间倒序逐一核销掉. ReceiveBILLLIST.ForEach(t => { var tempList = SaleBILLLIS2Sa2.Where(h => h.FClient == t.FClient && h.FISHX != "已核销配对" && t.FDAMOUNT > 0).OrderByDescending(h => h.FDate).ToList(); var FDAMOUNT = t.FDAMOUNT; List heTongList = new List(); if (t.FCONTRACTNUMBER != null) heTongList = t.FCONTRACTNUMBER.Split(',').ToList().Distinct().ToList(); if (heTongList == null) heTongList = new List(); tempList.ForEach(sale => { if (FDAMOUNT == 0) { return; } double benCi = 0; List str = new List(); if (sale.FSKBIllNO != null) str = sale.FSKBIllNO.Split(',').ToList(); if (str == null) str = new List(); 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(); if (t.FSKBIllNO != null) str = t.FSKBIllNO.Split(',').ToList(); if (str == null) str = new List(); 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 sales1 = new List { 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 fString = new List(); // 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; // } //}); ////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(); //ReceiveBILLLIST.ForEach(t => //{ // var tempList = SaleBILLLIS2Sa2.Where(h => h.FClient == t.FClient && t.FDAMOUNT >= h.FDAMOUNT && h.FISHX != "已核销配对").OrderBy(h => h.FBIllNO).ToList(); // List sales1 = new List { 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 = SaleBILLLIS2Sa2.Where(h => fbillNoList.Contains(h.FBIllNO)).ToList(); // List fString = new List(); // ReceiveBILLLTempList.ForEach(item => // { // //更新收款单数据 // if (FDAMOUNT > 0) // { // item.FSKBIllNO = t.FBIllNO; // item.FISHX = "已核销配对"; // //item.FCONTRACTNUMBER = t.FCONTRACTNUMBER; // fString.Add(item.FCONTRACTNUMBER); // } // }); // //更新销售订单数据 // t.FISHX = "已核销配对"; // string fCONTRACTNUMBER = string.Join(",", fString); // //更新收款单数据 // t.FCONTRACTNUMBER = fCONTRACTNUMBER; // } //}); #endregion #endregion ////删除数据 //this.View.Model.DeleteEntryData("FEntity"); #endregion //获取已配对的数据 List SaleBILLLISNew2 = SaleBILLLISNew.Where(a => a.FSKBIllNO != "" && a.FSKBIllNO != null).ToList(); INDEXNumber = 1; //绑定收款单数据 foreach (var item in ReceiveBILLLIST2) { 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 strings = new List(); 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); } 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 entityKey = "FEntity2"; // var grid = this.View.GetControl(entityKey); // 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); // var backColor = "#ead1dc"; // // 常规操作是直接使用grid.SetRowBackcolor函数,如果不生效,可以尝试用自定义封装的GridSetRowBackcolor函数 // GridSetRowBackcolor(this.View, entityKey, backColor, int.Parse(item["SEQ"].ToString()) - 1); // //grid.SetRowBackcolor(backColor, int.Parse(item["SEQ"].ToString()) - 1); // } //} 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(); //存储收款单 var fCombinaAddSK = new List(); 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 errorList = new List(); //var eee = ReceiveBILLLIST2.Where(t => (t.FALLAMOUNT- t.FYAMOUNT) < 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 strings1 = new List(); List successFbillNo = new List(); int ISXSNUM = 0; errorList = new List(); //循环收款单/新增核销记录 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++; } //string tempsql=$@"update T_AR_RECEIVEBILL set F_contractnumber='{item.FCONTRACTNUMBER}' where FBILLNO='{item.FBIllNO}' ;": //DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null); } 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 SaleBILLLIStext = new List(); //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(单据体值更新事件) /// /// 单据体值更新事件 /// /// 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(); // 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 ints = new List(); // 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 strings1 = new List(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) { status11 = 0; 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 zzList = new List(); //循环获取多选组织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}')"; } //this.View.ShowMessage(string.Format("选中的客户是:{0}s", 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(); ReceiveBILLLIST = new List(); List SaleBILLLISnew = new List(); List ReceiveBILLLISTNew = new List(); //删除四个单据体 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"]), FaHuoAmount30Days = Convert.ToDouble(item["FaHuoAmount30Days"]), FInvoiceAmount30Days = Convert.ToDouble(item["FInvoiceAmount30Days"]), }).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"); } } //public override void AfterBindData(EventArgs e) //{ // base.AfterBindData(e); // var entityKey = "FSaleOrderEntry"; // var backColor = "#ead1dc"; // // 常规操作是直接使用grid.SetRowBackcolor函数,如果不生效,可以尝试用自定义封装的GridSetRowBackcolor函数 // var grid = this.View.GetControl(entityKey); // grid.SetRowBackcolor(backColor, 1); // //GridSetRowBackcolor(this.View, entityKey, backColor, 1); //} /// /// 设置表格背景色 /// /// 当前动态表单的View层接口 /// 单据体的标识 /// 颜色代码 /// 要设置颜色的数据行的行索引 private static void GridSetRowBackcolor(IDynamicFormView view, string entityKey, string color, int rowIndex) { var value = new JSONObject(); value[rowIndex.ToString()] = color; var jo = new JSONObject(); jo["backcolor"] = value; var grid = view.GetControl(entityKey); var formState = view.GetService(); formState.AftInvokeControlMethod(grid.ControlAppearance, "UpdateFieldStates", jo); } } }