diff --git a/scripts/s59-wipe-demo-workitems.sql b/scripts/s59-wipe-demo-workitems.sql new file mode 100644 index 0000000..a50ab2d --- /dev/null +++ b/scripts/s59-wipe-demo-workitems.sql @@ -0,0 +1,30 @@ +-- ============================================================================ +-- S59 đợt 2 (2026-06-11) — Xóa 15 WorkItems DEMO khỏi prod (chị Trà Sol chốt: +-- "xóa cái đám phần thô phần hoàn thiện … MÀ ANH TỰ ĐẺ RA" — hạng mục công việc +-- CHỈ dùng đúng 71 mã PMH công ty gửi, "không đẻ thêm mã của công ty khác vô"). +-- 86 hiện tại = 71 real (VT-01..16 + TP-01..30 + MEP-01..09 + TB-01..16, S55 +-- import — ĐÃ ĐỐI CHIẾU 71/71 khớp bảng PMH) + 15 demo seed cũ (block demo đã +-- GỠ khỏi DbInitializer.cs cùng commit → DB mới không sinh lại). +-- An toàn: PE = 0 (vừa wipe Run #273) → không phiếu nào trỏ WorkItemId demo. +-- Run: sqlcmd -S .\SQLEXPRESS -d SolutionErp -i s59-wipe-demo-workitems.sql +-- ============================================================================ +SET QUOTED_IDENTIFIER ON; +SET NOCOUNT ON; + +PRINT '=== BEFORE (expect 86 total, demo categories presents) ==='; +SELECT Category, COUNT(*) AS C FROM WorkItems GROUP BY Category ORDER BY Category; +SELECT 'TOTAL' AS T, COUNT(*) AS C FROM WorkItems; + +BEGIN TRANSACTION; + +DELETE FROM WorkItems WHERE Code IN ( + 'DAO-MONG','DO-BTONG','LAP-COT-THEP','LAP-COPPHA','XAY-TUONG', + 'TRAT-TUONG','LAT-GACH-NEN','OP-GACH-TUONG','SON-NUOC','LAP-CUA', + 'LAP-DIEN','LAP-NUOC','LAP-DIEU-HOA','THAM-CHONG','VC-PHE-THAI'); + +PRINT '=== AFTER (expect 71 total = VatTu 16 + ThauPhu 30 + MEP 9 + ThietBi 16) ==='; +SELECT Category, COUNT(*) AS C FROM WorkItems GROUP BY Category ORDER BY Category; +SELECT 'TOTAL' AS T, COUNT(*) AS C FROM WorkItems; + +COMMIT TRANSACTION; +PRINT 'S59 demo workitems wipe COMMITTED.'; diff --git a/src/Backend/SolutionErp.Infrastructure/Persistence/DbInitializer.cs b/src/Backend/SolutionErp.Infrastructure/Persistence/DbInitializer.cs index bd44bd8..59e4c58 100644 --- a/src/Backend/SolutionErp.Infrastructure/Persistence/DbInitializer.cs +++ b/src/Backend/SolutionErp.Infrastructure/Persistence/DbInitializer.cs @@ -579,32 +579,11 @@ public static class DbInitializer logger.LogInformation("Seed {Count} ServiceItems", services.Length); } - // 4. WorkItems (~15 demo) - if (!await db.WorkItems.AnyAsync()) - { - var works = new[] - { - ("DAO-MONG", "Đào móng công trình", "Phần thô", "m3"), - ("DO-BTONG", "Đổ bê tông móng/cột/dầm", "Phần thô", "m3"), - ("LAP-COT-THEP", "Lắp dựng cốt thép", "Phần thô", "kg"), - ("LAP-COPPHA", "Lắp dựng cốp pha", "Phần thô", "m2"), - ("XAY-TUONG", "Xây tường gạch", "Phần thô", "m3"), - ("TRAT-TUONG", "Trát tường", "Hoàn thiện", "m2"), - ("LAT-GACH-NEN", "Lát gạch nền", "Hoàn thiện", "m2"), - ("OP-GACH-TUONG", "Ốp gạch tường", "Hoàn thiện", "m2"), - ("SON-NUOC", "Sơn nước", "Hoàn thiện", "m2"), - ("LAP-CUA", "Lắp cửa", "Hoàn thiện", "cai"), - ("LAP-DIEN", "Lắp đặt hệ thống điện", "Cơ điện", "goi"), - ("LAP-NUOC", "Lắp đặt hệ thống cấp thoát nước", "Cơ điện", "goi"), - ("LAP-DIEU-HOA", "Lắp điều hòa", "Cơ điện", "cai"), - ("THAM-CHONG", "Thấm chống thấm", "Hoàn thiện", "m2"), - ("VC-PHE-THAI", "Vận chuyển phế thải", "Khác", "m3"), - }; - foreach (var (code, name, cat, unit) in works) - db.WorkItems.Add(new WorkItem { Code = code, Name = name, Category = cat, DefaultUnit = unit }); - await db.SaveChangesAsync(); - logger.LogInformation("Seed {Count} WorkItems", works.Length); - } + // 4. WorkItems — KHÔNG seed demo (S59, chị Trà Sol chốt 2026-06-11: hạng mục + // công việc CHỈ dùng đúng 71 mã PMH công ty gửi — VT-01..16 + TP-01..30 + + // MEP-01..09 + TB-01..16, "không đẻ thêm mã của công ty khác vô"). + // Nguồn duy nhất = SeedRealMasterDataAsync (per-code idempotent, ungated). + // 15 mã demo cũ (Phần thô/Hoàn thiện/Cơ điện/Khác) đã DELETE prod S59. } // Backfill: re-assign supplier + project cho [DEMO] HĐ existing → đa dạng