add cta
This commit is contained in:
@@ -573,12 +573,47 @@ func (p *LetterOutgoingProcessorImpl) getApprovalsByStepForRevision(ctx context.
|
||||
}
|
||||
|
||||
// isStepCompleted checks if all required approvals in a step are approved
|
||||
// For parallel groups, at least one approval per group must be completed
|
||||
func (p *LetterOutgoingProcessorImpl) isStepCompleted(stepApprovals []entities.LetterOutgoingApproval) bool {
|
||||
// Group approvals by parallel group
|
||||
approvalsByParallelGroup := make(map[int][]entities.LetterOutgoingApproval)
|
||||
for _, approval := range stepApprovals {
|
||||
if approval.IsRequired && approval.Status != entities.ApprovalStatusApproved {
|
||||
approvalsByParallelGroup[approval.ParallelGroup] = append(
|
||||
approvalsByParallelGroup[approval.ParallelGroup],
|
||||
approval,
|
||||
)
|
||||
}
|
||||
|
||||
// Check each parallel group
|
||||
for _, groupApprovals := range approvalsByParallelGroup {
|
||||
// For each parallel group, check if it has at least one approved
|
||||
groupHasApproval := false
|
||||
hasRequiredPending := false
|
||||
|
||||
for _, approval := range groupApprovals {
|
||||
if approval.Status == entities.ApprovalStatusApproved {
|
||||
groupHasApproval = true
|
||||
}
|
||||
if approval.IsRequired && approval.Status != entities.ApprovalStatusApproved {
|
||||
hasRequiredPending = true
|
||||
}
|
||||
}
|
||||
|
||||
// If this group has required approvals that are still pending, step is not complete
|
||||
if hasRequiredPending {
|
||||
return false
|
||||
}
|
||||
|
||||
// If this group has no approvals at all and contains required approvals, step is not complete
|
||||
if !groupHasApproval {
|
||||
for _, approval := range groupApprovals {
|
||||
if approval.IsRequired {
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user