销售完整排查手册
本文围绕销售单、出库单和退货单排查,适用于“销售单不能出库”“出库后库存不对”“配送/签收状态没同步”“APP/SAAS 没收到销售事件”等问题。
适用场景
- 销售单显示待出库,但明细已出库或库存已扣。
- 出库单已生成,配送/签收/对账状态未推进。
- 销售退货入库后库存未恢复。
- E站、APP、机器人、SAAS 订单生成销售单后状态异常。
- 下游 APP/SAAS 未收到销售单或出库单同步。
入口文件
- PC 销售:
application/controllers/scm/InvSa.php - 销售出库:
application/controllers/sale/OutOrder.php - App 销售 code:
application/config/appapis.php - 老销售服务:
application/service/scm/InvSaService.php - 新销售服务:
application/Services/SaOrders/SaOrderSer.php - 出库服务:
application/Services/SaOrders/SaInvoiceSer.php - 三方配送:
application/Services/SaOrders/ThirdDeliverySer.php - 下游同步:
application/Services/SyncOrder/SyncOrderSer.php - MQ 生产:
application/Services/Mq/MqSer.php
核心表
- 销售主单:
t_scm_sa_order - 销售明细:
t_scm_sa_order_info - 销售明细扩展:
t_scm_sa_order_info_ext - 销售出库主单:
t_scm_sa_invoice - 出库明细:
t_scm_sa_invoice_info - 出库明细扩展:
t_scm_sa_invoice_info_ext - 异常退货:
t_scm_abnormal_return_log - 三方配送:
t_scm_third_party_delivery_order - 出库配送关系:
t_sa_invoice_delivery_relation - 库存流水:
t_scm_inventory、t_scm_inventory_info - 实时库存:
t_scm_inventory_real_time
状态和枚举
- 销售单状态:
0待出库,1部分出库,2已完成,3已关闭。 - 出库单状态:
1已出库,2派送中,3已送达,4已对账,5已核销,6已撤销。 - 销售来源:
0销售开单,1ERP,8/9E站商城,10/15E站维修,14E站活动,16AI 助手,17-22E站 APP。 - 交易类型:销售单
170502,销售出库150601,销售退货150602。
主流程排查
- 定位销售主单。
- 用销售单号、
billNo、orderId、sid查t_scm_sa_order。 - 记录来源类型、支付方式、收款状态、销售状态、客户信息。
- 查销售明细。
- 查
t_scm_sa_order_info,关注销售数量、已出库数量、退货数量。 - 查
t_scm_sa_order_info_ext,确认活动、报价、外部订单关系。
- 查可出库数量。
- 对每个明细计算未出库数量。
- 查实时库存
t_scm_inventory_real_time,注意仓库、货位、invId/skuId口径。 - 如果列表有库存但出库失败,转到库存一致性手册。
- 查出库单。
- 查
t_scm_sa_invoice、t_scm_sa_invoice_info。 - 确认出库数量、货位、成本、出库状态。
- 出库成功应有库存流水减少。
- 查配送和签收。
- 普通配送看出库单状态和配送字段。
- 三方配送看
t_scm_third_party_delivery_order和t_sa_invoice_delivery_relation。 - 状态未同步时查配送中心/TMS 事件和回调日志。
- 查对账和核销。
- 已送达后可能进入对账、核销流程。
- 查收款单、账户流水、对账单相关表。
- 不要把“销售完成”和“财务核销完成”混为一个状态。
- 查下游同步。
- 销售单/出库单变更后通过
SyncOrderSer.php、MqSer.php发给 APP/SAAS。 - 用销售单号、出库单号查
dgj_notify事件和下游消费日志。
退货排查
- 查原销售单和原出库单,确认可退数量。
- 查退货申请或异常退货记录。
- 查销售退货入库库存流水,
transType = 150502。 - 查实时库存是否恢复。
- 查收款/退款和账户流水是否正确。
常用 SQL 模板
-- 销售主单和明细
select * from t_scm_sa_order where sid = :sid and billNo = :bill_no;
select * from t_scm_sa_order_info where sid = :sid and orderId = :order_id;
select * from t_scm_sa_order_info_ext where sid = :sid and orderId = :order_id;
-- 出库单和明细
select * from t_scm_sa_invoice where sid = :sid and srcBillNo = :sale_bill_no;
select * from t_scm_sa_invoice_info where sid = :sid and invoiceId = :invoice_id;
-- 库存流水和实时库存
select * from t_scm_inventory where sid = :sid and srcBillNo in (:sale_bill_no, :invoice_bill_no);
select * from t_scm_inventory_real_time where sid = :sid and invId = :inv_id;
常用 rg 命令
rg -n "appsale2StockOut|SaleStockOut|saleOrderAdd" application/config/appapis.php application/service application/Services
rg -n "SA_STATUS_|OUT_BILLSTATUS_|ORDER_SOURCE_TYPE_" application/KzData/Enums/SaOrderEnums.php
rg -n "sendSaOrder|sendSaOrderOut|SyncOrderSer|garage_repair_outbound" application/Services application/controllers/tasks
rg -n "SCM_SA_INVOICE|TRANSTYPE_SA_INVOICE_SALE|TRANSTYPE_SA_INVOICE_RETURN" application
改动风险和回归清单
- 销售开单、编辑、关闭。
- 部分出库、整单出库、货位库存扣减。
- 三方配送、签收、对账、核销。
- 销售退货和异常退货。
- E站/APP/机器人/SAAS 来源订单。
- 下游同步事件的创建、更新、取消、完成。