WP-ADMIN WIREFRAME — B-CTR-001 契約管理
🏠 LMS学習サイト | サイトを表示
🔔 3
👤
事務局担当者

契約情報一覧

新規追加
⚠️ 今月(2026年6月)に契約更新期限を迎える法人が 4件 あります。更新状況を確認してください。
 
128件中 1–20件 « / 7 »
法人名 契約期間 月額/年額 事業所数 更新状況 ステータス
社会福祉法人みどり福祉会
2026-04-012027-03-31
¥120,000 8 ✔ 更新済み
2026-05-12
有効
医療法人社団さくら会
2025-07-012026-06-30
¥60,000 3 ⚠ 未更新
期限 2026-06-30
今月更新
社会福祉法人あおぞら福祉会
2026-04-012027-03-31
¥60,000 5 ✔ 更新済み
2026-04-22
有効
特定非営利活動法人ひまわりの家
2025-07-012026-06-30
¥60,000 2 ⚠ 未更新
期限 2026-06-30
今月更新
社会福祉法人やすらぎ会
2026-05-012026-07-31
¥0 1 有効
医療法人大樹会
2025-04-012026-03-31
¥60,000 4 ⚠ 未更新
期限切れ
期限切れ
社会福祉法人かがやき福祉会
2026-04-012027-03-31
¥120,000 12 ✔ 更新済み
2026-04-05
有効
特定非営利活動法人みらいケアネット
2025-04-012026-03-31
¥60,000 3 ⚠ 未更新
期限切れ
期限切れ
法人名 契約期間 月額/年額 事業所数 更新状況 ステータス
128件中 1–20件 « / 7 »

📋 実装注記(開発者向け)

1. WP実装方針

B-CTR-001(契約情報CRUD)とB-CTR-002(契約状況一覧・更新管理)を統合した一覧画面として実装。カスタムテーブル lms_contracts のデータを WP_List_Table を継承した LMS_Contract_List_Table クラスで表示する。管理メニューは add_submenu_page() で「会員管理」親メニュー配下に「契約管理」として登録。スラッグは lms-contracts。更新状況カラムはKintoneの契約更新管理機能の代替として、契約終了日と renewal_status フィールドをもとに「更新済み」「未更新」を表示する。

2. 権限制御

表示・編集は manage_lms_contracts capability を持つユーザーのみ許可。事務局(管理者)ロールに付与。一般の editor ロールはアクセス不可。削除操作は delete_lms_contracts capability で別途制御し、管理者(administrator)ロールのみに限定。メニュー表示条件: current_user_can('manage_lms_contracts')。一括操作時もNonce検証 + 権限チェックを必ず実施。

3. データ構造

カスタムテーブル lms_contracts の主要カラム: id(主キー)、corporation_id(法人ID・外部キー)、contract_start(DATE)、contract_end(DATE)、monthly_fee(INT・月額円)、office_count(契約事業所数・INT)、renewal_status(ENUM: renewed/pending/none)、renewal_date(DATE・更新手続き完了日)。契約は単一プラン+オプション課金制のため「種別」区分は持たない。法人テーブル lms_corporationscorporation_id でJOINして法人名を取得。ステータス(有効/今月更新/未更新/期限切れ)は contract_endrenewal_status の組み合わせで動的に算出。

4. 一括操作・行アクション

一括操作(Bulk Actions): 「更新済みにする」(renewal_status を renewed に更新・renewal_date を処理日に設定)、「削除」(論理削除: deleted_at 付与)。行アクション(Row Actions): 「編集」→ 契約情報編集画面(B-CTR-001編集画面)へ遷移、「詳細」→ 契約詳細ページへ遷移、「削除」→ 確認ダイアログ後に論理削除。「削除」は行アクションの .delete クラスで赤色表示。法人名クリックでも編集画面へ遷移(column-primary のリンク)。

5. Screen Options

表示列の選択: 法人名 / 契約期間 / 月額・年額 / 事業所数 / 更新状況 / ステータス。デフォルトはすべて表示。ページあたり表示件数: デフォルト20件。set-screen-option フィルタで lms_contracts_per_page キーで保存。「今月更新」ステータスフィルタは contract_end が当月末日までの契約かつ renewal_status = pending の条件で抽出。

6. パフォーマンス・セキュリティ

Phase1は最大500社・約500〜1,000件の契約レコードを想定。$wpdb->get_results($wpdb->prepare(...)) でページネーション付きクエリ(LIMIT/OFFSET)を使用。フィルタ条件(更新状況・年度)はすべてプリペアドステートメントでSQLインジェクション対策必須。corporation_idcontract_endrenewal_status にDBインデックスを設定して絞り込み高速化。一括操作・削除・更新のすべてのフォーム送信で wp_nonce_field() / check_admin_referer() によるNonce検証必須。renewal_status 変更時は updated_at を自動更新。月額フィールド(monthly_fee)は intval() でサニタイズ。本画面はPhase1の契約情報CRUD・契約状況一覧のみを対象とする。