MD-01 · 이번 라운드 뿌리

DC 재고·수불장 관리 (선입선출)

재고가 들어올 때 넷 공급가를 함께 기록하고, 팔릴 때 먼저 들어온 것부터 빠지게 — 신규 「재고관리」 메뉴 + 잔여재고 조정 모달.

🟢 최우선 신규 「재고관리」 메뉴 MFC 센터재고와 별개 이번 범위 = 이관 동작

핵심 결정

메뉴
신규 「재고관리」 메뉴 신설 · 현행 MFC 센터재고관리와 별개
단가
재고 단가 = 내 공급가(넷) · 재고 소진되면 다음 로트 단가로 자동 전환
선입선출
먼저 등록 / 유통기한 빠른 것 먼저 소진 → 다음 로트로 이관 · 이번엔 "이관 되는지"만
로그
조정 = ±수량 + 넷공급가 → 일시·작성자와 로그 · 모달↔메뉴 양방향
제외
취소·반품·분실·미입고 = 뒷단 정산 · 매출원가(COGS) 자동계산은 후속(발주 붙을 때)
01

정책 / 정의

용어를 못 박고, 규칙을 명확히

용어 정의
용어정의
넷 공급가
(내 공급가)
우리가 매입한 순 공급가(부가세·물류수수료 제외) · 재고 원가 기준 · 표기 net 소문자
입고 건(로트)한 번 등록된 {히어로코드, 센터, 수량, 넷공급가, 소비기한?, 등록자, 일시} 묶음
잔여재고히어로코드 × 센터별 현재 남은 수량
수불 로그모든 변동(±수량·넷공급가·결과재고·작성자·일시·출처) 이력
정책 (규칙)
#규칙비고
1선입선출 — 기본=먼저 등록순 / 예외=소비기한 빠른 순 / 수동 우선순위(0·1·2…)이번
2단가 자동 전환 — 앞 로트 소진되면 다음 로트 넷공급가로 (판매가·공급가 반영)이번
3판매가 불변 — 원가 변동은 판매가 X, 공급가만 뒷단(정산)정산 영역
4취소·반품·분실·미입고 = 재고 미반영 → 뒷단 정산이지어드민 분실은 MD-14
5마이너스 금지 · 조정 취소(원복) 가능이번
6소비기한 = 선택값 (입력 시 노출 + 선입선출 우선순위)이번
7양방향 싱크 — 잔여재고 모달 ↔ 재고관리 메뉴 = 같은 로그이번
8🆕 백단 공급가 루틴 변경 — 정산 주기마다 공급단가 일괄 변경 요청별도 기능
범위이번 = 등록/조정(±수량+넷공급가) + 로그 + 선입선출 이관 동작 + 엑셀 업로드 + 소비기한 칸 · 후속 = 매출원가 자동계산·주문 시 자동 차감(발주 MD-02 연결 시)
02

ERD

수불 로그(append-only) 중심 원장 + 집계

stock_entry WRITE
idPK bigint
hero_codeFK
center_codeFK
change_qtyint ±
net_supply_priceint 원
expiry_datedate null
priorityint null
sourceenum
created_byvarchar
created_atdatetime
모든 변동을 append (입고 +, 출고 −, 조정 ±) — 로그이자 원장
stock_balance 집계
hero_codePK
center_codePK
total_qtyint
updated_atdatetime
= SUM(stock_entry.change_qty) · 뷰 또는 캐시
product / center READ
hero_code기존
group_name노출명
center_code기존
center_name
기존 마스터 참조만 (변경 없음)
stock_entry.hero_code → product.hero_code
stock_entry.center_code → center.center_code
stock_balance = SUM(stock_entry.change_qty) GROUP BY (hero_code, center_code)
선입선출 원가 = 입고분(+) 등록순/유통기한순 큐 → 출고분(−) 매칭 소진 → 남은 로트의 net_supply_price
-- 수불 로그 (append-only 원장)
CREATE TABLE stock_entry (
  id            BIGSERIAL PRIMARY KEY,
  hero_code     VARCHAR NOT NULL REFERENCES product(hero_code),
  center_code   VARCHAR NOT NULL REFERENCES center(center_code),
  change_qty    INT     NOT NULL,          -- + 입고 / − 출고
  net_supply_price INT,                     -- 넷 공급가(입고 시)
  expiry_date   DATE,                          -- 소비기한(선택)
  priority      INT,                           -- 소진 우선순위(선택)
  source        VARCHAR NOT NULL,          -- modal / menu / excel / order
  memo          TEXT,
  created_by    VARCHAR NOT NULL,
  created_at    TIMESTAMPTZ DEFAULT now()
);
CREATE INDEX ON stock_entry (hero_code, center_code, created_at);
03

스토리보드

재고 담당자의 화면 흐름

  1. 재고관리 메뉴 진입 — 히어로코드별 잔여재고·현재 원가(넷공급가)·소비기한 리스트 신규 메뉴
  2. 잔여재고 조정 클릭 — 「(허브)◯◯DC 재고 설정」 모달 열림 (현재 재고 표시)
  3. ±수량 + 넷 공급가 입력 — 예: +100 / 3,200원 (증/차감) · 소비기한 선택 입력
  4. 저장 — stock_entry 1건 append · 잔여재고 자동 갱신 · 작성자·일시 기록
  5. 수불 로그에 쌓임 — 재고관리 메뉴/모달 어디서 했든 같은 로그(양방향)
  6. 선입선출 소진 — 출고 시 먼저 등록(유통기한 빠른) 로트부터 → 소진되면 다음 로트 단가로 이관
04

클릭 프로토타입

눌러보세요 — 조정 → 로그 → 선입선출 소진·단가 이관

데모실제 「(허브)맘마미아푸드DC 재고 설정」 모달. 입고 +수량·넷공급가 또는 출고 −수량을 저장하면 → 오른쪽 선입선출 큐현재 원가가 바뀌고, 아래 수불 로그에 쌓입니다.
선입선출 큐 (앞 = 곧 나갈 것)현재 원가 3,000원
수불 로그 (stock_entry)
일시작성자작업변경수량넷공급가결과재고출처