業務ルール集 / Business Rules
各ドメインの不変条件・ポリシー・ステート遷移ルールを集約。コード実装時はこのドキュメントのルールを検証ロジックとして反映すること。
見積・受注 (Quotation & Order)
見積・受注 (Quotation & Order)
| ID | ルール | 種別 | 説明 |
|---|
見積ルール
| ID | ルール | 種別 | 説明 |
|---|---|---|---|
| Q-001 | 見積合計 = 明細合計 | INV | `quotation.totalAmount` = Σ `lines[].amount` |
| Q-002 | 承認後のみ受注変換可 | POL | `quotationStatus === 'approved'` が前提条件 |
| Q-003 | 改訂は追記のみ | INV | 改訂番号は単調増加。前版は読取専用になる |
| Q-004 | 改訂時は全明細コピー | POL | 部分改訂は不可。全行を新版にコピーして編集 |
| Q-005 | 見積有効期限 | POL | 作成日から 30 日 (企業設定で変更可能) |
| Q-006 | 否認は終端ステータス | POL | 否認された見積は改訂 (新版作成) でのみ再提出可能。否認→承認待ちの直接遷移は禁止 |
| Q-007 | 見積費目は区分マスタに準拠 | INV | 明細の費目は企業ごとの見積費目区分 (材料費・設計費・組付費・現地作業費 etc.) から選択 |
| Q-008 | 明細金額 = 数量 × 単価 | INV | `lineAmount = quantity × unitPrice`。数量・単価いずれかの変更時に即時再計算 |
| Q-009 | 諸経費は自動計算 | POL | 品名が「諸経費」の行は `amount = Σ(他の全行amount) × overheadRate%`。率は得意先マスタの諸経費率を優先、未設定時はシステム既定値にフォールバック |
| Q-010 | 得意先別単価の自動適用 | POL | 部品コード入力時、得意先別単価マスタ (見積単価区分) を検索し、該当あれば部品マスタ単価を上書き |
| Q-011 | 見積保存時に得意先別単価を自動登録 | POL | 見積登録時に明細の単価を得意先別単価マスタに自動保存。次回以降の見積で参照される |
| Q-012 | 承認には電子印と日時を記録 | INV | 承認時に承認者コードと承認日を必ず記録。否認時も同様 |
| Q-013 | 参照作成は新規扱い | POL | 既存見積をコピーして新規作成する場合、見積番号はクリアされ、ステータスは作成中にリセット。改訂番号は引き継がない |
| Q-014 | 得意先変更時に既定値を再取得 | POL | 得意先コード変更時、受渡条件・支払条件・有効期限を得意先マスタから再取得。未設定の場合はシステム既定値にフォールバック |
| Q-015 | 粗利・限界利益の自動計算 | INV | `粗利 = 見積合計 - 原価合計`、`粗利率 = 粗利 / 見積合計 × 100`、`限界利益 = 見積合計 - 外部原価合計`、`限界利益率 = 限界利益 / 見積合計 × 100` |
| Q-016 | 品名必須 | VAL | 明細行にデータが入力されている場合、品名 (`itemName`) は必須 |
受注ルール
| ID | ルール | 種別 | 説明 |
|---|---|---|---|
| O-001 | 見積なし受注は禁止 | POL | 必ず承認済み見積を経由して受注を作成 |
| O-002 | 受注番号は全社一意 | INV | 採番管理テーブルで prefix + auto-increment。番号体系は企業設定 |
| O-003 | 完了は全工程終了後 | POL | 全手配・全製作指示が完了するまで受注完了不可 |
| O-004 | キャンセルは未着手分のみ | POL | 着手済み手配・指示がある場合はキャンセル不可 |
| O-005 | 受注ステータスは売上連動 | POL | 「工事完了-未売上」→「工事完了-売上済」の遷移は売上計上によって自動遷移。手動での売上済みマークは不可 |
| O-006 | 工事完了ロック | INV | `completedDate` が設定されている受注は、手配入力・製作指示・実績入力のすべての編集操作を拒否する。関連画面のアクション (保存・確定・承認・発注・着手・完了・取消) をすべて無効化 |
| O-007 | 売上保存時に受注金額を自動更新 | POL | 売上登録時に `受注.売上金額 = Σ(売上明細金額)`、`受注.売上日 = MAX(売上日)` を自動更新。受注金額が 0 の場合は売上合計額で初期化 |
手配ルーティング & 外注手配 (Procurement Routing & Procurement)
手配ルーティング & 外注手配 (Procurement Routing & Procurement)
| ID | ルール | 種別 | 説明 |
|---|
手配ルーティング
| ID | ルール | 種別 | 説明 |
|---|---|---|---|
| RT-001 | 受注明細は手配品種別でルーティング | POL | 購入品 (`purchased_item`) → PurchaseOrder (外注手配)、製作品 (`fabricated_item`) → ProductionInstruction (製作指示) |
| RT-002 | 社内部署は仕入先として登録可能 | POL | 内製加工を外注手配と同一フローで管理する場合、社内部署を仕入先 (`SupplierClassification.internal`) として扱う。原価は内部振替として計上 |
| RT-003 | ルーティングは受注確定時に実行 | POL | 受注確定時に明細ごとの手配品種別に基づき PurchaseOrder / ProductionInstruction を自動生成。手動での振り分け変更も可能 |
| RT-004 | ルーティングは3分岐 | INV | 手配品種別 (`procurementType`) + 社内外区分 (`internalExternal`) の組合せで保存先が決定: ①購入品 → PurchaseOrder (外注手配)、②製作品+社外 → PurchaseOrder (外注手配)、③製作品+社内 → ProductionInstruction (製作指示)。同一入力で異なる集約に書き込まれる |
| RT-005 | 購入品に社内仕入先は不可 | VAL | 購入品の行に社内部署を仕入先として選択することは禁止 |
| RT-006 | 製作指示は社内仕入先のみ | VAL | 製作指示操作は製作品+社内の行のみ選択可能。購入品または製作品+社外の行が含まれる場合はエラー |
外注手配ルール
| ID | ルール | 種別 | 説明 |
|---|---|---|---|
| P-001 | 発注済みは変更不可 | INV | 注文書発行後の手配データは凍結 |
| P-002 | 仕入先はマスタに存在 | INV | 仕入先マスタに存在チェック |
| P-003 | 手配不要は受注直後のみ | POL | 作業着手後に不要判定はできない |
| P-004 | 分納可能 | POL | 1 つの手配に複数回の受入を許容 |
| P-005 | 手配品区分の設定必須 | INV | 材料 / 部品 / 購入品 / 外注のいずれかを指定。費目区分に連動 |
| P-006 | 注文書出力方法は仕入先依存 | POL | 紙 / FAX / メール / 出力なし を仕入先マスタで設定 |
| P-007 | 承認ワークフロー必須 | POL | 手配は作成→申請→確認→確定→承認→発注の承認フローを経る。金額閾値による承認スキップも企業設定で可能 |
| P-008 | ステータスによるフィールド編集制御 | INV | 作成中・申請中: 全フィールド編集可。確定済: 納期・備考のみ編集可。承認済: 納期のみ編集可。発注済以降: 完全に読取専用 |
| P-009 | 確定には必須フィールド検証 | VAL | 確定 (確認→確定済) には図番・型式、仕入先、数量、納期がすべて必須 |
| P-010 | 承認には金額上限検証 | VAL | 承認 (確定済→承認済) には `amount <= approver.maxProcurementApprovalAmount` が必要。超過時はエラー |
| P-011 | 承認は確定済のみ | INV | 承認操作は確定済の行に対してのみ実行可能 |
| P-012 | 発注は承認済のみ | INV | 発注操作は承認済の行に対してのみ実行可能 |
| P-013 | 手配金額 = 数量 × 単価 | INV | `amount = quantity × purchaseUnitPrice`。数量・単価は小数2桁、金額は整数 |
| P-014 | 部品コード入力で価格履歴検索 | POL | 型式入力時、過去の受入実績から価格履歴をリアルタイム検索し候補表示。選択時に品番・品名・型式・材質・単価・仕入先を自動入力 |
| P-015 | SEQ 採番規約 | INV | 手動追加行は SEQ >= 90000 を使用。Excel インポート行は SEQ < 90000。手動行のみ削除可能 (インポート行は削除不可) |
| P-016 | 申請は作成中のみ | INV | 申請操作は作成中かつ手配不要でない行に対してのみ実行可能。数量必須・納期必須 |
| P-017 | 注文書は同一ユニットコード制約 | VAL | 注文書発行時、選択された明細はすべて同一のユニットコードに属する必要がある |
| P-018 | 注文書番号にバーコード付与 | POL | 注文書発行時に `barcode = *{poNumber}*` (Code 39 形式) を自動生成 |
| P-019 | 一括設定 | POL | 選択された行に対して仕入先と納期を一括で設定可能 (バルク操作) |
受入 (Goods Receiving)
| ID | ルール | 種別 | 説明 |
|---|---|---|---|
| R-001 | 受入数 <= 発注数 | VAL | 過剰入荷は警告 (ブロックではない) |
| R-002 | 受入後は仕入自動計上 | POL | GoodsReceipt → APReceipt を自動生成 |
| R-003 | 品質差異は記録必須 | POL | 数量・品質に差異がある場合は差異イベント発行 |
| R-004 | 受入単価は仕入先回答単価を優先 | POL | 仕入先の回答単価 (`quotedPrice`) が 0 でなければ発注単価 (`orderPrice`) より優先して使用 |
| R-005 | 受入数量の自動計算 | INV | `receivingQty = Max(0, orderedQty - alreadyReceivedQty)`。初回受入時は発注数量全量、分納時は残数量 |
| R-006 | 受入で手配ステータスを自動遷移 | INV | 検収チェックON、または累計受入数量 >= 発注数量の場合 → ステータスを「検収済」に遷移 + 検収者コード・検収日を記録。それ以外は「受入済」に遷移 |
| R-007 | 受入時にマスタを自動生成 | POL | 受入登録時、部品マスタに該当品番が存在しなければ自動作成。単価マスタに該当がなければ自動作成。マスタの事前登録なしで受入可能 |
| R-008 | 受入単価ゼロは確認必須 | VAL | 納入単価が 0 の場合は確認ダイアログを表示 (ソフト警告、ブロックではない) |
| R-009 | 半年経過ロックアウト | POL | 月次更新から 6 ヶ月以上経過した注文データは編集不可 (参照モードに強制) |
| R-010 | 受入取消は受入済以降不可 | INV | ステータスが受入済以上の場合は取消不可。取消時は備考 (理由) 必須 |
| R-011 | 納入金額の累計計算 | INV | `cumulativeAmount = previousCumulative - (prevQty × prevPrice) + (currentQty × currentPrice)`。数量・単価変更時に即時再計算 |
製作指示・作業日報 (Production)
| ID | ルール | 種別 | 説明 |
|---|---|---|---|
| W-001 | 日報は指示に紐付く | INV | 製作指示なしの日報は禁止 |
| W-002 | 完了指示への日報禁止 | INV | 完了済み製作指示に日報を追加できない |
| W-003 | 作業時間の自動計算 (休憩控除付き) | INV | `netMinutes = rawMinutes - breakOverlapMinutes`。rawMinutes = endTime - startTime (深夜跨ぎ時は +24h)。休憩時間はテナント設定の休憩区間ごとに作業時間との重複分を計算して控除。netMinutes が 0 の場合は rawMinutes にフォールバック (作業が休憩内に収まるケース)。結果は小数時間に変換 (分→時の変換は小数2桁で round-half-up) |
| W-004 | 労務費 = 時間 × 単価 | INV | `amount = workHours × employee.chargeRate`。ただし更新モード時は保存済み単価が 0 でなければ保存済み単価を使用 (過去の単価レートを保全) |
| W-005 | 1 日 24h 上限 | VAL | 同一作業者の同日合計が 24h 超で警告 |
| W-006 | 残数量の自動計算 | INV | `remainingQty = orderedQty - producedQty`。0 未満にならない (0 でフロア) |
| W-007 | 完了時に累計実績を記録 | INV | 完了操作時に `totalProduced = 今回数量 + 前回までの累計`、最終単価、最終日を記録 |
| W-008 | 作業単価は社員マスタの時間単価 | INV | 製作実績の単価は担当者の社員マスタの時間単価 (chargeRate) から自動取得 |
| W-009 | 取消は完了前のみ | INV | 製作指示の取消は完了済みの場合は不可 |
| W-010 | 工事完了後の編集禁止 | INV | 受注の完了日が設定済みの場合、着手・完了・実績削除・指示取消のすべての操作を無効化 (O-006 と連動) |
| W-011 | 作業区分による操作分岐 | POL | 作業区分「着手」→ ステータスを着手済に遷移、「完了」→ 完了済に遷移 |
売上・請求 (Sales & Billing)
売上・請求 (Sales & Billing)
| ID | ルール | 種別 | 説明 |
|---|---|---|---|
| S-001 | 検収金額 <= 受注金額 | VAL | 超過は警告 (分割検収の最終回で調整) |
| S-002 | 検収合格後のみ売上計上 | POL | 検収 → 売上の順序は厳守 |
| S-003 | 売掛残高の整合性 | INV | `残高` = `前期残` + `当期請求` - `当期入金` - `相殺` |
| S-004 | 締日は得意先マスタ依存 | POL | 得意先マスタの締日設定で月次締め日を判定 (10日/15日/20日/25日/末日 等) |
| S-005 | 入金消込は残高以内 | INV | 消込額が売掛残高を超過してはならない |
| S-006 | 請求計算方法は得意先依存 | POL | 明細単位 (per_line) または合算 (aggregated) で税額計算。得意先マスタで設定 |
| S-007 | 端数処理は得意先依存 | POL | 四捨五入 / 切捨て / 切上げ を得意先マスタで個別設定。デフォルトは切捨て |
| S-008 | 入金方法は区分マスタ準拠 | INV | 現金 / 銀行振込 / 小切手 / 手形 / 相殺 / 手数料 / 値引き / その他 から選択 |
| S-009 | 金額計算は得意先の端数処理に従う | INV | `amount = calcAmount(roundingPolicy, quantity, unitPrice)`: 四捨五入 (round) / 切捨て (floor) / 切上げ (ceiling)。得意先マスタの端数処理設定で決定 |
| S-010 | 売上保存時に受注金額を自動更新 | POL | 売上登録時に `order.salesAmount = Σ(売上明細金額)`、`order.salesDate = MAX(売上日)` を自動更新。受注金額が 0 の場合は売上合計額で上書き (O-007 と同一) |
| S-011 | 更新モードでは得意先・売上番号変更不可 | INV | 既存売上の編集時、得意先コード・売上番号フィールドは読取専用になる |
| S-012 | 納品書出力は得意先設定依存 | POL | 得意先マスタの納品書出力設定が「出力しない」の場合は納品書印刷をスキップ。請求書出力設定により請求書の同時発行も可能 |
| S-013 | 納品書の明細行数はタイプ依存 | POL | 納品書タイプ「納品書」の場合は 1 ページ 20 行、「納品書+受領書」の場合は 10 行 |
| S-014 | 売上行の削除は論理削除 | INV | 売上明細の削除は論理削除。削除時に受注金額も再計算 |
| S-015 | 受注番号は得意先に紐付く | VAL | 売上明細の受注番号は入力中の得意先に属する受注のみ選択可能。存在しない場合はエラー |
| S-016 | 入金登録時は得意先を先に選択 | VAL | 受注番号選択前に得意先が必須。得意先未選択で受注番号入力時はエラー |
| S-017 | 入金種別は全種類同一フロー | POL | 現金・手形・小切手・相殺・調整すべて同一の入力構造。種別による条件分岐なし |
月次更新ルール (AR Closing)
| ID | ルール | 種別 | 説明 |
|---|---|---|---|
| SC-001 | 売上請求と売掛残高は別テーブルで管理 | INV | 売上請求 (Invoice) と売掛残高 (ARBalance) は別々に集計。入金の扱い方が異なる (手数料の分離 vs 包含) |
| SC-002 | 期間は締日で決定 | INV | 売上請求は得意先ごとの締日、売掛残高はシステム全体の締日で期間を区切る。末日以外 (10日・20日・25日等) も対応 |
| SC-003 | 繰越残高は2ヶ月分保持 | INV | 前月残高と前々月残高の2世代を保持。`carryover = prevBalance - collections` |
| SC-004 | 削除→再作成パターン | INV | 月次更新は当月データを全削除してから再計算・再作成。冪等性のある再実行が可能 |
| SC-005 | 税額は2モードで計算 | INV | 得意先の税計算方法に従う: ①明細単位 → 各売上明細の日付で税率取得し行ごとに端数処理、②合算 → 期間合計にシステム税率を適用して一括端数処理 |
| SC-006 | 税率は日付依存 | INV | 税率は売上日 (明細単位時) または期末日 (合算時) で決定。税率変更 (例: 8%→10%) をまたぐ期間でも正確に計算 |
| SC-007 | 月次更新で得意先マスタを更新 | POL | 売上請求集計時に得意先マスタの請求日・請求残高を更新。売掛集計時は更新しない |
| SC-008 | 売上・入金データにスタンプ | INV | 月次更新処理済みの売上・入金データに集計日をスタンプ。二重集計を防止 |
| SC-009 | 請求残高の計算式 | INV | `invoiceBalance = carryover + periodSales + tax` (売上請求)。`arBalance = carryover + periodSales + tax` (売掛残高)。carryover の計算で入金の扱いが異なる |
買掛・支払 (Accounts Payable)
買掛・支払 (Accounts Payable)
| ID | ルール | 種別 | 説明 |
|---|---|---|---|
| A-001 | 仕入 = 受入と 1:1 | INV | 受入実績 1 件に対し仕入 1 件 |
| A-002 | 費目はマスタに存在 | INV | テナントの費目区分マスタに存在チェック |
| A-003 | 買掛残高の整合性 | INV | `残高` = `前期残` + `当期仕入` - `当期支払` - `相殺` |
| A-004 | 支払日は仕入先マスタ依存 | POL | 仕入先マスタの締日・支払月オフセット (当月/翌月/翌々月/翌々々月) で支払予定日を算出 |
| A-005 | 支払方法は区分マスタ準拠 | INV | 銀行振込 / 手形 / 現金 / クレジットカード / 相殺 / 前払い 等から選択 |
| A-006 | 端数処理は仕入先依存 | POL | 仕入先マスタで個別の端数処理方法を設定。得意先と同様に四捨五入/切捨て/切上げ |
| A-007 | 社内仕入先への支払は不可 | VAL | 社内部署 (内部振替用仕入先) への支払登録は禁止 |
| A-008 | 支払方法は全種類同一フロー | POL | 銀行振込・手形・現金すべて同一の入力構造。手形固有の条件分岐なし |
月次更新ルール (AP Closing)
| ID | ルール | 種別 | 説明 |
|---|---|---|---|
| AC-001 | 買掛残高は削除→再作成 | INV | AR Closing と同じパターン。当月データを全削除してから再計算・再作成 |
| AC-002 | 支払は現金と手形に分離集計 | INV | 現金系支払 (手形以外) と手形支払を別々に集計。`carryover = prevBalance - (cashPayments + billPayments)` |
| AC-003 | 仕入金額は受入ベースで計算 | INV | 仕入金額は受入実績 (GoodsReceipt) の `quantity × unitPrice` を行ごとに端数処理して合算。非課税品 (taxExempt=true) は税額計算から除外 |
| AC-004 | 税額は AR と同じ2モード | INV | 仕入先の税計算方法に従う: 明細単位 (受入日で税率取得) または合算 (期末日の税率)。端数処理も仕入先依存 |
| AC-005 | 月次更新で仕入先マスタを更新 | POL | AP Closing 時に仕入先マスタの支払日・支払残高を更新 |
| AC-006 | 買掛残高の計算式 | INV | `apBalance = carryover + periodPurchases + tax`。carryover = 前月残高 - (現金支払 + 手形支払) |
原価分析 (Cost Analysis)
| ID | ルール | 種別 | 説明 |
|---|---|---|---|
| C-001 | 実際原価 = 材料費 + 労務費 | INV | `totalCost` = `materialCost` + `labourCost` |
| C-002 | 粗利率の計算 | INV | `profitMargin` = (`billing` - `totalCost`) / `billing` |
| C-003 | リスク判定基準 | POL | green >= 20%, yellow >= 10%, red < 10% |
| C-004 | 仕掛 = 原価 - 売上 | INV | 売上未計上の場合は原価全額が仕掛 |
| C-005 | 仕掛リスク = 原価 - 検収額×70% | INV | `wipRisk = totalCost - Round(billingAmount × 0.7, 0)`。検収額の 70% を回収見込み (整数に丸め) とし、原価との差額を仕掛リスクとして計上。未完了受注 (completedDate が未設定) のみ対象 |
| C-006 | 原価は費目別に動的列で集計 | INV | 外注原価は費目区分 (ExpenseCategory) ごと、製造原価は社内工程区分 (InternalProcessCategory) ごとに動的に列を生成して集計。ゼロ列は自動非表示 |
| C-007 | 得意先別年間原価は会計年度で集計 | INV | 受注金額は受注日ベース、仕入原価は受入日ベース、製造原価は作業日ベースで会計年度期間内をフィルタ。`grossProfit = orderAmount - (purchaseCost + manufacturingCost)` |
営業CRM (Sales)
| ID | ルール | 種別 | 説明 |
|---|---|---|---|
| CRM-001 | 案件クロージングは不可逆 | POL | 受注/失注後のステージ変更は禁止 |
| CRM-002 | 確度は 0-100% | INV | `probability` は 0 以上 100 以下 |
| CRM-003 | 取引先削除は案件なし時のみ | POL | アクティブ案件が紐付く取引先は削除不可 |
| CRM-004 | 日報は 1 日 1 件 | INV | 同一ユーザー・同一日付の日報は 1 件のみ |
採番・区分管理 (Numbering & Classifications)
| ID | ルール | 種別 | 説明 |
|---|---|---|---|
| N-001 | 採番は prefix + auto-increment | INV | 伝票番号は prefix (M/C/S/N/P/U/R/A/B etc.) + 連番。prefix は企業設定で変更可能 |
| N-002 | 採番管理テーブルで排他制御 | INV | 同時発行時の重複防止。`SELECT ... WITH(UPDLOCK)` で行ロック取得後 `UPDATE VALUE=VALUE+1` で採番。悲観的ロックによりギャップなしの連番を保証 |
| N-003 | 区分マスタはテナント単位 | POL | 単位・費目・支払方法・仕入先区分等のドロップダウン値はテナントが自由に設定可能 |
| N-004 | 区分コードは不変 | INV | 区分のコード (キー) は変更不可。名称の変更のみ許可。コード廃止時は論理削除 |
共通計算ルール (Cross-Cutting Calculation Rules)
| ID | ルール | 種別 | 説明 |
|---|---|---|---|
| CALC-001 | 端数処理は3モード | INV | ①四捨五入 (round-half-up): `.5` は常にゼロから離れる方向に丸める (バンカーラウンドではない)。②切捨て (truncate): ゼロ方向に切捨て。③切上げ (round-up): ゼロから離れる方向に切上げ。正負両方で正しく動作 |
| CALC-002 | 税率は日付依存 | INV | 税率はテナント設定テーブルに有効日付閾値として保存。各閾値に対して閾値前レートと閾値後レートを保持。税率変更 (例: 5%→8%→10%) を時系列で正確に処理 |
| CALC-003 | 会計年度はテナント設定 | INV | 決算月 (`fiscalYearEndMonth`) を基準に会計年度を算出。`対象月 <= 決算月` の場合は `年 - 1`、それ以外は `年`。例: 決算月=3月の場合、2026年2月は2025年度 |
| CALC-004 | 締日期間の算出 | INV | 末日締め: 月初1日〜月末日 (2月は28/29日を正しく処理)。それ以外 (例: 20日締め): 前月の締日翌日〜当月の締日。得意先ごとに異なる締日を設定可能 |
| CALC-005 | 作業時間は小数時間で管理 | INV | 時刻 (HH:MM) を小数時間に変換。分の変換は `Floor(minutes/60 × 100 + 0.5) / 100` (小数2桁で round-half-up)。例: 8:30 → 8.50、1:45 → 1.75 |
| CALC-006 | 文字列幅はバイト単位 | INV | DB カラム幅の検証は Shift_JIS バイト単位。ASCII=1バイト、全角=2バイト。CSV入出力も Shift_JIS エンコーディング |
権限・アクセス制御 (Authorization)
| ID | ルール | 種別 | 説明 |
|---|---|---|---|
| AUTH-001 | 権限は画面単位 | POL | 画面 (機能) ごとにアクセスレベルを設定: 使用不可 / 参照のみ / 更新可 |
| AUTH-002 | 権限はロールベース | POL | ロール (権限コード) を社員に割り当て。1 社員 = 1 ロール |
| AUTH-003 | 見積承認は金額閾値付き | POL | 社員マスタに見積承認権限 (有無フラグ) と見積最大承認金額を設定。見積合計が最大承認金額を超過する場合、その社員は承認不可 |
| AUTH-004 | 手配承認も金額閾値付き | POL | 社員マスタに手配承認権限 (有無フラグ) と手配最大承認金額を設定。手配金額が最大承認金額を超過する場合、承認・発注ともに不可 |
| AUTH-005 | 承認・確認には社員コードと日時を記録 | INV | 確認操作: 確認者コード + 確認日、承認操作: 承認者コード + 承認日、申請操作: 申請日をそれぞれ記録。監査証跡として変更不可 |
システム連携 (Integration)
| ID | ルール | 種別 | 説明 |
|---|---|---|---|
| I-001 | 顧客コードは Sales が採番 | POL | Sales がマスタオーナー。PMS は同期先 |
| I-002 | 製品コードは PMS が採番 | POL | PMS がマスタオーナー。Sales はミラー |
| I-003 | イベントは冪等 | INV | `event_id` による重複排除を受信側で実施 |
| I-004 | コントラクト変更は合意必須 | POL | Integration Contracts の変更は両チーム合意 |
| I-005 | 受注変換は Deal.won 経由のみ | POL | Sales → PMS の受注作成は案件クロージング経由 |
| I-006 | 区分マスタはテナント単位で同期 | POL | テナント固有の区分値 (単位・費目・支払方法 等) は PMS → Sales へ同期 |