feat(approvals): 결재 상세 전표 연동과 스코프 권한 매핑 확장
- 결재 상세 다이얼로그에 전표 요약·라인·고객 섹션을 추가하고 현재 사용자 단계 강조 및 비고 입력 검증을 개선함 - 대시보드·결재 목록에서 전표 리포지토리와 AuthService를 주입해 상세 진입과 결재 관리 이동 버튼을 제공함 - StockTransactionApprovalInput이 template/steps를 config 노드로 직렬화하도록 변경하고 통합 테스트를 갱신함 - scope 권한 문자열을 리소스권으로 변환하는 PermissionScopeMapper와 단위 테스트를 추가하고 AuthPermission을 연동함 - 재고 메뉴 정렬, 상세 컨트롤러 오류 리셋, 요청자 자동완성 상태 동기화 등 주변 UI 버그를 수정하고 테스트를 보강함
This commit is contained in:
@@ -249,7 +249,6 @@ class StockTransactionApprovalInput {
|
||||
final payload = <String, dynamic>{
|
||||
'requested_by_id': requestedById,
|
||||
if (approvalStatusId != null) 'approval_status_id': approvalStatusId,
|
||||
if (templateId != null) 'template_id': templateId,
|
||||
if (finalApproverId != null) 'final_approver_id': finalApproverId,
|
||||
if (requestedAt != null) 'requested_at': _formatIsoUtc(requestedAt!),
|
||||
if (decidedAt != null) 'decided_at': _formatIsoUtc(decidedAt!),
|
||||
@@ -262,11 +261,19 @@ class StockTransactionApprovalInput {
|
||||
if (trimmedNote != null && trimmedNote.isNotEmpty) 'note': trimmedNote,
|
||||
if (metadata != null && metadata!.isNotEmpty) 'metadata': metadata,
|
||||
};
|
||||
final config = <String, dynamic>{};
|
||||
if (templateId != null) {
|
||||
config['template_id'] = templateId;
|
||||
}
|
||||
if (steps.isNotEmpty) {
|
||||
payload['steps'] = steps
|
||||
config['steps'] = steps
|
||||
.map((item) => _mapApprovalStep(item))
|
||||
.toList(growable: false);
|
||||
}
|
||||
if (config.isEmpty) {
|
||||
throw StateError('결재 템플릿 또는 단계 구성이 필요합니다.');
|
||||
}
|
||||
payload['config'] = config;
|
||||
return payload;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user