72786bfc98
Deploy momo-erp / deploy (push) Successful in 50s
- 회원가입 폼·API·DB(user_info.address 컬럼 추가, 마이그레이션 007)에 주소 필드 추가, 전화/주소를 필수값으로 승격. - 관리자 발주서 관리 페이지(/m/admin/orders) 를 좌(리스트)·우(거래명세표 미리보기) 2분할 레이아웃으로 재구성. 체크박스로 출고요청 다중 선택 후 상단 [출고] 버튼으로 일괄 처리(승인+재고차감+메일발송) 지원. - 미리보기에 품목별 현재고(STOCK 창고 합산) 노출, 부족분 경고 표시. - /api/m/orders/detail: ceo_name·biz_no·address 컬럼 + 품목별 현재고 합산 SELECT 추가. /api/m/orders/approve: 명세서 발송 SQL의 잘못된 alias 누락(`order.company_name` undefined) 수정. - 마이그레이션 006: ON CONFLICT(objid) 가 menu_info 의 unique 제약 부재로 실패하던 idempotent 버그를 EXISTS 분기로 교체. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
64 lines
2.8 KiB
PL/PgSQL
64 lines
2.8 KiB
PL/PgSQL
-- 거래처 가입자에 필요한 추가 정보를 user_info 에 직접 컬럼으로 추가 (스펙 §3.1 B안)
|
|
-- supply_mng 와 user_info.partner_objid 연결도 가능하지만, 신규 가입 흐름 단순화 위해 직접 컬럼 추가.
|
|
-- 이미 컬럼이 있으면 ADD COLUMN IF NOT EXISTS 로 idempotent.
|
|
BEGIN;
|
|
|
|
ALTER TABLE user_info
|
|
ADD COLUMN IF NOT EXISTS biz_no VARCHAR(20),
|
|
ADD COLUMN IF NOT EXISTS ceo_name VARCHAR(100);
|
|
|
|
-- 품목 검색 메뉴(스펙 §5에서 출고 요청과 통합으로 변경됨) 비활성화
|
|
UPDATE menu_info SET status = 'inactive' WHERE objid = 9000101;
|
|
|
|
-- ===== 관리자 admin-panel 의 [메뉴관리] 섹션 복구 =====
|
|
-- [관리자] 루트(parent=0, menu_name_kor='관리자') 아래에 [메뉴관리] 섹션 + [메뉴관리] 자식이 status='active' 로 존재해야
|
|
-- /api/admin/sidebar-menus 가 노출함. 누락된 경우 idempotent 하게 보장.
|
|
DO $$
|
|
DECLARE
|
|
admin_root_id NUMERIC;
|
|
menu_section_id NUMERIC;
|
|
BEGIN
|
|
SELECT objid INTO admin_root_id FROM menu_info
|
|
WHERE parent_obj_id = 0 AND menu_name_kor = '관리자' LIMIT 1;
|
|
IF admin_root_id IS NULL THEN
|
|
RAISE NOTICE '[admin] 루트가 없어 메뉴관리 복구 스킵';
|
|
RETURN;
|
|
END IF;
|
|
|
|
-- 섹션이 존재하면 active 로 보장, 없으면 9000600 으로 신규 등록
|
|
SELECT objid INTO menu_section_id FROM menu_info
|
|
WHERE parent_obj_id = admin_root_id AND menu_name_kor = '메뉴관리' LIMIT 1;
|
|
IF menu_section_id IS NULL THEN
|
|
menu_section_id := 9000600;
|
|
INSERT INTO menu_info (objid, menu_type, parent_obj_id, menu_name_kor, menu_name_eng,
|
|
seq, menu_url, status, system_name, regdate)
|
|
VALUES (menu_section_id, '1', admin_root_id, '메뉴관리', 'Menu Management',
|
|
10, '', 'active', 'PMS', NOW());
|
|
ELSE
|
|
UPDATE menu_info SET status = 'active' WHERE objid = menu_section_id;
|
|
END IF;
|
|
|
|
-- 자식: 메뉴관리 (LABEL_TO_TAB 매핑이 '메뉴관리' → 'menu' 이므로 정확히 동일 이름 필수)
|
|
-- menu_info.objid 에 unique 제약이 없을 수 있으므로 ON CONFLICT 대신 EXISTS 분기로 idempotent 처리
|
|
IF EXISTS (SELECT 1 FROM menu_info WHERE objid = 9000601) THEN
|
|
UPDATE menu_info
|
|
SET parent_obj_id = menu_section_id,
|
|
menu_name_kor = '메뉴관리',
|
|
menu_name_eng = 'Menus',
|
|
menu_url = '',
|
|
status = 'active',
|
|
system_name = 'PMS'
|
|
WHERE objid = 9000601;
|
|
ELSIF NOT EXISTS (
|
|
SELECT 1 FROM menu_info
|
|
WHERE parent_obj_id = menu_section_id AND menu_name_kor = '메뉴관리'
|
|
) THEN
|
|
INSERT INTO menu_info (objid, menu_type, parent_obj_id, menu_name_kor, menu_name_eng,
|
|
seq, menu_url, status, system_name, regdate)
|
|
VALUES (9000601, '1', menu_section_id, '메뉴관리', 'Menus',
|
|
10, '', 'active', 'PMS', NOW());
|
|
END IF;
|
|
END $$;
|
|
|
|
COMMIT;
|