GZ_KD_Parino/GZ_KD_Parino/Services/SaleOrderService.cs
2025-07-31 09:52:50 +08:00

76 lines
2.1 KiB
C#

using Kingdee.BOS;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceHelper;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GZ_KD_Parino.Services
{
/// <summary>
/// 销售订单服务类
/// </summary>
public class SaleOrderService
{
private Context ctx;
public SaleOrderService(Context ctx)
{
this.ctx = ctx;
}
/// <summary>
/// 销售订单获取历史单价
/// 销售订单,根据组织+客户+商机名称#+物料代码带出最近一次历史销售含税单价,
/// 取当前日期前,审核日期最大的销售订单含税单价,日期越大表示离当前日期越近
/// </summary>
/// <returns></returns>
public DynamicObject GetHistoryOrder(string orgId, string custId, string bonId, string materialId, DateTime createDate)
{
var sql = $@"/*dialect*/WITH
SJname AS (
SELECT
t1_l.FNAME
FROM
T_BAS_PREBDTHREE t1
INNER JOIN T_BAS_PREBDTHREE_L t1_l ON t1.FID = t1_l.FID
AND t1_l.FLocaleID = 2052
WHERE
t1.FID = '{bonId}'
)
SELECT
TOP 1 t1e_f.*
FROM
T_SAL_ORDER t1
INNER JOIN T_SAL_ORDERENTRY t1e ON t1.FID = t1e.FID
INNER JOIN T_SAL_ORDERENTRY_F t1e_f ON t1e.FENTRYID = t1e_f.FENTRYID
INNER JOIN T_BAS_PREBDONE_L t2_L ON t1.F_PROJECTNAME = t2_L.FID
AND t2_L.FLocaleID = 2052
WHERE
1 = 1
AND t1.FDOCUMENTSTATUS = 'C' -- 已审核
AND t1.FCANCELSTATUS = 'A' -- 未作废
AND t2_L.FNAME IN (
SELECT
FNAME
FROM
SJname
)
AND t1.FAPPROVEDATE < '{createDate.ToString("yyyy-MM-dd HH:mm:ss")}'
AND t1.FSALEORGID = '{orgId}'
AND t1.FCUSTID = '{custId}'
AND t1e.FMATERIALID = '{materialId}'
ORDER BY
t1.FCREATEDATE DESC
";
var result = DBServiceHelper.ExecuteDynamicObject(this.ctx, sql);
if (result.Count == 0)
{
return null;
}
return result[0];
}
}
}