見積明細の変更時に合計額を再計算して保存する #22

Closed
opened 2026-09-27 12:12:29 +00:00 by joe · 2 comments
Owner

背景

見積フォームでは合計額(total_amount)と明細行の金額が別々に入力・保存され、明細を編集しても合計額が連動しない。そのため、見積比較や採用見積の表示が内訳と不一致になる可能性がある。

仕様

  • 有効な明細行(項目名と有効な金額がある行)の金額を合計し、見積合計へ反映する
  • 見積フォームでは明細名/金額の入力変更に応じて合計を即時再計算
  • 有効な明細がある場合は合計を読み取り専用表示とし、明細なしの場合は従来どおり合計を手入力可能
  • 保存時はサーバー側でも同じルールで合計額を算出し、クライアント値を正としない
  • OCRで取得した明細があればその明細合計を使用。税・値引き等も明細行に含めて調整
  • DB構造/依存パッケージは変更しない

受け入れ条件

  • 明細金額の編集時にブラウザ上の合計が即時更新される
  • 新規/編集の保存後、DBのtotal_amountが明細合計と一致する
  • 明細がない場合は手入力の合計を維持
  • 既存の見積比較・一覧表示が保存済み合計を反映
  • JavaScript無効/改ざん時もサーバー側計算が正しい
## 背景 見積フォームでは合計額(`total_amount`)と明細行の金額が別々に入力・保存され、明細を編集しても合計額が連動しない。そのため、見積比較や採用見積の表示が内訳と不一致になる可能性がある。 ## 仕様 - 有効な明細行(項目名と有効な金額がある行)の金額を合計し、見積合計へ反映する - 見積フォームでは明細名/金額の入力変更に応じて合計を即時再計算 - 有効な明細がある場合は合計を読み取り専用表示とし、明細なしの場合は従来どおり合計を手入力可能 - 保存時はサーバー側でも同じルールで合計額を算出し、クライアント値を正としない - OCRで取得した明細があればその明細合計を使用。税・値引き等も明細行に含めて調整 - DB構造/依存パッケージは変更しない ## 受け入れ条件 - 明細金額の編集時にブラウザ上の合計が即時更新される - 新規/編集の保存後、DBの`total_amount`が明細合計と一致する - 明細がない場合は手入力の合計を維持 - 既存の見積比較・一覧表示が保存済み合計を反映 - JavaScript無効/改ざん時もサーバー側計算が正しい
Author
Owner

実装しました(ブランチ feature/estimate-total-recalculation, commit 7ec166d)。明細行がある場合は入力中に合計を即時表示し、保存時にもサーバー側で合計を再計算します。明細がない場合は手入力額を維持し、合計が負になる場合は保存を拒否します。OCRから明細が入った場合も明細合計を使用します。全102件パス(既存google-genai警告1件)。mainへの統合後にissueをクローズします。

実装しました(ブランチ `feature/estimate-total-recalculation`, commit `7ec166d`)。明細行がある場合は入力中に合計を即時表示し、保存時にもサーバー側で合計を再計算します。明細がない場合は手入力額を維持し、合計が負になる場合は保存を拒否します。OCRから明細が入った場合も明細合計を使用します。全102件パス(既存google-genai警告1件)。mainへの統合後にissueをクローズします。
Author
Owner

mainへマージ・push済み(commit 7ec166d)のためクローズします。明細がある場合は明細合計が保存され、合計欄も入力中に即時更新します。明細がない場合は手入力額を維持します。新規/編集・合計未送信・負の明細合計拒否を含む回帰テスト追加、全102件パス。

`main`へマージ・push済み(commit `7ec166d`)のためクローズします。明細がある場合は明細合計が保存され、合計欄も入力中に即時更新します。明細がない場合は手入力額を維持します。新規/編集・合計未送信・負の明細合計拒否を含む回帰テスト追加、全102件パス。
joe closed this issue 2026-09-27 12:20:52 +00:00
Sign in to join this conversation.
No labels
bug
cleanup
enhancement
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
joe/sougi#22
No description provided.