リクエスト詳細
✨ 既存アプリの改善
対応完了
対象アプリ: SupplierHub - 仕入先・外注先評価&取引管理システム
取引実績の個別編集・削除機能の追加
## 1. 目的
現在、取引実績はCSVインポートまたは取引入力画面からの新規追加のみ対応しており、登録済みデータの修正・削除手段がない。発注数量の入力ミス・納品日の誤記・resultの誤選択などが発生した際に対処できないため、購買担当者の実運用において支障が生じる。個別の取引実績を編集・削除できるUIを追加し、データ品質を維持できるようにする。
## 2. 具体的な仕様
### 2-1. 仕入先詳細ページ(pages/supplier_detail.php)の変更
- 「取引タイムライン」内の各取引アイテム(`.timeline-item`)に「編集」リンクを追加する
- `<a href="index.php?page=transactions&action=edit&id={取引ID}&supplier_id={仕入先ID}">編集</a>`
- 削除は同ページ内のインラインフォームとして実装し、確認ダイアログ(`confirm()`)を経てPOSTする
- フォームに `action=delete_transaction`、`transaction_id`、CSRF トークンを含める
- 削除後は同仕入先詳細ページへリダイレクト
### 2-2. 取引入力ページ(pages/transactions.php)の変更
- GETパラメータ `action=edit&id={取引ID}` が来た場合、対象レコードをDBから取得してフォームに初期値をセットする
- フォーム送信時に `action=update` として処理する分岐を追加:
```
if (str_param('action') === 'update') {
csrf_check();
$tid = int_param('transaction_id');
// 対象レコードの supplier_id を取得し、権限確認として存在チェック
// UPDATE transactions SET ... WHERE id = ?
flash_set('取引実績を更新しました。');
redirect('index.php?page=supplier_detail&id=' . $supplier_id);
}
```
- 編集時はページタイトルを「取引実績の編集」に変更し、hidden で `transaction_id` を送信
### 2-3. 仕入先詳細ページでの削除処理
- `action=delete_transaction` の POST を supplier_detail.php の既存 POST 分岐に追加
```php
if (str_param('action') === 'delete_transaction') {
csrf_check();
$tid = int_param('transaction_id');
// DELETE FROM transactions WHERE id = ? AND supplier_id = ? で所有確認
flash_set('取引実績を削除しました。');
redirect('index.php?page=supplier_detail&id=' . (int)$supplier['id']);
}
```
- `AND supplier_id = ?` 条件を必ず付けることで他社データの誤削除を防ぐ
### 2-4. UI
- 各タイムラインアイテムの右端に「編集」「削除」の小ボタン(`.btn secondary small`)を配置
- 削除ボタン押下時は `onclick="return confirm('この取引実績を削除しますか?')"` で確認
- スマホでも操作できるようボタン間に最低8pxのmarginを確保
## 3. 既存機能との整合
- スコア再計算は既存の `supplier_score_from_transactions()` がトランザクション取得後に毎回計算する設計のため、削除・更新後に詳細ページへリダイレクトするだけで自動的に最新スコアが反映される。スキーマ変更は不要。
- CSVインポートや新規追加フローには一切手を加えない。
- 印刷レポート(pages/report.php)はDBから都度取得するため、修正後のデータが自動反映される。
現在、取引実績はCSVインポートまたは取引入力画面からの新規追加のみ対応しており、登録済みデータの修正・削除手段がない。発注数量の入力ミス・納品日の誤記・resultの誤選択などが発生した際に対処できないため、購買担当者の実運用において支障が生じる。個別の取引実績を編集・削除できるUIを追加し、データ品質を維持できるようにする。
## 2. 具体的な仕様
### 2-1. 仕入先詳細ページ(pages/supplier_detail.php)の変更
- 「取引タイムライン」内の各取引アイテム(`.timeline-item`)に「編集」リンクを追加する
- `<a href="index.php?page=transactions&action=edit&id={取引ID}&supplier_id={仕入先ID}">編集</a>`
- 削除は同ページ内のインラインフォームとして実装し、確認ダイアログ(`confirm()`)を経てPOSTする
- フォームに `action=delete_transaction`、`transaction_id`、CSRF トークンを含める
- 削除後は同仕入先詳細ページへリダイレクト
### 2-2. 取引入力ページ(pages/transactions.php)の変更
- GETパラメータ `action=edit&id={取引ID}` が来た場合、対象レコードをDBから取得してフォームに初期値をセットする
- フォーム送信時に `action=update` として処理する分岐を追加:
```
if (str_param('action') === 'update') {
csrf_check();
$tid = int_param('transaction_id');
// 対象レコードの supplier_id を取得し、権限確認として存在チェック
// UPDATE transactions SET ... WHERE id = ?
flash_set('取引実績を更新しました。');
redirect('index.php?page=supplier_detail&id=' . $supplier_id);
}
```
- 編集時はページタイトルを「取引実績の編集」に変更し、hidden で `transaction_id` を送信
### 2-3. 仕入先詳細ページでの削除処理
- `action=delete_transaction` の POST を supplier_detail.php の既存 POST 分岐に追加
```php
if (str_param('action') === 'delete_transaction') {
csrf_check();
$tid = int_param('transaction_id');
// DELETE FROM transactions WHERE id = ? AND supplier_id = ? で所有確認
flash_set('取引実績を削除しました。');
redirect('index.php?page=supplier_detail&id=' . (int)$supplier['id']);
}
```
- `AND supplier_id = ?` 条件を必ず付けることで他社データの誤削除を防ぐ
### 2-4. UI
- 各タイムラインアイテムの右端に「編集」「削除」の小ボタン(`.btn secondary small`)を配置
- 削除ボタン押下時は `onclick="return confirm('この取引実績を削除しますか?')"` で確認
- スマホでも操作できるようボタン間に最低8pxのmarginを確保
## 3. 既存機能との整合
- スコア再計算は既存の `supplier_score_from_transactions()` がトランザクション取得後に毎回計算する設計のため、削除・更新後に詳細ページへリダイレクトするだけで自動的に最新スコアが反映される。スキーマ変更は不要。
- CSVインポートや新規追加フローには一切手を加えない。
- 印刷レポート(pages/report.php)はDBから都度取得するため、修正後のデータが自動反映される。
💬 返信 (3)
🛠 開発を開始しました (機能追加 supplier-hub)
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
📝 開発が完了しました
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
✅ リリース完了のお知らせ
ご要望いただいた「SupplierHub - 仕入先・外注先評価&取引管理システム」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=supplier-hub
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/supplier-hub/
ご利用ありがとうございます!
ご要望いただいた「SupplierHub - 仕入先・外注先評価&取引管理システム」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=supplier-hub
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/supplier-hub/
ご利用ありがとうございます!
Echo
Iris