Merge branch 'main' of http://8.130.121.29:3000/Develop/Piolot_Order_TH
This commit is contained in:
commit
ebfc3de501
@ -347,6 +347,8 @@
|
|||||||
<Compile Include="PUR_POORDER\HQKC.cs" />
|
<Compile Include="PUR_POORDER\HQKC.cs" />
|
||||||
<Compile Include="SAL_DELIVERYNOTICE\PushCeLue.cs" />
|
<Compile Include="SAL_DELIVERYNOTICE\PushCeLue.cs" />
|
||||||
<Compile Include="SAL_ORDERList\ListUpFJ.cs" />
|
<Compile Include="SAL_ORDERList\ListUpFJ.cs" />
|
||||||
|
<Compile Include="SAL_ORDER\ServicePlugIn\UnAudit.cs" />
|
||||||
|
<Compile Include="SAL_ORDER\ServicePlugIn\Audit.cs" />
|
||||||
<Compile Include="SAL_ORDER\DataChage.cs" />
|
<Compile Include="SAL_ORDER\DataChage.cs" />
|
||||||
<Compile Include="SAL_ORDER\SaveWL.cs" />
|
<Compile Include="SAL_ORDER\SaveWL.cs" />
|
||||||
<Compile Include="ScheduleService\SaleOrderReceiveAmount.cs" />
|
<Compile Include="ScheduleService\SaleOrderReceiveAmount.cs" />
|
||||||
|
|||||||
62
SAL_ORDER/ServicePlugIn/Audit.cs
Normal file
62
SAL_ORDER/ServicePlugIn/Audit.cs
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
using GZ_LTHPilot_ORDER.Service;
|
||||||
|
using Kingdee.BOS.Core.DynamicForm.PlugIn;
|
||||||
|
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
|
||||||
|
using Kingdee.BOS.Orm.DataEntity;
|
||||||
|
using Kingdee.BOS.Util;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace GZ_LTHPilot_ORDER.SAL_ORDER.ServicePlugIn
|
||||||
|
{
|
||||||
|
[Description("服务插件:销售订单审核,刷新销售订单整单可开票金额和退货金额金额字段"), HotUpdate]
|
||||||
|
|
||||||
|
public class Audit : AbstractOperationServicePlugIn
|
||||||
|
{
|
||||||
|
public override void OnPreparePropertys(PreparePropertysEventArgs e)
|
||||||
|
{
|
||||||
|
base.OnPreparePropertys(e);
|
||||||
|
e.FieldKeys.Add("F_totalinvoiceAmount"); // 整单可开票金额
|
||||||
|
e.FieldKeys.Add("F_allreturnAmount"); // 云星空退货金额
|
||||||
|
e.FieldKeys.Add("F_sourorderno"); // 源单编号
|
||||||
|
e.FieldKeys.Add("FSALEORGID"); // 销售组织
|
||||||
|
e.FieldKeys.Add("FRETURNTYPE"); // 退补类型
|
||||||
|
e.FieldKeys.Add("F_sourpapercontract"); // 源头纸质合同号#
|
||||||
|
e.FieldKeys.Add("F_contractnumber"); // 纸质合同号
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 审核插件执行后插件、事务提交后事件
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
|
||||||
|
{
|
||||||
|
base.AfterExecuteOperationTransaction(e);
|
||||||
|
SaleOrderService saleOrderService = new SaleOrderService(this.Context);
|
||||||
|
foreach (var bill in e.DataEntitys)
|
||||||
|
{
|
||||||
|
var org = bill["SALEORGID"] as DynamicObject;
|
||||||
|
var orgId = org["Id"].ToString(); // 销售组织
|
||||||
|
var contractNo = bill["F_contractnumber"].ToString(); // 纸质合同号
|
||||||
|
var srcContractNo = bill["F_sourpapercontract"].ToString(); // 源头纸质合同号
|
||||||
|
var saleOrderAmont = saleOrderService.GetSaleOrderAmount(orgId, contractNo); // 本单累计可开票金额
|
||||||
|
var k3RetrunAmount = saleOrderService.GetK3SaleOrderRetrunAmount(orgId, contractNo); // 本单云星空退货金额
|
||||||
|
var retrunAmount = saleOrderService.GetSaleOrderRetrunAmount(orgId, contractNo); // 本单k3退货金额
|
||||||
|
saleOrderService.UpdateSaleOrderOrderAmountAndRetrunAmount(orgId, contractNo, saleOrderAmont, retrunAmount, k3RetrunAmount);
|
||||||
|
if (srcContractNo.IsNullOrEmpty())
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
var srcSaleOrderAmont = saleOrderService.GetSaleOrderAmount(orgId, srcContractNo); // 源单累计可开票金额
|
||||||
|
var srcK3RetrunAmount = saleOrderService.GetK3SaleOrderRetrunAmount(orgId, srcContractNo); // 源单云星空退货金额
|
||||||
|
var srcRetrunAmount = saleOrderService.GetSaleOrderRetrunAmount(orgId, srcContractNo); // 源单k3退货金额
|
||||||
|
saleOrderService.UpdateSaleOrderOrderAmountAndRetrunAmount(orgId, srcContractNo, srcSaleOrderAmont, srcRetrunAmount, srcK3RetrunAmount);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
62
SAL_ORDER/ServicePlugIn/UnAudit.cs
Normal file
62
SAL_ORDER/ServicePlugIn/UnAudit.cs
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
using GZ_LTHPilot_ORDER.Service;
|
||||||
|
using Kingdee.BOS.Core.DynamicForm.PlugIn;
|
||||||
|
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
|
||||||
|
using Kingdee.BOS.Orm.DataEntity;
|
||||||
|
using Kingdee.BOS.Util;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace GZ_LTHPilot_ORDER.SAL_ORDER.ServicePlugIn
|
||||||
|
{
|
||||||
|
[Description("服务插件:销售订单反审核,刷新销售订单和源单整单可开票金额和退货金额金额字段"), HotUpdate]
|
||||||
|
|
||||||
|
public class UnAudit : AbstractOperationServicePlugIn
|
||||||
|
{
|
||||||
|
public override void OnPreparePropertys(PreparePropertysEventArgs e)
|
||||||
|
{
|
||||||
|
base.OnPreparePropertys(e);
|
||||||
|
e.FieldKeys.Add("F_totalinvoiceAmount"); // 整单可开票金额
|
||||||
|
e.FieldKeys.Add("F_allreturnAmount"); // 云星空退货金额
|
||||||
|
e.FieldKeys.Add("F_sourorderno"); // 源单编号
|
||||||
|
e.FieldKeys.Add("FSALEORGID"); // 销售组织
|
||||||
|
e.FieldKeys.Add("FRETURNTYPE"); // 退补类型
|
||||||
|
e.FieldKeys.Add("F_sourpapercontract"); // 源头纸质合同号#
|
||||||
|
e.FieldKeys.Add("F_contractnumber"); // 纸质合同号
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 审核插件执行后插件、事务提交后事件
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
|
||||||
|
{
|
||||||
|
base.AfterExecuteOperationTransaction(e);
|
||||||
|
SaleOrderService saleOrderService = new SaleOrderService(this.Context);
|
||||||
|
foreach (var bill in e.DataEntitys)
|
||||||
|
{
|
||||||
|
var org = bill["SALEORGID"] as DynamicObject;
|
||||||
|
var orgId = org["Id"].ToString(); // 销售组织
|
||||||
|
var contractNo = bill["F_contractnumber"].ToString(); // 纸质合同号
|
||||||
|
var srcContractNo = bill["F_sourpapercontract"].ToString(); // 源头纸质合同号
|
||||||
|
var saleOrderAmont = saleOrderService.GetSaleOrderAmount(orgId, contractNo); // 本单累计可开票金额
|
||||||
|
var k3RetrunAmount = saleOrderService.GetK3SaleOrderRetrunAmount(orgId, contractNo); // 本单云星空退货金额
|
||||||
|
var retrunAmount = saleOrderService.GetSaleOrderRetrunAmount(orgId, contractNo); // 本单k3退货金额
|
||||||
|
saleOrderService.UpdateSaleOrderOrderAmountAndRetrunAmount(orgId, contractNo, saleOrderAmont, retrunAmount, k3RetrunAmount);
|
||||||
|
if (srcContractNo.IsNullOrEmpty())
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
var srcSaleOrderAmont = saleOrderService.GetSaleOrderAmount(orgId, srcContractNo); // 源单累计可开票金额
|
||||||
|
var srcK3RetrunAmount = saleOrderService.GetK3SaleOrderRetrunAmount(orgId, srcContractNo); // 源单云星空退货金额
|
||||||
|
var srcRetrunAmount = saleOrderService.GetSaleOrderRetrunAmount(orgId, srcContractNo); // 源单k3退货金额
|
||||||
|
saleOrderService.UpdateSaleOrderOrderAmountAndRetrunAmount(orgId, srcContractNo, srcSaleOrderAmont, srcRetrunAmount, srcK3RetrunAmount);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -104,7 +104,7 @@ FROM
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private int InsertDataToTempTable(Context ctx, string tableName, Dictionary<string, string> orgDict, List<SaleExecuteOut> saleExecuteOuts)
|
private int InsertDataToTempTable(Context ctx, string tableName, Dictionary<string, string> orgDict, List<SaleExecuteOut> saleExecuteOuts)
|
||||||
{
|
{
|
||||||
var values = saleExecuteOuts.Select(n => $"({orgDict[n.FSALEORGNAME]},'{n.FSALEORGNAME}','{n.FBILLNO}',{n.FALLMATCHAMOUNT},'{n.FDate}')").ToList();
|
var values = saleExecuteOuts.Select(n => $"({orgDict[n.FSALEORGNAME]},'{n.FSALEORGNAME}','{n.FBILLNO}',{n.FALLMATCHAMOUNT.ToString()},'{n.FDate}')").ToList();
|
||||||
var index = 0;
|
var index = 0;
|
||||||
var line = 0;
|
var line = 0;
|
||||||
var pageSize = 100;
|
var pageSize = 100;
|
||||||
@ -135,7 +135,7 @@ VALUES
|
|||||||
FORGID int,
|
FORGID int,
|
||||||
FORGNAME NVARCHAR (100),
|
FORGNAME NVARCHAR (100),
|
||||||
FBILLNO NVARCHAR (100),
|
FBILLNO NVARCHAR (100),
|
||||||
FAMOUNT decimal,
|
FAMOUNT DECIMAL(18, 10),
|
||||||
FDATE DATETIME,
|
FDATE DATETIME,
|
||||||
);
|
);
|
||||||
";
|
";
|
||||||
|
|||||||
@ -5,62 +5,21 @@ using Kingdee.BOS.Contracts;
|
|||||||
using Kingdee.BOS.Core;
|
using Kingdee.BOS.Core;
|
||||||
using Kingdee.BOS.Util;
|
using Kingdee.BOS.Util;
|
||||||
using Kingdee.K3.FIN.App.Core.Match.Object;
|
using Kingdee.K3.FIN.App.Core.Match.Object;
|
||||||
|
using Kingdee.K3.SCM.Common.BusinessEntity.Sales;
|
||||||
using System;
|
using System;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
|
|
||||||
namespace GZ_LTHPilot_ORDER.ScheduleService
|
namespace GZ_LTHPilot_ORDER.ScheduleService
|
||||||
{
|
{
|
||||||
[Description("定时刷新销售订单累计开票金额#"), HotUpdate]
|
[Description("刷新所有销售订单累计开票金额#"), HotUpdate]
|
||||||
public class SaleOrderSumSicsAmountRefresh : IScheduleService
|
public class SaleOrderSumSicsAmountRefresh : IScheduleService
|
||||||
{
|
{
|
||||||
public void Run(Context ctx, Schedule schedule)
|
public void Run(Context ctx, Schedule schedule)
|
||||||
{
|
{
|
||||||
var advanceAays = GetAdvanceAays(schedule);
|
|
||||||
// 提前天的日期
|
|
||||||
var approvedDate = DateTime.Now.Date.AddDays(-advanceAays - 1);
|
|
||||||
// 销售发票服务
|
// 销售发票服务
|
||||||
SaleSicsService saleSicsService = new SaleSicsService(ctx);
|
SaleSicsService saleSicsService = new SaleSicsService(ctx);
|
||||||
// TODO 获取前一天的发票数据
|
// 刷新所有销售订单累计开票金额#
|
||||||
var sicsList = saleSicsService.GetSaleSiceListByApprovedDate(approvedDate);
|
saleSicsService.UpdateSaleOrderSumSicsamountAll();
|
||||||
SaleOrderService saleOrderService = new SaleOrderService(ctx);
|
|
||||||
foreach (var sice in sicsList)
|
|
||||||
{
|
|
||||||
var saleOrgId = sice["FSALEORGID"].ToString();
|
|
||||||
var contractNo = sice["contractNo"].ToString();
|
|
||||||
var saleOrderList = saleOrderService.GetSaleOrderByOrgIdAndContractNo(saleOrgId, contractNo);
|
|
||||||
if (saleOrderList.Count == 0)
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
var saleOrder = saleOrderList[0];
|
|
||||||
saleSicsService.UpdateSaleOrderSumSicsamountBySaleOrder(saleOrder);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 参数获取提前天
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="schedule"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
private int GetAdvanceAays(Schedule schedule)
|
|
||||||
{
|
|
||||||
// 参数获取提前天
|
|
||||||
var advanceAaysStr = schedule.Parameters;
|
|
||||||
int advanceAays;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
advanceAays = Convert.ToInt32(advanceAaysStr);
|
|
||||||
if (advanceAays < 0)
|
|
||||||
{
|
|
||||||
throw new Exception();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception)
|
|
||||||
{
|
|
||||||
|
|
||||||
throw new Exception("获取参数提前天失败,参数格式为整数,且大于等于0");
|
|
||||||
}
|
|
||||||
return advanceAays;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -34,68 +34,131 @@ namespace GZ_LTHPilot_ORDER.Service
|
|||||||
/// K3退货金额原币取数逻辑:K3退货金额除以销售订单汇率=K3退货金额原币
|
/// K3退货金额原币取数逻辑:K3退货金额除以销售订单汇率=K3退货金额原币
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="contractNo">纸质合同号</param>
|
/// <param name="contractNo">纸质合同号</param>
|
||||||
/// <param name="rate">销售订单汇率</param>
|
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public decimal GetK3SaleOrderRetrunAmount(string contractNo, string rate)
|
public decimal GetK3SaleOrderRetrunAmount(string orgId, string contractNo)
|
||||||
{
|
{
|
||||||
var sqlTemp = @"/*dialect*/SELECT
|
var sqlTemp = @"/*dialect*/WITH
|
||||||
ROUND(ISNULL (SUM(退货金额), 0) / {1}, 2) Amount
|
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
|
||||||
|
*
|
||||||
FROM
|
FROM
|
||||||
oldk3seorder0701 t1
|
K3returnAmount
|
||||||
WHERE
|
|
||||||
1 = 1
|
|
||||||
AND t1.合同号 = '{0}'
|
|
||||||
";
|
";
|
||||||
var sql = string.Format(sqlTemp, contractNo, rate);
|
var sql = string.Format(sqlTemp, orgId, contractNo);
|
||||||
var result = DBServiceHelper.ExecuteDynamicObject(ctx, sql);
|
var result = DBServiceHelper.ExecuteDynamicObject(ctx, sql);
|
||||||
return Convert.ToDecimal(result[0]["Amount"]);
|
if (result.Count == 0)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return Convert.ToDecimal(result[0]["K3returnAmount"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 云星空的退货金额取数逻辑:取已审核的退货通知单的表头字段 ”源头销售订单单号#“ =本销售订单编号的退货通知单原币价税合计金额
|
/// 云星空的退货金额取数逻辑:取已审核的退货通知单的表头字段 ”源头销售订单单号#“ =本销售订单编号的退货通知单原币价税合计金额
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="billNo">单据编号</param>
|
/// <param name="orgId"></param>
|
||||||
|
/// <param name="contractNo"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public decimal GetSaleOrderRetrunAmount(string billNo)
|
public decimal GetSaleOrderRetrunAmount(string orgId, string contractNo)
|
||||||
{
|
{
|
||||||
var sqlTemp = @"/*dialect*/SELECT
|
var sqlTemp = @"/*dialect*/WITH
|
||||||
ISNULL (SUM(FBILLALLAMOUNT), 0) Amount
|
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
|
||||||
|
*
|
||||||
FROM
|
FROM
|
||||||
T_SAL_RETURNNOTICE t1
|
returnAmount
|
||||||
LEFT JOIN T_SAL_RETURNNOTICEFIN t1fin ON t1.FID = t1fin.FID
|
|
||||||
WHERE
|
|
||||||
1 = 1
|
|
||||||
AND t1.FDOCUMENTSTATUS = 'C'
|
|
||||||
AND t1.FCANCELSTATUS = 'A'
|
|
||||||
AND t1.F_SOURORDERNO = '{0}'
|
|
||||||
";
|
";
|
||||||
var sql = string.Format(sqlTemp, billNo);
|
var sql = string.Format(sqlTemp, orgId, contractNo);
|
||||||
var result = DBServiceHelper.ExecuteDynamicObject(ctx, sql);
|
var result = DBServiceHelper.ExecuteDynamicObject(ctx, sql);
|
||||||
return Convert.ToDecimal(result[0]["Amount"]);
|
if (result.Count == 0)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return -Convert.ToDecimal(result[0]["returnAmount"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 订单明细正数的物料原币价税合计(只取退补类型不等于“退回“的物料明细)
|
/// 订单明细正数的物料原币价税合计(只取退补类型不等于“退回“的物料明细)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="id"></param>
|
/// <param name="orgId"></param>
|
||||||
|
/// <param name="contractNo"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public decimal GetSaleOrderAmount(string id)
|
public decimal GetSaleOrderAmount(string orgId, string contractNo)
|
||||||
{
|
{
|
||||||
var sqlTemp = @"/*dialect*/SELECT
|
var sqlTemp = @"/*dialect*/WITH
|
||||||
ISNULL (SUM(t1e_f.FALLAMOUNT), 0) Amount
|
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
|
||||||
|
*
|
||||||
FROM
|
FROM
|
||||||
T_SAL_ORDER t1
|
SaleOrderAmount
|
||||||
LEFT JOIN T_SAL_ORDERENTRY_F t1e_f ON t1.FID = t1e_f.FID
|
|
||||||
WHERE
|
|
||||||
1 = 1
|
|
||||||
AND t1.FDOCUMENTSTATUS = 'C'
|
|
||||||
AND t1.FCANCELSTATUS = 'A'
|
|
||||||
AND t1e_f.FALLAMOUNT > 0
|
|
||||||
AND t1.FID = '{0}'
|
|
||||||
";
|
";
|
||||||
var sql = string.Format(sqlTemp, id);
|
var sql = string.Format(sqlTemp, orgId, contractNo);
|
||||||
var result = DBServiceHelper.ExecuteDynamicObject(ctx, sql);
|
var result = DBServiceHelper.ExecuteDynamicObject(ctx, sql);
|
||||||
return Convert.ToDecimal(result[0]["Amount"]);
|
if (result.Count == 0)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return Convert.ToDecimal(result[0]["OrderAmount"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -240,5 +303,32 @@ WHERE
|
|||||||
}).ToList();
|
}).ToList();
|
||||||
return dataRow;
|
return dataRow;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -91,6 +91,59 @@ WHERE
|
|||||||
return DBServiceHelper.Execute(ctx, sql);
|
return DBServiceHelper.Execute(ctx, sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public int UpdateSaleOrderSumSicsamountAll()
|
||||||
|
{
|
||||||
|
var sql = @"/*dialect*/UPDATE t1
|
||||||
|
SET
|
||||||
|
t1.F_INVOICEAMOUNT = ISNULL (TEMP1.FAFTERTOTALTAXFOR, 0)
|
||||||
|
FROM
|
||||||
|
T_SAL_ORDER t1
|
||||||
|
INNER JOIN T_SAL_ORDERFIN t1fin ON t1.FID = t1fin.FID
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT
|
||||||
|
FSALEORGID,
|
||||||
|
F_PaperNumber,
|
||||||
|
SUM(FAFTERTOTALTAX) FAFTERTOTALTAX, -- 价税合计本币
|
||||||
|
SUM(FAFTERTOTALTAXFOR) FAFTERTOTALTAXFOR -- 价税合计原币
|
||||||
|
FROM
|
||||||
|
(
|
||||||
|
SELECT
|
||||||
|
v1.FSALEORGID, -- 销售组织
|
||||||
|
v1e.F_CONTRACTNO F_PaperNumber, -- 纸质合同号
|
||||||
|
ISNULL (v1e_o.FALLAMOUNT, 0) FAFTERTOTALTAX, -- 价税合计本币
|
||||||
|
ISNULL (v1e.FALLAMOUNTFOR, 0) FAFTERTOTALTAXFOR -- 价税合计
|
||||||
|
FROM
|
||||||
|
T_IV_SALESIC v1
|
||||||
|
INNER JOIN T_IV_SALESICENTRY v1e ON v1.FID = v1e.FID
|
||||||
|
LEFT JOIN T_IV_SALESICENTRY_O v1e_o ON v1e_o.FENTRYID = v1e.FENTRYID
|
||||||
|
WHERE
|
||||||
|
1 = 1
|
||||||
|
AND v1.FDOCUMENTSTATUS = 'C'
|
||||||
|
AND v1.FCANCELSTATUS = 'A'
|
||||||
|
AND v1.F_SFQC = 0
|
||||||
|
UNION ALL
|
||||||
|
SELECT
|
||||||
|
'100302' FSALEORGID, -- 销售组织
|
||||||
|
合同号 F_PaperNumber, -- 纸质合同号
|
||||||
|
SUM(ISNULL (发票金额, 0)) FAFTERTOTALTAX, -- 价税合计本币
|
||||||
|
SUM(ISNULL (发票原币金额, 0)) FAFTERTOTALTAXFOR -- 价税合计
|
||||||
|
FROM
|
||||||
|
oldk3ICSale0802
|
||||||
|
WHERE
|
||||||
|
1 = 1
|
||||||
|
GROUP BY
|
||||||
|
合同号
|
||||||
|
) temp02
|
||||||
|
GROUP BY
|
||||||
|
FSALEORGID,
|
||||||
|
F_PaperNumber
|
||||||
|
) TEMP1 ON t1.F_CONTRACTNUMBER = TEMP1.F_PaperNumber
|
||||||
|
AND t1.FSALEORGID = TEMP1.FSALEORGID
|
||||||
|
";
|
||||||
|
return DBServiceHelper.Execute(ctx, sql);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@ -19,6 +19,9 @@ namespace GZ_LTHPilot_ORDER.T_IV_SALESIC.ServicePlugIn
|
|||||||
{
|
{
|
||||||
base.OnPreparePropertys(e);
|
base.OnPreparePropertys(e);
|
||||||
e.FieldKeys.Add("F_PaperNumber");
|
e.FieldKeys.Add("F_PaperNumber");
|
||||||
|
e.FieldKeys.Add("F_contractno");
|
||||||
|
e.FieldKeys.Add("FALLAMOUNTFOR");
|
||||||
|
e.FieldKeys.Add("FSALEORGID");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -32,28 +35,34 @@ namespace GZ_LTHPilot_ORDER.T_IV_SALESIC.ServicePlugIn
|
|||||||
foreach (var bill in e.DataEntitys)
|
foreach (var bill in e.DataEntitys)
|
||||||
{
|
{
|
||||||
var org = bill["SALEORGID"] as DynamicObject;
|
var org = bill["SALEORGID"] as DynamicObject;
|
||||||
var orgId = org["Id"].ToString(); // 销售订单
|
var orgId = org["Id"].ToString(); // 销售组织
|
||||||
var contractNo = bill["F_PaperNumber"].ToString(); // 纸质合同号
|
|
||||||
|
var entryList = bill["SALESICENTRY"] as DynamicObjectCollection;
|
||||||
|
// 根据合同号分组
|
||||||
|
var grouped = entryList.GroupBy(n => n["F_contractno"].ToString());
|
||||||
|
|
||||||
// 销售订单服务
|
// 销售订单服务
|
||||||
var saleOrderService = new SaleOrderService(this.Context);
|
var saleOrderService = new SaleOrderService(this.Context);
|
||||||
// TODO 根据组织和纸质合同号查找销售订单
|
|
||||||
var saleOrderList = saleOrderService.GetSaleOrderByOrgIdAndContractNo(orgId, contractNo);
|
|
||||||
if (saleOrderList.Count == 0)
|
|
||||||
{
|
|
||||||
//var errInfo = string.Format("纸质合同号:{0},没有找到对应的销售订单,请检查销售订单是否已审核,或者被作废", contractNo);
|
|
||||||
//throw new Exception(errInfo);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (saleOrderList.Count > 1)
|
|
||||||
{
|
|
||||||
var errInfo = string.Format("纸质合同号:{0},找到多个销售订单,请检查组织内纸质合同号唯一性", contractNo);
|
|
||||||
throw new Exception(errInfo);
|
|
||||||
}
|
|
||||||
var saleOrder = saleOrderList[0];
|
|
||||||
// 发票服务
|
// 发票服务
|
||||||
SaleSicsService saleSicsService = new SaleSicsService(this.Context);
|
SaleSicsService saleSicsService = new SaleSicsService(this.Context);
|
||||||
// TODO 刷新销售订单单头的累计开票金额
|
foreach (var group in grouped)
|
||||||
saleSicsService.UpdateSaleOrderSumSicsamountBySaleOrder(saleOrder);
|
{
|
||||||
|
// 纸质合同号
|
||||||
|
var contractNo = group.Key;
|
||||||
|
|
||||||
|
// TODO 根据组织和纸质合同号查找销售订单
|
||||||
|
var saleOrderList = saleOrderService.GetSaleOrderByOrgIdAndContractNo(orgId, contractNo);
|
||||||
|
if (saleOrderList.Count == 0)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
foreach (var saleOrder in saleOrderList)
|
||||||
|
{
|
||||||
|
|
||||||
|
// TODO 刷新销售订单单头的累计开票金额
|
||||||
|
saleSicsService.UpdateSaleOrderSumSicsamountBySaleOrder(saleOrder);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -51,23 +51,17 @@ namespace GZ_LTHPilot_ORDER.T_IV_SALESIC.ServicePlugIn
|
|||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (saleOrderList.Count > 1)
|
var saleOrderNoList = saleOrderList.Select(n => n["FBILLNO"].ToString()).ToList();
|
||||||
{
|
var saleOrderNoString = string.Join(",\n\r", saleOrderNoList);
|
||||||
var errInfo = string.Format("纸质合同号:{0},找到多个销售订单,请检查组织内纸质合同号唯一性", contractNo);
|
|
||||||
throw new Exception(errInfo);
|
|
||||||
}
|
|
||||||
var saleOrder = saleOrderList[0];
|
var saleOrder = saleOrderList[0];
|
||||||
// 销售订单Id
|
|
||||||
var saleOrderId = saleOrder["FID"].ToString();
|
|
||||||
var saleOrderNo = saleOrder["FBILLNO"].ToString();
|
|
||||||
// 销售订单价税合计(原币)
|
// 销售订单价税合计(原币)
|
||||||
var saleOrderAmount = saleOrderService.GetSaleOrderAmount(saleOrderId);
|
var saleOrderAmount = saleOrderService.GetSaleOrderAmount(orgId, contractNo);
|
||||||
// 销售订单累计开票金额(原币)
|
// 销售订单累计开票金额(原币)
|
||||||
var saleOrderINVOICEAMOUNT = Convert.ToDecimal(saleOrder["F_INVOICEAMOUNT"]);
|
var saleOrderINVOICEAMOUNT = Convert.ToDecimal(saleOrder["F_INVOICEAMOUNT"]);
|
||||||
// 销售订单退货金额(原币)
|
// 销售订单退货金额(原币)
|
||||||
var rate = saleOrder["FEXCHANGERATE"].ToString();
|
var saleOrderReturnAmountK3Cloud = saleOrderService.GetSaleOrderRetrunAmount(orgId, contractNo);
|
||||||
var saleOrderReturnAmountK3Cloud = saleOrderService.GetSaleOrderRetrunAmount(saleOrderNo);
|
var saleOrderReturnAmountK3 = saleOrderService.GetK3SaleOrderRetrunAmount(orgId, contractNo);
|
||||||
var saleOrderReturnAmountK3 = saleOrderService.GetK3SaleOrderRetrunAmount(contractNo, rate);
|
// 销售订单退货金额(原币)
|
||||||
var saleOrderReturnAmount = saleOrderReturnAmountK3 + saleOrderReturnAmountK3Cloud;
|
var saleOrderReturnAmount = saleOrderReturnAmountK3 + saleOrderReturnAmountK3Cloud;
|
||||||
// 校验销售订单累计开票金额+本次开票金额不能大于销售订单价税合计
|
// 校验销售订单累计开票金额+本次开票金额不能大于销售订单价税合计
|
||||||
if (saleOrderAmount < saleOrderINVOICEAMOUNT + SumALLAMOUNTFOR - saleOrderReturnAmount)
|
if (saleOrderAmount < saleOrderINVOICEAMOUNT + SumALLAMOUNTFOR - saleOrderReturnAmount)
|
||||||
@ -80,7 +74,12 @@ namespace GZ_LTHPilot_ORDER.T_IV_SALESIC.ServicePlugIn
|
|||||||
PKValue = "1",
|
PKValue = "1",
|
||||||
Name = "检查开票金额是否超额",
|
Name = "检查开票金额是否超额",
|
||||||
MessageType = MessageType.FatalError,
|
MessageType = MessageType.FatalError,
|
||||||
Message = string.Format($@"销售订单:'{saleOrderNo}' , 纸质合同号:'{contractNo}', 开票超额。 不满足条件:销售订单价税合计 >= 累计开票金额 + 本次开票金额 - 退货金额。销售订单价税合计:{saleOrderAmount.ToString("0.00")}, 累计开票金额:{saleOrderINVOICEAMOUNT.ToString("0.00")},本次开票金额:{SumALLAMOUNTFOR.ToString("0.00")},退货金额:{saleOrderReturnAmountK3Cloud.ToString("0.00")},K3退货金额:{saleOrderReturnAmountK3.ToString("0.00")}
|
Message = string.Format($@" 销售纸质合同号:'{contractNo}',
|
||||||
|
销售订单:'{saleOrderNoString}' , 开票超额。
|
||||||
|
不满足条件:整单可开票金额 >= 累计开票金额 + 本次开票金额。
|
||||||
|
整单可开票金额:{(saleOrderAmount - saleOrderReturnAmountK3Cloud - saleOrderReturnAmountK3).ToString("0.00")},
|
||||||
|
累计开票金额:{saleOrderINVOICEAMOUNT.ToString("0.00")},
|
||||||
|
本次开票金额:{SumALLAMOUNTFOR.ToString("0.00")},
|
||||||
|
|
||||||
"),
|
"),
|
||||||
SuccessStatus = false
|
SuccessStatus = false
|
||||||
|
|||||||
@ -19,8 +19,12 @@ namespace GZ_LTHPilot_ORDER.T_IV_SALESIC.ServicePlugIn
|
|||||||
{
|
{
|
||||||
base.OnPreparePropertys(e);
|
base.OnPreparePropertys(e);
|
||||||
e.FieldKeys.Add("F_PaperNumber");
|
e.FieldKeys.Add("F_PaperNumber");
|
||||||
|
e.FieldKeys.Add("F_contractno");
|
||||||
|
e.FieldKeys.Add("FALLAMOUNTFOR");
|
||||||
|
e.FieldKeys.Add("FSALEORGID");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 审核插件执行后插件、事务提交后事件
|
/// 审核插件执行后插件、事务提交后事件
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -31,27 +35,34 @@ namespace GZ_LTHPilot_ORDER.T_IV_SALESIC.ServicePlugIn
|
|||||||
foreach (var bill in e.DataEntitys)
|
foreach (var bill in e.DataEntitys)
|
||||||
{
|
{
|
||||||
var org = bill["SALEORGID"] as DynamicObject;
|
var org = bill["SALEORGID"] as DynamicObject;
|
||||||
var orgId = org["Id"].ToString(); // 销售订单
|
var orgId = org["Id"].ToString(); // 销售组织
|
||||||
var contractNo = bill["F_PaperNumber"].ToString(); // 纸质合同号
|
|
||||||
|
var entryList = bill["SALESICENTRY"] as DynamicObjectCollection;
|
||||||
|
// 根据合同号分组
|
||||||
|
var grouped = entryList.GroupBy(n => n["F_contractno"].ToString());
|
||||||
|
|
||||||
// 销售订单服务
|
// 销售订单服务
|
||||||
var saleOrderService = new SaleOrderService(this.Context);
|
var saleOrderService = new SaleOrderService(this.Context);
|
||||||
// TODO 根据组织和纸质合同号查找销售订单
|
|
||||||
var saleOrderList = saleOrderService.GetSaleOrderByOrgIdAndContractNo(orgId, contractNo);
|
|
||||||
if (saleOrderList.Count == 0)
|
|
||||||
{
|
|
||||||
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (saleOrderList.Count > 1)
|
|
||||||
{
|
|
||||||
var errInfo = string.Format("纸质合同号:{0},找到多个销售订单,请检查组织内纸质合同号唯一性", contractNo);
|
|
||||||
throw new Exception(errInfo);
|
|
||||||
}
|
|
||||||
var saleOrder = saleOrderList[0];
|
|
||||||
// 发票服务
|
// 发票服务
|
||||||
SaleSicsService saleSicsService = new SaleSicsService(this.Context);
|
SaleSicsService saleSicsService = new SaleSicsService(this.Context);
|
||||||
// TODO 刷新销售订单单头的累计开票金额
|
foreach (var group in grouped)
|
||||||
saleSicsService.UpdateSaleOrderSumSicsamountBySaleOrder(saleOrder);
|
{
|
||||||
|
// 纸质合同号
|
||||||
|
var contractNo = group.Key;
|
||||||
|
|
||||||
|
// TODO 根据组织和纸质合同号查找销售订单
|
||||||
|
var saleOrderList = saleOrderService.GetSaleOrderByOrgIdAndContractNo(orgId, contractNo);
|
||||||
|
if (saleOrderList.Count == 0)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
foreach (var saleOrder in saleOrderList)
|
||||||
|
{
|
||||||
|
|
||||||
|
// TODO 刷新销售订单单头的累计开票金额
|
||||||
|
saleSicsService.UpdateSaleOrderSumSicsamountBySaleOrder(saleOrder);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user