ピッキング:ウェーブ、ピックタスク、PICK-STAGE
ウェーブ解放(手動/定時)、オーダー別ピックタスク生成、モバイルでのステップ実行——部分ピック、スキップ、short対応を含む。
ウェーブ解放#
ウェーブは出庫伝票(wms_shipments)をmerchant×フィルターでグループ化し、件数で分割して解放します。ウェーブ内の伝票ごとにピックタスクを生成。入口は手動解放(wave/manual)と定時解放(scheduler+外部cron)の2つ。対象はstatusがcommit/draft/readyの伝票のみ、未完了ウェーブ(draft/released/picking)にロックされた伝票は除外されます。
- Wave Filter:conditions[{field, operator, values[]}]、operatorはin/not_in/eq/ne/gt/lt/gte/lte(wave/filter画面)。
- Dispatch Setting:customer_filters[{merchant_id,filter_id}]、max/min_order_qty_per_plan、default_pick_method(order/batch/wave/wave_by_item、既定order)、is_active(wave/settings画面)。
- Scheduler:work_days(1=月曜…7=日曜、既定1–5)、time_from/time_to、step_minutes、is_active(wave/scheduler画面)。
- 締切時刻:merchant/運送会社別にHH:MMで設定(wave/cutoff-time画面)。
- Customer(merchant、必須)+Dispatch Settingを1つ以上選択→プレビュー:settingごとのヒット件数+グループ別明細を表示、ウェーブは作成しません。
- 必要に応じてmin/max_qty_per_batchを上書き(Min ≤ Maxを検証)。
- 解放:ウェーブを作成——wave_no = WV-YYYYMMDD-NNNN、status=released(作成時点で解放済み、draft中間状態なし)、shipment_idsに出庫伝票ID配列を格納。
- 解放後、画面にウェーブ内出庫伝票の一覧が表示され、伝票ごとにCreate Pick Taskできます(下記参照)。
- 定時解放:外部cronがN分ごとに/api/wms/wave/scheduler/runへPOST(x-cron-secretヘッダー付き)。「曜日がwork_days内、現在時刻がtime_from~time_to内、前回実行からstep_minutes以上経過」のschedulerのみ実行します。
ピックタスクの生成#
- 入口は3つ:解放済みウェーブ画面 / オーダー一覧で複数選択→Create Pick Task / オーダー詳細のCreate Pick Task。
- pick_method=order:オーダーごとに1タスク。タスク行=出庫明細行×システム割当ロケーション(pickゾーン優先、在庫不足は割当可能数量で行を作成、差分はwarningsへ)。
- 経路計画:ロケーションの歩行順で各行にseqを付与、モバイルはseq順にロケーションと数量をガイドします。
- 重複防止:未完了ピックタスクにpending行が残るオーダーは再生成不可、short残量は後で再生成可。
- 生成後、出庫伝票のピックタスク欄にタスク詳細へのリンク付きで反映されます。
モバイルでの実行#
1ステップ=1製品×1ロケーション。各ステップは4要素を送信:pick元ロケーション、パレットLPN(storageロケーションのみ)、pick先LPN(目標tote)、数量。
- 出元ロケーションをスキャン/入力→Enter:不正なら上部エラー+入力全選択、正しければpickingロケーションはto LPNへ、storageロケーションは先にパレットLPN欄を表示。
- to LPNをスキャン/入力→検証(タスク割当のtote必須)→数量へ。
- 数量を入力(数字のみ)→Pickをタップして送信→次のステップ。失敗時はエラー表示のまま留まります。
- 部分ピック:要求10個に対し5個→5個を記録し、qty=5のステップをキュー末尾に自動追加、次周で継続。
- Next:現在のステップをスキップ、後でキューが戻ってきます。
- Force close(右上):部分ピックを直接クローズ、実績数量で精算します。
- short:ロケーションに在庫なし/破損でピック不可→shortをマーク、タスクは完了可、残量は後で再生成。
目標トートとPICK-STAGE#
オーダーピックの目標トートはPICK-STAGEロケーションに属します(倉庫ごとに1つ、location_type=staging、存在しなければシステムが自動作成、UIには非表示)。WMS → Palletsで「Batch generate LPN」ボタン:倉庫選択(既定は現在の倉庫)+数量N(1–200、既定10)。バックエンドはLPN-{seq}で生成(統一プレフィックス、既存のPLT-は不変)、status=building、source_type=pick。完了後「Generate only」(閉じて一覧更新)または「Generate and print」(パレットごとにラベルAPIを呼んで印刷連携)を選択。注意:picking cart(location_type=cart)は移動可能ロケーション、toteはLPN(license_plate、テナント内グローバル一意)で、箱ピックの記帳ロケーション=toteが属するcartのlocation_id(cart自体がロケーション)。PICK-STAGE(staging)は倉庫ごとのピック緩衝地で、オーダーピックの目標パレットはここに属する必要があります——混同注意。
タスク状態と照合#
pending→in_progress(開始タップ、または初回ピックで自動開始、出庫伝票はpickingへ同期)→completed(全行pickedまたはshort、出庫伝票はpickedへ)。完了時に出庫明細行へpicked_qtyを反映し、補充チェックを起動します。照合:デスクトップのタスク詳細画面でモバイル送信データ(出元ロケーション/パレットLPN/to LPN/数量/各ステップ記録)をすべて確認できます——ピックの照合はここで行います。梱包レベルの検証は出荷ステーションで継続(pack-verify)。