feat: 매입 발주서 납품조건 + 공급업체 샘플 + 관리자/사용자 모드 토글 + 모달 sticky
Deploy momo-erp / deploy (push) Successful in 53s

[DB 019]
- momo_procurements 에 delivery_place / delivery_period / payment_terms / freight_terms 컬럼 추가
- 기존 supply_mng (공급업체) 데이터 모두 삭제 + 샘플 10개 신규 등록
  · (주)아바텍, 대성식품, (주)고기파는농부, 광이진천 농장, 단과일,
    봉담수산, 명일동유기농, 울산단과일, 농부의아침, 초록마을 도매
- 시퀀스 가정 없이 MAX(objid)+1 로 안전하게 부여

[발주서 양식 — 표준 거래명세표 양식 반영]
- ProcurementForm: "2. 납품조건" 섹션 추가
  · 1)~3) 표준 조항 (납기 지연 공제 / 검수 부적합 반출 / 수량 규격 변경)
  · 4) 납품장소 5) 납품기간 6) 대금지불 7) 운임부담 — 표 형식 입력칸
  · 8)~9) 표준 조항 (3일 이의 제기 효력 / 명시되지 않은 사항)
  · 하단 "상기와 같이 발주함." + 발주일 + 발주자
- update-header API: 4개 필드 동적 업데이트
- /api/m/procurements/excel/[id]: 엑셀 출력에도 납품조건 9개 항목 + 4필드 표
- /api/m/procurements/send: 메일 본문 HTML 에도 납품조건 표 + 표준 조항

[관리자/사용자 모드 토글]
- 헤더 매뉴얼 옆에 [👥 사용자 / 🛡 관리자] 토글 버튼 (admin 권한자만 노출)
- menu-store: viewMode("user"|"admin") + setViewMode 추가
- 사이드바: viewMode 에 따라 대메뉴 필터링
  · 사용자 모드: '거래처 주문' 그룹만
  · 관리자 모드: 출고/정산 + 매입/입고 + 마스터 관리 + 통계
- admin 권한자 자동으로 로그인 시 관리자 모드 진입

[ItemPicker 모달 모바일 친화]
- 모바일에서 화면 하단 도킹(items-end) → 풀스크린 시트 처럼
- 헤더는 sticky top-0 으로 고정 → 긴 목록에서도 검색바 항상 보임

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
chpark
2026-05-08 11:42:45 +09:00
parent 91a7eecc61
commit 6cfe0041a2
9 changed files with 239 additions and 16 deletions
+67
View File
@@ -0,0 +1,67 @@
-- 019_proc_terms.sql
-- v0.8 (2026-05-08)
-- 1) 매입 발주서 납품조건 4필드 추가
-- 2) 기존 공급업체 데이터 삭제 + 샘플 10개 신규 등록
BEGIN;
-- ─────────────────────────────────────────────────────────────────
-- 1. momo_procurements 납품조건 컬럼
-- ─────────────────────────────────────────────────────────────────
ALTER TABLE momo_procurements
ADD COLUMN IF NOT EXISTS delivery_place TEXT,
ADD COLUMN IF NOT EXISTS delivery_period TEXT,
ADD COLUMN IF NOT EXISTS payment_terms TEXT,
ADD COLUMN IF NOT EXISTS freight_terms TEXT;
COMMENT ON COLUMN momo_procurements.delivery_place IS '납품장소';
COMMENT ON COLUMN momo_procurements.delivery_period IS '납품기간';
COMMENT ON COLUMN momo_procurements.payment_terms IS '대금지불 조건';
COMMENT ON COLUMN momo_procurements.freight_terms IS '운임부담';
-- ─────────────────────────────────────────────────────────────────
-- 2. 공급업체(supply_mng) 초기화 + 샘플 10개
-- supply_mng.objid 는 numeric/bigint — 시퀀스가 있을 수도/없을 수도 있어
-- DO 블록 안에서 MAX(objid)+1 로 안전하게 부여한다.
-- ─────────────────────────────────────────────────────────────────
-- 담당자 테이블 정리 (테이블이 있으면)
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = 'supply_charger') THEN
DELETE FROM supply_charger
WHERE supply_objid::text IN (SELECT objid::text FROM supply_mng);
END IF;
END $$;
-- 기존 공급업체 모두 삭제
DELETE FROM supply_mng;
-- 샘플 10개 — MAX(objid)+1 ~ +10 으로 부여
DO $$
DECLARE
base_id BIGINT;
samples TEXT[][] := ARRAY[
ARRAY['VND-001', '(주)아바텍', '김영수', '02-1234-5678', '101-81-12345', 'avatec@example.com', '서울시 강남구 테헤란로 123'],
ARRAY['VND-002', '대성식품', '이상민', '031-987-6543','129-86-54321', 'daesung@example.com', '경기도 의왕시 벌모루길 46'],
ARRAY['VND-003', '(주)고기파는농부', '박정훈', '02-555-1212', '215-87-66721', 'meatfarmer@example.com', '서울시 송파구 문정동 88-2'],
ARRAY['VND-004', '광이진천 농장', '최수진', '043-532-1010','317-91-12340', 'gwang2@example.com', '충북 진천군 진천읍 광혜원로 12'],
ARRAY['VND-005', '단과일', '강동현', '063-211-3344','404-86-77890', 'danfruit@example.com', '전북 전주시 완산구 단풍로 5'],
ARRAY['VND-006', '봉담수산', '윤소라', '031-220-7788','129-86-22301', 'bongdam@example.com', '경기도 화성시 봉담읍 와우안길 33'],
ARRAY['VND-007', '명일동유기농', '이지호', '02-441-2233', '220-81-33445', 'myungil@example.com', '서울시 강동구 명일로 100'],
ARRAY['VND-008', '울산단과일', '오민재', '052-733-9988','610-81-44567', 'ulsanfruit@example.com', '울산시 남구 삼산로 150'],
ARRAY['VND-009', '농부의아침', '한세영', '031-333-4444','215-87-55667', 'morning@example.com', '경기도 양주시 백석읍 호명로 22'],
ARRAY['VND-010', '초록마을 도매', '정혜민', '02-1577-7234','110-86-99887', 'choroc@example.com', '서울시 마포구 양화로 45']
];
i INT;
BEGIN
SELECT COALESCE(MAX(objid::bigint), 0) INTO base_id FROM supply_mng;
FOR i IN 1..10 LOOP
INSERT INTO supply_mng
(objid, supply_code, supply_name, charge_user_name, supply_tel_no, reg_no, email, supply_address, status, reg_id, reg_date)
VALUES
(base_id + i, samples[i][1], samples[i][2], samples[i][3], samples[i][4], samples[i][5], samples[i][6], samples[i][7], 'active', 'admin', NOW());
END LOOP;
END $$;
COMMIT;