diff --git a/src/app/[locale]/(protected)/sales/order-management-sales/[id]/page.tsx b/src/app/[locale]/(protected)/sales/order-management-sales/[id]/page.tsx index 8bc53653..a897ca5d 100644 --- a/src/app/[locale]/(protected)/sales/order-management-sales/[id]/page.tsx +++ b/src/app/[locale]/(protected)/sales/order-management-sales/[id]/page.tsx @@ -149,6 +149,9 @@ export default function OrderDetailPage() { const [isConfirming, setIsConfirming] = useState(false); const [isRevertDialogOpen, setIsRevertDialogOpen] = useState(false); const [isReverting, setIsReverting] = useState(false); + const [revertReason, setRevertReason] = useState(""); + const [isForceReverting, setIsForceReverting] = useState(false); + const isDev = process.env.NODE_ENV !== 'production'; const [isRevertConfirmDialogOpen, setIsRevertConfirmDialogOpen] = useState(false); const [isRevertingConfirm, setIsRevertingConfirm] = useState(false); const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false); @@ -322,6 +325,7 @@ export default function OrderDetailPage() { // 생산지시 되돌리기 const handleRevertProduction = () => { + setRevertReason(""); setIsRevertDialogOpen(true); }; @@ -329,7 +333,9 @@ export default function OrderDetailPage() { if (order) { setIsReverting(true); try { - const result = await revertProductionOrder(order.id); + const result = await revertProductionOrder(order.id, { + reason: revertReason || undefined, + }); if (result.success && result.data) { setOrder(result.data.order); const { deletedCounts } = result.data; @@ -349,6 +355,28 @@ export default function OrderDetailPage() { } }; + // 생산지시 완전삭제 (force=true, 개발환경 전용) + const handleForceRevertProduction = async () => { + if (order) { + setIsForceReverting(true); + try { + const result = await revertProductionOrder(order.id, { force: true }); + if (result.success && result.data) { + setOrder(result.data.order); + toast.success("생산지시가 완전삭제되었습니다. (물리 삭제)"); + setIsRevertDialogOpen(false); + } else { + toast.error(result.error || "완전삭제에 실패했습니다."); + } + } catch (error) { + console.error("Error force reverting production order:", error); + toast.error("완전삭제 중 오류가 발생했습니다."); + } finally { + setIsForceReverting(false); + } + } + }; + // 수주확정 되돌리기 const handleRevertConfirmation = () => { setIsRevertConfirmDialogOpen(true); @@ -1046,6 +1074,17 @@ export default function OrderDetailPage() { + {/* 되돌리기 사유 */} +
+ +