This commit is contained in:
2025-06-09 18:48:05 +08:00
parent ef80abc9fa
commit d41b16306e
7 changed files with 274 additions and 180 deletions

View File

@@ -127,22 +127,22 @@ namespace Pilot_KD_Parino.Common
public string FISHX { get; set; }
/// <summary>
/// 金额
/// 订单含税金额(本位币)
/// </summary>
public double FALLAMOUNT { get; set; }
/// <summary>
/// 已核销金额
/// 已核销金额(原币)
/// </summary>
public double FYAMOUNT { get; set; }
/// <summary>
/// 待核销金额
/// 待核销金额(原币)
/// </summary>
public double FDAMOUNT { get; set; }
/// <summary>
/// 金额(原币)
/// 订单含税金额(原币)
/// </summary>
public double FALLAMOUNTY { get; set; }
@@ -210,5 +210,20 @@ namespace Pilot_KD_Parino.Common
/// 最近30天开票金额
/// </summary>
public double FInvoiceAmount30Days { get; set; }
/// <summary>
/// 运杂费(原币)
/// </summary>
public double FYunZaFei_YuanBi { get; set; }
/// <summary>
/// 汇率
/// </summary>
public double FHuiLv { get; set; }
/// <summary>
/// 结算币别
/// </summary>
public string FBiBie { get; set; }
}
}

View File

@@ -14,9 +14,11 @@ using Kingdee.BOS.Core.List;
using Kingdee.BOS.Core.Msg;
using Kingdee.BOS.Core.Report.PlugIn.Args;
using Kingdee.BOS.JSON;
using Kingdee.BOS.Log;
using Kingdee.BOS.Orm;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Orm.Exceptions;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
using Newtonsoft.Json;
using NPOI.SS.Formula.Functions;
@@ -348,7 +350,7 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire
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);
@@ -356,9 +358,9 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire
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);
@@ -427,13 +429,18 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire
FWeiYi = item["FWeiYi"]?.ToString(),
FaHuoAmount30Days = Convert.ToDouble( item["FaHuoAmount30Days"].ToString()),
FInvoiceAmount30Days= Convert.ToDouble(item["FInvoiceAmount30Days"].ToString()),
FHuiLv = Convert.ToDouble(item["FHuiLv"]),
FBiBie = Convert.ToString(item["FBiBie"]),
FYunZaFei_YuanBi = Convert.ToDouble(item["FYunZaFei_YuanBi"]),
FALLAMOUNTY = Convert.ToDouble(item["FJiaShuiHeJi_YuanBi"]),
}).ToList();
var SaleBILLLISNew = SaleBILLLIS.Where(a => a.FISHX != "已核销配对").ToList();
var ReceiveBILLLIST2 = new List<CombinaClass>();
//获取收款单单据体数据
DynamicObjectCollection FEntity2 = this.View.Model.DataObject["FEntity2"] as DynamicObjectCollection;
//string sdsad = JsonConvert.SerializeObject(FEntity2);
//Logger.Error("", "442"+ sdsad, new Exception());
ReceiveBILLLIST2 = FEntity2.Select(item => new CombinaClass
{
FBIllNO = item["FBILLNO2"]?.ToString(),
@@ -447,8 +454,13 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire
FSalesman = Convert.ToInt32(item["FSalesman2_Id"]),
FCONTRACTNUMBER = item["FCONTRACTNUMBER2"]?.ToString(),
FRow = Convert.ToInt32(item["Seq"]) - 1,
F_RowNew = Convert.ToInt32(item["F_RowNew"])
F_RowNew = Convert.ToInt32(item["F_RowNew"]),
FHuiLv = Convert.ToDouble(item["FHuiLv2"]),
FBiBie = Convert.ToString(item["FBiBie2"]),
FALLAMOUNTY = Convert.ToDouble(item["FShouKuanJinE_YuanBi"]),
}).ToList();
//Logger.Error("","462",new Exception());
//重置并只取父级树形数据
ReceiveBILLLIST = new List<CombinaClass>();
ReceiveBILLLIST = ReceiveBILLLIST2.Where(a => a.F_RowNew == 1 && a.FISHX != "已核销配对").OrderBy(t => t.FClient).ThenBy(t => t.FCONTRACTNUMBER).ThenBy(t => t.FDate).ToList();
@@ -467,10 +479,10 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire
Dictionary<string, double> shouKuanDetail = new Dictionary<string, double>();
//先挑1张收款单对应一张销售订单
//1、收款单的待核销金额与订单的待核销金额
//1、收款单的待核销金额与订单的待核销金额, 2025-06-09 增加结算币别也要相等
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();
join u in ReceiveBILLLIST on new { q.FClient, q.FDAMOUNT,q.FBiBie } equals new { u.FClient, u.FDAMOUNT,u.FBiBie }
select new { q.FClient, q.FBIllNO, q.FCONTRACTNUMBER, u.FDAMOUNT, UFbillNo = u.FBIllNO, u.FBiBie }).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();
@@ -636,13 +648,13 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire
if (SourceType == 0) //只有销售单有这两种匹配逻辑
{
//3、收款单的待核销金额与订单的待最近30天开票金额(客户说只有医院客户,但是代码不做客户名称判断)
//3、收款单的待核销金额与订单的待最近30天开票金额(客户说只有医院客户,但是代码不做客户名称判断), 2025-06-09 增加结算币别也要相等
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();
join u in ReceiveBILLLIST on new { q.FClient, FDAMOUNT = q.FInvoiceAmount30Days ,q.FBiBie} equals new { u.FClient, u.FDAMOUNT,u.FBiBie }
select new { q.FClient, q.FBIllNO, q.FCONTRACTNUMBER, u.FDAMOUNT, UFbillNo = u.FBIllNO, u.FBiBie }).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();
@@ -727,7 +739,7 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire
ReceiveBILLLIST.ForEach(t =>
{
var tempList = SaleBILLLIS2Sa2.Where(h => h.FClient == t.FClient && h.FISHX != "已核销配对" && t.FDAMOUNT > 0).OrderByDescending(h => h.FDate).ToList();
var tempList = SaleBILLLIS2Sa2.Where(h =>h.FBiBie==t.FBiBie && h.FClient == t.FClient && h.FISHX != "已核销配对" && t.FDAMOUNT > 0).OrderByDescending(h => h.FDate).ToList();
var FDAMOUNT = t.FDAMOUNT;
List<string> heTongList = new List<string>();
@@ -927,7 +939,7 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire
{
this.View.Model.SetValue("FDate2", DateTime.Now.AddDays(-1 * Convert.ToInt32(tempList2[i].FDate)).ToString("yyyy-MM-dd"), Rowindex + i);
}
this.View.Model.SetValue("F_MBBA_Decimal_imu", tempList2[i].FALLAMOUNT, Rowindex + i);
this.View.Model.SetValue("F_MBBA_Decimal_imu", tempList2[i].FALLAMOUNT+ tempList2[i].FYunZaFei_YuanBi * tempList2[i].FHuiLv, 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 );
@@ -938,6 +950,12 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire
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.View.Model.SetValue("FBiBie2", tempList2[i].FBiBie, Rowindex + i);
this.View.Model.SetValue("FHuiLv2", tempList2[i].FHuiLv, Rowindex + i);
this.View.Model.SetValue("FShouKuanJinE_YuanBi", tempList2[i].FALLAMOUNTY + tempList2[i].FYunZaFei_YuanBi, Rowindex + i);
//Logger.Error("", "956", new Exception());
}
@@ -1583,6 +1601,10 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire
FInvoiceAmount = Convert.ToDecimal(item["FInvoiceAmount"]),
FaHuoAmount30Days = Convert.ToDouble(item["FaHuoAmount30Days"]),
FInvoiceAmount30Days = Convert.ToDouble(item["FInvoiceAmount30Days"]),
FHuiLv= Convert.ToDouble(item["FHuiLv"]),
FBiBie = Convert.ToString(item["FBiBie"]),
FYunZaFei_YuanBi = Convert.ToDouble(item["F_EXPENSES"]),
FALLAMOUNTY= Convert.ToDouble(item["FALLAMOUNTY"]),
}).ToList();
@@ -1600,6 +1622,9 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire
FSalesman = Convert.ToInt32(item["FSALEERID"]),
F_RowNew = 1,
BenCi = 0,
FHuiLv = Convert.ToDouble(item["FHuiLv"]),
FBiBie = Convert.ToString(item["FBiBie"]),
FALLAMOUNTY = Convert.ToDouble(item["FALLAMOUNTY"]),
}).ToList();
var kehu = ReceiveBILLLIST.Select(t => t.FClient).Distinct().ToList();
@@ -1637,6 +1662,10 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire
this.View.Model.SetValue("FInvoiceAmount", SaleBILLLIS2[i].FInvoiceAmount, i);
this.View.Model.SetValue("FInvoiceAmount30Days", SaleBILLLIS2[i].FInvoiceAmount30Days, i);
this.View.Model.SetValue("FaHuoAmount30Days", SaleBILLLIS2[i].FaHuoAmount30Days, i);
this.View.Model.SetValue("FBiBie", SaleBILLLIS2[i].FBiBie, i);
this.View.Model.SetValue("FHuiLv", SaleBILLLIS2[i].FHuiLv, i);
this.View.Model.SetValue("FYunZaFei_YuanBi", SaleBILLLIS2[i].FYunZaFei_YuanBi, i);
this.View.Model.SetValue("FJiaShuiHeJi_YuanBi", SaleBILLLIS2[i].FALLAMOUNTY, i);
//FaHuoAmount30Days = Convert.ToDouble(item["FaHuoAmount30Days"]),
//FInvoiceAmount30Days = Convert.ToDouble(item["FInvoiceAmount30Days"]),
@@ -1666,6 +1695,11 @@ namespace Pilot_KD_Parino.QPHY_AutoWrire
this.View.Model.SetValue("F_RowNew", ReceiveBILLLIST[i].F_RowNew, RowindexNew);
this.View.Model.SetValue("F_ISHX", false, RowindexNew);
this.View.Model.SetValue("FBiBie2", ReceiveBILLLIST[i].FBiBie, i);
this.View.Model.SetValue("FHuiLv2", ReceiveBILLLIST[i].FHuiLv, i);
this.View.Model.SetValue("FYunZaFei_YuanBi2", ReceiveBILLLIST[i].FYunZaFei_YuanBi, RowindexNew);
this.View.Model.SetValue("FShouKuanJinE_YuanBi", ReceiveBILLLIST[i].FALLAMOUNTY, RowindexNew);
//Logger.Error("", "1701", new Exception());
}
this.View.UpdateView("FEntity2");
}

View File

@@ -6,6 +6,7 @@ using Pilot_KD_Parino.SQL;
using System;
using System.ComponentModel;
using System.Linq;
using System.Threading;
namespace Pilot_KD_Parino.QPHY_AutoWrireRecord
{
@@ -48,7 +49,7 @@ namespace Pilot_KD_Parino.QPHY_AutoWrireRecord
FALLAMOUNT = Convert.ToDecimal(item["FALLAMOUNT2"]);
string sql2 = string.Format(@"/*dialect*/Select B.FENTRYID,B.FRECADVANCEAMOUNT,ISNULL(B.F_ORDER,'') as 'F_ORDER' From
string sql2 = string.Format(@"/*dialect*/Select B.FENTRYID,B.FRECADVANCEAMOUNT,ISNULL(B.F_ORDER,'') as 'F_ORDER',a.FID From
T_SAL_ORDER A
JOIN
T_SAL_ORDERPLAN B
@@ -57,45 +58,54 @@ namespace Pilot_KD_Parino.QPHY_AutoWrireRecord
Order by F_ORDER desc ,FENTRYID desc", item["FBILLNO2"]);
var sql2List = DBUtils.ExecuteDynamicObject(Context, sql2);
//如果只有一个直接赋值
if (sql2List.Count == 1)
var fidList = sql2List.Select(t => t["FID"].ToString()).ToList().Distinct().ToList();
fidList.ForEach(t =>
{
string sql3 = string.Format(@"Update T_SAL_ORDERPLAN Set F_MBBA_Decimal_uky =ISNULL(F_MBBA_Decimal_uky,0)- {0} Where FENTRYID = {1};", FALLAMOUNT, sql2List[0]["FENTRYID"]);
string sql3 = $@"exec PR_ResetSALORDERPLAN_MBBA_yuyubo {t};";
DBUtils.ExecuteDynamicObject(Context, sql3);
}
if (sql2List.Count > 1)
{
for (int i = 0; i < sql2List.Count; i++)
{
//判断核销顺序是否为空
//if (!string.IsNullOrWhiteSpace(sql2List[i]["F_ORDER"]?.ToString()))
Thread.Sleep(300);
});
////如果只有一个直接赋值
//if (sql2List.Count == 1)
//{
//判断核销金额是否大于按照排序对冲金额
decimal FRECADVANCEAMOUNT = Convert.ToDecimal(sql2List[i]["FRECADVANCEAMOUNT"]);
decimal F_MBBA_Decimal_uky=Convert.ToDecimal(sql2List[i]["F_MBBA_Decimal_uky"]);
if (FALLAMOUNT > 0 && F_MBBA_Decimal_uky > 0)
{
decimal fAmount = 0;
// string sql3 = string.Format(@"Update T_SAL_ORDERPLAN Set F_MBBA_Decimal_uky =ISNULL(F_MBBA_Decimal_uky,0)- {0} Where FENTRYID = {1};", FALLAMOUNT, sql2List[0]["FENTRYID"]);
// DBUtils.ExecuteDynamicObject(Context, sql3);
//}
//if (sql2List.Count > 1)
//{
// for (int i = 0; i < sql2List.Count; i++)
// {
// //判断核销顺序是否为空
// //if (!string.IsNullOrWhiteSpace(sql2List[i]["F_ORDER"]?.ToString()))
// //{
// //判断核销金额是否大于按照排序对冲金额
// decimal FRECADVANCEAMOUNT = Convert.ToDecimal(sql2List[i]["FRECADVANCEAMOUNT"]);
// decimal F_MBBA_Decimal_uky=Convert.ToDecimal(sql2List[i]["F_MBBA_Decimal_uky"]);
// if (FALLAMOUNT > 0 && F_MBBA_Decimal_uky > 0)
// {
// decimal fAmount = 0;
//判断是否整条对冲
if (FALLAMOUNT - F_MBBA_Decimal_uky >= 0)
{
fAmount = F_MBBA_Decimal_uky;
}
else
{
fAmount = FALLAMOUNT;
}
string sql3 = string.Format(@"Update T_SAL_ORDERPLAN Set F_MBBA_Decimal_uky = ISNULL(F_MBBA_Decimal_uky,0)-{0} Where FENTRYID = {1};", fAmount, sql2List[i]["FENTRYID"]);
DBUtils.ExecuteDynamicObject(Context, sql3);
FALLAMOUNT = FALLAMOUNT - fAmount;
}
// //判断是否整条对冲
// if (FALLAMOUNT - F_MBBA_Decimal_uky >= 0)
// {
// fAmount = F_MBBA_Decimal_uky;
// }
// else
// {
// fAmount = FALLAMOUNT;
// }
// string sql3 = string.Format(@"Update T_SAL_ORDERPLAN Set F_MBBA_Decimal_uky = ISNULL(F_MBBA_Decimal_uky,0)-{0} Where FENTRYID = {1};", fAmount, sql2List[i]["FENTRYID"]);
// DBUtils.ExecuteDynamicObject(Context, sql3);
// FALLAMOUNT = FALLAMOUNT - fAmount;
// }
// //}
// }
//}
}
}
}
}
}
}
}

View File

@@ -6,6 +6,7 @@ using Pilot_KD_Parino.SQL;
using System;
using System.ComponentModel;
using System.Linq;
using System.Threading;
namespace Pilot_KD_Parino.QPHY_AutoWrireRecord
{
@@ -34,7 +35,7 @@ namespace Pilot_KD_Parino.QPHY_AutoWrireRecord
FALLAMOUNT = Convert.ToDecimal(item["FALLAMOUNT2"]);
string sql2 = string.Format(@"/*dialect*/Select B.FENTRYID,B.FRECADVANCEAMOUNT,ISNULL(B.F_ORDER,'') as 'F_ORDER' From
string sql2 = string.Format(@"/*dialect*/Select B.FENTRYID,B.FRECADVANCEAMOUNT,ISNULL(B.F_ORDER,'') as 'F_ORDER' ,a.FID From
T_SAL_ORDER A
JOIN
T_SAL_ORDERPLAN B
@@ -43,45 +44,52 @@ namespace Pilot_KD_Parino.QPHY_AutoWrireRecord
Order by F_ORDER,FENTRYID", item["FBILLNO2"]);
var sql2List = DBUtils.ExecuteDynamicObject(Context, sql2);
//如果只有一个直接赋值
if (sql2List.Count == 1)
var fidList = sql2List.Select(t => t["FID"].ToString()).ToList().Distinct().ToList();
fidList.ForEach(t =>
{
string sql3 = string.Format(@"Update T_SAL_ORDERPLAN Set F_MBBA_Decimal_uky =ISNULL(F_MBBA_Decimal_uky,0)+ {0} Where FENTRYID = '{1}';", FALLAMOUNT, sql2List[0]["FENTRYID"]);
string sql3 = $@"exec PR_ResetSALORDERPLAN_MBBA_yuyubo {t};";
DBUtils.ExecuteDynamicObject(Context, sql3);
}
if (sql2List.Count > 1)
{
for (int i = 0; i < sql2List.Count; i++)
{
//判断核销顺序是否为空
//if (!string.IsNullOrWhiteSpace(sql2List[i]["F_ORDER"]?.ToString()))
Thread.Sleep(300);
});
////如果只有一个直接赋值
//if (sql2List.Count == 1)
//{
//判断核销金额是否大于按照排序对冲金额
decimal FRECADVANCEAMOUNT = Convert.ToDecimal(sql2List[i]["FRECADVANCEAMOUNT"]);
decimal F_MBBA_Decimal_uky = Convert.ToDecimal(sql2List[i]["F_MBBA_Decimal_uky"]);
if (FALLAMOUNT > 0 && F_MBBA_Decimal_uky < FRECADVANCEAMOUNT)
{
decimal fAmount = 0;
decimal chazhi = FRECADVANCEAMOUNT- F_MBBA_Decimal_uky;
//判断是否整条对冲
if (FALLAMOUNT - chazhi >= 0)
{
fAmount = chazhi;
}
else
{
fAmount = FALLAMOUNT;
}
string sql3 = string.Format(@"Update T_SAL_ORDERPLAN Set F_MBBA_Decimal_uky = ISNULL(F_MBBA_Decimal_uky,0)+{0} Where FENTRYID = '{1}';", fAmount, sql2List[i]["FENTRYID"]);
DBUtils.ExecuteDynamicObject(Context, sql3);
FALLAMOUNT = FALLAMOUNT- fAmount;
}
// string sql3 = string.Format(@"Update T_SAL_ORDERPLAN Set F_MBBA_Decimal_uky =ISNULL(F_MBBA_Decimal_uky,0)+ {0} Where FENTRYID = '{1}';", FALLAMOUNT, sql2List[0]["FENTRYID"]);
// DBUtils.ExecuteDynamicObject(Context, sql3);
//}
//if (sql2List.Count > 1)
//{
// for (int i = 0; i < sql2List.Count; i++)
// {
// //判断核销顺序是否为空
// //if (!string.IsNullOrWhiteSpace(sql2List[i]["F_ORDER"]?.ToString()))
// //{
// //判断核销金额是否大于按照排序对冲金额
// decimal FRECADVANCEAMOUNT = Convert.ToDecimal(sql2List[i]["FRECADVANCEAMOUNT"]);
// decimal F_MBBA_Decimal_uky = Convert.ToDecimal(sql2List[i]["F_MBBA_Decimal_uky"]);
// if (FALLAMOUNT > 0 && F_MBBA_Decimal_uky < FRECADVANCEAMOUNT)
// {
// decimal fAmount = 0;
// decimal chazhi = FRECADVANCEAMOUNT- F_MBBA_Decimal_uky;
// //判断是否整条对冲
// if (FALLAMOUNT - chazhi >= 0)
// {
// fAmount = chazhi;
// }
// else
// {
// fAmount = FALLAMOUNT;
// }
// string sql3 = string.Format(@"Update T_SAL_ORDERPLAN Set F_MBBA_Decimal_uky = ISNULL(F_MBBA_Decimal_uky,0)+{0} Where FENTRYID = '{1}';", fAmount, sql2List[i]["FENTRYID"]);
// DBUtils.ExecuteDynamicObject(Context, sql3);
// FALLAMOUNT = FALLAMOUNT- fAmount;
// }
// //}
// }
//}
}
}
}
}
}
}
}

View File

@@ -30,15 +30,15 @@ namespace Pilot_KD_Parino.SQL
DATEDIFF(D, A.FDATE, GETDATE()) AS 'FDATE',
A.FRECAMOUNT AS 'FALLAMOUNT',
A.FRECAMOUNTFOR as 'FALLAMOUNTY',
A.FRECAMOUNT-A.F_AMOUNT as 'FDAMOUNT',
A.FRECAMOUNTFOR-A.F_AMOUNT as 'FDAMOUNT',
A.FCURRENCYID as 'FCurr',
A.FCREATORID as 'FCREATORID'
A.FCREATORID as 'FCREATORID',
A.FSETTLERATE AS FHuiLv,
(SELECT ll.FNAME FROM dbo.T_BD_CURRENCY_L ll WITH(NOLOCK) where ll.FCURRENCYID=A.FSETTLECUR ) FBiBie
FROM T_AR_RECEIVEBILL A
WHERE A.FDOCUMENTSTATUS = 'C'
AND A.FISINIT != '1'
AND A.FRECAMOUNT != A.F_AMOUNT
AND A.FRECAMOUNT >= A.F_AMOUNT {where}
AND A.FRECAMOUNTFOR >= A.F_AMOUNT {where}
order by FCONTACTUNIT,A.FID desc ", FORGID);
return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null);
}
@@ -69,7 +69,7 @@ namespace Pilot_KD_Parino.SQL
C.FBILLALLAMOUNT_LC AS 'FALLAMOUNT' ,
C.FBILLALLAMOUNT as 'FALLAMOUNTY',
ISNULL(A.F_AMOUNT,0) as 'FYAMOUNT',
C.FBILLALLAMOUNT_LC-A.F_AMOUNT as 'FDAMOUNT2',
C.FBILLALLAMOUNT+a.F_EXPENSES-A.F_AMOUNT as 'FDAMOUNT2',
C.FSETTLECURRID as 'FCurr',
case when DATEDIFF(MONTH, A.FDATE, GETDATE())<3 then 'True' else 'False' end as 'FIs30' ,
'销售订单' as 'FTYPE',
@@ -79,8 +79,8 @@ namespace Pilot_KD_Parino.SQL
(
SELECT SUM(F_GeneralInvoice) AS '发票总金额' FROM (
SELECT F_PaperNumber, t0.FSALEORGID,
CASE WHEN F_ORDERCATEGORY ='67283ced82f38d' THEN FAFTERTOTALTAX
WHEN F_ORDERCATEGORY !='67283ced82f38d' AND F_GENERALINVOICE='Y' THEN 0 ELSE FAFTERTOTALTAX END AS F_GeneralInvoice
CASE WHEN F_ORDERCATEGORY ='67283ced82f38d' THEN FAFTERTOTALTAXFOR
WHEN F_ORDERCATEGORY !='67283ced82f38d' AND F_GENERALINVOICE='Y' THEN 0 ELSE FAFTERTOTALTAXFOR END AS F_GeneralInvoice
--FAFTERTOTALTAX
FROM T_IV_SALESIC t0 WITH(NOLOCK)
INNER JOIN T_SAL_ORDER aa1 WITH(NOLOCK) ON t0.F_PAPERNUMBER=aa1.F_contractnumber AND t0.FSETTLEORGID=aa1.FSALEORGID
@@ -89,7 +89,8 @@ INNER JOIN T_SAL_ORDER aa1 WITH(NOLOCK) ON t0.F_PAPERNUMBER=aa1.F_contractnumbe
GROUP BY F_PaperNumber, FSALEORGID
) as FInvoiceAmount,
(select SUM(bb.F_TotalAmoun) from dbo.T_SAL_DELIVERYNOTICE bb WITH(NOLOCK) WHERE bb.FSaleOrgId=a.FSALEORGID AND bb.F_Papercontract=a.F_contractnumber
(select SUM(bbf.FAllAmount) from dbo.T_SAL_DELIVERYNOTICE bb LEFT JOIN T_SAL_DELIVERYNOTICEENTRY_F bbf WITH(NOLOCK) ON bb.FID=bbf.FID
WHERE bb.FSaleOrgId=a.FSALEORGID AND bb.F_Papercontract=a.F_contractnumber
AND 30 >= DATEDIFF(DAY,bb.FDATE,GETDATE()) AND bb.FDocumentStatus='C' ) as FaHuoAmount30Days,
(
SELECT SUM(F_GeneralInvoice) AS '发票总金额' FROM (
@@ -104,11 +105,14 @@ INNER JOIN T_SAL_ORDER aa1 WITH(NOLOCK) ON t0.F_PAPERNUMBER=aa1.F_contractnumbe
GROUP BY F_PaperNumber, FSALEORGID
) as FInvoiceAmount30Days
,[整单累计退货金额]=ISNULL((
SELECT SUM(CC.FBillAllAmount_LC) AS '累计退货金额'
SELECT SUM(CC.FBILLALLAMOUNT) AS '累计退货金额'
FROM T_SAL_ORDER AA
INNER JOIN T_SAL_ORDERFIN CC ON CC.FID =AA.FID
WHERE AA.FDOCUMENTSTATUS= 'C' AND ISNULL(AA.F_CONTRACTNUMBER,'') !='' AND AA.F_contractnumber LIKE A.F_contractnumber+'%'
AND AA.fid<>A.fid AND aa.FSALEORGID=a.FSALEORGID),0)
,a.F_EXPENSES
,(SELECT ll.FNAME FROM dbo.T_BD_CURRENCY_L ll WITH(NOLOCK) where ll.FCURRENCYID=c.FSettleCurrId ) AS [FBiBie]
, c.FExchangeRate FHuiLv
FROM T_SAL_ORDER A
INNER JOIN T_SAL_ORDERFIN C ON C.FID =A.FID
WHERE
@@ -145,7 +149,7 @@ GROUP BY F_PaperNumber, FSALEORGID
C.FBILLALLAMOUNT_LC AS 'FALLAMOUNT' ,
C.FBILLALLAMOUNT as 'FALLAMOUNTY',
ISNULL(A.F_AMOUNT,0) as 'FYAMOUNT',
C.FBILLALLAMOUNT_LC-A.F_AMOUNT as 'FDAMOUNT2',
C.FBILLALLAMOUNT-A.F_AMOUNT as 'FDAMOUNT2',
C.FSETTLECURRID as 'FCurr',
case when DATEDIFF(MONTH, A.FDATE, GETDATE())<3 then 'True' else 'False' end as 'FIs30' ,
'发货通知单' as 'FTYPE',
@@ -155,12 +159,12 @@ GROUP BY F_PaperNumber, FSALEORGID
(
SELECT SUM(F_GeneralInvoice) AS '发票总金额' FROM (
SELECT F_PaperNumber, t0.FSALEORGID,
CASE WHEN F_ORDERCATEGORY ='67283ced82f38d' THEN FAFTERTOTALTAX
WHEN F_ORDERCATEGORY !='67283ced82f38d' AND F_GENERALINVOICE='Y' THEN 0 ELSE FAFTERTOTALTAX END AS F_GeneralInvoice
CASE WHEN F_ORDERCATEGORY ='67283ced82f38d' THEN FAFTERTOTALTAXFOR
WHEN F_ORDERCATEGORY !='67283ced82f38d' AND F_GENERALINVOICE='Y' THEN 0 ELSE FAFTERTOTALTAXFOR END AS F_GeneralInvoice
--FAFTERTOTALTAX
FROM T_IV_SALESIC t0 WITH(NOLOCK)
INNER JOIN T_SAL_ORDER aa1 WITH(NOLOCK) ON t0.F_PAPERNUMBER=aa1.F_contractnumber AND t0.FSETTLEORGID=aa1.FSALEORGID
--WHERE F_PaperNumber='P202502070004'
) AD WHERE AD.F_PaperNumber = A.F_Papercontract AND ad.FSALEORGID=a.FSALEORGID
GROUP BY F_PaperNumber, FSALEORGID
) as FInvoiceAmount,
@@ -168,12 +172,15 @@ GROUP BY F_PaperNumber, FSALEORGID
0 as FaHuoAmount30Days,
0 as FInvoiceAmount30Days
,[整单累计退货金额]=0
,c.FExchangeRate as FHuiLv
,0 as F_EXPENSES
,(SELECT ll.FNAME FROM dbo.T_BD_CURRENCY_L ll WITH(NOLOCK) where ll.FCURRENCYID=c.FSettleCurrID ) AS [FBiBie]
FROM T_SAL_DELIVERYNOTICE A
INNER JOIN T_SAL_DELIVERYNOTICEFIN C ON C.FID =A.FID
WHERE
C.FBILLALLAMOUNT_LC > 0
C.FBILLALLAMOUNT > 0
AND A.FDOCUMENTSTATUS = 'C' AND ISNULL(A.F_Papercontract,'')!=''
AND (A.F_AMOUNT < C.FBILLALLAMOUNT_LC
AND (A.F_AMOUNT < C.FBILLALLAMOUNT
or A.F_AMOUNT IS NULL) {where}
) A ORDER BY A.FCUSTID,a.FID desc ");
return DBServiceHelper.ExecuteDynamicObject(ctx, sql.ToString(), null, null, CommandType.Text, null);

View File

@@ -6,6 +6,7 @@ using Pilot_KD_Parino.SQL;
using System;
using System.ComponentModel;
using System.Linq;
using System.Threading;
namespace Pilot_KD_Parino.VRYF_FHTZDHXJL
{
@@ -46,7 +47,7 @@ namespace Pilot_KD_Parino.VRYF_FHTZDHXJL
FALLAMOUNT = Convert.ToDecimal(item["FALLAMOUNT2"]); //要计算的核销金额
string sql2 = string.Format($@"/*dialect*/Select B.FENTRYID,B.FRECADVANCEAMOUNT,ISNULL(B.F_ORDER,'') as 'F_ORDER' From
string sql2 = string.Format($@"/*dialect*/Select B.FENTRYID,B.FRECADVANCEAMOUNT,ISNULL(B.F_ORDER,'') as 'F_ORDER',a.FID From
T_SAL_ORDER A
JOIN
T_SAL_ORDERPLAN B
@@ -55,45 +56,53 @@ namespace Pilot_KD_Parino.VRYF_FHTZDHXJL
Order by F_ORDER desc ,FENTRYID desc ");
var sql2List = DBUtils.ExecuteDynamicObject(Context, sql2);
//如果只有一个直接赋值
if (sql2List.Count == 1)
var fidList = sql2List.Select(t => t["FID"].ToString()).ToList().Distinct().ToList();
fidList.ForEach(t =>
{
string sql3 = string.Format(@"Update T_SAL_ORDERPLAN Set F_MBBA_Decimal_uky =ISNULL(F_MBBA_Decimal_uky,0)- {0} Where FENTRYID = {1};", FALLAMOUNT, sql2List[0]["FENTRYID"]);
string sql3 = $@"exec PR_ResetSALORDERPLAN_MBBA_yuyubo {t};";
DBUtils.ExecuteDynamicObject(Context, sql3);
}
if (sql2List.Count > 1)
{
for (int i = 0; i < sql2List.Count; i++)
{
//判断核销顺序是否为空
//if (!string.IsNullOrWhiteSpace(sql2List[i]["F_ORDER"]?.ToString()))
Thread.Sleep(300);
});
////如果只有一个直接赋值
//if (sql2List.Count == 1)
//{
//判断核销金额是否大于按照排序对冲金额
decimal FRECADVANCEAMOUNT = Convert.ToDecimal(sql2List[i]["FRECADVANCEAMOUNT"]); //应收款金额
decimal F_MBBA_Decimal_uky = Convert.ToDecimal(sql2List[i]["F_MBBA_Decimal_uky"]); //累计核销金额
if (FALLAMOUNT > 0 && F_MBBA_Decimal_uky > 0)
{
decimal fAmount = 0;
// string sql3 = string.Format(@"Update T_SAL_ORDERPLAN Set F_MBBA_Decimal_uky =ISNULL(F_MBBA_Decimal_uky,0)- {0} Where FENTRYID = {1};", FALLAMOUNT, sql2List[0]["FENTRYID"]);
// DBUtils.ExecuteDynamicObject(Context, sql3);
//}
//if (sql2List.Count > 1)
//{
// for (int i = 0; i < sql2List.Count; i++)
// {
// //判断核销顺序是否为空
// //if (!string.IsNullOrWhiteSpace(sql2List[i]["F_ORDER"]?.ToString()))
// //{
// //判断核销金额是否大于按照排序对冲金额
// decimal FRECADVANCEAMOUNT = Convert.ToDecimal(sql2List[i]["FRECADVANCEAMOUNT"]); //应收款金额
// decimal F_MBBA_Decimal_uky = Convert.ToDecimal(sql2List[i]["F_MBBA_Decimal_uky"]); //累计核销金额
// if (FALLAMOUNT > 0 && F_MBBA_Decimal_uky > 0)
// {
// decimal fAmount = 0;
//判断是否整条对冲
if (FALLAMOUNT - F_MBBA_Decimal_uky >= 0)
{
fAmount = F_MBBA_Decimal_uky;
}
else
{
fAmount = FALLAMOUNT;
}
string sql3 = string.Format(@"Update T_SAL_ORDERPLAN Set F_MBBA_Decimal_uky = ISNULL(F_MBBA_Decimal_uky,0)-{0} Where FENTRYID = {1};", fAmount, sql2List[i]["FENTRYID"]);
DBUtils.ExecuteDynamicObject(Context, sql3);
FALLAMOUNT = FALLAMOUNT - fAmount;
}
// //判断是否整条对冲
// if (FALLAMOUNT - F_MBBA_Decimal_uky >= 0)
// {
// fAmount = F_MBBA_Decimal_uky;
// }
// else
// {
// fAmount = FALLAMOUNT;
// }
// string sql3 = string.Format(@"Update T_SAL_ORDERPLAN Set F_MBBA_Decimal_uky = ISNULL(F_MBBA_Decimal_uky,0)-{0} Where FENTRYID = {1};", fAmount, sql2List[i]["FENTRYID"]);
// DBUtils.ExecuteDynamicObject(Context, sql3);
// FALLAMOUNT = FALLAMOUNT - fAmount;
// }
// //}
// }
//}
}
}
}
}
}
}
}

View File

@@ -9,6 +9,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Kingdee.BOS.App.Data;
using System.Threading;
namespace Pilot_KD_Parino.VRYF_FHTZDHXJL
{
@@ -39,7 +40,7 @@ namespace Pilot_KD_Parino.VRYF_FHTZDHXJL
FALLAMOUNT = Convert.ToDecimal(item["FALLAMOUNT2"]);
string sql2 = string.Format($@"/*dialect*/Select B.FENTRYID,B.FRECADVANCEAMOUNT,ISNULL(B.F_ORDER,'') as 'F_ORDER' From
string sql2 = string.Format($@"/*dialect*/Select B.FENTRYID,B.FRECADVANCEAMOUNT,ISNULL(B.F_ORDER,'') as 'F_ORDER',a.FID From
T_SAL_ORDER A
JOIN
T_SAL_ORDERPLAN B
@@ -48,45 +49,55 @@ namespace Pilot_KD_Parino.VRYF_FHTZDHXJL
Order by F_ORDER ,FENTRYID");
var sql2List = DBUtils.ExecuteDynamicObject(Context, sql2);
//如果只有一个直接赋值
if (sql2List.Count == 1)
{
string sql3 = string.Format(@"Update T_SAL_ORDERPLAN Set F_MBBA_Decimal_uky = {0} Where FENTRYID = {1};", FALLAMOUNT, sql2List[0]["FENTRYID"]);
DBUtils.ExecuteDynamicObject(Context, sql3);
}
if (sql2List.Count > 1)
{
for (int i = 0; i < sql2List.Count; i++)
{
//判断核销顺序是否为空
//if (!string.IsNullOrWhiteSpace(sql2List[i]["F_ORDER"]?.ToString()))
//{
//判断核销金额是否大于按照排序对冲金额
decimal FRECADVANCEAMOUNT = Convert.ToDecimal(sql2List[i]["FRECADVANCEAMOUNT"]);
decimal F_MBBA_Decimal_uky = Convert.ToDecimal(sql2List[i]["F_MBBA_Decimal_uky"]);
if (FALLAMOUNT > 0 && F_MBBA_Decimal_uky < FRECADVANCEAMOUNT)
{
decimal fAmount = 0;
decimal chazhi = FRECADVANCEAMOUNT - F_MBBA_Decimal_uky;
//判断是否整条对冲
if (FALLAMOUNT - chazhi >= 0)
{
fAmount = chazhi;
}
else
{
fAmount = FALLAMOUNT;
}
string sql3 = string.Format(@"Update T_SAL_ORDERPLAN Set F_MBBA_Decimal_uky = ISNULL(F_MBBA_Decimal_uky,0)+{0} Where FENTRYID = '{1}';", fAmount, sql2List[i]["FENTRYID"]);
DBUtils.ExecuteDynamicObject(Context, sql3);
FALLAMOUNT = FALLAMOUNT - fAmount;
}
var fidList = sql2List.Select(t => t["FID"].ToString()).ToList().Distinct().ToList();
fidList.ForEach(t =>
{
string sql3 = $@"exec PR_ResetSALORDERPLAN_MBBA_yuyubo {t};";
DBUtils.ExecuteDynamicObject(Context, sql3);
Thread.Sleep(300);
});
////如果只有一个直接赋值
//if (sql2List.Count == 1)
//{
// string sql3 = string.Format(@"Update T_SAL_ORDERPLAN Set F_MBBA_Decimal_uky = {0} Where FENTRYID = {1};", FALLAMOUNT, sql2List[0]["FENTRYID"]);
// DBUtils.ExecuteDynamicObject(Context, sql3);
//}
//if (sql2List.Count > 1)
//{
// for (int i = 0; i < sql2List.Count; i++)
// {
// //判断核销顺序是否为空
// //if (!string.IsNullOrWhiteSpace(sql2List[i]["F_ORDER"]?.ToString()))
// //{
// //判断核销金额是否大于按照排序对冲金额
// decimal FRECADVANCEAMOUNT = Convert.ToDecimal(sql2List[i]["FRECADVANCEAMOUNT"]);
// decimal F_MBBA_Decimal_uky = Convert.ToDecimal(sql2List[i]["F_MBBA_Decimal_uky"]);
// if (FALLAMOUNT > 0 && F_MBBA_Decimal_uky < FRECADVANCEAMOUNT)
// {
// decimal fAmount = 0;
// decimal chazhi = FRECADVANCEAMOUNT - F_MBBA_Decimal_uky;
// //判断是否整条对冲
// if (FALLAMOUNT - chazhi >= 0)
// {
// fAmount = chazhi;
// }
// else
// {
// fAmount = FALLAMOUNT;
// }
// string sql3 = string.Format(@"Update T_SAL_ORDERPLAN Set F_MBBA_Decimal_uky = ISNULL(F_MBBA_Decimal_uky,0)+{0} Where FENTRYID = '{1}';", fAmount, sql2List[i]["FENTRYID"]);
// DBUtils.ExecuteDynamicObject(Context, sql3);
// FALLAMOUNT = FALLAMOUNT - fAmount;
// }
// //}
// }
//}
}
}
}
}
}
}
}