WOAKY × みつるシステム / 未解決論点

「過不足」とは何か

生産実績を基幹システムに流す連携で、最後まで残っている論点。 この列が何を指しているのかで、在庫の動き方がまるごと変わります。 GASの実装を全部読んで、定義がどこまで確定できるかを整理しました。

結論

システム上の定義は「投入したのに、良品にもB級にも処分にも返品にもならなかった分」。 つまり投入側=単品側のロスで、完成品側の調整ではありません。WOakyの仕様書v2は間違っています。

ただし話はここで終わりません。この定義が成り立つのは工場系の部門だけで、梱包では構造的に成り立ちません。 同じ「過不足」という列名で、部門ごとに違うものが入っています。

1. まず絵で見る

単品を投入して、産出が4つに分かれる。どれにもならなかった残りが過不足。

投入 100(単品)この日、工程に投げ込んだ数
良品 80
5
3
2
過不足 10
良品 → 完成品になる B級 → B品コードへ振替 処分 → 0025へ移動 返品 → 0098へ移動 過不足 → 行き先なし

良品・B級・処分・返品には、それぞれ行き先があります。完成品になるか、別のコードに振り替わるか、別の倉庫へ動くか。 過不足だけが行き先を持ちません。投入したのに、どの箱にも入らなかった分です。割れた、粉になった、数え間違えた、記録が漏れた —— 理由はどうあれ、在庫としては消えています。

2. コードから読める定義

画面の⚠マークと送信前チェック、どちらも同じ式を前提にしている。

// 画面のツールチップ(index.html)
入力 = 理論 + 過不足

// 理論の中身
投入(理論) = 良品 + B級 + 処分 + 返品

// つまり
過不足 = 投入(入力) − (良品 + B級 + 処分 + 返品)

// Code.gs にもそのままコメントがある
g.投入数_実数 += (completed + bGrade + disposal + returned); // 過不足は構成要素でなく差異
ここが大事 過不足は産出の構成要素ではなく、投入と産出の差です。 「良品100個のうち10個ぶんを調整する」という意味ではありません。

3. ところが、部門ごとに違う

投入数がどこから来るかを追うと、前提が崩れる部門がある。

部門投入数の出どころ過不足の列名「△3」の扱い
梱包 良品+B級+処分+返品 の計算値
実測ではない
過不足 / 過不足数 −3 になる
第1工場 実測列「投入数」
投入工程フラグの行だけ集計
過不足 0 になる
スクリーン 実測列「投入数」
同上
不足数 / 過不足 0 になる

梱包では、差が構造的にゼロになる

投入(入力) = 良品 + B級 + 処分 + 返品   ← 読み込み時に計算して入れている
投入(理論) = 良品 + B級 + 処分 + 返品   ← 判定に使う式
──────────────────────────────
差 = 0                                ← 常に。例外なく
梱包の過不足は宙に浮いている 投入数を産出の合計で埋めているので、「投入 − 産出」は定義上いつも0です。 だから⚠マークも出ないし「投入数が合いません」の警告も鳴りません。 それでも過不足欄には数字が入っている。つまり梱包の過不足は、投入との差ではない何かです。 現場が何のつもりで書いているのか、コードからは分かりません。

符号の処理も揃っていない

梱包は「△3」を −3 に変換する関数を通していますが、工場系は素の parseFloat です。 工場系で「△3」と書かれていたら、数値にならず 0 として集計されます。 現場が会計式の△表記を使っていた場合、工場側の過不足だけが黙って消えます。

これは連携と切り離して直すべき 過不足を送る送らないに関係なく、アプリ内の集計が既にずれている可能性があります。

4. 在庫にどう効くか

過不足を「完成数に足す」か「単品から引く」かで、結果がまるで違う。

✗ 今のWOaky(仕様書v2)
  • 完成品 += 良品 + 過不足
  • 単品 −= (良品+過不足) × BOM数量
  • 単品 −= B級 + 処分 + 返品

過不足が+10なら、完成品を10個多く積んだうえ、BOMで単品も10個ぶん余分に減らします。二重に間違えます。

✓ 定義どおりに直すなら
  • 完成品 += 良品
  • 単品 −= 良品 × BOM数量
  • 単品 −= B級 + 処分 + 返品
  • 単品 −= 過不足(行き先なしで消える)

単品の減少合計 = 良品+B級+処分+返品+過不足 = 投入(入力)。実際に投げ込んだ数と一致します。

5. それでも今は送れない

定義が分からないから、ではない。仕掛かりが混ざるから。

工場系はロット単位で、投入した行と完成した行が別です。日をまたげば、その日の投入と産出は対応しません。 仕掛かり(今日投入して明日完成する分)が、そのまま過不足に乗ります。

DAY 1
100投入して80完成
投入 100
産出 80(良品)
過不足 +20
→ 送れる。単品が20多く減る
DAY 2
投入0で、昨日の20が完成
投入 0
産出 20(良品)
過不足 −20
→ 送れない(WOakyは負の数量を受けない)
片道でしか計上されない 正の過不足は送れて、それを戻す負の過不足は送れません。 単品在庫が一方的に減り続けます。しかもロスではなく、明日完成する仕掛かりを消しているだけです。
だから「送らない」は正解だった 理由は「意味が分からないから」ではなく、今の仕様のままでは在庫が壊れるからです。 ズレても数個の規模で棚卸に吸収できる、という判断も引き続き有効です。

6. 確認すべきこと

「過不足って何ですか」だと曖昧すぎる。4つに分解する。

  1. 梱包の過不足欄に、現場は何を書いていますか梱包の現場 投入数が自動計算なので、投入との差ではありえません。別の意味の数字が入っているはずです。ここが分からないと梱包の分は永久に送れません。
  2. 3個消えたとき、欄には「3」と書きますか「△3」と書きますかみつるさん 符号の向きの確認です。△表記だと工場系では 0 になって消えます。式の上では「消えた=プラス」ですが、現場の感覚では「不足=マイナス」かもしれません。
  3. 工場の「過不足」とスクリーンの「不足数」は同じ意味ですかみつるさん 列名が違うのに、同じ項目として集計されています。「不足数」は正の値で不足を表す運用かもしれず、そうなら符号が逆です。
  4. ロットの投入日と完成日がまたぐとき、過不足はどちらの日に立ちますかみつるさん 仕掛かりが過不足に乗るかどうかの確認。乗るなら、過不足はロスではなくタイミングのズレを含むので、そもそも在庫の増減に使えません。

答え次第でどうなるか