分納と受注残はどう管理する?伝票の分け方2通りを架空の100受注で比べた

分納と受注残の管理は、受注明細の数量を書き換えずに出荷を別の表へ積み、「受注残 = 受注数 − 出荷数の累計」で出すと崩れにくくなります。商いの帳場が、1伝票にまとめる設計と分ける設計をSQLiteで作り、分納のある架空の100受注(明細1,084行)で試しました。受注残の誤りはどちらも0件でしたが、書き込みは2,840回と1,811回、1枚の伝票の最大の行数は133行と68行でした(2026年10月時点)。
全体の流れと費用は販売管理の基礎のページにまとめています。
要点
- 受注残は「受注数 − 出荷数の累計」で出せ、受注と出荷を別の表に分けると出荷や取り消しのたびに受注明細を書き換えずに済みます。
- 分納のある架空の100受注(明細1,084行・出荷1,725回)では、受注残の誤りは1伝票の設計も分ける設計も0件でした。
- 書き込みの回数は1伝票の設計が2,840回、分ける設計が1,811回で、取り消し86回の記録は分ける設計だけに残りました。
目次
分納と受注残は、どう管理すればよいですか?
受注明細の数量は書き換えずに残し、出荷を別の表に1回1行で積みます。受注残は「受注数 − 出荷数の累計」で出すのが崩れにくい管理です。分納は1件の受注を何回かに分けて出荷すること、受注残はまだ出荷していない数量を指します。
商いの帳場は、受注・出荷・売上を1伝票にまとめる設計(設計1)と、受注と出荷を別の表に分ける設計(設計2)をSQLiteで作りました。分納のある架空の100受注で比べると、受注残はどちらも正しく出て、差は書き込みの回数、伝票の行数、取り消しの記録に出ました。
| 比べたこと | 設計1 1伝票 | 設計2 分ける |
|---|---|---|
| 受注残の誤り(明細1,084行) | 0件 | 0件 |
| 書き込みの回数(出荷+取り消し) | 2,840回 | 1,811回 |
| 表の行数(最後の時点) | 2,013行 | 2,895行 |
| 1枚の伝票の明細行(最大) | 133行 | 68行 |
| 取り消し86回の記録が残った数 | 0件 | 86件 |
表の行数だけは、出荷を1回ごとに残す設計2のほうが多くなります。
受注残は、どんな式で出しますか?
受注残は「受注数 − 出荷数の累計」で出します。数量50の明細を20、15と出したあと2回目を取り消すと、50 −(20 + 15 − 15)= 30です。
設計1は、1つの表に受注・出荷・売上を状態つきの行で持ちます。分納のたびに受注残の行の数量を減らし、出した分を「売上」の行として同じ伝票に足します。受注残は、状態が「受注残」の行の合計です。設計2は受注明細の表と出荷の表に分け、出荷や取り消しで受注明細を書き換えません。
設計2の受注残は、次のSQLで全明細を一度に出せます。取り消しはマイナスの出荷行として入るので、同じ式のまま合います。
select o.order_no, o.line_no,
o.qty - coalesce(sum(s.qty), 0) as backlog -- 受注数 − 出荷数の累計
from order_line o
left join shipment s on s.order_no = o.order_no and s.line_no = o.line_no
group by o.order_no, o.line_no;
2つの設計を架空の100受注で比べると、何が違いましたか?
受注残の誤りはどちらも0件で、違いは書き込みの回数でした。設計1は2,840回、設計2は1,811回で、設計1は約1.6倍です。
架空の100受注は、明細が1〜10行の受注を70%、11〜30行を25%、40〜70行を5%にしました。明細ごとの出荷は1回55%、2回25%、3回12%、4回8%で、締めの時点で明細の30%に受注残があります。出荷の5%はあとで取り消しました。
結果は明細1,084行、出荷1,725回、取り消し86回で、2回以上に分けて出した明細は402行です。正解は出来事の一覧からPythonで別に計算し、両設計のSQLの答えと1行ずつ突き合わせました。
設計1の書き込みが多いのは、一部だけ出すたびに「残りの行を減らす」と「出した分の行を足す」の2回が要るからです。設計2は出荷1回につき1行を足すだけで、更新と削除は0回でした。台本はpartial_shipment_backlog.pyです。乱数の種20261016を変えなければ同じ数字が出ます(Python 3.14.2、SQLite 3.50.4)。
この実験には限界があります。返品、受注数そのものの変更、出荷後の単価の直しは入れていません。書き込みの回数は手数の目安で、画面の操作の回数とは一致しません。
1伝票の設計で、伝票の行数の上限に当たるのはどんなときですか?
明細の多い受注を何回にも分けて出すと、分けた行が同じ伝票に増えて上限に当たります。架空の100受注では、設計1の最大は133行で、3件が100行を超えました。
B社(インストール型の販売管理)は、主要スペックで1伝票の明細を100行までと公開しています。B社が受注残をどう持つかは公開仕様から読めません。そこで、100行の上限がある仕組みで設計1を使った場合として数えました。
上限を超えた3件は、どれも明細が57〜68行の大口の受注でした。1伝票の設計では、大口の得意先の伝票ほど早く上限を超えます。設計2の受注の伝票は受注明細の数のままです。
出荷を取り消すとき、どちらの設計が楽ですか?
設計2のほうが楽で、記録も残ります。架空の86回の取り消しで、設計2はマイナスの出荷行を1行ずつ足すだけの86回、設計1は136回の書き込みでした。
設計1では、取り消す出荷の行を探し、同じ明細に受注残の行があれば数量を戻して出荷の行を消します(2回)。受注残の行がなければ、出荷の行の状態を「受注残」に戻します(1回)。どちらの場合も、出荷したことと取り消したことの記録は表から消えます。86回のうち、2回の書き込みが要ったのは50回でした。
設計2は、取り消しを赤伝と同じ形で残します。いつ何個を取り消したかを、得意先からの問い合わせや月末の照合でたどれます。出荷検品は、ここでは数えていません。受注残を引いた在庫の数え方は在庫管理の分野で扱っています。
受注残が合わない原因を、一緒に整理する
分納の多い受注の受注残が合わない、伝票の行が増えすぎる、といったお悩みは、今の伝票の流れをうかがえば一緒に整理できます。何をどう頼むか決まっていなくても大丈夫です。
御社のやり方に合わせて、進め方を一緒に考えます。準備は要りません。商いの帳場の無料で相談するから、お気軽にどうぞ。
よくある質問
- 受注残はExcelの受注台帳でも管理できますか?
- はい。受注の行と出荷の行を別のシートに分け、受注残を「受注数 − 出荷数の合計」の式で出せば、1つの表で数量を書き換えるより崩れにくくなります。
- 分納した出荷ごとに請求書を分ける必要がありますか?
- いいえ。出荷の行を売上として積み、締め日にまとめて1枚の請求書にできます。出荷のたびに請求するかは得意先との取り決めで選べます。
出典
- 商いの帳場の実験(2026年10月16日。架空の卸の100受注・明細1,084行・出荷1,725回・取り消し86回を、2つのテーブル設計で SQLite 3.50.4 に流した。Python 3.14.2、標準ライブラリだけ、乱数の種 20261016。台本は /sales-management-app/scripts/partial_shipment_backlog.py)(2026年10月16日確認)
- B社(インストール型の販売管理)の公開仕様「主要スペック」(1伝票の明細は100行、伝票は「60万明細(各伝票合計数)」)(2026年10月16日確認)


