2025-04-18 11:58:17 +08:00
|
|
|
|
using DevExpress.Data.Linq;
|
|
|
|
|
using DevExpress.Data.PLinq.Helpers;
|
2025-04-10 11:06:06 +08:00
|
|
|
|
using DocumentFormat.OpenXml.Drawing.Spreadsheet;
|
2025-04-19 14:44:32 +08:00
|
|
|
|
using FarPoint.Excel;
|
2025-04-07 21:06:39 +08:00
|
|
|
|
using Kingdee.BOS.App.Core.Utils;
|
|
|
|
|
using Kingdee.BOS.BusinessEntity.BusinessFlow;
|
2025-04-18 10:10:08 +08:00
|
|
|
|
using Kingdee.BOS.Core.CommonFilter;
|
2025-04-07 21:06:39 +08:00
|
|
|
|
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;
|
2025-04-10 09:38:34 +08:00
|
|
|
|
using Kingdee.BOS.Core.List;
|
2025-04-07 21:06:39 +08:00
|
|
|
|
using Kingdee.BOS.Core.Msg;
|
2025-04-18 11:58:17 +08:00
|
|
|
|
using Kingdee.BOS.Core.Report.PlugIn.Args;
|
|
|
|
|
using Kingdee.BOS.JSON;
|
2025-04-07 21:06:39 +08:00
|
|
|
|
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;
|
2025-04-19 14:44:32 +08:00
|
|
|
|
using System.Data;
|
2025-04-07 21:06:39 +08:00
|
|
|
|
using System.Globalization;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using System.Web.UI.WebControls;
|
2025-04-22 19:35:40 +08:00
|
|
|
|
using static Kingdee.BOS.BusinessEntity.YunZhiJia.ERPInfoEnum;
|
2025-04-07 21:06:39 +08:00
|
|
|
|
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"; // 指定的日期格式
|
2025-04-22 19:35:40 +08:00
|
|
|
|
int status11=1;
|
2025-05-07 20:08:40 +08:00
|
|
|
|
int SourceType = 0;
|
2025-04-07 21:06:39 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// 开始
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="e"></param>
|
|
|
|
|
public override void OnLoad(EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
base.OnLoad(e);
|
2025-04-18 10:10:08 +08:00
|
|
|
|
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;
|
|
|
|
|
/*
|
2025-04-07 21:06:39 +08:00
|
|
|
|
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");
|
|
|
|
|
|
2025-04-18 10:10:08 +08:00
|
|
|
|
|
2025-04-07 21:06:39 +08:00
|
|
|
|
//调用SQL获取数据
|
|
|
|
|
var WriteOrderDate = SQL.SqlManage_yuyubo.GetWriteOrderDate3(this.Context, Convert.ToString(FOrgId));
|
2025-04-18 10:10:08 +08:00
|
|
|
|
var WriteReceiveDate = SQL.SqlManage_yuyubo.GetWriteReceiveDate3(this.Context, Convert.ToString(FOrgId));
|
2025-04-07 21:06:39 +08:00
|
|
|
|
SaleBILLLIS = WriteOrderDate.Select(item => new CombinaClass
|
|
|
|
|
{
|
2025-04-18 10:10:08 +08:00
|
|
|
|
Fid = Convert.ToInt32(item["FID"]),
|
2025-04-07 21:06:39 +08:00
|
|
|
|
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"]),
|
2025-04-08 20:13:20 +08:00
|
|
|
|
BenCi = Convert.ToDouble(item["BenCi"]),
|
2025-04-14 20:01:23 +08:00
|
|
|
|
F_Ordercategory2 = Convert.ToString(item["F_Ordercategory2"]),
|
|
|
|
|
F_Ordercategory = Convert.ToString(item["F_Ordercategory"]),
|
|
|
|
|
FInvoiceAmount = Convert.ToDecimal(item["FInvoiceAmount"]),
|
2025-04-07 21:06:39 +08:00
|
|
|
|
}).ToList();
|
|
|
|
|
|
2025-04-18 10:10:08 +08:00
|
|
|
|
|
2025-04-07 21:06:39 +08:00
|
|
|
|
ReceiveBILLLIST = WriteReceiveDate.Select(item => new CombinaClass
|
|
|
|
|
{
|
2025-04-08 20:13:20 +08:00
|
|
|
|
Fid = Convert.ToInt32(item["FID"]),
|
2025-04-07 21:06:39 +08:00
|
|
|
|
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"]),
|
2025-04-08 20:13:20 +08:00
|
|
|
|
F_RowNew = 1,
|
2025-04-18 10:10:08 +08:00
|
|
|
|
BenCi = 0,
|
2025-04-07 21:06:39 +08:00
|
|
|
|
}).ToList();
|
2025-04-10 18:33:42 +08:00
|
|
|
|
|
|
|
|
|
var kehu = ReceiveBILLLIST.Select(t => t.FClient).Distinct().ToList();
|
|
|
|
|
SaleBILLLIS = SaleBILLLIS.Where(t => kehu.Contains(t.FClient)).ToList();
|
2025-04-07 21:06:39 +08:00
|
|
|
|
SaleBILLLIS2 = SaleBILLLIS.ToList();
|
|
|
|
|
|
|
|
|
|
//绑定销售订单数据
|
|
|
|
|
for (int i = 0; i < SaleBILLLIS2.Count; i++)
|
|
|
|
|
{
|
2025-04-18 10:10:08 +08:00
|
|
|
|
|
2025-04-07 21:06:39 +08:00
|
|
|
|
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);
|
2025-04-14 20:01:23 +08:00
|
|
|
|
//合同类型、累计开票金额
|
|
|
|
|
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);
|
|
|
|
|
|
|
|
|
|
|
2025-04-07 21:06:39 +08:00
|
|
|
|
}
|
2025-04-14 20:01:23 +08:00
|
|
|
|
|
2025-04-07 21:06:39 +08:00
|
|
|
|
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);
|
2025-04-08 20:13:20 +08:00
|
|
|
|
this.View.Model.SetValue("F_BenCi", ReceiveBILLLIST[i].BenCi, RowindexNew);
|
|
|
|
|
this.View.Model.SetValue("F_PendingAmount", ReceiveBILLLIST[i].FDAMOUNT, RowindexNew);
|
2025-04-07 21:06:39 +08:00
|
|
|
|
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);
|
2025-04-10 09:38:34 +08:00
|
|
|
|
this.View.Model.SetValue("F_RowNew", ReceiveBILLLIST[i].F_RowNew, RowindexNew);
|
|
|
|
|
this.View.Model.SetValue("F_ISHX", false, RowindexNew);
|
|
|
|
|
|
2025-04-07 21:06:39 +08:00
|
|
|
|
}
|
|
|
|
|
this.View.UpdateView("FEntity2");
|
2025-04-18 10:10:08 +08:00
|
|
|
|
*/
|
2025-04-07 21:06:39 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <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();
|
2025-04-18 10:10:08 +08:00
|
|
|
|
|
2025-04-07 21:06:39 +08:00
|
|
|
|
|
|
|
|
|
//获取纸质合同号
|
|
|
|
|
List<string> fString = new List<string>();
|
|
|
|
|
|
|
|
|
|
//修改销售订单/应收单
|
|
|
|
|
foreach (var item in stringFBILLNOANDList[0].FBILLNOList)
|
|
|
|
|
{
|
2025-04-18 10:10:08 +08:00
|
|
|
|
|
|
|
|
|
var item2 = SaleBILLLIS.FirstOrDefault(h => h.FBIllNO == item.FBILLNO);
|
2025-04-07 21:06:39 +08:00
|
|
|
|
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);
|
|
|
|
|
|
2025-04-18 10:10:08 +08:00
|
|
|
|
//点击过滤按钮,弹出过滤窗体
|
|
|
|
|
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));
|
|
|
|
|
}
|
2025-04-07 21:06:39 +08:00
|
|
|
|
//自动匹配
|
|
|
|
|
if (e.BarItemKey.ToString().Equals("MBBA_tbButton_2"))
|
|
|
|
|
{
|
2025-04-22 19:35:40 +08:00
|
|
|
|
if (status11 == 1)
|
|
|
|
|
{
|
|
|
|
|
this.View.ShowWarnningMessage("请先过滤一次数据后再点击[自动核销]");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
status11 = 1;
|
|
|
|
|
|
2025-04-07 21:06:39 +08:00
|
|
|
|
//#region 全部
|
|
|
|
|
//销售订单绑定数据
|
|
|
|
|
SaleBILLLIS = new List<CombinaClass>();
|
|
|
|
|
DynamicObjectCollection FEntity = this.View.Model.DataObject["FEntity"] as DynamicObjectCollection;
|
2025-04-18 10:10:08 +08:00
|
|
|
|
|
2025-04-07 21:06:39 +08:00
|
|
|
|
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(),
|
2025-04-28 16:04:47 +08:00
|
|
|
|
FaHuoAmount30Days = Convert.ToDouble( item["FaHuoAmount30Days"].ToString()),
|
|
|
|
|
FInvoiceAmount30Days= Convert.ToDouble(item["FInvoiceAmount30Days"].ToString()),
|
|
|
|
|
|
2025-04-07 21:06:39 +08:00
|
|
|
|
}).ToList();
|
|
|
|
|
var SaleBILLLISNew = SaleBILLLIS.Where(a => a.FISHX != "已核销配对").ToList();
|
|
|
|
|
var ReceiveBILLLIST2 = new List<CombinaClass>();
|
|
|
|
|
//获取收款单单据体数据
|
|
|
|
|
DynamicObjectCollection FEntity2 = this.View.Model.DataObject["FEntity2"] as DynamicObjectCollection;
|
2025-04-18 10:10:08 +08:00
|
|
|
|
|
2025-04-07 21:06:39 +08:00
|
|
|
|
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>();
|
2025-04-18 10:10:08 +08:00
|
|
|
|
ReceiveBILLLIST = ReceiveBILLLIST2.Where(a => a.F_RowNew == 1 && a.FISHX != "已核销配对").OrderBy(t => t.FClient).ThenBy(t => t.FCONTRACTNUMBER).ThenBy(t => t.FDate).ToList();
|
2025-04-07 21:06:39 +08:00
|
|
|
|
List<string> FBILLNOLIST = new List<string>();
|
|
|
|
|
List<int> FClient = new List<int>();
|
|
|
|
|
List<DataItem> result = new List<DataItem>();
|
2025-04-18 10:10:08 +08:00
|
|
|
|
var FStartTime = DateTime.Now;
|
2025-04-07 21:06:39 +08:00
|
|
|
|
|
|
|
|
|
#region 新版 2025-04-07
|
|
|
|
|
#region 匹配销售订单
|
2025-05-07 20:08:40 +08:00
|
|
|
|
var SaleBILLLIS2Sal = SaleBILLLIS2.Where(t => t.FISHX != "已核销配对").ToList();
|
2025-04-07 21:06:39 +08:00
|
|
|
|
//将销售订单根据客户分组
|
|
|
|
|
//var FClientList2 = SaleBILLLIS2Sal.GroupBy(t => t.FClient).ToList();
|
|
|
|
|
//var FClientReceiveBillList= ReceiveBILLLIST
|
|
|
|
|
|
2025-04-08 20:13:20 +08:00
|
|
|
|
Dictionary<string, double> shouKuanDetail = new Dictionary<string, double>();
|
|
|
|
|
|
2025-04-07 21:06:39 +08:00
|
|
|
|
//先挑1张收款单对应一张销售订单
|
2025-04-24 14:01:46 +08:00
|
|
|
|
//1、收款单的待核销金额与订单的待核销金额
|
2025-04-07 21:06:39 +08:00
|
|
|
|
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();
|
2025-04-22 11:34:03 +08:00
|
|
|
|
//var dasdsas = oneToOneTemp.Where(h => h.FBIllNO == "PL-XSDD20250400471").FirstOrDefault();
|
2025-04-07 21:06:39 +08:00
|
|
|
|
var saleList1 = oneToOneTemp.Select(t => t.FBIllNO).Distinct().ToList();
|
|
|
|
|
var ReceiveList1 = oneToOneTemp.Select(t => t.UFbillNo).Distinct().ToList();
|
2025-04-28 16:04:47 +08:00
|
|
|
|
if (saleList1.Count() > ReceiveList1.Count())
|
2025-04-07 21:06:39 +08:00
|
|
|
|
{
|
|
|
|
|
List<string> deleteFBIllNOList = new List<string>();
|
|
|
|
|
ReceiveList1.ForEach(t =>
|
|
|
|
|
{
|
|
|
|
|
|
2025-04-08 20:13:20 +08:00
|
|
|
|
var temp111 = oneToOneTemp.FirstOrDefault(h => h.UFbillNo == t && !deleteFBIllNOList.Contains(h.FBIllNO));
|
|
|
|
|
if (temp111 == null)
|
|
|
|
|
return;
|
|
|
|
|
var temp11 = temp111.FBIllNO;
|
2025-04-07 21:06:39 +08:00
|
|
|
|
deleteFBIllNOList.Add(temp11);
|
2025-04-18 10:10:08 +08:00
|
|
|
|
var item = SaleBILLLISNew.Where(h => h.FBIllNO == temp11).OrderBy(h => h.FDate).FirstOrDefault();
|
2025-04-07 21:06:39 +08:00
|
|
|
|
//更新销售订单数据
|
|
|
|
|
item.FSKBIllNO = t;
|
|
|
|
|
item.FISHX = "已核销配对";
|
2025-04-08 20:13:20 +08:00
|
|
|
|
item.BenCi = temp111.FDAMOUNT;
|
|
|
|
|
item.FDAMOUNT = item.FDAMOUNT - item.BenCi;
|
|
|
|
|
|
|
|
|
|
shouKuanDetail.Add(t + "," + item.FBIllNO, item.BenCi);
|
|
|
|
|
//item.FYAMOUNT = item.FYAMOUNT + item.BenCi;
|
|
|
|
|
//item.=
|
2025-04-07 21:06:39 +08:00
|
|
|
|
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 = "已核销配对";
|
2025-04-08 20:13:20 +08:00
|
|
|
|
receiveItemTemp.BenCi = temp111.FDAMOUNT;
|
|
|
|
|
receiveItemTemp.FDAMOUNT = receiveItemTemp.FDAMOUNT - receiveItemTemp.BenCi;
|
|
|
|
|
//receiveItemTemp.FYAMOUNT = receiveItemTemp.FYAMOUNT + receiveItemTemp.BenCi;
|
2025-04-07 21:06:39 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
List<string> deleteFBIllNOList = new List<string>();
|
|
|
|
|
saleList1.ForEach(t =>
|
|
|
|
|
{
|
2025-04-18 10:10:08 +08:00
|
|
|
|
var temp111 = oneToOneTemp.Where(h => h.FBIllNO == t && !deleteFBIllNOList.Contains(h.UFbillNo)).OrderBy(h => h.UFbillNo).FirstOrDefault();
|
2025-04-08 20:13:20 +08:00
|
|
|
|
if (temp111 == null)
|
|
|
|
|
return;
|
|
|
|
|
var temp11 = temp111.UFbillNo;
|
2025-04-07 21:06:39 +08:00
|
|
|
|
deleteFBIllNOList.Add(temp11);
|
|
|
|
|
var item = SaleBILLLISNew.FirstOrDefault(h => h.FBIllNO == t);
|
|
|
|
|
//更新销售订单数据
|
|
|
|
|
item.FSKBIllNO = t;
|
|
|
|
|
item.FISHX = "已核销配对";
|
2025-04-08 20:13:20 +08:00
|
|
|
|
item.BenCi = temp111.FDAMOUNT;
|
|
|
|
|
item.FDAMOUNT = item.FDAMOUNT - item.BenCi;
|
|
|
|
|
//item.FYAMOUNT = item.FYAMOUNT + item.BenCi;
|
2025-04-07 21:06:39 +08:00
|
|
|
|
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 = "已核销配对";
|
2025-04-08 20:13:20 +08:00
|
|
|
|
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);
|
2025-04-07 21:06:39 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
2025-04-24 14:01:46 +08:00
|
|
|
|
//2、收款单的待核销金额与订单的待最近30天发货通知单金额(除了医院客户)
|
2025-04-24 14:19:19 +08:00
|
|
|
|
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();
|
2025-04-24 14:01:46 +08:00
|
|
|
|
|
|
|
|
|
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();
|
2025-04-28 16:04:47 +08:00
|
|
|
|
if (saleList22.Count() > ReceiveList22.Count())
|
2025-04-24 14:01:46 +08:00
|
|
|
|
{
|
|
|
|
|
List<string> deleteFBIllNOList = new List<string>();
|
|
|
|
|
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<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>();
|
|
|
|
|
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<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);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2025-05-07 20:08:40 +08:00
|
|
|
|
|
|
|
|
|
if (SourceType == 0) //只有销售单有这两种匹配逻辑
|
2025-04-24 14:19:19 +08:00
|
|
|
|
{
|
2025-05-07 20:08:40 +08:00
|
|
|
|
//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 SaleBILLLIS2Sa333
|
|
|
|
|
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())
|
2025-04-24 14:19:19 +08:00
|
|
|
|
{
|
2025-05-07 20:08:40 +08:00
|
|
|
|
List<string> deleteFBIllNOList = new List<string>();
|
|
|
|
|
ReceiveList33.ForEach(t =>
|
2025-04-24 14:19:19 +08:00
|
|
|
|
{
|
2025-05-07 20:08:40 +08:00
|
|
|
|
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<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;
|
|
|
|
|
}
|
2025-04-24 14:19:19 +08:00
|
|
|
|
|
2025-05-07 20:08:40 +08:00
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
else
|
2025-04-24 14:19:19 +08:00
|
|
|
|
{
|
2025-05-07 20:08:40 +08:00
|
|
|
|
List<string> deleteFBIllNOList = new List<string>();
|
|
|
|
|
saleList33.ForEach(t =>
|
2025-04-24 14:19:19 +08:00
|
|
|
|
{
|
2025-05-07 20:08:40 +08:00
|
|
|
|
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<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);
|
|
|
|
|
}
|
2025-04-24 14:19:19 +08:00
|
|
|
|
|
2025-05-07 20:08:40 +08:00
|
|
|
|
});
|
|
|
|
|
}
|
2025-04-24 14:01:46 +08:00
|
|
|
|
|
2025-05-07 20:08:40 +08:00
|
|
|
|
//先挑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();
|
|
|
|
|
//打包式匹配法,按时间倒序逐一核销掉.
|
2025-04-24 14:01:46 +08:00
|
|
|
|
|
2025-05-07 20:08:40 +08:00
|
|
|
|
ReceiveBILLLIST.ForEach(t =>
|
2025-04-07 21:06:39 +08:00
|
|
|
|
{
|
2025-05-07 20:08:40 +08:00
|
|
|
|
var tempList = SaleBILLLIS2Sa2.Where(h => h.FClient == t.FClient && h.FISHX != "已核销配对" && t.FDAMOUNT > 0).OrderByDescending(h => h.FDate).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 =>
|
2025-04-08 20:13:20 +08:00
|
|
|
|
{
|
2025-05-07 20:08:40 +08:00
|
|
|
|
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;
|
|
|
|
|
}
|
2025-04-18 10:10:08 +08:00
|
|
|
|
|
2025-05-07 20:08:40 +08:00
|
|
|
|
//sale.FYAMOUNT = sale.FYAMOUNT + sale.BenCi;
|
|
|
|
|
heTongList.Add(sale.FCONTRACTNUMBER);
|
|
|
|
|
heTongList = heTongList.Distinct().ToList();
|
2025-04-08 20:13:20 +08:00
|
|
|
|
str = new List<string>();
|
2025-05-07 20:08:40 +08:00
|
|
|
|
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 = "已核销配对";
|
|
|
|
|
}
|
2025-04-07 21:06:39 +08:00
|
|
|
|
|
2025-05-07 20:08:40 +08:00
|
|
|
|
});
|
2025-04-07 21:06:39 +08:00
|
|
|
|
|
2025-05-07 20:08:40 +08:00
|
|
|
|
});
|
|
|
|
|
}
|
2025-04-08 20:13:20 +08:00
|
|
|
|
#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();
|
2025-04-07 21:06:39 +08:00
|
|
|
|
|
2025-04-08 20:13:20 +08:00
|
|
|
|
// 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);
|
2025-04-07 21:06:39 +08:00
|
|
|
|
|
2025-04-08 20:13:20 +08:00
|
|
|
|
// }
|
|
|
|
|
// });
|
|
|
|
|
// //更新销售订单数据
|
|
|
|
|
// t.FISHX = "已核销配对";
|
|
|
|
|
// string fCONTRACTNUMBER = string.Join(",", fString);
|
|
|
|
|
// //更新收款单数据
|
|
|
|
|
// t.FSKBIllNO = fCONTRACTNUMBER;
|
|
|
|
|
// }
|
2025-04-07 21:06:39 +08:00
|
|
|
|
|
2025-04-08 20:13:20 +08:00
|
|
|
|
//});
|
2025-04-07 21:06:39 +08:00
|
|
|
|
|
2025-04-18 13:42:20 +08:00
|
|
|
|
////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<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 = SaleBILLLIS2Sa2.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.FCONTRACTNUMBER);
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
// });
|
|
|
|
|
// //更新销售订单数据
|
|
|
|
|
// t.FISHX = "已核销配对";
|
|
|
|
|
// string fCONTRACTNUMBER = string.Join(",", fString);
|
|
|
|
|
// //更新收款单数据
|
|
|
|
|
// t.FCONTRACTNUMBER = fCONTRACTNUMBER;
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
//});
|
|
|
|
|
|
2025-04-07 21:06:39 +08:00
|
|
|
|
#endregion
|
2025-04-08 20:13:20 +08:00
|
|
|
|
#endregion
|
|
|
|
|
////删除数据
|
|
|
|
|
//this.View.Model.DeleteEntryData("FEntity");
|
2025-04-07 21:06:39 +08:00
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
//获取已配对的数据
|
2025-04-18 10:10:08 +08:00
|
|
|
|
List<CombinaClass> SaleBILLLISNew2 = SaleBILLLISNew.Where(a => a.FSKBIllNO != "" && a.FSKBIllNO != null).ToList();
|
2025-04-24 14:01:46 +08:00
|
|
|
|
INDEXNumber = 1;
|
2025-04-18 11:58:17 +08:00
|
|
|
|
|
2025-04-07 21:06:39 +08:00
|
|
|
|
//绑定收款单数据
|
2025-04-22 11:34:03 +08:00
|
|
|
|
foreach (var item in ReceiveBILLLIST2)
|
2025-04-07 21:06:39 +08:00
|
|
|
|
{
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(item.FCONTRACTNUMBER))
|
|
|
|
|
{
|
2025-04-08 20:13:20 +08:00
|
|
|
|
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);
|
2025-04-07 21:06:39 +08:00
|
|
|
|
var FROWID = Convert.ToString(this.View.Model.GetValue("FROWID", item.FRow));
|
|
|
|
|
var sumAmount = this.Model.GetValue("F_MBBA_Decimal_imu", item.FRow);
|
2025-04-08 20:13:20 +08:00
|
|
|
|
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);
|
2025-04-18 11:58:17 +08:00
|
|
|
|
this.View.Model.SetValue("F_ISHX", false, item.FRow);
|
|
|
|
|
|
2025-04-08 20:13:20 +08:00
|
|
|
|
List<string> strings = new List<string>();
|
|
|
|
|
if (item.FCONTRACTNUMBER != null)
|
2025-04-18 10:10:08 +08:00
|
|
|
|
strings = item.FCONTRACTNUMBER.Split(',').ToList();
|
2025-04-08 20:13:20 +08:00
|
|
|
|
|
|
|
|
|
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++)
|
2025-04-07 21:06:39 +08:00
|
|
|
|
{
|
2025-05-07 20:08:40 +08:00
|
|
|
|
double benci = 0;
|
|
|
|
|
if (shouKuanDetail.ContainsKey(item.FBIllNO + "," + tempList2[i].FBIllNO))
|
|
|
|
|
{
|
|
|
|
|
benci = shouKuanDetail[item.FBIllNO + "," + tempList2[i].FBIllNO];
|
|
|
|
|
}
|
2025-04-08 20:13:20 +08:00
|
|
|
|
this.View.Model.SetValue("FPARENTROWID", FROWID, item.FRow);
|
2025-05-07 20:08:40 +08:00
|
|
|
|
if(benci==0)
|
|
|
|
|
continue;
|
2025-04-08 20:13:20 +08:00
|
|
|
|
this.View.Model.CreateNewEntryRow("FEntity2");
|
2025-05-08 13:49:43 +08:00
|
|
|
|
this.View.Model.SetValue("FROWID", Guid.NewGuid().ToString(), Rowindex );
|
|
|
|
|
this.View.Model.SetValue("FPARENTROWID", FROWID, Rowindex );
|
|
|
|
|
this.View.Model.SetValue("FBILLNO2", tempList2[i].FBIllNO, Rowindex );
|
2025-05-07 20:08:40 +08:00
|
|
|
|
if (DateTime.TryParseExact(tempList2[i].FDate, dateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime parsedDate))
|
2025-04-07 21:06:39 +08:00
|
|
|
|
{
|
2025-05-08 13:49:43 +08:00
|
|
|
|
this.View.Model.SetValue("FDate2", tempList2[i].FDate, Rowindex );
|
2025-04-07 21:06:39 +08:00
|
|
|
|
}
|
2025-04-08 20:13:20 +08:00
|
|
|
|
else
|
2025-04-07 21:06:39 +08:00
|
|
|
|
{
|
2025-05-08 13:49:43 +08:00
|
|
|
|
this.View.Model.SetValue("FDate2", DateTime.Now.AddDays(-1 * Convert.ToInt32(tempList2[i].FDate)).ToString("yyyy-MM-dd"), Rowindex );
|
2025-04-18 10:10:08 +08:00
|
|
|
|
}
|
2025-05-08 13:49:43 +08:00
|
|
|
|
this.View.Model.SetValue("F_MBBA_Decimal_imu", tempList2[i].FALLAMOUNT, Rowindex );
|
|
|
|
|
this.View.Model.SetValue("FClient2", tempList2[i].FClient, Rowindex );
|
|
|
|
|
this.View.Model.SetValue("F_RowNew", 2, Rowindex );
|
|
|
|
|
this.View.Model.SetValue("FCreated2", tempList2[i].FCreated, Rowindex );
|
|
|
|
|
this.View.Model.SetValue("FCONTRACTNUMBER2", tempList2[i].FCONTRACTNUMBER, Rowindex );
|
|
|
|
|
this.View.Model.SetValue("FSalesman2", tempList2[i].FSalesman, Rowindex );
|
|
|
|
|
this.View.Model.SetValue("F_MBBA_Decimal_qtr", tempList2[i].FDAMOUNT, Rowindex );
|
|
|
|
|
this.View.Model.SetValue("F_PendingAmount", tempList2[i].FDAMOUNT, Rowindex );
|
|
|
|
|
this.View.Model.SetValue("F_BenCi", benci, Rowindex );
|
|
|
|
|
this.View.Model.SetValue("F_MBBA_Decimal_3iy", tempList2[i].FYAMOUNT, Rowindex );
|
|
|
|
|
this.View.Model.SetValue("F_ISHX", false, Rowindex );
|
2025-04-08 20:13:20 +08:00
|
|
|
|
|
2025-04-07 21:06:39 +08:00
|
|
|
|
}
|
2025-04-18 13:42:20 +08:00
|
|
|
|
|
|
|
|
|
|
2025-04-07 21:06:39 +08:00
|
|
|
|
this.Model.SetValue("FROWEXPANDTYPE", (int)ENUM_ROWTYPE.Expand, item.FRow);
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-04-10 11:06:06 +08:00
|
|
|
|
this.View.UpdateView("FEntity2");
|
2025-04-07 21:06:39 +08:00
|
|
|
|
|
2025-04-24 14:01:46 +08:00
|
|
|
|
//处理树形表单的样式
|
|
|
|
|
//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<EntryGrid>(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);
|
|
|
|
|
// }
|
|
|
|
|
//}
|
2025-04-07 21:06:39 +08:00
|
|
|
|
|
|
|
|
|
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)
|
2025-04-18 10:10:08 +08:00
|
|
|
|
{
|
2025-04-07 21:06:39 +08:00
|
|
|
|
#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;
|
2025-04-18 10:10:08 +08:00
|
|
|
|
|
2025-04-10 09:38:34 +08:00
|
|
|
|
var selectList = FEntity2.Where(t => t["F_ISHX"] != null && t["F_ISHX"].ToString().ToLower() == "true").ToList();
|
|
|
|
|
if (selectList.Count == 0 && selectList.Count == 0)
|
2025-04-07 21:06:39 +08:00
|
|
|
|
{
|
2025-04-10 09:38:34 +08:00
|
|
|
|
this.View.ShowWarnningMessage("未选择核销数据!");
|
|
|
|
|
return;
|
2025-04-07 21:06:39 +08:00
|
|
|
|
}
|
2025-04-10 09:38:34 +08:00
|
|
|
|
string hetong = "";
|
2025-04-07 21:06:39 +08:00
|
|
|
|
|
2025-04-10 09:38:34 +08:00
|
|
|
|
//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);
|
2025-04-18 10:10:08 +08:00
|
|
|
|
var ReceiveBILLLIST2 = selectList.Select(item => new CombinaClass()
|
2025-04-10 09:38:34 +08:00
|
|
|
|
{
|
|
|
|
|
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"]),
|
2025-04-18 10:10:08 +08:00
|
|
|
|
BenCi = Convert.ToDouble(item["BenCi"]),
|
|
|
|
|
FROWID = Convert.ToString(item["ROWID"]),
|
2025-04-10 09:38:34 +08:00
|
|
|
|
FPARENTROWID = Convert.ToString(item["PARENTROWID"]),
|
2025-04-18 10:10:08 +08:00
|
|
|
|
|
2025-04-10 09:38:34 +08:00
|
|
|
|
});
|
|
|
|
|
List<string> errorList = new List<string>();
|
2025-04-19 14:44:32 +08:00
|
|
|
|
//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);
|
|
|
|
|
//}
|
2025-04-18 10:10:08 +08:00
|
|
|
|
|
|
|
|
|
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();
|
2025-04-10 09:38:34 +08:00
|
|
|
|
var heji = sales.Sum(t => t.BenCi);
|
2025-04-18 10:10:08 +08:00
|
|
|
|
if (heji != item.BenCi || heji == 0 || sales.Count == 0)
|
|
|
|
|
errorList.Add(item.FBIllNO + $@" 明细={heji} 收款单={item.BenCi} ");
|
2025-04-10 09:38:34 +08:00
|
|
|
|
else
|
2025-04-07 21:06:39 +08:00
|
|
|
|
{
|
2025-04-10 09:38:34 +08:00
|
|
|
|
if (errorList.Count == 0)
|
2025-04-18 10:10:08 +08:00
|
|
|
|
{
|
2025-04-10 09:38:34 +08:00
|
|
|
|
//创建对象存储
|
|
|
|
|
var SKList = new CombinaAddSK();
|
2025-04-07 21:06:39 +08:00
|
|
|
|
|
2025-04-10 09:38:34 +08:00
|
|
|
|
//获取纸质合同号
|
|
|
|
|
var stringSplit = sales.Select(t => t.FCONTRACTNUMBER).Distinct().ToList();
|
2025-04-07 21:06:39 +08:00
|
|
|
|
|
2025-04-10 09:38:34 +08:00
|
|
|
|
//找到对应销售订单
|
2025-04-18 10:10:08 +08:00
|
|
|
|
var nTestList = sales.Select(item2 => new CombinaAddClass1
|
2025-04-10 09:38:34 +08:00
|
|
|
|
{
|
|
|
|
|
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;
|
2025-04-18 10:10:08 +08:00
|
|
|
|
SKList.FCONTRACTNUMBER = string.Join(",", sales.Select(t => t.FCONTRACTNUMBER).Distinct().ToList());
|
2025-04-10 09:38:34 +08:00
|
|
|
|
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);
|
2025-04-07 21:06:39 +08:00
|
|
|
|
}
|
2025-04-18 10:10:08 +08:00
|
|
|
|
|
2025-04-07 21:06:39 +08:00
|
|
|
|
}
|
|
|
|
|
|
2025-04-10 09:38:34 +08:00
|
|
|
|
});
|
2025-04-07 21:06:39 +08:00
|
|
|
|
|
2025-04-10 09:38:34 +08:00
|
|
|
|
if (errorList.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
ErrMessage = true;
|
|
|
|
|
hetong = string.Join(",", errorList);
|
2025-04-18 10:10:08 +08:00
|
|
|
|
Message = string.Format($"收款单号:'{hetong}'的本次核销金额不等于勾选的销售订单的合计本次核销金额,不允许核销\r\n");
|
2025-04-10 09:38:34 +08:00
|
|
|
|
if (ErrMessage)
|
2025-04-07 21:06:39 +08:00
|
|
|
|
{
|
2025-04-10 09:38:34 +08:00
|
|
|
|
this.View.ShowErrMessage(Message);
|
2025-04-18 10:10:08 +08:00
|
|
|
|
}
|
2025-04-10 09:38:34 +08:00
|
|
|
|
return;
|
2025-04-18 10:10:08 +08:00
|
|
|
|
}
|
2025-04-07 21:06:39 +08:00
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
//用于存储生成成功的收款单
|
|
|
|
|
List<string> strings1 = new List<string>();
|
2025-04-10 09:38:34 +08:00
|
|
|
|
List<string> successFbillNo = new List<string>();
|
|
|
|
|
|
2025-04-07 21:06:39 +08:00
|
|
|
|
int ISXSNUM = 0;
|
2025-04-10 13:30:55 +08:00
|
|
|
|
errorList = new List<string>();
|
2025-04-07 21:06:39 +08:00
|
|
|
|
//循环收款单/新增核销记录
|
|
|
|
|
foreach (var item in fCombinaAddSK)
|
|
|
|
|
{
|
2025-04-10 13:30:55 +08:00
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
//创建核销记录单
|
2025-05-07 20:08:40 +08:00
|
|
|
|
string FBILLNO = "";
|
|
|
|
|
if(SourceType==0)
|
|
|
|
|
FBILLNO = CommonHelper.CreateAutoWrireRecord2(this.Context, Convert.ToString(FOrgId), item.XSAPList, item);
|
|
|
|
|
else
|
|
|
|
|
FBILLNO = CommonHelper.CreateAutoWrireRecord3(this.Context, Convert.ToString(FOrgId), item.XSAPList, item);
|
2025-04-10 13:30:55 +08:00
|
|
|
|
if (FBILLNO != "")
|
|
|
|
|
{
|
|
|
|
|
Message = Message + string.Format("生成核销记录单成功,单号为:'{0}'\r\n", FBILLNO);
|
|
|
|
|
strings1.Add(item.FCONTRACTNUMBER);
|
|
|
|
|
successFbillNo.Add(item.FBIllNO);
|
|
|
|
|
ISXSNUM++;
|
|
|
|
|
}
|
2025-04-19 14:44:32 +08:00
|
|
|
|
|
|
|
|
|
//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);
|
2025-04-10 13:30:55 +08:00
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
2025-04-07 21:06:39 +08:00
|
|
|
|
{
|
2025-04-10 13:30:55 +08:00
|
|
|
|
errorList.Add(ex.Message);
|
2025-04-07 21:06:39 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
2025-04-10 13:30:55 +08:00
|
|
|
|
if (errorList.Count > 0)
|
2025-04-18 10:10:08 +08:00
|
|
|
|
Message = Message + " 有部分单失败,原因是:" + string.Join(",", errorList);
|
2025-04-10 09:38:34 +08:00
|
|
|
|
this.View.ShowMessage(Message);
|
|
|
|
|
if (successFbillNo.Count > 0)
|
2025-04-07 21:06:39 +08:00
|
|
|
|
{
|
2025-04-10 09:38:34 +08:00
|
|
|
|
var tempRow = ReceiveBILLLIST2.Where(t => successFbillNo.Contains(t.FBIllNO)).ToList();
|
|
|
|
|
var pId = tempRow.Select(t => t.FROWID).ToList();
|
2025-05-07 20:08:40 +08:00
|
|
|
|
var allRows = FEntity2.Where(t => t["PARENTROWID"] !=null && pId.Contains(t["PARENTROWID"].ToString())).ToList();
|
2025-04-10 09:38:34 +08:00
|
|
|
|
allRows.ForEach(t =>
|
2025-04-07 21:06:39 +08:00
|
|
|
|
{
|
2025-04-18 10:10:08 +08:00
|
|
|
|
this.Model.DeleteEntryRow("FEntity2", Convert.ToInt32(t["Seq"]) - 1);
|
2025-04-10 09:38:34 +08:00
|
|
|
|
});
|
|
|
|
|
//tempRow.ForEach(item =>
|
|
|
|
|
//{
|
|
|
|
|
// this.Model.DeleteEntryRow("FEntity2", item.FRow - 1);
|
|
|
|
|
//});
|
2025-04-07 21:06:39 +08:00
|
|
|
|
}
|
2025-04-10 09:38:34 +08:00
|
|
|
|
////如果存在生成成功的、也有生成失败的不走刷新功能直接将成功的单据体数据删除!
|
|
|
|
|
//List<CombinaClass> SaleBILLLIStext = new List<CombinaClass>();
|
|
|
|
|
//foreach (var item in SaleBILLLIS)
|
|
|
|
|
//{
|
|
|
|
|
// if (strings1.Contains(item?.FCONTRACTNUMBER))
|
|
|
|
|
// {
|
|
|
|
|
// SaleBILLLIStext.Add(item);
|
|
|
|
|
// }
|
|
|
|
|
//}
|
2025-04-07 21:06:39 +08:00
|
|
|
|
|
2025-04-10 09:38:34 +08:00
|
|
|
|
//foreach (var item in SaleBILLLIStext)
|
|
|
|
|
//{
|
|
|
|
|
// SaleBILLLIS.Remove(item);
|
|
|
|
|
//}
|
2025-04-07 21:06:39 +08:00
|
|
|
|
|
2025-04-10 09:38:34 +08:00
|
|
|
|
//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);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
2025-04-18 10:10:08 +08:00
|
|
|
|
|
|
|
|
|
|
2025-04-10 09:38:34 +08:00
|
|
|
|
//}
|
|
|
|
|
//else
|
|
|
|
|
//{
|
|
|
|
|
// this.Model.SetValue("FShuaXin", "需要更新");
|
|
|
|
|
//}
|
2025-04-07 21:06:39 +08:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-04-18 10:10:08 +08:00
|
|
|
|
|
|
|
|
|
|
2025-04-09 10:02:48 +08:00
|
|
|
|
#region DataChanged(单据体值更新事件)
|
2025-04-10 11:06:06 +08:00
|
|
|
|
/// <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;
|
2025-04-18 10:10:08 +08:00
|
|
|
|
|
2025-04-10 11:06:06 +08:00
|
|
|
|
//获取当前复选框的值
|
|
|
|
|
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;
|
2025-04-18 10:10:08 +08:00
|
|
|
|
string PARENTROWID = this.Model.GetValue("FPARENTROWID", e.Row)?.ToString();
|
2025-05-07 20:08:40 +08:00
|
|
|
|
var dataRow = FEntity2.Where(item => item["PARENTROWID"] !=null && item["PARENTROWID"].ToString() == PARENTROWID && int.Parse(item["F_RowNew"].ToString()) != 1).ToList();
|
2025-04-10 11:06:06 +08:00
|
|
|
|
if (IsHX.ToLower() == "true" && dataRow.Where(t => t["F_ISHX"].ToString().ToLower() == "true").Count() > 0)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
2025-04-18 10:10:08 +08:00
|
|
|
|
dataRow.ForEach(item =>
|
2025-04-10 11:06:06 +08:00
|
|
|
|
{
|
2025-04-18 10:10:08 +08:00
|
|
|
|
this.Model.SetValue("F_ISHX", IsHX, int.Parse(item["SEQ"].ToString()) - 1);
|
2025-04-10 11:06:06 +08:00
|
|
|
|
//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")
|
|
|
|
|
//{
|
2025-04-18 10:10:08 +08:00
|
|
|
|
|
2025-04-10 11:06:06 +08:00
|
|
|
|
// 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);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
//}
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-04-09 10:02:48 +08:00
|
|
|
|
#endregion
|
2025-04-07 21:06:39 +08:00
|
|
|
|
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,汇总类型数据行
|
|
|
|
|
}
|
2025-04-18 10:10:08 +08:00
|
|
|
|
|
|
|
|
|
public void FilterCallBack(FormResult action)
|
|
|
|
|
{
|
2025-04-22 19:35:40 +08:00
|
|
|
|
status11 = 0;
|
2025-04-18 10:10:08 +08:00
|
|
|
|
if (action.ReturnData != null)
|
|
|
|
|
{
|
|
|
|
|
FilterParameter returnData = action.ReturnData as FilterParameter;//过滤框返回的数据
|
|
|
|
|
DynamicObject dyObj = returnData.CustomFilter as DynamicObject;
|
2025-05-07 20:08:40 +08:00
|
|
|
|
//获取应收款数据来源 0=销售订单 1=发货通知单
|
|
|
|
|
SourceType = Convert.ToInt32(dyObj["F_Source_Type2"]);
|
|
|
|
|
|
2025-04-18 10:10:08 +08:00
|
|
|
|
//获取组织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>();
|
2025-05-07 20:08:40 +08:00
|
|
|
|
//循环获取多选客户FID
|
2025-04-18 10:10:08 +08:00
|
|
|
|
foreach (DynamicObject dobj in ZZS)
|
|
|
|
|
{
|
|
|
|
|
DynamicObject dynamic = dobj["FClientList"] as DynamicObject;
|
|
|
|
|
zzList.Add(dynamic["ID"].ToString());
|
|
|
|
|
}
|
|
|
|
|
CustFid = string.Join("','", zzList);
|
2025-05-07 20:08:40 +08:00
|
|
|
|
if(SourceType==0)
|
|
|
|
|
where1 += $@" and A.FCUSTID in ('{CustFid}')";
|
|
|
|
|
else
|
|
|
|
|
where1 += $@" and A.FCustomerID in ('{CustFid}')";
|
2025-04-18 10:10:08 +08:00
|
|
|
|
where2 += $@" and A.FCONTACTUNIT in ('{CustFid}')";
|
|
|
|
|
}
|
2025-04-18 11:58:17 +08:00
|
|
|
|
//this.View.ShowMessage(string.Format("选中的客户是:{0}s", CustFid));
|
2025-04-18 10:10:08 +08:00
|
|
|
|
|
|
|
|
|
//获取收款日期
|
|
|
|
|
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");
|
2025-05-07 20:08:40 +08:00
|
|
|
|
|
2025-04-18 10:10:08 +08:00
|
|
|
|
//var FShuaXin = this.View.Model.GetValue("FShuaXin");
|
2025-05-07 20:08:40 +08:00
|
|
|
|
|
|
|
|
|
DynamicObjectCollection WriteOrderDate;
|
2025-04-18 10:10:08 +08:00
|
|
|
|
//调用SQL获取数据
|
2025-05-07 20:08:40 +08:00
|
|
|
|
if (SourceType == 0)
|
|
|
|
|
WriteOrderDate = SQL.SqlManage_yuyubo.GetWriteOrderDate3(this.Context, FSaleOrgId, where1);
|
|
|
|
|
else
|
|
|
|
|
WriteOrderDate = SQL.SqlManage_yuyubo.GetFaHuoTongZhiDan(this.Context, FSaleOrgId, where1);
|
|
|
|
|
|
2025-04-18 10:10:08 +08:00
|
|
|
|
var WriteReceiveDate = SQL.SqlManage_yuyubo.GetWriteReceiveDate3(this.Context, FSaleOrgId, where2);
|
2025-05-07 20:08:40 +08:00
|
|
|
|
|
|
|
|
|
|
2025-04-18 10:10:08 +08:00
|
|
|
|
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"]),
|
2025-04-24 14:01:46 +08:00
|
|
|
|
FaHuoAmount30Days = Convert.ToDouble(item["FaHuoAmount30Days"]),
|
|
|
|
|
FInvoiceAmount30Days = Convert.ToDouble(item["FInvoiceAmount30Days"]),
|
2025-04-18 10:10:08 +08:00
|
|
|
|
}).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"]),
|
2025-04-24 14:01:46 +08:00
|
|
|
|
FSalesman = Convert.ToInt32(item["FSALEERID"]),
|
2025-04-18 10:10:08 +08:00
|
|
|
|
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);
|
2025-04-28 16:04:47 +08:00
|
|
|
|
this.View.Model.SetValue("FInvoiceAmount30Days", SaleBILLLIS2[i].FInvoiceAmount30Days, i);
|
|
|
|
|
this.View.Model.SetValue("FaHuoAmount30Days", SaleBILLLIS2[i].FaHuoAmount30Days, i);
|
2025-04-18 10:10:08 +08:00
|
|
|
|
|
2025-04-28 16:04:47 +08:00
|
|
|
|
//FaHuoAmount30Days = Convert.ToDouble(item["FaHuoAmount30Days"]),
|
|
|
|
|
//FInvoiceAmount30Days = Convert.ToDouble(item["FInvoiceAmount30Days"]),
|
2025-04-18 10:10:08 +08:00
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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");
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-04-18 11:58:17 +08:00
|
|
|
|
|
|
|
|
|
//public override void AfterBindData(EventArgs e)
|
|
|
|
|
|
|
|
|
|
//{
|
|
|
|
|
|
|
|
|
|
// base.AfterBindData(e);
|
|
|
|
|
|
|
|
|
|
// var entityKey = "FSaleOrderEntry";
|
|
|
|
|
|
|
|
|
|
// var backColor = "#ead1dc";
|
|
|
|
|
|
|
|
|
|
// // 常规操作是直接使用grid.SetRowBackcolor函数,如果不生效,可以尝试用自定义封装的GridSetRowBackcolor函数
|
|
|
|
|
|
|
|
|
|
// var grid = this.View.GetControl<EntryGrid>(entityKey);
|
|
|
|
|
|
|
|
|
|
// grid.SetRowBackcolor(backColor, 1);
|
|
|
|
|
|
|
|
|
|
// //GridSetRowBackcolor(this.View, entityKey, backColor, 1);
|
|
|
|
|
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-04-24 14:01:46 +08:00
|
|
|
|
/// <summary>
|
2025-04-18 11:58:17 +08:00
|
|
|
|
|
2025-04-24 14:01:46 +08:00
|
|
|
|
/// 设置表格背景色
|
2025-04-18 11:58:17 +08:00
|
|
|
|
|
2025-04-24 14:01:46 +08:00
|
|
|
|
/// </summary>
|
2025-04-18 11:58:17 +08:00
|
|
|
|
|
2025-04-24 14:01:46 +08:00
|
|
|
|
/// <param name="view">当前动态表单的View层接口</param>
|
2025-04-18 11:58:17 +08:00
|
|
|
|
|
2025-04-24 14:01:46 +08:00
|
|
|
|
/// <param name="entityKey">单据体的标识</param>
|
2025-04-18 11:58:17 +08:00
|
|
|
|
|
2025-04-24 14:01:46 +08:00
|
|
|
|
/// <param name="color">颜色代码</param>
|
2025-04-18 11:58:17 +08:00
|
|
|
|
|
2025-04-24 14:01:46 +08:00
|
|
|
|
/// <param name="rowIndex">要设置颜色的数据行的行索引</param>
|
2025-04-18 11:58:17 +08:00
|
|
|
|
|
2025-04-24 14:01:46 +08:00
|
|
|
|
private static void GridSetRowBackcolor(IDynamicFormView view, string entityKey, string color, int rowIndex)
|
2025-04-18 11:58:17 +08:00
|
|
|
|
|
2025-04-24 14:01:46 +08:00
|
|
|
|
{
|
2025-04-18 11:58:17 +08:00
|
|
|
|
|
2025-04-24 14:01:46 +08:00
|
|
|
|
var value = new JSONObject();
|
2025-04-18 11:58:17 +08:00
|
|
|
|
|
2025-04-24 14:01:46 +08:00
|
|
|
|
value[rowIndex.ToString()] = color;
|
2025-04-18 11:58:17 +08:00
|
|
|
|
|
2025-04-24 14:01:46 +08:00
|
|
|
|
var jo = new JSONObject();
|
2025-04-18 11:58:17 +08:00
|
|
|
|
|
2025-04-24 14:01:46 +08:00
|
|
|
|
jo["backcolor"] = value;
|
2025-04-18 11:58:17 +08:00
|
|
|
|
|
2025-04-24 14:01:46 +08:00
|
|
|
|
var grid = view.GetControl<EntryGrid>(entityKey);
|
2025-04-18 11:58:17 +08:00
|
|
|
|
|
2025-04-24 14:01:46 +08:00
|
|
|
|
var formState = view.GetService<IDynamicFormState>();
|
2025-04-18 11:58:17 +08:00
|
|
|
|
|
2025-04-24 14:01:46 +08:00
|
|
|
|
formState.AftInvokeControlMethod(grid.ControlAppearance, "UpdateFieldStates", jo);
|
2025-04-18 11:58:17 +08:00
|
|
|
|
|
2025-04-24 14:01:46 +08:00
|
|
|
|
}
|
2025-04-07 21:06:39 +08:00
|
|
|
|
}
|
|
|
|
|
}
|