表名:RB_Finance_Settlement
当更新时间
(1)如果发货时间月份<更新时间时间月份-1,则账期时间=更新时间
(2)如果当前月份-1发货时间月份<更新时间月份,则账期时间=发货时间
(3)如果发货时间月份=当前月份,则账期时间=发货时间
=更新时间月份关账时间时:
(1)如果发货时间月份
账期时间=更新时间
(2)如果发货时间月份=更新时间月份
账期时间=发货时间
举例:假设当前时间(更新时间)是3月1日,关账时间是3月4日
(1)如果发货时间月份<更新时间时间月份-1,则账期时间=更新时间
订单利润表数据:
| 更新时间(updatetime) | 订单号 |
发货时间 |
费用 |
| 3月2日 | A001 | 1月1日 | 10 |
| 更新时间 | 订单号 |
账期时间(checkdate) | 发货时间(shipdate) |
费用 |
| 3月2日 | A001 | 3月2日 | 1月1日 | 10 |
订单利润表
| 更新时间 | 订单号 |
发货时间 |
费用 |
| 3月2日 | A001 | 2月1日 | 10 |
| 更新时间 | 订单号 |
账期时间(checkdate) | 发货时间(shipdate) |
费用 |
| 3月1日 | A001 | 2月1日 | 2月1日 | 10 |
(3)如果发货时间月份=当前月份,则账期时间=发货时间
订单利润表数据:
| 更新时间 | 订单号 |
发货时间 |
费用 |
| 3月2日 | A001 | 3月1日 | 10 |
售成本汇总表数据
| 更新时间 | 订单号 |
账期时间(checkdate) | 发货时间(shipdate) |
费用 |
| 3月2日 | A001 | 3月1日 | 3月1日 | 10 |
举例:假设当前时间(更新时间)是3月10日,关账时间是3月4日
=当前月份关账时间时:
(1)如果发货时间月份
账期时间=更新时间
订单利润表数据:
| 更新时间 | 订单号 |
发货时间 |
费用 |
| 3月10日 | A001 | 1月1日或者2月1日 | 10 |
销售成本汇总表数据
| 更新时间 | 订单号 |
账期时间(checkdate) | 发货时间(shipdate) |
费用 |
| 3月10日 | A001 | 3月10日 | 1月1日或者2月1日 | 10 |
账期时间=发货时间
订单利润表数据:
| 更新时间 | 订单号 |
发货时间 |
费用 |
| 3月10日 | A001 | 3月1日 | 10 |
销售成本汇总表数据
| 更新时间 | 订单号 |
账期时间(checkdate) | 发货时间(shipdate) |
费用 |
| 3月10日 | A001 | 3月1日 | 3月1日 | 10 |
测试环境:主干
测试场景:
需求
25895 销售成本汇总表逻辑修正
----------------------------------------造数据
创建利润表(RB_Report_OrderSettlement)信息并且同步到销售成本表(RB_Finance_Settlement)。同步利润和关账属于同一服务,该服务运行同步后即紧接着会对销售成本表最近2天内更新的销售成本关账。
--利润表数据同步到销售成本表的逻辑是利润表的
RB_Report_OrderSettlement.ID > RB_Warehouse_Record_SynTime.SynID
RB_Report_OrderSettlement.UpdateTim e> RB_Warehouse_Record_SynTime.SynTime
SELECT MIN(ID),MIN(UpdateTime) FROM RB_Report_OrderSettlement
729 2022-01-22 17:25:50.457
SELECT SynID,SynTime,* FROM RB_Warehouse_Record_SynTime(NOLOCK) WHERE SynType=10
Update RB_Warehouse_Record_SynTime SET SynID=728,SynTime='2022-01-22' WHERE SynType=10
------------------------------------------------
ShipTime--发货时间
UpdateTime--更新时间
CheckDate--关帐时间
大条件精确到年月日时分秒
小条件只比较月份
--------------------------------------------------------------------------------
当更新时间<更新时间月份关账时间时:
(1)如果发货时间月份<更新时间时间月份-1,则账期时间=更新时间
(2)如果当前月份-1<=发货时间月份<更新时间月份,则账期时间=发货时间
(3)如果发货时间月份=当前月份,则账期时间=发货时间
一、RB_Finance_Settlement.UpdateTime < 系统参数配置 本月2号23.59.59 包含1号2号
1、RB_Finance_Settlement.ShipTime < RB_Finance_Settlement.UpdateTime 的月份 - 1 = (RB_Finance_Settlement.CheckDate=RB_Finance_Settlement.UpdateTime)
2、当前月份 - 1 <=RB_Finance_Settlement.ShipTime 并且 < RB_Finance_Settlement.UpdateTime 则 (RB_Finance_Settlement.CheckDate=RB_Finance_Settlement.ShipTime)
3、RB_Finance_Settlement.ShipTime = 当前时间月份 则 (RB_Finance_Settlement.CheckDate=RB_Finance_Settlement.ShipTime)
-------------------------------------------------------------------------
当更新时间>=更新时间月份关账时间时:
(1)如果发货时间月份<更新时间月份
账期时间=更新时间
(2)如果发货时间月份=更新时间月份
账期时间=发货时间
二、RB_Finance_Settlement.UpdateTime >= 系统参数配置 本月2号23.59.59 包含1号2号
1、 RB_Finance_Settlement.ShipTime < RB_Finance_Settlement.UpdateTime 则 (RB_Finance_Settlement.CheckDate=RB_Finance_Settlement.UpdateTime)
2、 RB_Finance_Settlement.ShipTime = RB_Finance_Settlement.UpdateTime 则 (RB_Finance_Settlement.CheckDate=RB_Finance_Settlement.ShipTime)
---------------------------------------------------------------------------------------
SQL相关
SELECT ShipTime,UpdateTime,CheckDate,* from RB_Finance_Settlement
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
备注:实际系统参数配置会默认加一天,例如设置的时间是28,则会默认加一天到29号的23时59分59秒(原有逻辑)