新增定时属性销售订单累计核销金额字段,

修复发票反审核时没有刷新累计开票金额字段的问题,
修改累计开票金额取数逻辑

TODO:销售发票提交校验逻辑修改
This commit is contained in:
朱斌 2025-07-31 17:39:21 +08:00
parent b47838589d
commit a18026e5bc
5 changed files with 74 additions and 20 deletions

View File

@ -440,6 +440,7 @@
</Target> </Target>
<Import Project="packages\SkiaSharp.NativeAssets.Win32.2.88.8\build\net462\SkiaSharp.NativeAssets.Win32.targets" Condition="Exists('packages\SkiaSharp.NativeAssets.Win32.2.88.8\build\net462\SkiaSharp.NativeAssets.Win32.targets')" /> <Import Project="packages\SkiaSharp.NativeAssets.Win32.2.88.8\build\net462\SkiaSharp.NativeAssets.Win32.targets" Condition="Exists('packages\SkiaSharp.NativeAssets.Win32.2.88.8\build\net462\SkiaSharp.NativeAssets.Win32.targets')" />
<PropertyGroup> <PropertyGroup>
<PostBuildEvent>copy $(TargetPath) "D:\kingdee\K3Cloud\WebSite\Bin\$(TargetFileName)"</PostBuildEvent> <PostBuildEvent>
</PostBuildEvent>
</PropertyGroup> </PropertyGroup>
</Project> </Project>

View File

@ -29,20 +29,61 @@ namespace GZ_LTHPilot_ORDER.ScheduleService
var orgList = orgService.GetOrgList(); var orgList = orgService.GetOrgList();
var tableName = tempTableService.CreateTempTable(); var tableName = tempTableService.CreateTempTable();
CreateTempTable(ctx, tableName); CreateTempTable(ctx, tableName);
var advanceAays = GetAdvanceAays(schedule);
var planStartDate = DateTime.Now;
foreach (var item in orgList) foreach (var item in orgList)
{ {
var advanceAays = GetAdvanceAays(schedule); // 获取组织Id
var orgId = item["FORGID"].ToString(); var orgId = item["FORGID"].ToString();
// 提前天的日期
var startDate = DateTime.Now.Date.AddDays(-advanceAays - 1); // 循环查询销售订单执行明细表,每次查询一个月的数据, 将数据插入自定义临时表中
var endDate = DateTime.Now; var startDate = planStartDate.AddDays(-advanceAays);
var endDate = startDate.AddMonths(1);
// 如果开始时间大于计划开始时间,说明结束了
while (startDate > planStartDate)
{
var receiveAmountList = saleOrderService.GetSaleOrderReceiveAmountByDate(orgId, startDate, endDate); var receiveAmountList = saleOrderService.GetSaleOrderReceiveAmountByDate(orgId, startDate, endDate);
InsertDataToTempTable(ctx, tableName, orgId, receiveAmountList); InsertDataToTempTable(ctx, tableName, orgId, receiveAmountList);
startDate = startDate.AddMonths(1);
endDate = startDate.AddMonths(1);
} }
} }
UpdateSaleOrderReceiveAmount(ctx, tableName);
tempTableService.DropTempTable(tableName);
}
/// <summary>
/// 更新销售订单累计核销金额
/// </summary>
/// <param name="ctx"></param>
/// <param name="tableName"></param>
/// <returns></returns>
private int UpdateSaleOrderReceiveAmount(Context ctx, string tableName)
{
var sql = $@"
UPDATE t1
SET
t1.F_AMOUNT = FAMOUNT
FROM
T_SAL_ORDER t1
INNER JOIN {tableName} t2 ON t1.FSALEORGID = t2.FORGID
AND t1.FBILLNO = t2.FBILLNO
";
return DBServiceHelper.Execute(ctx, sql);
}
/// <summary>
/// 将查询的数据插入临时表
/// </summary>
/// <param name="ctx"></param>
/// <param name="tableName"></param>
/// <param name="orgId"></param>
/// <param name="saleExecuteOuts"></param>
/// <returns></returns>
private int InsertDataToTempTable(Context ctx, string tableName, string orgId, List<SaleExecuteOut> saleExecuteOuts) private int InsertDataToTempTable(Context ctx, string tableName, string orgId, List<SaleExecuteOut> saleExecuteOuts)
{ {
var values = saleExecuteOuts.Select(n => $"({orgId},'{n.FSALEORGNAME}','{n.FBILLNO}',{n.FALLMATCHAMOUNT},'{n.FDate}')"); var values = saleExecuteOuts.Select(n => $"({orgId},'{n.FSALEORGNAME}','{n.FBILLNO}',{n.FALLMATCHAMOUNT},'{n.FDate}')");
@ -56,6 +97,11 @@ VALUES
return DBServiceHelper.Execute(ctx, sqlTemp); return DBServiceHelper.Execute(ctx, sqlTemp);
} }
/// <summary>
/// 创建临时表
/// </summary>
/// <param name="ctx"></param>
/// <param name="tableName"></param>
private void CreateTempTable(Context ctx, string tableName) private void CreateTempTable(Context ctx, string tableName)
{ {
var sql = $@" var sql = $@"

View File

@ -30,8 +30,6 @@ namespace GZ_LTHPilot_ORDER.ScheduleService
var saleOrderList = saleOrderService.GetSaleOrderByOrgIdAndContractNo(saleOrgId, contractNo); var saleOrderList = saleOrderService.GetSaleOrderByOrgIdAndContractNo(saleOrgId, contractNo);
if (saleOrderList.Count == 0) if (saleOrderList.Count == 0)
{ {
//var errInfo = string.Format("纸质合同号:{0},没有找到对应的销售订单,请检查销售订单是否已审核,或者被作废", contractNo);
//throw new Exception(errInfo);
continue; continue;
} }
var saleOrder = saleOrderList[0]; var saleOrder = saleOrderList[0];

View File

@ -37,38 +37,48 @@ namespace GZ_LTHPilot_ORDER.Service
var saleOrgId = saleOrder["FSALEORGID"].ToString(); var saleOrgId = saleOrder["FSALEORGID"].ToString();
var sqlTemp = @"/*dialect*/UPDATE t1 var sqlTemp = @"/*dialect*/UPDATE t1
SET SET
t1.F_INVOICEAMOUNT = TEMP1.FAFTERTOTALTAX t1.F_INVOICEAMOUNT = ISNULL (TEMP1.FAFTERTOTALTAXFOR, 0) + ROUND(
(
ISNULL (TEMP1.FAFTERTOTALTAX, 0) / ISNULL (t1fin.FEXCHANGERATE, 0)
),
2
)
FROM FROM
T_SAL_ORDER t1 T_SAL_ORDER t1
INNER JOIN ( INNER JOIN T_SAL_ORDERFIN t1fin ON t1.FID = t1fin.FID
LEFT JOIN (
SELECT SELECT
FSALEORGID, FSALEORGID,
F_PaperNumber, F_PaperNumber,
SUM(FAFTERTOTALTAX) FAFTERTOTALTAX SUM(FAFTERTOTALTAX) FAFTERTOTALTAX, --
SUM(FAFTERTOTALTAXFOR) FAFTERTOTALTAXFOR --
FROM FROM
( (
SELECT SELECT
FSALEORGID, -- FSALEORGID, --
F_PaperNumber, -- F_PaperNumber, --
ISNULL (FAFTERTOTALTAX, 0) FAFTERTOTALTAX -- 0 FAFTERTOTALTAX,
ISNULL (FAFTERTOTALTAXFOR, 0) FAFTERTOTALTAXFOR --
FROM FROM
T_IV_SALESIC T_IV_SALESIC
WHERE WHERE
1 = 1 1 = 1
AND FDOCUMENTSTATUS = 'C' AND FDOCUMENTSTATUS = 'C'
AND FCANCELSTATUS = 'A' AND FCANCELSTATUS = 'A'
AND FDATE >= '2025-01-01'
AND FSALEORGID = '{0}' AND FSALEORGID = '{0}'
AND F_PaperNumber = '{1}' AND F_PaperNumber = '{1}'
AND FDATE >= '2025-01-01'
UNION ALL UNION ALL
SELECT SELECT
'100302' FSALEORGID, -- '100302' FSALEORGID, --
F_PaperNumber, -- F_PaperNumber, --
SUM(ISNULL (, 0) + ISNULL (, 0)) FAFTERTOTALTAX -- SUM(ISNULL (, 0) + ISNULL (, 0)) FAFTERTOTALTAX, --
FROm 0 --
dbo.oldk3seorder0701 FROM
oldk3seorder0701
WHERE WHERE
1 = 1 1 = 1
AND < '2025-01-01'
AND = '{1}' AND = '{1}'
GROUP BY GROUP BY

View File

@ -39,8 +39,7 @@ namespace GZ_LTHPilot_ORDER.T_IV_SALESIC.ServicePlugIn
var saleOrderList = saleOrderService.GetSaleOrderByOrgIdAndContractNo(orgId, contractNo); var saleOrderList = saleOrderService.GetSaleOrderByOrgIdAndContractNo(orgId, contractNo);
if (saleOrderList.Count == 0) if (saleOrderList.Count == 0)
{ {
//var errInfo = string.Format("纸质合同号:{0},没有找到对应的销售订单,请检查销售订单是否已审核,或者被作废", contractNo);
//throw new Exception(errInfo);
continue; continue;
} }
if (saleOrderList.Count > 1) if (saleOrderList.Count > 1)