2025-08-08 09:00:56 +08:00
|
|
|
|
using Gatedge.Enpower.BOS.PlugIn.Utils;
|
|
|
|
|
|
using GZ_LTHPilot_ORDER.Models.K3Request;
|
2025-07-30 16:50:24 +08:00
|
|
|
|
using GZ_LTHPilot_ORDER.Models.K3Result;
|
|
|
|
|
|
using GZ_LTHPilot_ORDER.Models.VO;
|
|
|
|
|
|
using Kingdee.BOS;
|
|
|
|
|
|
using Kingdee.BOS.Orm.DataEntity;
|
|
|
|
|
|
using Kingdee.BOS.ServiceHelper;
|
2025-07-30 17:28:36 +08:00
|
|
|
|
using Kingdee.BOS.Util;
|
2025-07-30 16:50:24 +08:00
|
|
|
|
using Kingdee.BOS.WebApi.FormService;
|
|
|
|
|
|
using Kingdee.K3.FIN.App.Core.Match.Object;
|
|
|
|
|
|
using Newtonsoft.Json;
|
|
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections.Generic;
|
2025-08-07 15:47:30 +08:00
|
|
|
|
using System.Diagnostics.Contracts;
|
2025-07-30 16:50:24 +08:00
|
|
|
|
using System.Linq;
|
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
|
|
|
|
|
|
namespace GZ_LTHPilot_ORDER.Service
|
|
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 销售订单服务类
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public class SaleOrderService
|
|
|
|
|
|
{
|
|
|
|
|
|
private Context ctx;
|
|
|
|
|
|
|
|
|
|
|
|
public SaleOrderService(Context ctx)
|
|
|
|
|
|
{
|
|
|
|
|
|
this.ctx = ctx;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-08-07 15:47:30 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// K3退货金额原币取数逻辑:K3退货金额除以销售订单汇率=K3退货金额原币
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="contractNo">纸质合同号</param>
|
|
|
|
|
|
/// <returns></returns>
|
2025-08-16 17:47:20 +08:00
|
|
|
|
public decimal GetK3SaleOrderRetrunAmount(string orgId, string contractNo)
|
2025-08-07 15:47:30 +08:00
|
|
|
|
{
|
2025-08-16 17:47:20 +08:00
|
|
|
|
var sqlTemp = @"/*dialect*/WITH
|
|
|
|
|
|
K3returnAmount AS (
|
|
|
|
|
|
SELECT
|
|
|
|
|
|
t2.F_CONTRACTNUMBER,
|
|
|
|
|
|
ROUND(ISNULL (SUM(退货金额), 0) / t2fin.FEXCHANGERATE, 2) K3returnAmount
|
|
|
|
|
|
FROM
|
|
|
|
|
|
oldk3seorder0701 t1
|
|
|
|
|
|
Inner join T_SAL_ORDER t2 on t1.合同号 = t2.F_CONTRACTNUMBER
|
|
|
|
|
|
and t2.FSALEORGID = '100302'
|
|
|
|
|
|
inner join T_SAL_ORDERFIN t2fin on t2.fid = t2fin.fid
|
|
|
|
|
|
WHERE
|
|
|
|
|
|
1 = 1
|
|
|
|
|
|
AND t2.FSALEORGID = '{0}'
|
|
|
|
|
|
AND t2.F_CONTRACTNUMBER = '{1}'
|
|
|
|
|
|
GROUP BY
|
|
|
|
|
|
t2.FSALEORGID,
|
|
|
|
|
|
t2.F_CONTRACTNUMBER,
|
|
|
|
|
|
t2fin.FEXCHANGERATE
|
|
|
|
|
|
)
|
|
|
|
|
|
SELECT
|
|
|
|
|
|
*
|
2025-08-07 15:47:30 +08:00
|
|
|
|
FROM
|
2025-08-16 17:47:20 +08:00
|
|
|
|
K3returnAmount
|
2025-08-07 15:47:30 +08:00
|
|
|
|
";
|
2025-08-16 17:47:20 +08:00
|
|
|
|
var sql = string.Format(sqlTemp, orgId, contractNo);
|
2025-08-07 15:47:30 +08:00
|
|
|
|
var result = DBServiceHelper.ExecuteDynamicObject(ctx, sql);
|
2025-08-16 17:47:20 +08:00
|
|
|
|
if (result.Count == 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
return Convert.ToDecimal(result[0]["K3returnAmount"]);
|
2025-08-07 15:47:30 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 云星空的退货金额取数逻辑:取已审核的退货通知单的表头字段 ”源头销售订单单号#“ =本销售订单编号的退货通知单原币价税合计金额
|
|
|
|
|
|
/// </summary>
|
2025-08-16 17:47:20 +08:00
|
|
|
|
/// <param name="orgId"></param>
|
|
|
|
|
|
/// <param name="contractNo"></param>
|
2025-08-07 15:47:30 +08:00
|
|
|
|
/// <returns></returns>
|
2025-08-16 17:47:20 +08:00
|
|
|
|
public decimal GetSaleOrderRetrunAmount(string orgId, string contractNo)
|
2025-08-07 15:47:30 +08:00
|
|
|
|
{
|
2025-08-16 17:47:20 +08:00
|
|
|
|
var sqlTemp = @"/*dialect*/WITH
|
|
|
|
|
|
returnAmount AS (
|
|
|
|
|
|
SELECT
|
|
|
|
|
|
t2.F_CONTRACTNUMBER,
|
|
|
|
|
|
t2.FSALEORGID,
|
|
|
|
|
|
ISNULL (SUM(t1e_f.FALLAMOUNT), 0) returnAmount
|
|
|
|
|
|
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_SAL_ORDER t2 -- 上游单据
|
|
|
|
|
|
ON t1.F_SOURORDERNO = t2.FBILLNO
|
|
|
|
|
|
AND t1.FSALEORGID = t1.FSALEORGID
|
|
|
|
|
|
WHERE
|
|
|
|
|
|
1 = 1
|
|
|
|
|
|
AND t1.FBUSINESSTYPE = 'RETURNSO' -- 退货订单
|
|
|
|
|
|
AND t2.FDOCUMENTSTATUS = 'C'
|
|
|
|
|
|
AND t1.FDOCUMENTSTATUS = 'C'
|
|
|
|
|
|
AND t1e.FRETURNTYPE = 'RETURN' -- 退货类型
|
|
|
|
|
|
AND t2.FSALEORGID = '{0}'
|
|
|
|
|
|
AND t2.F_CONTRACTNUMBER = '{1}'
|
|
|
|
|
|
GROUP BY
|
|
|
|
|
|
t2.F_CONTRACTNUMBER,
|
|
|
|
|
|
t2.FSALEORGID
|
|
|
|
|
|
)
|
|
|
|
|
|
SELECT
|
|
|
|
|
|
*
|
2025-08-07 15:47:30 +08:00
|
|
|
|
FROM
|
2025-08-16 17:47:20 +08:00
|
|
|
|
returnAmount
|
2025-08-07 15:47:30 +08:00
|
|
|
|
";
|
2025-08-16 17:47:20 +08:00
|
|
|
|
var sql = string.Format(sqlTemp, orgId, contractNo);
|
2025-08-07 15:47:30 +08:00
|
|
|
|
var result = DBServiceHelper.ExecuteDynamicObject(ctx, sql);
|
2025-08-16 17:47:20 +08:00
|
|
|
|
if (result.Count == 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
return -Convert.ToDecimal(result[0]["returnAmount"]);
|
2025-08-07 15:47:30 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 订单明细正数的物料原币价税合计(只取退补类型不等于“退回“的物料明细)
|
|
|
|
|
|
/// </summary>
|
2025-08-16 17:47:20 +08:00
|
|
|
|
/// <param name="orgId"></param>
|
|
|
|
|
|
/// <param name="contractNo"></param>
|
2025-08-07 15:47:30 +08:00
|
|
|
|
/// <returns></returns>
|
2025-08-16 17:47:20 +08:00
|
|
|
|
public decimal GetSaleOrderAmount(string orgId, string contractNo)
|
2025-08-07 15:47:30 +08:00
|
|
|
|
{
|
2025-08-16 17:47:20 +08:00
|
|
|
|
var sqlTemp = @"/*dialect*/WITH
|
|
|
|
|
|
SaleOrderAmount AS (
|
|
|
|
|
|
SELECT
|
|
|
|
|
|
t1.F_CONTRACTNUMBER,
|
|
|
|
|
|
t1.FSALEORGID,
|
|
|
|
|
|
ISNULL (SUM(t1e_f.FALLAMOUNT), 0) OrderAmount
|
|
|
|
|
|
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
|
|
|
|
|
|
WHERE
|
|
|
|
|
|
1 = 1
|
|
|
|
|
|
AND t1.FDOCUMENTSTATUS = 'C'
|
|
|
|
|
|
AND t1.FCANCELSTATUS = 'A'
|
|
|
|
|
|
AND t1e.FRETURNTYPE <> 'RETURN' -- 退补类型不等于退货
|
|
|
|
|
|
AND t1.FSALEORGID = '{0}'
|
|
|
|
|
|
AND t1.F_CONTRACTNUMBER = '{1}'
|
|
|
|
|
|
GROUP BY
|
|
|
|
|
|
t1.F_CONTRACTNUMBER,
|
|
|
|
|
|
t1.FSALEORGID
|
|
|
|
|
|
)
|
|
|
|
|
|
SELECT
|
|
|
|
|
|
*
|
2025-08-07 15:47:30 +08:00
|
|
|
|
FROM
|
2025-08-16 17:47:20 +08:00
|
|
|
|
SaleOrderAmount
|
2025-08-07 15:47:30 +08:00
|
|
|
|
";
|
2025-08-16 17:47:20 +08:00
|
|
|
|
var sql = string.Format(sqlTemp, orgId, contractNo);
|
2025-08-07 15:47:30 +08:00
|
|
|
|
var result = DBServiceHelper.ExecuteDynamicObject(ctx, sql);
|
2025-08-16 17:47:20 +08:00
|
|
|
|
if (result.Count == 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
return Convert.ToDecimal(result[0]["OrderAmount"]);
|
2025-08-07 15:47:30 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-07-30 16:50:24 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 根据纸质合同号、组织获取销售订单
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
public DynamicObjectCollection GetSaleOrderByOrgIdAndContractNo(string orgId, string contractNo)
|
|
|
|
|
|
{
|
|
|
|
|
|
var sqlTemp = @"/*dialect*/SELECT
|
|
|
|
|
|
*
|
|
|
|
|
|
FROM
|
|
|
|
|
|
T_SAL_ORDER t1
|
|
|
|
|
|
LEFT JOIN T_SAL_ORDERFIN t1fin ON t1.FID = t1fin.FID
|
|
|
|
|
|
WHERE
|
|
|
|
|
|
1 = 1
|
|
|
|
|
|
AND t1.FDOCUMENTSTATUS = 'C'
|
|
|
|
|
|
AND t1.FCANCELSTATUS = 'A'
|
|
|
|
|
|
AND t1.FSALEORGID = '{0}'
|
|
|
|
|
|
AND t1.F_CONTRACTNUMBER = '{1}'
|
|
|
|
|
|
";
|
|
|
|
|
|
var sql = string.Format(sqlTemp, orgId, contractNo);
|
|
|
|
|
|
var resultData = DBServiceHelper.ExecuteDynamicObject(ctx, sql);
|
|
|
|
|
|
return resultData;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 获取销售订单收款金额
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
public decimal GetSaleOrderReceiveAmount(string orgId, string billNo)
|
|
|
|
|
|
{
|
|
|
|
|
|
var saleOrder = this.GetSaleOrderByBillNoAndOrgId(orgId, billNo);
|
|
|
|
|
|
var date = Convert.ToDateTime(saleOrder["FDATE"]);
|
|
|
|
|
|
ReportDataParam param = new ReportDataParam()
|
|
|
|
|
|
{
|
|
|
|
|
|
ReturnJsonData = true,
|
|
|
|
|
|
FieldKeys = "FSALEORGNAME,FBILLNO,FDate,FALLMATCHAMOUNT",
|
|
|
|
|
|
IsVerifyBaseDataField = true,
|
|
|
|
|
|
Model = new Model()
|
|
|
|
|
|
{
|
|
|
|
|
|
FSaleOrgList = orgId,
|
2025-08-08 10:21:37 +08:00
|
|
|
|
FSoFromDate = date.AddDays(-30).ToString("yyyy-MM-dd HH:mm:ss"),
|
|
|
|
|
|
FSoToDate = date.AddDays(30).ToString("yyyy-MM-dd HH:mm:ss"),
|
2025-07-30 16:50:24 +08:00
|
|
|
|
FSaleOFrom = billNo,
|
|
|
|
|
|
FSaleOTo = billNo,
|
|
|
|
|
|
FFormCloseStatus = "ALL",
|
2025-08-05 23:41:16 +08:00
|
|
|
|
FFormStatus = "ALL",
|
2025-07-30 16:50:24 +08:00
|
|
|
|
FPriceFrom = "SALORDERBILL",
|
|
|
|
|
|
FBusCloseStatus = "ALL",
|
|
|
|
|
|
FMergingSOHeader = true,
|
2025-08-05 13:54:07 +08:00
|
|
|
|
FIncludedUnfilledOrders = true,
|
2025-07-30 16:50:24 +08:00
|
|
|
|
FIsRecWithMat = true,
|
2025-08-05 23:41:16 +08:00
|
|
|
|
FSuite = "All",
|
|
|
|
|
|
FSetAccountType = "ALL",
|
|
|
|
|
|
FIsGroup = false,
|
|
|
|
|
|
FIncludedFree = true
|
2025-07-30 16:50:24 +08:00
|
|
|
|
}
|
|
|
|
|
|
};
|
2025-08-08 10:21:37 +08:00
|
|
|
|
var jsonSetting = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore };
|
|
|
|
|
|
var paramString = JsonConvert.SerializeObject(param, Formatting.Indented, jsonSetting);
|
2025-07-30 17:28:36 +08:00
|
|
|
|
var resultDict = WebApiServiceCall.GetSysReportData(this.ctx, "SAL_DetailReport", paramString);
|
|
|
|
|
|
var resultString = JsonConvert.SerializeObject(resultDict);
|
|
|
|
|
|
var result = JsonConvert.DeserializeObject<KingdeeResult<SaleExecuteOut>>(resultString);
|
2025-07-30 16:50:24 +08:00
|
|
|
|
var rows = result.Result.Rows;
|
2025-08-05 23:41:16 +08:00
|
|
|
|
var dataRow = rows.Where(n => n.FBILLNO == billNo).ToList();
|
|
|
|
|
|
if (dataRow.Count() == 0)
|
2025-07-30 16:50:24 +08:00
|
|
|
|
{
|
2025-07-31 09:20:10 +08:00
|
|
|
|
return 0m;
|
2025-07-30 16:50:24 +08:00
|
|
|
|
}
|
2025-08-05 23:41:16 +08:00
|
|
|
|
if (dataRow[0].FALLMATCHAMOUNT.IsNullOrEmptyOrWhiteSpace())
|
2025-07-31 09:20:10 +08:00
|
|
|
|
{
|
|
|
|
|
|
return 0m;
|
|
|
|
|
|
}
|
2025-08-05 23:41:16 +08:00
|
|
|
|
return Convert.ToDecimal(dataRow[0].FALLMATCHAMOUNT);
|
2025-07-30 16:50:24 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public DynamicObject GetSaleOrderByBillNoAndOrgId(string orgId, string billNo)
|
|
|
|
|
|
{
|
|
|
|
|
|
var sqlTemp = @"/*dialect*/SELECT
|
|
|
|
|
|
*
|
|
|
|
|
|
FROM
|
|
|
|
|
|
T_SAL_ORDER t1
|
|
|
|
|
|
WHERE
|
|
|
|
|
|
1 = 1
|
|
|
|
|
|
AND t1.FSALEORGID = '{0}'
|
|
|
|
|
|
AND t1.FBILLNO = '{1}'
|
|
|
|
|
|
";
|
|
|
|
|
|
var sql = string.Format(sqlTemp, orgId, billNo);
|
|
|
|
|
|
var result = DBServiceHelper.ExecuteDynamicObject(this.ctx, sql);
|
|
|
|
|
|
if (result.Count == 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
throw new Exception($"组织:{orgId},没有找到编号为 {billNo} 的销售订单");
|
|
|
|
|
|
}
|
|
|
|
|
|
return result[0];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public List<SaleExecuteOut> GetSaleOrderReceiveAmountByDate(string orgId, DateTime startDate, DateTime endDate)
|
|
|
|
|
|
{
|
|
|
|
|
|
ReportDataParam param = new ReportDataParam()
|
|
|
|
|
|
{
|
|
|
|
|
|
ReturnJsonData = true,
|
|
|
|
|
|
FieldKeys = "FSALEORGNAME,FBILLNO,FDate,FALLMATCHAMOUNT",
|
|
|
|
|
|
IsVerifyBaseDataField = true,
|
|
|
|
|
|
Model = new Model()
|
|
|
|
|
|
{
|
|
|
|
|
|
FSaleOrgList = orgId,
|
2025-08-08 10:21:37 +08:00
|
|
|
|
FSoFromDate = startDate.ToString("yyyy-MM-dd HH:mm:ss"),
|
|
|
|
|
|
FSoToDate = endDate.ToString("yyyy-MM-dd HH:mm:ss"),
|
2025-07-30 16:50:24 +08:00
|
|
|
|
FFormCloseStatus = "ALL",
|
2025-08-05 23:41:16 +08:00
|
|
|
|
FFormStatus = "ALL",
|
2025-07-30 16:50:24 +08:00
|
|
|
|
FPriceFrom = "SALORDERBILL",
|
|
|
|
|
|
FBusCloseStatus = "ALL",
|
|
|
|
|
|
FMergingSOHeader = true,
|
2025-08-05 13:54:07 +08:00
|
|
|
|
FIncludedUnfilledOrders = true,
|
2025-07-30 16:50:24 +08:00
|
|
|
|
FIsRecWithMat = true,
|
2025-08-05 23:41:16 +08:00
|
|
|
|
FSuite = "All",
|
|
|
|
|
|
FSetAccountType = "ALL",
|
|
|
|
|
|
FIsGroup = false,
|
|
|
|
|
|
FIncludedFree = true
|
2025-07-30 16:50:24 +08:00
|
|
|
|
}
|
|
|
|
|
|
};
|
2025-08-08 10:21:37 +08:00
|
|
|
|
var jsonSetting = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore };
|
|
|
|
|
|
var paramString = JsonConvert.SerializeObject(param, Formatting.Indented, jsonSetting);
|
2025-08-08 11:13:12 +08:00
|
|
|
|
//LogUtil.Log("paramString", paramString);
|
2025-07-30 17:28:36 +08:00
|
|
|
|
var resultDict = WebApiServiceCall.GetSysReportData(this.ctx, "SAL_DetailReport", paramString);
|
|
|
|
|
|
var resultString = JsonConvert.SerializeObject(resultDict);
|
2025-08-08 11:13:12 +08:00
|
|
|
|
//LogUtil.Log("resultString", resultString);
|
2025-07-30 17:28:36 +08:00
|
|
|
|
var result = JsonConvert.DeserializeObject<KingdeeResult<SaleExecuteOut>>(resultString);
|
2025-08-02 02:30:43 +08:00
|
|
|
|
if (result.Result.RowCount == 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
return new List<SaleExecuteOut>();
|
|
|
|
|
|
}
|
2025-07-30 16:50:24 +08:00
|
|
|
|
var rows = result.Result.Rows;
|
2025-08-02 02:30:43 +08:00
|
|
|
|
|
2025-07-30 17:28:36 +08:00
|
|
|
|
var dataRow = rows.Where(n => n.FBILLNO.Trim() != string.Empty).Select(n => new SaleExecuteOut
|
|
|
|
|
|
{
|
|
|
|
|
|
FBILLNO = n.FBILLNO,
|
|
|
|
|
|
FDate = n.FDate,
|
|
|
|
|
|
FSALEORGNAME = n.FSALEORGNAME,
|
|
|
|
|
|
FALLMATCHAMOUNT = n.FALLMATCHAMOUNT.IsNullOrEmptyOrWhiteSpace() ? "0" : n.FALLMATCHAMOUNT.Replace(",", "").Trim(),
|
|
|
|
|
|
}).ToList();
|
2025-07-30 16:50:24 +08:00
|
|
|
|
return dataRow;
|
|
|
|
|
|
}
|
2025-08-16 17:47:20 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 更新销售订单K3退货金额,云星空退货金额,累计可开票金额,
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="orgId">销售组织</param>
|
|
|
|
|
|
/// <param name="contractNo">纸质合同号</param>
|
|
|
|
|
|
/// <param name="orderAmount">订单金额</param>
|
|
|
|
|
|
/// <param name="retrunAmount">云星空退货金额</param>
|
|
|
|
|
|
/// <param name="k3retrunAmount">K3退货金额</param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
public int UpdateSaleOrderOrderAmountAndRetrunAmount(string orgId, string contractNo, decimal orderAmount, decimal retrunAmount, decimal k3retrunAmount)
|
|
|
|
|
|
{
|
|
|
|
|
|
var sqlTemp = @"/*dialect*/UPDATE t1
|
|
|
|
|
|
SET
|
|
|
|
|
|
t1.F_K3returnAmount = {2}, -- k3退货金额
|
|
|
|
|
|
t1.F_ALLRETURNAMOUNT = {3}, -- 退货金额
|
|
|
|
|
|
t1.F_TOTALINVOICEAMOUNT = {4} - {2} - {3} -- 订单总金额-云星空退货金额-K3WISE退货金额
|
|
|
|
|
|
FROM
|
|
|
|
|
|
T_SAL_ORDER t1
|
|
|
|
|
|
WHERE
|
|
|
|
|
|
1 = 1
|
|
|
|
|
|
AND t1.FSALEORGID = '{0}'
|
|
|
|
|
|
AND t1.F_CONTRACTNUMBER = '{1}'
|
|
|
|
|
|
";
|
|
|
|
|
|
var sql = string.Format(sqlTemp, orgId, contractNo, k3retrunAmount, retrunAmount, orderAmount);
|
|
|
|
|
|
return DBServiceHelper.Execute(ctx, sql);
|
|
|
|
|
|
}
|
2025-10-27 23:16:14 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 获取已提交发票金额
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="orgId"></param>
|
|
|
|
|
|
/// <param name="contractNo"></param>
|
2025-10-27 23:51:36 +08:00
|
|
|
|
/// <param name="billIds"></param>
|
2025-10-27 23:16:14 +08:00
|
|
|
|
/// <returns></returns>
|
2025-10-27 23:51:36 +08:00
|
|
|
|
internal decimal GetSubmitedAmount(string orgId, string contractNo, List<string> billIds)
|
2025-10-27 23:16:14 +08:00
|
|
|
|
{
|
2025-10-27 23:51:36 +08:00
|
|
|
|
var billIdFilter = string.Empty;
|
|
|
|
|
|
if (billIds != null && billIds.Count > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
var billIdString = string.Join(",", billIds.Select(n => "'" + n + "'"));
|
|
|
|
|
|
billIdFilter = $@" AND t1.FID NOT IN ({billIdString}) ";
|
|
|
|
|
|
}
|
2025-10-27 23:16:14 +08:00
|
|
|
|
var sqlTemp = $@"/*dialect*/SELECT
|
2025-11-21 20:06:25 +08:00
|
|
|
|
ISNULL (SUM(t1e.FALLAMOUNTFOR), 0) AS SubmitAmount
|
2025-10-27 23:16:14 +08:00
|
|
|
|
FROM
|
|
|
|
|
|
T_IV_SALESIC t1
|
|
|
|
|
|
LEFT JOIN T_IV_SALESICENTRY t1e ON t1.FID = t1e.FID
|
|
|
|
|
|
LEFT JOIN T_IV_SALESICENTRY_O t1e_O ON t1e.FENTRYID = t1e_O.FENTRYID
|
|
|
|
|
|
WHERE
|
|
|
|
|
|
1 = 1
|
|
|
|
|
|
AND t1.FDOCUMENTSTATUS = 'B'
|
|
|
|
|
|
AND t1e.F_CONTRACTNO = '{contractNo}'
|
|
|
|
|
|
AND t1.FSALEORGID = '{orgId}'
|
2025-10-27 23:51:36 +08:00
|
|
|
|
{billIdFilter}
|
2025-10-27 23:16:14 +08:00
|
|
|
|
";
|
|
|
|
|
|
var sql = string.Format(sqlTemp, orgId, contractNo);
|
|
|
|
|
|
var result = DBServiceHelper.ExecuteDynamicObject(ctx, sql);
|
|
|
|
|
|
if (result.Count == 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
return Convert.ToDecimal(result[0]["SubmitAmount"]);
|
|
|
|
|
|
}
|
2025-07-30 16:50:24 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|