跳至內容
Astera Technology

哪些調倉貨已發出,但仍未收齊?

逐筆列出調倉未收數量及發貨後日數,讓同事按單據跟進。

先訂清楚要判斷甚麼,再準備資料

發貨和收貨要分開記錄,並沿用同一張調倉單。收貨可能分批完成,只用「已收/未收」會看不到尚欠多少。例子固定以 2026 年 10 月 10 日計算,日後重做仍可核對相同結果。

以下全部是假設資料。請在新的 SQLite 測試資料庫建立各表,再執行唯讀查詢。數量以件計,金額以港元的分作整數儲存;顯示港元時除以 100。

假設輸入節錄;完整相關資料見下方 SQL
編號貨品編號已發數量已收數量發貨日期
1A742026-10-05
2B222026-10-06
下載可編輯 CSV ↓
可直接執行的完整假設資料(SQLite)
CREATE TABLE stock(sku TEXT PRIMARY KEY, opening_qty INTEGER, counted_qty INTEGER);
CREATE TABLE movements(id INTEGER PRIMARY KEY, sku TEXT, qty INTEGER, moved_on TEXT);
CREATE TABLE reservations(id INTEGER PRIMARY KEY, sku TEXT, qty INTEGER, status TEXT);
CREATE TABLE transfers(id INTEGER PRIMARY KEY, sku TEXT, sent_qty INTEGER, received_qty INTEGER, sent_on TEXT);
INSERT INTO stock VALUES ('A',10,12),('B',8,3),('C',6,6);
INSERT INTO movements VALUES (1,'A',5,'2026-10-01'),(2,'A',-2,'2026-10-02'),(3,'B',-5,'2026-10-03'),(4,'C',0,'2026-08-01');
INSERT INTO reservations VALUES (1,'A',8,'confirmed'),(2,'A',3,'cancelled'),(3,'B',5,'confirmed');
INSERT INTO transfers VALUES (1,'A',7,4,'2026-10-05'),(2,'B',2,2,'2026-10-06');

執行查詢,核對實際結果

SQLite 唯讀查詢
SELECT id,sku,sent_qty,received_qty,sent_qty-received_qty AS in_transit_qty,
 CAST(julianday('2026-10-10')-julianday(sent_on) AS INTEGER) AS days_since_sent
FROM transfers WHERE sent_qty>received_qty ORDER BY id;
以上 SQLite 假設資料的查詢結果
編號貨品編號已發數量已收數量未收數量發貨後曆日
1A7435
下載可編輯 CSV ↓

調倉單 1 發出 7 件 A,只收到 4 件,尚欠 3 件,已過 5 個曆日;調倉單 2 已收齊,不需跟進。應先查收貨憑證及目的倉情況,不能立即判定遺失,也不能把未收貨加入可用存量。

按資料範圍使用結果

例子採用累計收貨數。逐次記收貨的系統要先合計已確認收貨,另查是否收多於發。日數是曆日,不代表工作天或承諾送達期限。

本例的建表、資料及結果已在 SQLite 執行。套用時先在系統測試副本調整欄位及狀態規則,再與流程負責人核對預期結果。其他資料庫平台未經測試。

相關資源