服务站间调拨 STF 与调拨申请

本文整理服务站间调拨 STF、调拨申请、调出入库、调拨收付款。STF 是跨服务站库存和财务同时变化的链路,排查时必须同时看调出方、调入方、库存流水和账户流水。

业务目标

  • 调入服务站发起调拨申请。
  • 调出服务站确认并出库。
  • 调入服务站收货入库。
  • 调拨过程可催办、撤销、导出、打印。
  • 调拨收款/付款和库存同步保持一致。

入口文件

  • 调拨申请:application/controllers/stf/Apply.php
  • 调拨出入库:application/controllers/stf/Invoice.php
  • 普通调拨:application/controllers/scm/InvTf.php
  • 申请服务:application/Services/Stf/ApplySer.php
  • 出入库服务:application/Services/Stf/InvoiceSer.php

核心表

| 表 | 用途 | | --- | --- | | t_scm_stf_apply | 服务站间调拨申请主表 | | t_scm_stf_apply_info | 调拨申请明细 | | t_scm_stf_invoice | 服务站间调拨出入库主单 | | t_scm_stf_invoice_info | 调拨出入库明细 | | t_scm_tf_invoice | 普通服务站调拨单 | | t_scm_tf_invoice_info | 普通调拨明细 | | t_scm_inventory / t_scm_inventory_info | 库存流水 | | t_scm_payment / t_scm_payment_info | 调拨收付款 | | t_scm_account / t_scm_account_info | 账户流水 |

核心方法

申请侧:

  • ApplySer::statistics:调拨统计。
  • ApplySer::getPageList:申请列表。
  • ApplySer::getWaitSettleList:待结算列表。
  • ApplySer::create:创建调拨申请。
  • ApplySer::copy:复制申请。
  • ApplySer::hasten:催办。
  • ApplySer::cancel:撤销。
  • ApplySer::export:导出。
  • ApplySer::printInfo:打印。
  • ApplySer::getGoodsInfo:调拨商品查询。

出入库侧:

  • InvoiceSer::outShow:调出展示。
  • InvoiceSer::getOutShowTemplate:调出模板。
  • InvoiceSer::out:调出确认。
  • InvoiceSer::inShow:调入展示。
  • InvoiceSer::in:调入确认。
  • InvoiceSer::rollback:回滚。

主流程

flowchart TD
  A["调入服务站创建申请"] --> B["调出服务站查看申请"]
  B --> C["确认可调拨数量和价格"]
  C --> D["调出出库"]
  D --> E["调出方库存减少"]
  E --> F["生成/推进调拨在途或待入库"]
  F --> G["调入方确认入库"]
  G --> H["调入方库存增加"]
  H --> I["生成调拨收付款和账户流水"]

状态和数量口径

  • 申请数量:调入方希望调拨的数量。
  • 可调数量:调出方仓库/货位可出数量。
  • 出库数量:调出方实际出库数量,减少调出方库存。
  • 入库数量:调入方实际收货数量,增加调入方库存。
  • 结算数量:财务收付款使用的数量,可能受出入库差异影响。

异常流程

  • 调出库存不足:查调出方 t_scm_inventory_real_time,确认仓库和货位。
  • 调入无法入库:查调拨出库单是否完成、入库单状态是否已入库。
  • 调拨价格错误:查申请明细、出库模板、结算价、客户价。
  • 回滚失败:查是否已有后续入库、收付款、账户流水。
  • 调拨报表不一致:查调出和调入两侧流水是否成对出现。

常用 SQL

select * from t_scm_stf_apply where apply_sid = :sid and billNo = :bill_no;
select * from t_scm_stf_apply_info where apply_id = :apply_id;
select * from t_scm_stf_invoice where sid in (:out_sid, :in_sid) and apply_id = :apply_id;
select * from t_scm_stf_invoice_info where invoice_id = :invoice_id;
select * from t_scm_inventory where sid in (:out_sid, :in_sid) and srcBillNo = :bill_no;

常用 rg 命令

rg -n "class Apply|function create|function cancel|function hasten" application/controllers/stf application/Services/Stf
rg -n "class Invoice|function out\\(|function in\\(|rollback|getOutShowTemplate" application/controllers/stf application/Services/Stf
rg -n "SCM_STF_APPLY|SCM_STF_INVOICE|TRANSTYPE_TRANSFER" application

改动风险和回归清单

  • 调入申请:新增、复制、撤销、催办、导出、打印。
  • 调出:可调库存、价格、出库库存流水。
  • 调入:收货入库、实时库存增加、差异处理。
  • 财务:调拨收款、调拨付款、账户流水。
  • 回滚:已入库、已结算、已对账场景必须单独验证。