商いの帳場中小企業のAI導入支援|販売管理システムの独自開発から販売管理システムの独自開発 専門

コラム仕組みと技術

分納と受注残はどう管理する?伝票の分け方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. 分納と受注残は、どう管理すればよいですか?
  2. 受注残は、どんな式で出しますか?
  3. 2つの設計を架空の100受注で比べると、何が違いましたか?
  4. 1伝票の設計で、伝票の行数の上限に当たるのはどんなときですか?
  5. 出荷を取り消すとき、どちらの設計が楽ですか?
  6. 受注残が合わない原因を、一緒に整理する
  7. よくある質問

分納と受注残は、どう管理すればよいですか?

受注明細の数量は書き換えずに残し、出荷を別の表に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は受注明細の表と出荷の表に分け、出荷や取り消しで受注明細を書き換えません。

1つの受注明細(数量50)を20と15に分けて出荷し、2回目を取り消したときの表の中身。1伝票の設計は受注残30と売上20の2行が残り、取り消した出荷の記録は消える。分ける設計は受注明細1行と出荷3行(+20、+15、−15)が残り、受注残は50−20=30例:数量50の明細を「20出荷 → 15出荷 → 2回目を取り消し」と動かした後の表設計1 1伝票(表は slip_line の1つ)行親数量状態出荷1130受注残—2120売上1回目(15の売上の行は取り消しで消えた)書き込み:出荷 2+2回、取り消し 2回 = 6回受注残 = 状態が受注残の行の合計 = 30取り消した出荷の記録:残らない設計2 分ける(order_line と shipment)受注明細数量150(書き換えない)出荷明細数量取り消し元1回目1+20—2回目1+15—赤1−152回目書き込み:出荷 1+1回、取り消し 1回 = 3回受注残 = 50 −(20+15−15)= 30取り消した出荷の記録:残る(赤の行)商いの帳場の作図。どちらの設計も受注残は30で同じ。違うのは書き込みの回数と、取り消しの記録が残るか
図1 数量50の明細を「20出荷 → 15出荷 → 2回目を取り消し」と動かした後の表。受注残はどちらも30です。書き込みは設計1が6回、設計2が3回でした。

設計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行ずつ突き合わせました。

分納のある架空の100受注で2つの設計を比べた横棒グラフ。書き込みは1伝票2,840回・分ける1,811回、表の行数は2,013行・2,895行、1枚の伝票の最大行は133行・68行
図2 2つの設計の書き込みの回数・表の行数・1枚の伝票の最大行(架空の100受注)。設計1は出荷のたびに行の更新と追加が要り、書き込みが2,840回になりました。

設計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を使った場合として数えました。

明細行の多い架空の受注5件で、1枚の伝票の行数を比べた横棒グラフ。1伝票の設計では133・111・103・56・52行で、3件がB社の公開仕様の100行を超える。分ける設計では受注明細の68・57・61・30・28行のまま明細行の多い受注5件:1枚の伝票に載る行数0行50行100行150行B社の公開仕様 100行受注1133行68行受注2111行57行受注3103行61行受注456行30行受注552行28行設計1 1伝票(分けた行が同じ伝票に増える)設計2 分ける(受注明細のまま)商いの帳場の実験(架空の100受注・明細1,084行・出荷1,725回・取り消し86回、乱数の種 20261016、SQLite 3.50.4)
図3 明細行の多い受注5件の、1枚の伝票の行数。設計1は133・111・103・56・52行、設計2は受注明細のまま68・57・61・30・28行です。

上限を超えた3件は、どれも明細が57〜68行の大口の受注でした。1伝票の設計では、大口の得意先の伝票ほど早く上限を超えます。設計2の受注の伝票は受注明細の数のままです。

出荷を取り消すとき、どちらの設計が楽ですか?

設計2のほうが楽で、記録も残ります。架空の86回の取り消しで、設計2はマイナスの出荷行を1行ずつ足すだけの86回、設計1は136回の書き込みでした。

設計1では、取り消す出荷の行を探し、同じ明細に受注残の行があれば数量を戻して出荷の行を消します(2回)。受注残の行がなければ、出荷の行の状態を「受注残」に戻します(1回)。どちらの場合も、出荷したことと取り消したことの記録は表から消えます。86回のうち、2回の書き込みが要ったのは50回でした。

設計2は、取り消しを赤伝と同じ形で残します。いつ何個を取り消したかを、得意先からの問い合わせや月末の照合でたどれます。出荷検品は、ここでは数えていません。受注残を引いた在庫の数え方は在庫管理の分野で扱っています。

受注残が合わない原因を、一緒に整理する

分納の多い受注の受注残が合わない、伝票の行が増えすぎる、といったお悩みは、今の伝票の流れをうかがえば一緒に整理できます。何をどう頼むか決まっていなくても大丈夫です。

御社のやり方に合わせて、進め方を一緒に考えます。準備は要りません。商いの帳場の無料で相談するから、お気軽にどうぞ。

よくある質問

受注残はExcelの受注台帳でも管理できますか?
はい。受注の行と出荷の行を別のシートに分け、受注残を「受注数 − 出荷数の合計」の式で出せば、1つの表で数量を書き換えるより崩れにくくなります。
分納した出荷ごとに請求書を分ける必要がありますか?
いいえ。出荷の行を売上として積み、締め日にまとめて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日確認)
  2. B社(インストール型の販売管理)の公開仕様「主要スペック」(1伝票の明細は100行、伝票は「60万明細(各伝票合計数)」)(2026年10月16日確認)