feat(WEB): 수주 Bulk Delete API + 작업지시 Revert Force 통합

- 수주 일괄 삭제 API 추가 (DELETE /orders/bulk)
  - OrderBulkDeleteRequest (ids, force 검증)
  - force=true: hard delete (운영환경 차단), force=false: soft delete
  - 삭제 불가 건(상태/작업지시/출하) skip 처리 + skipped_ids 반환

- 작업지시 되돌리기 force/운영 모드 분기
  - force=true (개발): 기존 hard delete 로직 유지
  - force=false (운영): 작업지시 cancelled 상태 변경, options에 취소정보 기록, 자재 투입분 재고 역분개, 데이터 보존
  - reason 필수 (운영 모드)

- WorkOrder 모델에 STATUS_CANCELLED 상수 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-21 08:29:53 +09:00
parent d7ca8cfa00
commit 37424b9cef
7 changed files with 243 additions and 6 deletions

View File

@@ -431,6 +431,8 @@
'production_order_already_exists' => '이미 생산지시가 존재합니다.',
'cannot_revert_completed' => '완료된 수주의 생산지시는 되돌릴 수 없습니다.',
'cannot_revert_not_confirmed' => '수주확정 상태에서만 되돌리기가 가능합니다.',
'cannot_revert_work_order_completed' => '완료 또는 출하된 작업지시는 취소할 수 없습니다.',
'cancel_reason_required' => '취소 사유를 입력해주세요.',
'cannot_sync_after_production' => '생산지시 이후의 수주는 견적에서 자동 동기화할 수 없습니다.',
],

View File

@@ -468,6 +468,7 @@
'created' => '수주가 등록되었습니다.',
'updated' => '수주가 수정되었습니다.',
'deleted' => '수주가 삭제되었습니다.',
'bulk_deleted' => '수주가 일괄 삭제되었습니다.',
'status_updated' => '수주 상태가 변경되었습니다.',
'created_from_quote' => '견적에서 수주가 생성되었습니다.',
'production_order_created' => '생산지시가 생성되었습니다.',