暂无
任务描述
需求描述
1.1. 背景
背景:业务及财务提出最近问题进行优化调整
1.2. 验收目标
1.计算订单利润队列服务优化(匹配不上时,跳开)
2.订单销售收入预估重复扣税调整
3.ERP首页同比逻辑调优
2. 功能设计
2.1. 业务流程
无
2.2.1 操作路径
1. 销售管理--客户订单
2.2.3 计算订单利润队列服务优化(匹配不上时,跳开)
2.2.3.1 功能点描述:
原设计:
因现有服务在订单出现产品信息匹配错误时,会有不断重试机制;导致队列堵塞影响其他业务正常使用。
调整:
在订单出现产品信息匹配错误时,区分重试机制在最后队列时间;
2.2.3 订单销售收入预估重复扣税调整
2.2.3.1 功能点描述:
原设计:
无
预估收入时,并且在预估时退款,因为取订单退款总额没有去税,导致正负不一致;
202301160914135088046 订单销售收入里面扣了一次税 后面又扣除了一次税 导致订单负利润

调整:
退款总额减去税费;
2.2.3 ERP首页同比逻辑调优
2.2.3.1 功能点描述:
原设计:
无
调整:
首页同比的意思是当前 7 天,对比上一年 7 天数据,实际业务上是下滑状态,但数据因为有退款或其他因素导致同比呈现上升(有时下降);
该需求针对同比再次梳理嵌套的逻辑,提供数据依据给予产品经理及配合业务参考调优;

验收标准
暂无

首页7天销售额及同比逻辑整理
统计脚本如下:
DECLARE @Now DATETIME='2023-02-10' --首页统计 SELECT CONVERT(decimal(18,2),Yestoday)+CONVERT(decimal(18,2),TwoDaysAgo)+CONVERT(decimal(18,2),ThreeDaysAgo)+CONVERT(decimal(18,2),FourDaysAgo)+CONVERT(decimal(18,2),FiveDaysAgo)+CONVERT(decimal(18,2),SixDaysAgo)+CONVERT(decimal(18,2),SevenDaysAgo) AS SevenDaySales,YearOnYear,* FROM RB_Report_StatisticsBoard(NOLOCK) WHERE CustomerID=1 AND [Name]='销售额' DECLARE @DtStart DATETIME =DATEADD(DAY,-7,@Now) DECLARE @DtEnd DATETIME=DATEADD(SECOND,-1, @Now) --最近7天销售额 SELECT SUM(T1.TotalPriceUSD) AS '近7天销售额' FROM ( SELECT '最近7天销售额' AS Title,T.dt,SUM(CASE WHEN T.OrderSourceType=1 OR T.OrderSourceType=2 THEN T.SalesUSD-T.TotalActivityMinusPrice ELSE T.SalesUSD END) AS TotalPriceUSD FROM ( SELECT oi.CustomerID, SUM ( CASE WHEN TotalPrice = 0 AND oi.DownLoadUpdateTime= '2000-01-01' THEN 0 ELSE 1 END ) AS OrderNum, CONVERT(VARCHAR(100), oi.AddTime, 23) dt, os.OrderSourceType OrderSourceType, (SUM ( TotalPrice ) / (CASE WHEN SUM(CASE WHEN TotalPrice = 0 THEN 0 ELSE 1 END) = 0 THEN 1 ELSE SUM(CASE WHEN TotalPrice = 0 THEN 0 ELSE 1 END) END) * SUM ( CASE WHEN TotalPrice = 0 AND oi.DownLoadUpdateTime= '2000-01-01' THEN 0 ELSE 1 END ))AS SalesUSD, SUM ( TotalPrice ) / (CASE WHEN SUM(CASE WHEN TotalPrice = 0 THEN 0 ELSE 1 END) = 0 THEN 1 ELSE SUM(CASE WHEN TotalPrice = 0 THEN 0 ELSE 1 END) END) AS SinglePrice, SUM( oi.TotalActivityMinusPrice ) as TotalActivityMinusPrice FROM ( SELECT oi.CustomerID, oi.OrderSourceID, oi.OrderCode, oi.TotalPrice / (CASE WHEN ExchangeUSD = 0 THEN 1 ELSE ExchangeUSD END) as TotalPrice, oi.DownLoadUpdateTime, oi.ExchangeUSD, oi.AddTime, (CASE WHEN oi.TotalPrice = 0 THEN 0 ELSE SUM(ol.ActivityMinusPrice/ (CASE WHEN ExchangeUSD = 0 THEN 1 ELSE ExchangeUSD END) ) END) as TotalActivityMinusPrice FROM dbo.RB_OrderInfo oi WITH (NOLOCK) LEFT JOIN RB_OrderList ol WITH (NOLOCK) ON oi.CustomerID = ol.CustomerID and oi.OrderCode = ol.OrderCode WHERE oi.AddTime >= @DtStart AND oi.AddTime <= @DtEnd AND oi.IsStockOrder = 0 AND IsSystem = 0 AND ( ( IsPay = 1 AND IsFBAOrder = 0 ) OR IsFBAOrder = 1 ) AND OrderStatus <> 2 GROUP BY oi.CustomerID, oi.OrderSourceID, oi.OrderCode, oi.TotalPrice, oi.DownLoadUpdateTime, oi.ExchangeUSD, oi.AddTime )oi inner JOIN RB_OrderSource (NOLOCK) os ON oi.OrderSourceID = os.ID AND oi.CustomerID= os.CustomerID GROUP BY oi.CustomerID, CONVERT(VARCHAR(100), oi.AddTime, 23),os.OrderSourceType ) T GROUP BY T.dt --ORDER BY T.dt DESC ) T1 SET @Now = DATEADD(YEAR,-1,@Now) SET @DtStart = DATEADD(DAY,-7,@Now) SET @DtEnd =DATEADD(SECOND,-1, @Now) --同比近7天销售额 SELECT SUM(CASE WHEN T2.OrderSourceType=1 OR T2.OrderSourceType=2 THEN T2.SalesUSD-T2.TotalActivityMinusPrice ELSE T2.SalesUSD END) AS '同比近7天销售额' FROM ( SELECT t.CustomerID ,t.OrderNum, CAST(t.dt AS DATETIME) dt, t.OrderSourceType, t.SalesUSD, t.SinglePrice, t.TotalActivityMinusPrice from ( SELECT oi.CustomerID, SUM ( CASE WHEN TotalPrice = 0 AND oi.DownLoadUpdateTime= '2000-01-01' THEN 0 ELSE 1 END ) AS OrderNum, CONVERT(VARCHAR(100), oi.AddTime, 23) dt, os.OrderSourceType OrderSourceType, (SUM ( TotalPrice ) / (CASE WHEN SUM(CASE WHEN TotalPrice = 0 THEN 0 ELSE 1 END) = 0 THEN 1 ELSE SUM(CASE WHEN TotalPrice = 0 THEN 0 ELSE 1 END) END) * SUM ( CASE WHEN TotalPrice = 0 AND oi.DownLoadUpdateTime= '2000-01-01' THEN 0 ELSE 1 END ))AS SalesUSD, SUM ( TotalPrice ) / (CASE WHEN SUM(CASE WHEN TotalPrice = 0 THEN 0 ELSE 1 END) = 0 THEN 1 ELSE SUM(CASE WHEN TotalPrice = 0 THEN 0 ELSE 1 END) END) AS SinglePrice, SUM( oi.TotalActivityMinusPrice ) as TotalActivityMinusPrice FROM ( SELECT oi.CustomerID, oi.OrderSourceID, oi.OrderCode, oi.TotalPrice / (CASE WHEN ExchangeUSD = 0 THEN 1 ELSE ExchangeUSD END) as TotalPrice, oi.DownLoadUpdateTime, oi.ExchangeUSD, oi.AddTime, (CASE WHEN oi.TotalPrice = 0 THEN 0 ELSE SUM(ol.ActivityMinusPrice/ (CASE WHEN ExchangeUSD = 0 THEN 1 ELSE ExchangeUSD END) ) END) as TotalActivityMinusPrice FROM dbo.RB_OrderInfo oi WITH (NOLOCK) LEFT JOIN RB_OrderList ol WITH (NOLOCK) ON oi.CustomerID = ol.CustomerID and oi.OrderCode = ol.OrderCode WHERE oi.AddTime >= @DtStart AND oi.AddTime <= @DtEnd AND oi.IsStockOrder = 0 AND IsSystem = 0 AND ( ( IsPay = 1 AND IsFBAOrder = 0 ) OR IsFBAOrder = 1 ) AND OrderStatus <> 2 GROUP BY oi.CustomerID, oi.OrderSourceID, oi.OrderCode, oi.TotalPrice, oi.DownLoadUpdateTime, oi.ExchangeUSD, oi.AddTime )oi inner JOIN RB_OrderSource (NOLOCK) os ON oi.OrderSourceID = os.ID AND oi.CustomerID= os.CustomerID GROUP BY oi.CustomerID, CONVERT(VARCHAR(100), oi.AddTime, 23),os.OrderSourceType ) t ) t2