9. 売上・請求・支払・経理
出荷から売上計上・請求書発行までの「お金をもらう」流れと、仕入・外製費用の支払データ作成から銀行振込までの「お金を払う」流れ、この二つの資金の流れが合流する場所——それが経理業務。このページでは両方を扱うが、色分けして区別する:売上・請求の手順は青系(class="flow")、支払の手順はオレンジ系(class="flow p2p" / class="stream p2p")で表示する。
1. 業務の目的と位置づけ — 二つのお金の流れ
2. 売上計上のフロー
3. 請求のフロー — 月次一括・範囲指定・都度作成
4. 入金・消込
5. 支払のフロー — 経理管理サブシステム(MENUR1)
6. 費用集計
7. 月次の流れ — 経理担当者の1ヶ月
8. ケーススタディ — RSBS23「小計」問題
9. 特殊ケース
10. 実データスナップショット — 本番DBによる検証
11. 関連マスタ・データ/帳票一覧
12. 用語集
13. 他業務との接続点
未解明事項 — 経理担当者への質問リスト
- 経理業務は「売上・請求」(青)と「支払」(オレンジ)の2つの資金の流れが合流する場所。
- RSBS23の小計は仕様上バグに見えるが、レガシー通りの累計表示を意図的に維持する判断がされた。
- 支払費用SHDPは外注専用でなく「非仕入系コストの一元台帳」— 金額最大は外注でなく材料(30.7%)。
1. 業務の目的と位置づけ — 二つのお金の流れ
板倉製作所の経理業務は、大きく二つの資金の流れが合流する場所である。
上の青い帯が売上系統(受注から入金までの「集金の尻尾」)、下のオレンジの帯が仕入・外製系統(発注から支払までの「支払の尻尾」)。このページ全体でも、売上・請求の手順は青系(flow)、支払の手順はオレンジ系(flow p2p)で色分けする。両系統は別々のマスタ・別々のメニューサブシステムで動いている点に注意。
| 系統 | 主担当メニュー | 主要マスタ | 主要データ |
|---|---|---|---|
| 売上・請求 | MENUS2/MENUS3(出荷管理サブシステム) | TKMP 得意先マスター、TK1P 得意先マスター従属1 | JUDP 受注データ |
| 支払(経理) | MENUR1/MENUR2 経理管理サブシステム | SIMP 仕入先マスター、BKMP 金融機関マスター | SHDP 支払費用データ |
| 支払明細(外製受入側) | MENUG1 オプション6(GSBS06) | SIMP, SHDP | SFDP 仕入ファイル |
easy-feedback #17)まで、このリポジトリのどの移行キャンペーンの棚卸対象にも入っていなかった。つまり「経理」というドメインは、他の業務ドメイン(出荷・受注・在庫など)に比べて移行の後発領域であり、ドキュメント化・検証の蓄積が薄い。このページの「未解明事項」セクションが長くなるのはそのため。 (出典: docs/decisions.md D23, L1547-1556)
2. 売上計上のフロー — 出荷実績が売上になるまで
2.1 出荷データの入力と「打切区分」
受注データJUDPは出荷担当がITND50R(出荷データ追加)などの画面から納入実績を登録することで更新される。追加・修正の際、次の2つのフィールドが売上計上の鍵になる。
- JUSEHI(請求対象年月)が自動設定される ITND50R
MOVEL JUNOHI JUSEHIにより、納入日(JUNOHI, YYYYMMDD 8桁)の左6桁がそのまま請求対象年月(YYYYMM)になる。つまり「入力された納入日の月でそのまま計上する」という単純なルール。担当: 出荷担当(出典: pilot/spec/itnd50r.md L329, L342, L347; ITND50R.txt L593) - JUKUED(打切区分)が9になって初めて請求対象になる ITND50R
通常の追加/修正では8(生産完了・未出荷扱い)のままだが、中止補償や、オペレーターが打切区分9を明示的に入力すると9(請求対象として確定=打切)になる。JUKUED=9でなければ、その行はどの請求書作成プログラムにも拾われない。担当: 出荷担当(出典: pilot/spec/itnd50r.md L599-611)
2.2 単価適用
単価は「受注データ自身が持つ単価が最優先」で、それが0のときだけ品番単価マスター(PBTANKR)へ問い合わせる、という共通ルールが複数のプログラムで繰り返し使われている。PBTANKRのモードには「決定のみ」(mode 1)と「見積含む」(mode 2)があり、呼び出し元によって使い分けられる。型費(金型費用)がある場合は単価に折り込まれることが多いが、プログラムによって扱いが違う(9.7節参照)。金額計算はほぼ全プログラムで「四捨五入なし・切り捨て」(MULT/DIVにH指定なし)という legacy 仕様が徹底している。 (出典: pilot/spec/its000r.md L179-185, itur31r.md L238-256)
2.3 締め日(TK1P.T1DYSM)という「凍結」の仕組み
得意先ごとに「請求済締日」(TK1P.T1DYSM)という日付があり、これは「この日以前の納入日ではもう出荷登録できない」という凍結境界線として機能する。ITND50Rは納入日入力時に得意先のT1DYSMを読み、納入日 ≤ 締日ならエラー「月締め完了以前の出荷日では、出荷処理はできません。」で弾く。
締日は次の2プログラムでのみ動かせる(=会計処理として月を締める操作):
- ITS994R 請求済締日入力・修正(得意先1件ずつ、日付妥当性チェック付き)
- ITS995R 請求済締日一括処理(全得意先を対象に、指定日まで一括で前進。既存日付より過去には戻せない一方向の操作)
いずれも直接JUDPに「請求済」フラグを立てるわけではなく、この締日が将来の出荷入力を止めることで、二重請求や締め後の紛れ込みを防ぐという間接的な仕組みになっている。
実データ(TK1P全140得意先)で見ると、締め日(T1D301)は131件(93.6%)が「0」=末締めで、それ以外は「25日締め」4件・「20日締め」3件・「15日締め」2件と少数派。つまり「基本は末締め、例外的に中締めの得意先が9社ある」という実態が確認できる(10.2節に詳細)。
3. 請求のフロー — 月次一括・範囲指定・都度作成の3本立て
板倉製作所の請求書発行は、目的の異なる3つのExcel連携バッチが並存している。いずれも本体はAS/400側でPC転送用ステージングテーブルを作り、Excelマクロ(BATCH00経由で起動)が実際の帳票を印字する、という共通の構造(「印刷はExcelマクロ側」という設計方針そのもの)。
| プログラム | メニュー経路 | 対象 | 抽出条件 | 出力先 |
|---|---|---|---|---|
| ITS000R 請求書作成 | MENUS3 opt.63 SSBS63 | 得意先1件・対象年月1つ | JUSEHI=対象月 AND JUKUED=9 | JUDPR5→BAT0363.XLSM |
| ITS001R 請求書(範囲指定) | MENUS3 opt.62 SSBS62 | 得意先範囲・対象年月1つ | 同上(得意先ごとに繰り返し) | JUDPR9(25項目)→BAT0362.XLSM |
| ITS002R 請求書作成(都度作成) | MENUS3 opt.64 SSBS64 | 得意先1件・受注納期範囲 | 中止(JUKUST)以外すべて、JUSEHI/JUKUEDは無視 | JUDPR5→BAT0364.XLSM |
(出典: pilot/spec/its000r.md, its001r.md, its002r.md)
ODBC|DSN|ADODB|Recordset ゼロ件)。「PRMPP1直結」でも「JUDP汎用ミラー直結」でもなく、
各請求書マクロが目的別に個別生成された専用のData Transfer抽出(JUDPR5/R6/R9/P5/T1.xls)を
C:\ITA_PGM\WorkSpaceからReadOnlyでWorkbooks.Openしているだけ、という第三の答えでした。
改修コメントには「WKDPの共通使用をなくすため、専用取り込み用ファイルJUDPP5に切り替えた」とあり、これらの
JUDPxx系ファイルは元々WKDPという共有抽出だったが、複数マクロの同時実行でファイルロック
競合が起きるため、マクロごとに専用抽出へ分割されたという運用進化の跡が確認できます。なお
PRMPP1.xls/.FDF(1.5節相当のフィールド定義)は現行10マクロのいずれからも一切参照されていない
孤児ファイルであることも確認済みで、かつてのデータソース候補と誤認しやすい罠ファイルとして要注意です。
(出典: 請求書発行/請求書作成.xlsm, 請求書作成(範囲指定).xlsm, アイシン買入明細照合.xlsmヘッダコメント,
請求書発行/PRMPP1.xls/.FDF全macro grep)
3.1 月次一括(ITS000R)
得意先コード+対象年月を入力すると、その月にJUKUED=9で確定した行だけを拾い、社内品番を客先品番に変換(CVMP)し、型費を単価に折り込んでJUDPR5へ書き出す。TKMP.TKKBWK='Y'(指定請求書様式あり)の得意先は明示的に拒否され、Excelは起動しない。また、得意先コード60/61・90/91は特別扱いで、60を指定すると61の分も一緒に1枚の請求書に乗る(関連会社をまとめて請求している可能性が高いが未確認 — 9.4節参照)。 (出典: pilot/spec/its000r.md L82-95, L189-196)
3.2 範囲指定(ITS001R) — 客先始動の判定に必要な情報を積む
複数の得意先をまとめて処理する版。ITS000Rとの決定的な違いは、抽出行すべてにTK1P.T1D101(請求書発行区分)とTK1P.T1D301(締め日)を複写する点。これはExcel側で「自社始動で発行すべき請求」と「客先始動=先方の支払通知を待つべき請求」を仕分けるための情報で、2025年1月27-28日の履歴コメントには「インボイス制度対応」とある。つまりこのExcel出力は単なる帳票印刷ではなく、請求先ごとの発行方式の判定を助けるデータという位置づけ。 (出典: pilot/spec/its001r.md L38-45, L211)
3.3 都度作成(ITS002R) — 会計効果のない「下書き」
納品の都度請求する得意先向けの補助ツール。プログラム冒頭のコメントに「あくまで品番等の入力の補助として下書きを作成することが目的」と明記されており、TK1PにもJUSEHI/JUKUEDにも一切関与しない。したがって月次請求(ITS000R)と対象が重複しても構わない設計。 (出典: pilot/spec/its002r.md L47, L192-197)
3.4 請求書発行区分 — 自社始動 vs 客先始動
ITS996R(請求書発行区分入力・修正)がTK1P.T1D101を保守する。値の意味:
| 値 | 意味 |
|---|---|
0 | 自社始動(板倉から能動的に請求書を発行する、通常の売掛請求) |
1 | 客先始動(先方の支払通知・購入伝票をベースに支払われるのを待つ) |
トヨタグループの大手取引先(トヨタ紡織・アイシン・デンソー等)は、自社の受入実績から支払額を計算し「支払通知書」を発注元に送る方式(いわゆる支払通知ベース取引)を採用することが多く、T1D101=1はこの慣行に対応するフラグだと考えられる推測(ソースコード上は「客先始動」としか説明がなく、具体的にどの得意先がこれに該当するかのデータは今回未確認)。 (出典: pilot/spec/its996r.md L33-35)
pilot/appにはBAT0364→v_judpr5_xfer→「請求書」のプレビューseam(renderInvoice)が1つだけ登録されている。これはITS000R/ITS002Rが共有する7項目のJUDPR5契約をカバーするもので、ITS001R(範囲指定)の25項目JUDPR9契約に対応するプレビューseamはまだ存在しない(未解明事項の1つ、下記参照)。 (出典: pilot/app/src/print/registry.ts L1497)
3.5 バグと運用上の注意点
- ITS996RのCLSSBS53には、権限判定用の変数
&CLを'SSBS77'(本来は別プログラムのITS994R向け値)に設定してしまっているコピペバグがある。結果、請求書発行区分の変更権限が、請求済締日の変更権限と意図せず同じになっている。 (出典: pilot/spec/its996r.md L8-18) - ITS001D画面には「アイシン安城に注意」という警告文言があるが、何に注意すべきかの説明はソース上にない(現場の暗黙知、未解明事項)。 (出典: ITS001D.txt L28)
4. 入金・消込
pilot/spec/*.md全般、docs/decisions.md、analysis/out/schema.sql、source/finance/のディレクトリ一覧)では、顧客からの入金を検知・記録し請求書と突き合わせる専用のAS/400テーブルやプログラムは見つからなかった。実際の入金確認(銀行口座への着金確認、請求書との突合)がどう行われているかは、AS/400の外(銀行のオンラインバンキング画面、手作業のExcel、あるいは紙の入金予定表など)で行われている可能性が高いが、今回の調査範囲では確認できなかった。
pilot/spec/its995r.md L39-40の履歴コメント「請求が完了した月以前の納入日で消込できないように」)は、現金の入金消込ではなく、出荷・納品データを受注に対して確定させる処理を指しているように読める推測。新人はこの言葉の二重の意味に注意すること。
5. 支払のフロー — 経理管理サブシステム(MENUR1)
5.1 支払費用データの入力(RSBS01/ITSW10R)
MENUR1の中核。SHDP(支払費用データ、キー:仕入先コード+発生月)へ1件ずつ手入力する画面。3画面ウィザード構成:
- GM1(キー入力) RSBS01/ITSW10R
仕入先コード+発生月を入力する。担当: 経理担当 - GM2(明細入力)
本社請求金額・工機請求金額・支払条件コード(0/3/90/99)・(90の場合のみ)指定手形金額を入力する。担当: 経理担当 - GM3(確認)
振込/手形/小切手/預り/現金への自動按分結果と手数料を確認する。担当: 経理担当
(出典: pilot/spec/rsbs01-itsw10r.md)
支払条件コードの意味:
| コード | 意味 | 計算ロジック |
|---|---|---|
0 | 全額振込・条件付き先方負担 | 請求額≥3万円なら手数料を先方負担、未満なら当方負担 |
3 | 全額振込・当方負担固定 | 金額に関わらず当方が手数料を負担 |
90 | 指定手形金額+小切手 | オペレーターが手形額を指定、残りが小切手 |
99 | マスタ指定通り | 仕入先マスターSIMP.SICDSRの値に従う(下記4が現れうる) |
4 画面から選べない | 10万円単位手形+小切手 | マスタ経由(99)でのみ発現。10万円単位を手形、端数を小切手に分割 |
(出典: pilot/spec/rsbs01-itsw10r.md L43, L101-144)
BKMP.BKKUTR(手数料区分)というマスタ項目が存在するが、実際には一度も参照されず、基準銀行支店はプログラムに決め打ちされている。将来マスタ駆動の手数料体系にしたい場合の既知の技術的負債として記録されている。 (出典: pilot/spec/rsbs01-itsw10r.md L79-83)
実データとの食い違い(弱め): bkmp全162件を見ると、BKKUTRは空欄がわずか2件だけで、160件(98.8%)に実際の値(1=18件/2=142件)が入力されている。プログラムが読まないマスタ項目にしては、現場では律儀にメンテナンスされ続けているように見える——この謎は新實さんへのヒアリングで解明済み(過去に名古屋銀行碧南支店向け振込の手数料計算で使っていた名残り、廃止可)。詳細は未解明事項9番(下記§13)参照。
消費税率は、振込予定日(発生月の翌月30日固定)に対してITSW99Rが返す税率テーブルで決まる(9.3節参照)。 (出典: pilot/spec/rsbs01-itsw10r.md L85-92)
5.2 支払費用データの照会(RSBS13/ITSW41R)
読み取り専用の一覧照会。仕入先コード+発生月範囲を指定してSHDPを検索する。開かれた仕様上の疑問点はなし、と明記されている。 (出典: pilot/spec/rsbs13-itsw41r.md L52-55)
5.3 印刷帳票5点(すべてHTMLプレビュー化済み)
「銀行送金ファイルの実バイトやExcelマクロ相当物は作らず、内容確認用のHTMLプレビューに留める」という設計方針に従い、以下5帳票がpilot/app/src/print/registry.tsにプレビューseamとして実装済み。
| Opt | プログラム | 帳票名 | 抽出条件(要点) |
|---|---|---|---|
| 6 | RSBS06/EXSW04R | 総合振込データ作成 | 振込金額>0かつ個別振込(SHD101=9)を除く、仕入先マスタに存在すること |
| 7 | RSBS07/EXSW01R | 支払案内書 | 請求金額合計≥30万円、または支払条件が{0,2,3}以外(手形の可能性あり) |
| 10 | RSBS10/ITSW34R | 支払総括書 FOR EXCEL(通常) | フィルタなし、全件 |
| 11 | RSBS11(同一プログラム) | 支払総括書 FOR EXCEL(保存用) | RSBS10と全く同じ、保存用の別メニュー番号 |
| 23 | RSBS23/ITSW32R | 支払総括書(現物印字版) | フィルタなしだが、種別ごとに小計行を出す集計印字(8節ケーススタディ対象) |
(出典: pilot/spec/rsbs06-07-10-11-23.md)
5.4 支払明細書(ITSI13R) — 別サブシステムの類似帳票
- RSBS06(MENUR1 opt.6)= 銀行振込用の総合振込データを作る
- ITSI13R(MENUG1 opt.6, GSBS06)= 仕入先ごとの支払明細書(=仕入取引の明細と、前月繰越額・当月支払内訳をまとめた帳票)を作る
ITSI13RはSFDP(仕入ファイル、実際の受入トランザクション)の当月納入日分を明細行とし、SHDPから前月繰越・当月支払内訳(現金/手形/振込/手数料/繰越金額)のサマリー行を合成してSFDPP3ステージングテーブルへ書き出す。ExcelマクロBAT0206.XLSMが印字する。
このプログラムは今回のMENUR1移行(D23)の棚卸対象に一度も入っておらず、pilot/app/src/print/registry.tsにプレビューseamもない。 D23がMENUR1(MENU00opt50配下)だけを対象にした棚卸だったため、別メニュー配下のこのプログラムは未発見のまま残っている——移行スコープの実在するギャップである。
2026-07-23の新實さんへのヒアリングで、MENUG1(外製管理サブシステム)自体が「ほとんど停止しており、注文書を印刷するためだけに使用している」こと、そして「支払明細の発行もしていません」と明言された。つまり上記のITSI13R(GSBS06)は、コードとしては現存し移行棚卸から漏れているという事実自体は変わらないが、実務では実行されていないプログラムである可能性が高い——移行スコープのギャップとしての優先度は「使われていないプログラムの未棚卸」であり、緊急対応が必要な現役帳票の欠落ではないと判断してよい。下記の既知の技術的負債(前月繰越の起点算出・無限ループ潜在バグ)も同様に、実運用での発現例は無いと考えられる。詳細はoutsourcing.html 7節参照。 (出典: 新實さん、2026-07-23ヒアリングシート回答E、docs/feedback/hearing/2026-07-23-niimi-hearing-sheet-E.md参照)
既知の技術的負債(実務では未実行と判明——上記callout参照):
- 前月繰越額の起点算出が、要求された仕入先コード(
IICDST)ではなく読み込みループ終了時のSFCDSI(別の仕入先コードの可能性がある)をキーにしている(要確認)。 (出典: pilot/spec/itsi13r.md L182-190) - ループ終了条件に無限ループの潜在バグがあり(最大仕入先コードの場合に発生しうる)、移行時には複製してはいけないと明記されている。 (出典: pilot/spec/itsi13r.md L173-178)
5.5 金融機関マスタ(BKMP)と振込
BKMP(キー:金融機関コード+支店コード)は振込先銀行の名称・略称・手数料区分・当座預金枝番を保持する。RSBS01の手数料計算では実質的に参照されない点は5.1で述べた通り。仕入先マスタSIMPは仕入先ごとの振込銀行・支店コード(SICDBK/SICDST)、支払条件(SICDSR)、種別(SICDSB)を持ち、BKMPと組み合わせて振込先名称を表示する。
5.6 支払案内書作成 Excelジョブ(PC側マクロ) 【実VBAで解明】
source/finance/支払案内書作成/フォルダには13ファイルがあり(個別振込データ.xlsx, 支払案内書.xlsx, 支払総括書.xlsx(+保存用), 総合振込データ.xlsx/.csv/.FDF, 転送用支払データ作成.xlsm など)、5.3節の帳票群のPC側実体に相当する。VBAを全文確認した結果、この5マクロは直列パイプラインではなく、AS/400側で生成された3種の異なるSHDPレポート抽出を独立に消費する3本の並行ツールであることが判明しました(当初想定していた「総括書→案内書→転送データ」という順序仮説は誤りだった可能性が高い)。
| マクロ | データ源 | 出力 | 対応するAS/400プログラム(5.3節との対応) |
|---|---|---|---|
| 支払案内書作成.xlsm | SHDPP1.xls | 支払案内書.xlsx | RSBS07/EXSW01R(請求金額合計≥30万円、または支払条件が{0,2,3}以外) |
| 支払総括書作成.xlsm(+保存用) | SHDPP3.xls | 支払総括書.xlsx | RSBS10/RSBS11(ITSW34R、フィルタなし全件、RSBS10とRSBS11は同一プログラム) |
| 転送用支払データ作成.xlsm | SHDPP4.xls+手動請求金額入力.xlsx | メモリ上にステージのみ、ファイル書き出しなし(保存/出力は人間が別途行う) | 不明 — RSBS06が除外するSHD101=9(個別振込)行の別経路と推測されるが、SHDPP4を生成するRPGプログラム名自体は本調査でも特定できず |
新発見(先行調査brief-9-finance.mdの未解明事項を前進): 「個別振込データ(個別振込データ.xlsx)に対応するAS/400側RPGプログラムを確認できていない」としていた先行調査に対し、本調査で転送用支払データ作成.xlsmが読むSHDPP4.xlsという、RSBS06が明示的に除外するSHD101=9(個別振込)行を扱う別経路の具体的な候補を特定できました(推測、SHDPP4を生成するRPGプログラム自体は未特定のまま)。また「総合振込データ」はVBAマクロによる生成ではなく、総合振込データ.FDFという独立したClient Access Data Transfer定義(RSBS06が書き出すワークファイルの直接ダウンロード)で作られていることも確認しました。支払案内書作成フォルダの5マクロは「PC側で計算・生成」ではなく「AS/400側RPGが計算済みのワークファイルをダウンロード/整形するだけ」という一貫した性格を持ちます。
転送用支払データ作成.xlsmと支払総括書作成.xlsm(保存用)の2本は、人間が事前に請求金額入力.xlsxへ金額を手入力しておく必要があるという共通の手動ステップを持ちます。総合振込データ.csvはヘッダなし3列(仕入先コード,0,金額)の単純抽出で、全銀(Zengin)固定長フォーマットではありません(確認済み)——振込先口座マスタを別途保持する銀行系ソフトウェアに読み込ませ、そちらでZengin形式に変換していると推測されます(本リポジトリ外)。総合振込データ.FDFはUTF-16LEの本物のAS/400 Data Transfer定義ファイルで、支払データがAS/400からの単純ダウンロードだけでなく、この転送機構を介してAS/400または銀行端末側への転送にも使われている可能性があります(推測)。
(出典: 支払案内書作成/支払総括書作成.xlsm・支払案内書作成.xlsm・転送用支払データ作成.xlsmヘッダコメント, 総合振込データ.csv/.FDF, brief-9-finance.mdのRSBS06/07/10/11抽出条件とのクロス統合)
6. 費用集計 【実VBAで解明】
source/finance/費用集計/フォルダの3本のVBAを全文確認した結果、費用集計はAS/400のRPGプログラムに対応物を一切持たない、完全にPC側Excelネイティブファイルだけで完結する衛星ジョブであることが確定しました(先行調査の推測を裏付け、かつ計算ロジックまで具体化)。
- 月別概算費用集計.xlsm:
Auto_Openは締め月ドロップダウンの準備のみで、集計自体は人間がボタンを押してData_Select()を起動する対話型ツール(無人バッチではない)。2つのデータ源はいずれもPCネイティブExcel(AS/400ミラーではない): ①材料発注依頼書.xlsx(材料発注データ、重量×単価で金額算出、鋼材はWeight_Keisan_Fe()という重量計算式)②購買データ.xlsx(既に部門別金額列が入力済みの一般購買データ)。両方とも発注先/材質/サイズによるルックアップで工機部門/試作部門/製造部門の3部門に按分する。 - その他費用集計.xlsm: 月別概算費用集計.xlsmの購買データ集計部分のみを抜き出した簡易版(鋼材計算なし)。
- 購買データ入力.xlsm: 完全手動のデータ入力フォーム。処理日/仕入先/振分区分/消費税/購入金額を人間が入力し、3部門への金額按分も人間が入力、「購入金額=3部門合計」の検算エラーチェック付きで
購買データ.xlsxに追記する。部門帰属(この購入がどの部門のコストか)は請求書ごとに人間が都度判断する完全マニュアル作業であることが確定——Koubai_Data_Syukei()はこの人間の判断結果を機械的に合計しているだけ。
7. 月次の流れ — 経理担当者の1ヶ月
売上系統と支払系統は並行して動くが、時系列でまとめると次のようになる。
- 月中随時:日々の納品登録 ITND50R
出荷担当が日々の納品を登録。納入日でJUSEHIが自動的にその月に計上される。JUKUED=9(打切確定)が立った行だけが後の請求対象になる。担当: 出荷担当 - 月中随時:支払費用データ入力 RSBS01/ITSW10R
経理担当(または関連部署)が、仕入先・外注先から届く請求内容をSHDPへ随時入力し、支払条件コードに応じた振込/手形/小切手按分を確認する。担当: 経理担当 - 月末:締め処理 ITS994R / ITS995R
得意先1件ずつ、または一括でTK1P.T1DYSM(請求済締日)を進め、その月を「締める」。以後その日以前の納入日での新規出荷入力はブロックされる。担当: 経理担当 - 請求書発行:月次一括 ITS000R
自社始動の通常得意先へ月次請求書を作成する。担当: 経理担当 - 請求書発行:範囲指定 ITS001R
範囲指定・客先始動判定を含む一括処理(トヨタグループ系の支払通知ベース得意先を含む)。担当: 経理担当 - 請求書発行:都度作成 ITS002R
都度請求の得意先には随時下書きを作成する(締め処理とは無関係)。担当: 経理担当
- 支払処理:総合振込データ RSBS06
銀行への総合振込データを作成する。担当: 経理担当 - 支払処理:支払案内書 RSBS07
仕入先向け支払案内書を作成する。担当: 経理担当 - 支払処理:支払総括書 RSBS10/11/23
内部・保存用の支払総括書(集計帳票)を作成する。担当: 経理担当 - 支払処理:支払明細書 ITSI13R(GSBS06)
仕入先ごとの支払明細書を作成する(SFDPの当月受入実績を明細行に)。担当: 経理担当 - 集計:費用集計Excelジョブ
上記の支払データや購買データを部門別・月別に取りまとめる。AS/400との自動連携はなく、部門帰属は人間の手動判断(第6章)。担当: 経理担当
SHDYHS)、請求側の「請求対象年月」(JUSEHI/WSHIST)、そして「請求済締日」(T1DYSM)は3つとも異なる「月」概念であり、混同すると理解を誤る(11節の用語集を参照)。
8. ケーススタディ — RSBS23「小計」問題:正しさより一貫性
何が起きていたか
RSBS23(支払総括書、現物印字版)のAS/400プログラムITSW32Rには、「種別」(外注/材料/工具/設備/その他)ごとに小計行を印字するロジックがある。ところがこの小計を積算する変数G1KGxxはプログラム開始時に一度だけゼロクリアされ、種別が切り替わるたびにリセットされることがない。その結果、印字される「小計」は実際にはその種別だけの合計ではなく、それまでの全種別の累計になる。最後の種別グループの「小計」は、最終行の「合計」と完全に一致してしまう。
これは一見して「バグ」に見える(実際、移行担当者は当初「休眠中のレガシーバグ」として、正しい(種別ごとに独立した)小計を計算する実装(renderPaymentSummaryGrouped())で移行版を作った)。
なぜ「直さない」という判断になったか
移行担当者が本番のSHDPデータを実際にクエリしたところ、FY2025-2026のどの支払期間にも、必ず5種類すべての種別(外注/材料/工具/設備/その他)が存在していたことが判明した。つまり「通常は1期間に1種別しかないのでめったに顕在化しないバグ」という当初の想定は誤りで、このロジックは過去に生成された支払総括書すべてで、毎回、必ず発現していたということになる。言い換えると、経理担当者が過去に見てきた紙の帳票は全部、「小計=累計」の状態で印字されていたということ。
3つの選択肢(①レガシー通りの累計 ②数学的に正しい独立小計 ③両方を並べて表示)を提示したところ、rmondo氏は①レガシー通りの累計を選択した。理由は、経理担当が新しいWeb版のプレビューを過去の紙の記録と突き合わせるとき、同じ数字が出てくることの方が、数学的な正しさより重要だから。
shdpの全130発生月(2015年8月〜2026年5月)を集計しなおしたところ、例外なく全130期間で5種別(外注/材料/工具/設備/その他)すべてが存在することを確認した。つまり「小計=累計になるバグ」は、SHDPが存在する10年半のどの月の帳票でも毎回発現していたことになり、①の判断はより強固に裏付けられる。
教訓
レガシーシステムの移行では「正しさ」は絶対的な数学的正しさでは定義できない。業務担当者が長年見慣れ、それを基準に照合してきた挙動こそが"正しい"という場合がある。バグらしきものを見つけたら、まず「実際の運用でどれくらいの頻度で顕在化するか」を実データで確認し、それを踏まえたうえで業務担当者に判断を委ねるべきで、開発者が独断で「正しく直す」のは危険である。
(出典: docs/decisions.md D25, D23; pilot/spec/rsbs06-07-10-11-23.md L80-98)9. 特殊ケース
9.1 相殺(ネッティング)
今回の調査範囲(pilot/spec/*.md, docs/decisions.md, source/finance/ディレクトリ一覧)では、関連会社間の相殺処理に相当する機能・テーブルは一切見つからなかった。存在しない可能性、または本ページの調査範囲外(別サブシステムまたは手作業)の可能性がある(未解明事項参照)。
【ヒアリングで判明】相殺している取引先は実在し、主なところはデンソープレステック、ヒサダ、トヨトミ、アイシンシロキの4社であることが確認された。AS/400上に相殺処理のテーブル・機能が見つからなかったのは調査漏れではなく、この業務がAS/400の外(Excel・手作業)で完結しているためと確定した。 (出典: 新實さん、2026-07-22ヒアリングシート回答、hearing.html F1、docs/feedback/hearing/2026-07-22-niimi-hearing-sheet-F.md参照)
9.2 手形(約束手形)
SHDP.SHKGTG(手形金額)フィールドは確実に存在し、RSBS01の支払条件コード90(指定手形金額+小切手)・4(10万円単位手形+小切手、マスタ経由のみ)で計算ロジックも確認できる。ただし手形の期日・決済状況を追跡する専用テーブルは見当たらない。金額のフィールドだけがあり、期日管理は銀行側システムか手作業台帳で行われている可能性がある(未解明事項参照)。
【ヒアリングで判明】受け取った手形の期日は、\\Server2\Soumu_C2\経理\売上関係\入金管理表.xlsx(入金消込と同じ台帳)で一元管理されていることが確認された。専用テーブルがAS/400上に見当たらなかったのは、この業務自体が銀行サイト+Excel台帳でAS/400の外で完結しているためだった。 (出典: 新實さん、2026-07-22ヒアリングシート回答、hearing.html F1、docs/feedback/hearing/2026-07-22-niimi-hearing-sheet-F.md参照)
9.3 消費税
ITSW99R(消費税率照会)という共通ルーチンが複数のプログラム(RSBS01/ITSW10R、ITSI13R)から呼ばれ、日付に応じて税率を返す。
| 適用開始日 | 税率 |
|---|---|
| 〜1992/03 | 0% |
| 1992/04〜1997/03 | 3% |
| 1997/04〜2014/03 | 5% |
| 2014/04〜2019/09 | 8% |
| 2019/10〜 | 10% |
(出典: pilot/spec/rsbs01-itsw10r.md L85-92, itsi13r.md L82)
インボイス制度(2023年開始)固有の対応としては、ITS001Rが2025年1月にTK1P.T1D101/T1D301を全行に複写するよう改修された履歴が確認できる。これは、少なくとも2025年初頭時点で、AS/400側のプログラムが継続的に制度対応の改修を受けていたことを示す一次証拠である。 (出典: pilot/spec/its001r.md L211)
9.4 60/61・90/91 得意先ペアリング
ITS000R・ITS002R双方に、得意先コード60を指定すると61も、90を指定すると91も同時に請求対象へ含めるという、コードにハードコードされた特別ルールがある。関連会社をまとめて1枚の請求書で処理する慣行と推測されるが、対象となる会社名・理由はソースだけでは分からない(未解明事項参照)。 (出典: pilot/spec/its000r.md L189-196)
【ヒアリングで判明】60/61=トヨトミ、90/91=山崎工業であることが確定した。いずれも工場を2つ持つ会社で、納品先そのものは工場ごとに異なるが、請求書は2工場分をまとめて1通にする運用のため、得意先コードがペアで扱われている。「アイシン安城に注意」(ITS001D画面の警告文言)についても、取引先・データのリスクではなく新實さん個人の入力操作上の備忘メモ(範囲指定入力で「10から」スタートさせる癖の忘れ防止)であることが判明した。 (出典: 新實さん、2026-07-22ヒアリングシート回答、hearing.html F2、docs/feedback/hearing/2026-07-22-niimi-hearing-sheet-F.md参照)
9.5 支払種別(5グループ)
SHDP.SHCDSB(種別、仕入先マスタSICDSBと同一体系)はNMMPのコードグループ13で名称管理されている。実データ照会(本番DBnmmpテーブル、nmkbnm='13')で確認した正式な対応表:
| コード | 名称 |
|---|---|
| 1 | 外注 |
| 2 | 材料 |
| 3 | 工具 |
| 4 | 設備 |
| 9 | その他 |
SHDPは単なる「外注費」台帳ではなく、外注加工費・材料費(通常の仕入経路以外で発生したもの)・工具費・設備費・その他雑費を横断する非仕入系コストの一元台帳である。D25の実データ確認では、FY2025-2026の全期間で5種別すべてが毎回登場している。 (出典: docs/decisions.md D25, docs/STATUS.md L27-40)
工機課の工具鋼購買(設計材料発注書.xlsm等)と資材のコイル材・大板材購買(材料発注依頼書.xlsx)はAS/400(SFDP/MENUG1)を一切経由しないExcelだけの購買系統だが、支払自体は本節のSHDP種別2/3として通常の支払フローに乗る。2026-07-23の新實さんへのヒアリングで、これらExcel台帳と経理入力(請求金額入力.xlsx)の間に自動的な連携は一切なく、新實さんが請求書の内容と発注の内容を手作業で突合してから手入力していることが確定した——「この請求書は本当にこの発注と対応しているか」の検算が完全に属人的な手作業である点が、このコスト系統の実態上のリスクである。詳細はhearing.html D5参照。(出典: 新實さん、2026-07-23ヒアリングシート回答D、docs/feedback/hearing/2026-07-23-niimi-hearing-sheet-D.md参照)
9.6 支払条件コード早見表(再掲・5.1節参照)
0=全額振込条件付き先方負担/3=全額振込当方負担固定/90=指定手形額+小切手/99=マスタ指定通り(内部的に4=10万円単位手形+小切手が発現しうる)。
9.7 型費の扱いの不整合
ITS000R(月次請求)は型費を単価に折り込むが、ITS001R(範囲指定)は型費を別項目のまま出力する。この違いが意図的な設計か単なる実装差かは未確認(未解明事項参照)。
【ヒアリングで判明】社内で使う資料は型費・単価を常に別表示にしている一方、客先に提出する請求書は型費を単価に織り込んで個数割りする得意先が従来は多かった。ただし下請法の影響とみられる近年の傾向として、型費を別立てで請求明細に出すケースの方が増えており、現在は両方式が混在している。つまりITS000R/ITS001Rの違いは単なる実装差ではなく、得意先・時期による運用実態の混在を反映したものだった。 (出典: 新實さん、2026-07-22ヒアリングシート回答、hearing.html F3、docs/feedback/hearing/2026-07-22-niimi-hearing-sheet-F.md参照)
10. 実データスナップショット — 本番DBによる検証
itakura、読み取り専用接続)へ直接クエリして、このページの記述を実データで裏付け・補強した。対象はSHDP(支払費用データ、5,738件)・TK1P(得意先マスター従属1、140件)・SIMP(仕入先マスター、497件)・BKMP(金融機関マスター、162件)・JUDP(受注データ、45,545件)。件数はいずれも想定通りで、テーブル欠損・想定外の重複キーなどは見つからなかった。データの実際の年代幅は、SHDPが2015年8月〜2026年5月(130発生月、欠測なし連続)。
10.1 支払費用データ(SHDP)の実態
種別(SHCDSB)ごとの件数・金額を全130発生月で集計すると、9.5節で述べた「1=外注/2=材料/3=工具/4=設備/9=その他」の対応は実データでも成立している。ただし金額ベースで最大の割合を占めるのは外注(9.4%)ではなく材料(30.7%)で、9.5節が言う「SHDPは外注費台帳ではなく非仕入系コストの一元台帳」という位置づけを裏付ける結果になった。
| コード | 名称 | 件数 | 件数割合 | 金額合計 | 金額割合 |
|---|---|---|---|---|---|
| 1 | 外注 | 883 | 15.4% | 101,799,527円 | 9.4% |
| 2 | 材料 | 889 | 15.5% | 331,185,338円 | 30.7% |
| 3 | 工具 | 822 | 14.3% | 151,493,020円 | 14.0% |
| 4 | 設備 | 789 | 13.7% | 240,784,735円 | 22.3% |
| 9 | その他 | 2,355 | 41.0% | 253,581,780円 | 23.5% |
| 合計 | 5,738 | 100% | 1,078,844,400円 | 100% | |
「その他」区分が件数で41%を占めるのに金額では23.5%にとどまる(1件あたりの平均額が他区分より小さい雑費的な支払が多い)のも、一元台帳としての性格を示している。
発生月ごとの支払総額(SHKGSK合計)は、130期間で中央値7,764,611円/月・平均8,298,803円/月。最小は2025年5月の3,577,360円、最大は2025年12月の24,299,202円で、平均の約3倍に達する突出した月だった。内訳を見ると、この月は株式会社ウエノテックへの外注区分の単独支払11,969,485円が主因で、通常月にはない大口の一時支払(設備投資や大型外注案件と推測される)が乗ったことがわかる。
累計支払額の多い支払先トップ10(全期間・SIMP名称と結合):
| 順位 | 支払先 | 累計金額 | 出現発生月数 |
|---|---|---|---|
| 1 | 藤巻工範株式会社 | 156,666,019円 | 130 |
| 2 | 株式会社 山一ハガネ | 81,030,293円 | 130 |
| 3 | フカヤ商會株式会社 | 75,039,709円 | 110 |
| 4 | 株式会社 ミスミ | 58,696,712円 | 130 |
| 5 | 碧南オイルセンター | 52,567,414円 | 130 |
| 6 | 三機通商 | 52,502,203円 | 129 |
| 7 | シンコウ設備 | 41,179,361円 | 67 |
| 8 | (株)エフ | 35,629,728円 | 52 |
| 9 | 明治安田生命保険相互会社 | 32,779,080円 | 113 |
| 10 | 愛知商工連盟協同組合 | 29,247,541円 | 129 |
9位・10位に生命保険会社と商工連盟の協同組合が入っている点は象徴的で、SHDPが単なる仕入先・外注先への支払だけでなく、保険料や組合費のような一般管理費まで横断して扱う「非仕入系コストの一元台帳」であることを、上位ランキングそのものが裏付けている。
10.2 得意先締め日(TK1P)の実データ分布
2.3節の「締め日」カードで先述した通り、全140得意先のT1D301(締め日)は次の分布になっている。
| T1D301の値 | 意味 | 件数 | 割合 |
|---|---|---|---|
| 0 | 末締め | 131 | 93.6% |
| 25 | 25日締め | 4 | 2.9% |
| 20 | 20日締め | 3 | 2.1% |
| 15 | 15日締め | 2 | 1.4% |
請求書発行区分(T1D101)は0=自社始動が108件(77.1%)、1=客先始動が32件(22.9%)。3.4節で「トヨタグループの大手取引先は客先始動が多いのでは」と推測した通り、約2割の得意先が客先始動側に分類されている実態が確認できた(個別にどの得意先がそれかまでは今回未特定)。
なお2026-07-18時点のスナップショットでは、T1DYSM(請求済締日)は全140件が設定済みで、範囲は20260531〜20260620。つまり調査時点で「まだ一度も締めたことがない」得意先はゼロで、全社が直近1ヶ月弱の間に締め処理を経ていることになる。
10.3 売上金額トレンド(JUDP)— 実データで「算出不可」と判明
2.2節が説明する通り「単価は受注データ自身が持つ値が最優先、0のときだけPBTANKR(品番単価マスター)を参照する」というロジックを、実データで確認した。JUDPの打切区分(JUKUED)=9(請求対象確定)の行は45,545件中36,536件(80.2%)あるが、そのうち単価(JUTANK)が0の行が36,372件=99.6%を占める。つまり「確定した」受注行のほぼ全件が、単価をJUDP自身に持たずPBTANKR依存になっている。
PBTANKR(品番単価マスター)は今回のインポート対象テーブルに含まれていないため、JUTANK×JUNOSUで年次売上を積み上げても実態を大きく下回る数字(試算では年間200万円〜600万円程度)しか出ず、これは板倉製作所の事業規模から見て明らかに非現実的。したがって年次売上トレンドの算出は今回スキップする。2.2節の単価優先順位の説明は、この実データ確認によりむしろ裏付けられた形になる。
集計に使ったSQL
-- 発生月カバレッジ
SELECT min(shdyhs), max(shdyhs), count(*) FROM shdp;
-- 種別ごとの件数・金額(10.1)
SELECT shcdsb, count(*) n, sum(shkgsk) amt FROM shdp GROUP BY shcdsb ORDER BY shcdsb;
-- 発生月ごとの支払総額と中央値・平均(10.1)
SELECT shdyhs, sum(shkgsk) total FROM shdp GROUP BY shdyhs ORDER BY shdyhs;
SELECT percentile_cont(0.5) WITHIN GROUP (ORDER BY total) median_monthly_total,
avg(total), min(total), max(total), count(*) n_periods
FROM (SELECT shdyhs, sum(shkgsk) total FROM shdp GROUP BY shdyhs) t;
-- 支払先トップ10(10.1)
SELECT s.sicdsi, s.sinmkj, sum(sh.shkgsk) total_amt, count(*) n
FROM shdp sh JOIN simp s ON s.sicdsi = sh.shcdss
GROUP BY s.sicdsi, s.sinmkj ORDER BY total_amt DESC LIMIT 10;
-- 締め日分布 / 請求書発行区分(10.2)
SELECT t1d301, count(*) n FROM tk1p GROUP BY t1d301 ORDER BY n DESC;
SELECT t1d101, count(*) n FROM tk1p GROUP BY t1d101 ORDER BY n DESC;
SELECT min(t1dysm), max(t1dysm), count(*) FROM tk1p WHERE t1dysm IS NOT NULL AND t1dysm > 0;
-- JUDP 単価ゼロ率(10.3)
SELECT count(*) FILTER (WHERE jukued=9) confirmed, count(*) total FROM judp;
SELECT count(*) FILTER (WHERE jutank=0 OR jutank IS NULL) zero_price, count(*) total
FROM judp WHERE jukued=9;
-- RSBS23 全期間再検証(8節)
SELECT count(DISTINCT n_groups), min(n_groups), max(n_groups)
FROM (SELECT shdyhs, count(DISTINCT shcdsb) n_groups FROM shdp GROUP BY shdyhs) t;
-- 手形金額の規模(9.2節・未解明事項3)
SELECT count(*) FILTER (WHERE shkgtg>0) n_tegata, sum(shkgtg), sum(shkgsk) FROM shdp;
-- BKKUTRの実際の入力状況(5.5節・未解明事項9)
SELECT bkkutr, count(*) FROM bkmp GROUP BY bkkutr;
11. 関連マスタ・データ/帳票一覧
11.1 マスタ
| テーブル | 論理名 | キー | 主な項目 | 出典 |
|---|---|---|---|---|
| TKMP | 得意先マスター | tkcdtk | 名称(漢字/略称)・住所・電話・tkkbwk(指定請求書様式)・tkd101/tkd201/tkd301(用途未確認) | analysis/out/schema.sql L7227付近; masters_map.md L28 |
| TK1P | 得意先マスター従属1 | t1cdtk | t1dysm(請求済締日)・t1d101(請求書発行区分0/1)・t1d301(締め日、0=月末)、他d3xx/d6xx/d8xxは大半未使用のリザーブ枠 | analysis/out/schema.sql L7184付近; its994r.md, its996r.md |
| SIMP | 仕入先マスター | sicdsi | 名称・sicdsb(種別)・sicdbk/sicdst(振込銀行/支店)・sicdsr(支払条件)・sikbwk(使用停止フラグ) | pilot/spec/rsbs01-itsw10r.md L32 |
| BKMP | 金融機関マスター | bkcdbk+bkcdst | 銀行名(正式/漢字/略称)・bkkutr(手数料区分、未使用)・当座預金枝番 | analysis/out/schema.sql L876付近 |
11.2 トランザクション/台帳データ
| テーブル | 論理名 | キー | 役割 |
|---|---|---|---|
| SHDP | 支払費用データ | shcdss+shdyhs | MENUR1の中核。仕入先×発生月ごとの支払金額と振込/手形/小切手/預り/現金の内訳 |
| SFDP | 仕入ファイル | sfcdsi+sfnoha | 実際の受入(仕入)トランザクション明細。ITSI13R支払明細書の明細行の元 |
| JUDP | 受注データ | junoju | 受注・出荷・請求対象年月(jusehi)・打切区分(jukued)を保持する売上系統の中心テーブル(本ページでは源流として言及、詳細は出荷ページ参照) |
11.3 帳票(本ドメインで確認できたもの)
| 帳票名 | 生成プログラム | ステージング/ビュー | Web版プレビュー |
|---|---|---|---|
| 請求書(月次・都度) | ITS000R/ITS002R → BAT0363/BAT0364 | JUDPR5/v_judpr5_xfer | あり(renderInvoice) |
| 請求書(範囲指定) | ITS001R → BAT0362 | JUDPR9(25項目) | なし(未解明事項) |
| 売上実績表 | ITUR31R → BAT0327 | JUDPR7/v_judpr7_xfer | あり(renderSalesReport) |
| 総合振込データ作成 | RSBS06(EXSW04R) | shdpp6 | あり(renderTransferData) |
| 支払案内書 | RSBS07(EXSW01R) | shdpp1 | あり(renderPaymentNotice) |
| 支払総括書 FOR EXCEL(通常/保存用) | RSBS10/RSBS11(ITSW34R) | shdpp3 | あり(renderPaymentSummaryFlat) |
| 支払総括書(現物印字) | RSBS23(ITSW32R) | shdpp3 | あり(renderPaymentSummaryGrouped、8節のケーススタディ対象) |
| 支払明細書 | ITSI13R(GSBS06) → BAT0206 | SFDPP3 | なし(意図的な非対応 — ITSI13R自体が現在未使用と確認済みのため、プレビューseam新設は不要と判断。詳細は未解明事項参照) |
12. 用語集
- 締め日 / 請求済締日(T1DYSM)
- この日以前の納入日では出荷入力ができなくなる、得意先ごとの会計上の境界日。ITS994R/ITS995Rで更新
- 打切区分(JUKUED)
- 受注行が「請求対象として確定した」ことを示すフラグ。9=確定
- 請求対象年月(JUSEHI)
- その受注行を請求書に含める対象年月(YYYYMM)。通常は納入日の月がそのまま入る
- 請求書発行区分(T1D101)
- 0=自社始動(自社から能動的に請求書を出す)、1=客先始動(先方の支払通知を待つ)
- 発生月(SHDYHS)
- 支払費用データ(SHDP)が「発生した」とされる月。請求対象年月とは別概念
- 種別(SHCDSB/SICDSB)
- 支払費用の分類。1=外注/2=材料/3=工具/4=設備/9=その他
- 支払条件(SICDSR/WSKUSS)
- 仕入先ごとの支払方法規定。全額振込/手形+小切手など
- 型費
- 金型製作・改修費用。単価に折り込まれる場合と別建てで扱われる場合がある
- 単価区分(見積/決定)
- 品番単価マスターから引いた単価が「見積」段階か「決定」済みかを示すラベル
- 消込(このコードベースでの用法)
- 一般的な「入金消込」ではなく、出荷・納品データを受注に対して確定させる処理を指すことが多い(用語の二重使用に注意、4節参照)
- 客先品番変換(CVMP)
- 社内で使う品番を、得意先が使う品番表記に変換するマスタ
- 振込/手形/小切手/預り/現金
- 支払方法の5分類。SHDPは各金額を別フィールドで保持
- 手数料負担区分(当方/先方)
- 銀行振込手数料をどちらが負担するかの区分。支払条件と金額基準(3万円)で自動判定される場合がある
- 印刷プレビュー主義
- 本移行プロジェクトの設計方針。実際の銀行送金ファイルやExcelマクロ相当のバイト列は作らず、内容確認用のHTMLプレビュー(window.print())に留めるという判断
- 経理管理サブシステム(MENUR1)
- MENU00の非表示オプション50からのみ到達できた、支払業務専用のAS/400サブシステム。2026年session 34で発見・移行
- 得意先マスター従属1(TK1P)
- 得意先マスター(TKMP)に1:1で紐づく、請求関連の制御フラグ専用テーブル
- 指定請求書様式(TKKBWK)
- 特定フォーマットの請求書が必要な得意先を示すフラグ。該当客はITS000Rの自動発行対象から除外される
- インボイス制度対応
- 2023年開始の適格請求書等保存方式への対応。2025年にAS/400側にも改修履歴が残る
- 消費税率テーブル(ITSW99R)
- 適用日に応じて0%〜10%の税率を返す共通ルーチン
- SHDP
- 支払費用データ。仕入先×発生月をキーとする、外注/材料/工具/設備/その他の非仕入系コスト台帳
- PBTANKR
- 品番単価マスター参照の共通ルーチン。「決定」優先、必要に応じ「見積」を含める2モード
13. 他業務との接続点
- 出荷(納品)業務: ITND50R等の出荷データ追加が売上計上の起点。納入日・数量が売上金額計算の直接の入力になる(2.1節)。出荷ドメインの詳細な業務フローは7. 出荷ページ参照。
- 外製受入業務: SFDP(仕入ファイル)は外注先・仕入先からの受入実績を記録するテーブルで、ITSI13R支払明細書の明細行の直接の元データになる(5.4節)。外製受入の詳細は8. 外製・仕入ページ参照。
- 単価マスタ(品番単価マスター、PBTANKR): 売上計上時の得意先向け単価決定にも、(今回のスコープでは直接追跡できなかったが)仕入・外注費用の妥当性確認にも関わる可能性がある共通ルーチン。詳細は2. 見積・製品単価ページ参照。
- マスタ保守(masters.html共通CRUD基盤): TKMP/TK1P/SIMP/BKMPはいずれもこの基盤で登録・変更・削除・照会が可能(F7/F8前後データ送りなど、既存の汎用機能がそのまま適用される)。
入金消込の実態: 顧客からの実際の入金は、どのシステム・どの手順で請求書と突き合わせているか。AS/400上に該当するテーブル・プログラムは見つからなかった。銀行のオンラインバンキングと手作業のExcelで完結しているのか?
【ヒアリングで判明】 銀行サイトと\\Server2\Soumu_C2\経理\売上関係\入金管理表.xlsx/入出金明細_当期.xlsxの併用で完結していることが確認された。 (出典: 新實さん、2026-07-22ヒアリングシート回答、hearing.html F1、docs/feedback/hearing/2026-07-22-niimi-hearing-sheet-F.md参照)相殺(ネッティング)の有無: 関連会社間で相殺処理を行っている取引先はあるか。あるとすれば、どのシステムで管理しているか(AS/400上には該当機能が見当たらない)。
【ヒアリングで判明】 実在する。主な相殺先はデンソープレステック、ヒサダ、トヨトミ、アイシンシロキの4社。AS/400の外(Excel・手作業)で完結している。 (出典: 新實さん、2026-07-22ヒアリングシート回答、hearing.html F1、docs/feedback/hearing/2026-07-22-niimi-hearing-sheet-F.md参照)手形の期日管理:SHDP.SHKGTG(手形金額)は記録されているが、手形の期日・決済状況(不渡り等の管理)はどこで行っているか。実データでは全5,738件中131件(2.3%)に手形金額があり、合計142,653,920円(全支払額の13.2%)と、無視できない規模。
【ヒアリングで判明】 入金消込と同じ入金管理表.xlsxで一元管理されている。 (出典: 新實さん、2026-07-22ヒアリングシート回答、hearing.html F1、docs/feedback/hearing/2026-07-22-niimi-hearing-sheet-F.md参照)60/61・90/91得意先ペアリングの業務的意味: ITS000R/ITS002Rにハードコードされたこのペアリングの対象企業名と理由を確認したい(関連会社の一括請求と推測)。
【ヒアリングで判明】 60/61=トヨトミ、90/91=山崎工業。いずれも工場2つ分の請求書を1通にまとめるためのペアリング。 (出典: 新實さん、2026-07-22ヒアリングシート回答、hearing.html F2、docs/feedback/hearing/2026-07-22-niimi-hearing-sheet-F.md参照)「アイシン安城に注意」の意味: ITS001D画面の警告文言が指す具体的な注意事項は何か。
【ヒアリングで判明】 取引先・データのリスクではなく、新實さん個人の範囲指定入力時(「10から」スタートさせる癖)の忘れ防止メモだった。 (出典: 新實さん、2026-07-22ヒアリングシート回答、hearing.html F2、docs/feedback/hearing/2026-07-22-niimi-hearing-sheet-F.md参照)支払明細書(ITSI13R/GSBS06)の移行要否: MENUR1棚卸(D23)の対象外だったこのプログラムを、追加で移行対象に含めるべきか。またITS001R(請求書・範囲指定)の25項目版にもWebプレビューを追加すべきか。
【ヒアリングで判明】 (a) ITSI13Rは2026-07-29のヒアリングで「現在使用していません・移行不要」と改めて 明言され、現在未使用・移行不要であることが確定した(hearing.html A8)。詳細・対応方針は 本節末尾の「ITSI13R前月繰越額算出の潜在バグ」項目を参照。 (出典: 新實さん、2026-07-29ヒアリングシート回答、docs/feedback/hearing/2026-07-29-niimi-hearing-sheet.md参照)
(b) ITS001R/JUDPR9版のプレビュー要否については、新實さんは質問の意味を理解できなかったが、代わりに 実際の請求書出力パイプライン全体を回答: AS400 SSBS62→SSCB62C→ITS001R→BAT0362→BAT0362.xlsm→請求書作成(範囲指定).xlsm。 パイプライン構成という新事実は得られたが、プレビュー優先度そのものへの回答にはなっておらず、その点は 技術的には未解明のまま残る。 (出典: 新實さん、2026-07-21ヒアリングシート回答、docs/feedback/hearing/2026-07-21-niimi-hearing-sheet-A.md参照)費用集計Excelマクロの内容:月別概算費用集計.xlsm等バイナリマクロの中身(部門別費用・付加価値の算出ロジック)を将来ドキュメント化・移行する価値はあるか。
【実VBAで解明】 3本のマクロを全文確認済み(第6章)。部門別費用の按分ロジックは判明したが、「付加価値」計算は これらのマクロ内にはゼロ件で、算出場所は依然として未解明。
【ヒアリングで追記】月別概算費用集計.xlsm自体は2026-07-22のヒアリングで「現在は使用していません」と 確認された——以前は概算の試算表を早く出すため、仕入れの納品書内容を入力したExcel・金型材料の発注受入Excel・ プレス品材料の発注受入Excelの3ファイルから月別に費用を集計していたが、現在この集計方法は使われておらず、代替 手段の有無への言及もなかった。将来ドキュメント化・移行する価値については、現役で使われていない以上、優先度は 低いと判断してよい。 (出典: 新實さん、2026-07-22ヒアリングシート回答、hearing.html F4、docs/feedback/hearing/2026-07-22-niimi-hearing-sheet-F.md参照)ITS996Rのアクセス制御バグ: 請求書発行区分の変更権限がSSBS77(請求済締日変更)と誤って同一のCL名で判定されているバグ(pilot/spec/its996r.mdL8-18)。意図的な設計なのか、修正が必要なセキュリティ上の不備なのか。
【ヒアリングで判明】 新實さんが「は不備です」と明言——意図的な設計ではなく、確認された不具合。 アクセス制御チェックが誤ってSSBS77のCL名を参照している点は、移行版では忠実に再現すべきレガシー仕様 ではなく、修正すべきバグとして扱う。 (出典: 新實さん、2026-07-21ヒアリングシート回答、docs/feedback/hearing/2026-07-21-niimi-hearing-sheet-A.md参照)BKMP.BKKUTR(手数料区分)の扱い: 現状、振込手数料の計算では一切参照されずハードコードされた基準銀行支店で判定している。このマスタ項目は将来使う予定があるのか、廃止してよいものか。実データでは162件中160件(98.8%)に値が入っており、単純な「未使用で空欄だらけ」ではない点が新たな疑問(5.5節参照)。
【ヒアリングで判明】 「は使っていないのであれば廃止で」と確認済み——廃止して問題ない。ただし98.8%に値が 入り続けている謎も同時に解明: この項目は元々、名古屋銀行碧南支店から振込した場合の手数料計算に実際に使われて いた。現行プログラムのロジックが参照しなくなった後も、入力担当者の側で当時の運用が惰性的に続いていたための 名残りであり、将来使う予定があるという意味ではない。 (出典: 新實さん、2026-07-21ヒアリングシート回答、docs/feedback/hearing/2026-07-21-niimi-hearing-sheet-A.md参照)ITSI13R前月繰越額算出の潜在バグ: 要求された仕入先コードではなく、読み込みループ終了時の別の仕入先コードを起点に前月繰越額を算出している疑いがある(pilot/spec/itsi13r.mdL182-190)。実データで正しい値が出ているか要確認。
【2026-07-21時点】 新實さんの回答は「は現在未使用です。前月繰越が発生したことがないので、 気づいていません」——このバグ疑惑のコードパスは実運用でほぼ休眠状態にあり、前月繰越自体が一度も発生していない ため、正誤を確認する機会がこれまで存在しなかったことが判明した。つまり「バグではないと確認された」わけでも 「バグだと確認された」わけでもなく、未検証のまま眠っている状態が明らかになっただけである。この時点では 「疑わしいロジックを忠実に移植して休眠地雷をそのまま持ち越すか、初めて発火する前に新システム側で先回りして 修正するか」という判断が依然として必要と考えていた。 (出典: 新實さん、2026-07-21ヒアリングシート回答、docs/feedback/hearing/2026-07-21-niimi-hearing-sheet-A.md参照)
【2026-07-29ヒアリングで完全クローズ】 新實さんより「ITSI13Rは現在使用していません。移植の必要はありません」 と明言され(hearing.html A8)、上記の「忠実移植か先回り修正か」という判断そのものが 不要(moot)になった。
ただし移行スコープ上の実態は「これから移植しない」ではなく、すでに移植完了している点に注意が必要である。 実装本体はpilot/app/src/domain/stagingShiharai.ts(集計・消費税・前月繰越・A1-A9/B1-B3の全サマリ行)、 画面はpublic/itsi13.html、ビューはv_sfdpp3_xfer、テストはtest/stagingShiharai.test.tsほか計6ファイルで、いずれも実装・テスト済み。争点だった前月繰越ロジックもdocs/decisions.mdD3・pilot/DEVIATIONS.md#5として既に決着済みで、推定した業務ルール(前月・同一仕入先)で実装し逸脱として 登録する「先回り修正」側を選択済み(stagingShiharai.tsのprevYyyymm+WHERE shcdss = $1 AND shdyhs = $2)。
対応方針: 実装済み・テスト済みのコードを撤去する理由はない(撤去コストとリグレッションリスクだけが増える)。 「顧客が現在未使用・移行不要と明言した機能を、既に実装済みのまま保持する」と記録し、以後この機能への追加投資 (新規プレビューseam、実データ突合、前月繰越の再検証)は不要とする。 (出典: 新實さん、2026-07-29ヒアリングシート回答、docs/feedback/hearing/2026-07-29-niimi-hearing-sheet.md参照)型費の扱いの不整合: ITS000R(月次請求)は型費を単価に折り込むが、ITS001R(範囲指定)は型費を別項目のまま出力する。この違いは意図的な設計か。
【ヒアリングで判明】 意図的な単一設計ではなく、得意先・時期による運用実態の混在。社内資料は型費・単価を常に 別表示、客先請求書は従来型費を単価織り込みが多数派だったが、下請法の影響とみられる近年の傾向で別立てが増加中。 (出典: 新實さん、2026-07-22ヒアリングシート回答、hearing.html F3、docs/feedback/hearing/2026-07-22-niimi-hearing-sheet-F.md参照)RSBS23小計の運用確認(継続監視): 8節のケーススタディで「レガシー通りの累計小計」を採用したが、今後決算方式が変わった場合(種別が今後6つ目以上に増える等)に再度確認が必要になる可能性がある。
【ヒアリングで判明】 この帳票は現在AS/400側の計算結果をチェックする内部照合リストとしてのみ使われており、 種別区分・その小計は特に不要——必要なのは合計のみと新實さんが明言した。「レガシー通りの累計小計」という決定 自体は正しい判断のままだが、種別数増加時の再確認という将来リスクは、小計の精度がそもそもほとんど問題にならない ため実質的に解消された(詳細はcases.html①)。 (出典: 新實さん、2026-07-22ヒアリングシート回答、hearing.html F3、docs/feedback/hearing/2026-07-22-niimi-hearing-sheet-F.md参照)- 【新規】
請求書発行/PRMPP1.xls/.FDFは現行10マクロのいずれからも参照されていない孤児ファイル であることを確認した(3節)。このファイルは廃止済みで削除して問題ないか、それとも別の(本調査未発見の)用途に 今も使われているか。 - 【新規】
転送用支払データ作成.xlsmのエラーメッセージに「新實に連絡してください」という 個人名がハードコードされている(5.6節)。新實氏が現在もこの一連のExcel/VBA資産の実質的な保守担当者か。 後任・引き継ぎ計画はあるか。 - 【新規】
総合振込データ.csvはZengin(全銀)固定長形式ではなく、単純な「仕入先コード,0,金額」の 中間ファイルであることを確認した(5.6節)。この中間ファイルを読み込んで実際の全銀形式に変換している銀行系 ソフトウェアの名称・所在は何か(新システム移行時に代替が必要)。 - 【新規】
転送用支払データ作成.xlsmが読むSHDPP4.xlsを生成するAS/400側RPGプログラム 名は何か(先行調査brief-9-finance.mdの既存未解明事項と同一、5.6節参照)。