diff --git a/src/Backend/SolutionErp.Application/ApprovalWorkflowsV2/ApprovalWorkflowV2AdminFeatures.cs b/src/Backend/SolutionErp.Application/ApprovalWorkflowsV2/ApprovalWorkflowV2AdminFeatures.cs index 8130d62..646ca61 100644 --- a/src/Backend/SolutionErp.Application/ApprovalWorkflowsV2/ApprovalWorkflowV2AdminFeatures.cs +++ b/src/Backend/SolutionErp.Application/ApprovalWorkflowsV2/ApprovalWorkflowV2AdminFeatures.cs @@ -29,13 +29,15 @@ public record AwLevelDto( string? ApproverEmail, // Mig 29 (S21 t5) — 5 advanced options per slot Approver (F1 mode Trả lại // + F3 Edit Section 2). Mig 30 (S22+5) — F4 +AllowApproverEditBudget. - // Mỗi NV trong workflow có quyền riêng. + // Mig 31 (S23 t1) — F2 +AllowApproverSkipToFinal (refactor sang Approver scope ChoDuyet). + // Mỗi NV trong workflow có quyền riêng — 7 Allow* cumulative. bool AllowReturnOneLevel, bool AllowReturnOneStep, bool AllowReturnToAssignee, bool AllowReturnToDrafter, bool AllowApproverEditDetails, - bool AllowApproverEditBudget); + bool AllowApproverEditBudget, + bool AllowApproverSkipToFinal); public record AwStepDto( Guid Id, @@ -152,10 +154,11 @@ public class GetAwAdminOverviewQueryHandler( s.Levels.OrderBy(l => l.Order).Select(l => { users.TryGetValue(l.ApproverUserId, out var info); - // Mig 29 (S21 t5) — 5 Allow* flag per slot Level + // Mig 29 (S21 t5) + Mig 30 (S22+5) + Mig 31 (S23 t1) — 7 Allow* flag per slot Level return new AwLevelDto(l.Id, l.Order, l.Name, l.ApproverUserId, info.FullName, info.Email, l.AllowReturnOneLevel, l.AllowReturnOneStep, l.AllowReturnToAssignee, - l.AllowReturnToDrafter, l.AllowApproverEditDetails, l.AllowApproverEditBudget); + l.AllowReturnToDrafter, l.AllowApproverEditDetails, l.AllowApproverEditBudget, + l.AllowApproverSkipToFinal); }).ToList() )).ToList()); @@ -185,15 +188,17 @@ public record CreateAwLevelInput( int Order, string? Name, Guid ApproverUserId, - // Mig 29 (S21 t5) — 5 Allow* options per slot. Admin Designer tick per - // Level row. Default backward compat: AllowReturnToDrafter=true, 4 còn lại - // false (admin opt-in từng slot). Mig 30 (S22+5) — F4 AllowApproverEditBudget. + // Mig 29 (S21 t5) + Mig 30 (S22+5) + Mig 31 (S23 t1) — 7 Allow* options per + // slot. Admin Designer tick per Level row. Default backward compat: + // AllowReturnToDrafter=true (S17 fallback), 6 còn lại false (admin opt-in + // từng slot). Pattern proven 3× cumulative. bool AllowReturnOneLevel = false, bool AllowReturnOneStep = false, bool AllowReturnToAssignee = false, bool AllowReturnToDrafter = true, bool AllowApproverEditDetails = false, - bool AllowApproverEditBudget = false); + bool AllowApproverEditBudget = false, + bool AllowApproverSkipToFinal = false); public record CreateAwStepInput( int Order, @@ -313,13 +318,14 @@ public class CreateAwDefinitionCommandHandler(IApplicationDbContext db) Order = l.Order, Name = l.Name, ApproverUserId = l.ApproverUserId, - // Mig 29 (S21 t5) — 5 Allow* per slot + // Mig 29 (S21 t5) + Mig 30 (S22+5) + Mig 31 (S23 t1) — 7 Allow* per slot AllowReturnOneLevel = l.AllowReturnOneLevel, AllowReturnOneStep = l.AllowReturnOneStep, AllowReturnToAssignee = l.AllowReturnToAssignee, AllowReturnToDrafter = l.AllowReturnToDrafter, AllowApproverEditDetails = l.AllowApproverEditDetails, AllowApproverEditBudget = l.AllowApproverEditBudget, + AllowApproverSkipToFinal = l.AllowApproverSkipToFinal, }).ToList(), }) .ToList(),