[CLAUDE] PurchaseEvaluation: Mig 57 ghi chu gia de xuat PRO/CCM + so phan cach VND + sua chinh ta + guard #70
All checks were successful
Deploy SOLUTION_ERP / build-deploy (push) Successful in 4m52s

Theo Tra Sol + anh Kiet FDC (Zalo): A) o nhap tien VndInlineEdit + BudgetCell nhay phan cach vi-VN (300.000.000) on-keystroke (o dialog da co san). B) them o ghi chu PRO + CCM canh nut Luu trong khoi Gia de xuat (giai thich vi sao chon Min/Max) — Mig 57 AddPeSuggestedPriceNotes (+ProSuggestedPriceNote +CcmSuggestedPriceNote nvarchar(1000) null, additive no-backfill no-table); 2 setter command +Note absolute-set rides role-gate PRO/CCM/Admin; DTO +2 field; controller body +note. C) sua chinh ta 'd. Ban so sanh' -> 'd. Bang so sanh gia' (2 app). GUARD gotcha #70: o gia + ghi chu echo nhau absolute-set -> them peFetching khoa nut Luu toi khi pe-detail refetch land, tranh stale-echo mat du lieu (mirror bang ngan sach S76; em-main review bat impl-frontend sot guard). BE slnx 0-warn 0-err; FE build PASS x2; test 344->351 (+7); PeDetailTabs/PeWorkspaceCreateView 2 app SHA256-identical.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
pqhuy1987
2026-06-19 14:08:45 +07:00
parent 3b98845976
commit 94e0e12f77
16 changed files with 6714 additions and 36 deletions

View File

@ -74,6 +74,14 @@ public class PurchaseEvaluation : AuditableEntity
public decimal? ProSuggestedMaxPrice { get; set; }
public decimal? CcmSuggestedPrice { get; set; }
// [Mig 57 2026-06-19 — anh Kiệt FDC + Tra Sol] Ghi chú GIẢI THÍCH giá đề xuất — vì
// dải Min/Max của PRO (và 1 giá CCM) cần ghi rõ LÝ DO chọn min vs max để CEO duyệt
// có ngữ cảnh. Mirror ProSuggestedPriceNote ↔ PRO, CcmSuggestedPriceNote ↔ CCM. Set
// absolute (null=clear) trong cùng handler nhập giá, role-gate y như giá. Nullable,
// max 1000. KHÔNG entity con / bảng mới (mirror HoSoLink + CcmNote pattern).
public string? ProSuggestedPriceNote { get; set; }
public string? CcmSuggestedPriceNote { get; set; }
// [Mig 54] Giá CHỐT người duyệt cấp cuối chọn khi duyệt (① "duyệt theo giá đề xuất").
// Set tại MỌI nhánh DaDuyet của ApproveV2Async (terminal + CCM-delegation-finalize).
// ApprovedPriceSource ∈ {Ncc, ProMin, ProMax, Ccm} = nguồn giá đã chọn; Amount =