-- ============================================================================
-- 모모유통 v2 — 매입발주/입고/정산 메뉴 분리
-- - 매입발주 입고 시 불량/파손 수량 분리
-- - 출고관리 상태값 재정의 (REQUESTED → APPROVED(=출고완료) → PAID → INVOICED)
-- - 매입처에 추가 정보
-- ============================================================================

BEGIN;

-- 매입발주 입고 라인에 정상/불량/파손 수량 분리
ALTER TABLE momo_procurement_items
  ADD COLUMN IF NOT EXISTS received_normal NUMERIC(15,2) DEFAULT 0,
  ADD COLUMN IF NOT EXISTS received_defect NUMERIC(15,2) DEFAULT 0,
  ADD COLUMN IF NOT EXISTS defect_memo VARCHAR(500);

-- 입고 처리 헤더 (1매입발주 → N입고)
CREATE TABLE IF NOT EXISTS momo_inbounds (
  objid           TEXT PRIMARY KEY,
  inbound_no      VARCHAR(50) UNIQUE,
  proc_objid      TEXT,                   -- 매입발주 참조 (없어도 단독 입고 가능)
  vendor_objid    TEXT,
  wh_objid        TEXT NOT NULL,
  inbound_date    DATE NOT NULL DEFAULT CURRENT_DATE,
  status          VARCHAR(20) DEFAULT 'COMPLETED',  -- COMPLETED | CANCELLED
  total_amount    NUMERIC(15,2) DEFAULT 0,
  memo            TEXT,
  is_del          CHAR(1) DEFAULT 'N',
  regdate         TIMESTAMP DEFAULT NOW(),
  regid           TEXT
);
CREATE INDEX IF NOT EXISTS idx_momo_inbounds_date ON momo_inbounds(inbound_date);
CREATE INDEX IF NOT EXISTS idx_momo_inbounds_proc ON momo_inbounds(proc_objid);

CREATE TABLE IF NOT EXISTS momo_inbound_items (
  objid             TEXT PRIMARY KEY,
  inbound_objid     TEXT NOT NULL,
  item_objid        TEXT NOT NULL,
  qty_normal        NUMERIC(15,2) NOT NULL DEFAULT 0,   -- 입고 정상 수량 → 재고에 +
  qty_defect        NUMERIC(15,2) NOT NULL DEFAULT 0,   -- 불량/파손 (재고 미반영)
  cost_price        NUMERIC(15,2) NOT NULL DEFAULT 0,
  defect_reason     VARCHAR(200),                       -- 파손/유통기한임박/불량 등
  total_amount      NUMERIC(15,2) NOT NULL DEFAULT 0,
  seq               INT
);
CREATE INDEX IF NOT EXISTS idx_momo_inbound_items ON momo_inbound_items(inbound_objid);

-- 매입처에 주소/이메일 추가
ALTER TABLE momo_vendors
  ADD COLUMN IF NOT EXISTS email VARCHAR(200),
  ADD COLUMN IF NOT EXISTS address VARCHAR(300),
  ADD COLUMN IF NOT EXISTS regdate TIMESTAMP DEFAULT NOW();

-- 품목에 소비기한 / 본사+지사 구분 (엑셀 요청 7,8번)
-- attributes JSONB 에 자유 키 저장 가능. 별도 컬럼 추가는 생략.

-- 매입처 시드 (없으면)
INSERT INTO momo_vendors (objid, vendor_name, contact, phone)
VALUES
  ('VND_DEFAULT_001', '도매처A (기본)', '담당자', '02-0000-0000'),
  ('VND_DEFAULT_002', '도매처B (기본)', '담당자', '02-0000-0000')
ON CONFLICT (objid) DO NOTHING;

COMMIT;
