fix(orders): admin 그룹은 출고 발주 모든 상태 수량 수정 가능
Deploy momo-erp / deploy (push) Successful in 2m39s

momo5315(배연진) 같은 user_type='A' admin 이 출고요청/출고완료 발주
수량 수정이 안 된다는 사용자 신고. 직전 commit 에서 'REQUESTED/APPROVED'
만 허용으로 좁혔던 게 너무 빡빡했음.

→ admin 권한자는 취소(CANCELED) 외 모든 상태 수정 가능으로 풀기.
  · API items/update admin 분기: status === 'CANCELED' 만 차단
  · UI editable: order.STATUS !== 'CANCELED'
USER 권한자는 그대로 REQUESTED 만.
This commit is contained in:
chpark
2026-05-14 01:08:29 +09:00
parent b204f14265
commit 5294554384
2 changed files with 5 additions and 6 deletions
+2 -3
View File
@@ -440,9 +440,8 @@ function StatementPreview({
const statementRef = useRef<HTMLDivElement>(null); const statementRef = useRef<HTMLDivElement>(null);
const lowStock = items.filter((it) => it.KIND === "ITEM" && Number(it.STOCK_QTY) < Number(it.QTY)); const lowStock = items.filter((it) => it.KIND === "ITEM" && Number(it.STOCK_QTY) < Number(it.QTY));
// 출고요청(REQUESTED) / 출고완료(APPROVED) 만 수정 가능. // 출고관리 화면(admin 전용). 관리자 그룹은 취소(CANCELED) 외 모든 단계 수량 수정 가능.
// 계산서발행(INVOICED) / 입금완료(PAID) / 취소(CANCELED) 는 수정 불가. const editable = order.STATUS !== "CANCELED";
const editable = order.STATUS === "REQUESTED" || order.STATUS === "APPROVED";
// 거래명세표를 이미지로 캡처 → 공유 또는 다운로드 // 거래명세표를 이미지로 캡처 → 공유 또는 다운로드
const handleCapture = async () => { const handleCapture = async () => {
+3 -3
View File
@@ -42,11 +42,11 @@ export async function POST(req: NextRequest) {
await client.query("ROLLBACK"); await client.query("ROLLBACK");
return NextResponse.json({ success: false, message: "권한이 없습니다." }, { status: 403 }); return NextResponse.json({ success: false, message: "권한이 없습니다." }, { status: 403 });
} }
// USER: REQUESTED 만, ADMIN: REQUESTED/APPROVED 만 (계산서발행/입금완료/취소 차단) // USER: REQUESTED 만. ADMIN(관리자 그룹): 취소(CANCELED) 외 모든 상태 수정 가능.
if (isAdmin) { if (isAdmin) {
if (order.status !== "REQUESTED" && order.status !== "APPROVED") { if (order.status === "CANCELED") {
await client.query("ROLLBACK"); await client.query("ROLLBACK");
return NextResponse.json({ success: false, message: "계산서발행/입금완료 이후 또는 취소된 발주는 수정할 수 없습니다." }, { status: 400 }); return NextResponse.json({ success: false, message: "취소된 발주는 수정할 수 없습니다." }, { status: 400 });
} }
} else { } else {
if (order.status !== "REQUESTED") { if (order.status !== "REQUESTED") {