销售完整排查手册

本文围绕销售单、出库单和退货单排查,适用于“销售单不能出库”“出库后库存不对”“配送/签收状态没同步”“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_inventoryt_scm_inventory_info
  • 实时库存:t_scm_inventory_real_time

状态和枚举

  • 销售单状态:0 待出库,1 部分出库,2 已完成,3 已关闭。
  • 出库单状态:1 已出库,2 派送中,3 已送达,4 已对账,5 已核销,6 已撤销。
  • 销售来源:0 销售开单,1 ERP,8/9 E站商城,10/15 E站维修,14 E站活动,16 AI 助手,17-22 E站 APP。
  • 交易类型:销售单 170502,销售出库 150601,销售退货 150602

主流程排查

  1. 定位销售主单。
  • 用销售单号、billNoorderIdsidt_scm_sa_order
  • 记录来源类型、支付方式、收款状态、销售状态、客户信息。
  1. 查销售明细。
  • t_scm_sa_order_info,关注销售数量、已出库数量、退货数量。
  • t_scm_sa_order_info_ext,确认活动、报价、外部订单关系。
  1. 查可出库数量。
  • 对每个明细计算未出库数量。
  • 查实时库存 t_scm_inventory_real_time,注意仓库、货位、invId/skuId 口径。
  • 如果列表有库存但出库失败,转到库存一致性手册。
  1. 查出库单。
  • t_scm_sa_invoicet_scm_sa_invoice_info
  • 确认出库数量、货位、成本、出库状态。
  • 出库成功应有库存流水减少。
  1. 查配送和签收。
  • 普通配送看出库单状态和配送字段。
  • 三方配送看 t_scm_third_party_delivery_ordert_sa_invoice_delivery_relation
  • 状态未同步时查配送中心/TMS 事件和回调日志。
  1. 查对账和核销。
  • 已送达后可能进入对账、核销流程。
  • 查收款单、账户流水、对账单相关表。
  • 不要把“销售完成”和“财务核销完成”混为一个状态。
  1. 查下游同步。
  • 销售单/出库单变更后通过 SyncOrderSer.phpMqSer.php 发给 APP/SAAS。
  • 用销售单号、出库单号查 dgj_notify 事件和下游消费日志。

退货排查

  1. 查原销售单和原出库单,确认可退数量。
  2. 查退货申请或异常退货记录。
  3. 查销售退货入库库存流水,transType = 150502
  4. 查实时库存是否恢复。
  5. 查收款/退款和账户流水是否正确。

常用 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 来源订单。
  • 下游同步事件的创建、更新、取消、完成。