fix(orders): 출고관리 수정 범위 좁히기 — REQUESTED + APPROVED 만
Deploy momo-erp / deploy (push) Successful in 2m52s

직전엔 PAID/CANCELED 외 모두 허용했는데, 사용자 재요청으로 계산서발행
(INVOICED) 도 잠금. editable = REQUESTED || APPROVED.
items/update API admin 가드도 동일하게 좁힘.
This commit is contained in:
chpark
2026-05-14 00:43:22 +09:00
parent 3a7d17b3e5
commit 665a560486
2 changed files with 6 additions and 6 deletions
+3 -3
View File
@@ -440,9 +440,9 @@ function StatementPreview({
const statementRef = useRef<HTMLDivElement>(null);
const lowStock = items.filter((it) => it.KIND === "ITEM" && Number(it.STOCK_QTY) < Number(it.QTY));
// 입금완료(PAID)/취소(CANCELED) 전까지는 거래명세표 수정 가능 (관리자 화면이므로 항상 admin).
// 사용자가 수량 변경 요청하면 담당자가 여기서 수정 → 재고/총액 자동 갱신 → 사용자 측 화면에도 그대로 반영됨.
const editable = order.STATUS !== "PAID" && order.STATUS !== "CANCELED";
// 출고요청(REQUESTED) / 출고완료(APPROVED) 만 수정 가능.
// 계산서발행(INVOICED) / 입금완료(PAID) / 취소(CANCELED) 는 수정 불가.
const editable = order.STATUS === "REQUESTED" || order.STATUS === "APPROVED";
// 거래명세표를 이미지로 캡처 → 공유 또는 다운로드
const handleCapture = async () => {
+3 -3
View File
@@ -42,11 +42,11 @@ export async function POST(req: NextRequest) {
await client.query("ROLLBACK");
return NextResponse.json({ success: false, message: "권한이 없습니다." }, { status: 403 });
}
// USER: REQUESTED 만, ADMIN: 입금완료(PAID)/취소 전까지 모두 (REQUESTED / SHIPPED 등)
// USER: REQUESTED 만, ADMIN: REQUESTED/APPROVED 만 (계산서발행/입금완료/취소 차단)
if (isAdmin) {
if (order.status === "PAID" || order.status === "CANCELED") {
if (order.status !== "REQUESTED" && order.status !== "APPROVED") {
await client.query("ROLLBACK");
return NextResponse.json({ success: false, message: "입금완료 또는 취소된 발주는 수정할 수 없습니다." }, { status: 400 });
return NextResponse.json({ success: false, message: "계산서발행/입금완료 이후 또는 취소된 발주는 수정할 수 없습니다." }, { status: 400 });
}
} else {
if (order.status !== "REQUESTED") {