服务站间调拨 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
改动风险和回归清单
- 调入申请:新增、复制、撤销、催办、导出、打印。
- 调出:可调库存、价格、出库库存流水。
- 调入:收货入库、实时库存增加、差异处理。
- 财务:调拨收款、调拨付款、账户流水。
- 回滚:已入库、已结算、已对账场景必须单独验证。