feat(orders): 관리자가 출고완료(SHIPPED) 건도 수정 가능하도록 권한 확장
Deploy momo-erp / deploy (push) Successful in 5m18s

기존: REQUESTED 상태만 수정 가능 (admin/user 동일)
변경:
- USER: REQUESTED 만 (기존 그대로)
- ADMIN: PAID/CANCELED 가 아니면 모두 (REQUESTED / SHIPPED 등 입금완료 전까지)

items/update, lines/save 두 API 동일 적용. 입금완료(PAID) 이후나 취소건은 admin 도 수정 불가.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
chpark
2026-05-13 11:08:02 +09:00
parent 91ab88a359
commit 083188332c
2 changed files with 18 additions and 4 deletions
+11 -3
View File
@@ -39,9 +39,17 @@ export async function POST(req: NextRequest) {
await client.query("ROLLBACK");
return NextResponse.json({ success: false, message: "권한이 없습니다." }, { status: 403 });
}
if (order.status !== "REQUESTED") {
await client.query("ROLLBACK");
return NextResponse.json({ success: false, message: "출고요청 상태에서만 수정할 수 있습니다." }, { status: 400 });
// USER: REQUESTED 만, ADMIN: 입금완료(PAID)/취소 전까지 모두 (REQUESTED / SHIPPED 등)
if (isAdmin) {
if (order.status === "PAID" || order.status === "CANCELED") {
await client.query("ROLLBACK");
return NextResponse.json({ success: false, message: "입금완료 또는 취소된 발주는 수정할 수 없습니다." }, { status: 400 });
}
} else {
if (order.status !== "REQUESTED") {
await client.query("ROLLBACK");
return NextResponse.json({ success: false, message: "출고요청 상태에서만 수정할 수 있습니다." }, { status: 400 });
}
}
for (const ln of lines) {
+7 -1
View File
@@ -44,7 +44,13 @@ export async function POST(req: NextRequest) {
await client.query("ROLLBACK");
return NextResponse.json({ success: false, message: "권한이 없습니다." }, { status: 403 });
}
if (order.status !== "REQUESTED") {
// USER: REQUESTED 만, ADMIN: 입금완료(PAID)/취소 전까지 모두
if (isAdmin) {
if (order.status === "PAID" || order.status === "CANCELED") {
await client.query("ROLLBACK");
return NextResponse.json({ success: false, message: "입금완료 또는 취소된 발주는 수정할 수 없습니다." }, { status: 400 });
}
} else if (order.status !== "REQUESTED") {
await client.query("ROLLBACK");
return NextResponse.json({ success: false, message: "출고 요청 상태에서만 수정할 수 있습니다." }, { status: 400 });
}