Files
distribution_erp/public/manual.html
T
chpark b48d3a505f
Deploy momo-erp / deploy (push) Successful in 50s
docs: 사용자 매뉴얼 HTML 추가 (public/manual.html)
URL: https://momotogether.com/manual.html
- 거래처(USER) 가이드: 회원가입 / 출고 요청 / 발주 이력 / 회원정보 수정
- 관리자(ADMIN) 가이드: 발주서 관리·출고처리·거래명세표·인라인 편집·세금계산서 발행
- 마스터 관리: 품목·거래처·매입처·창고·제조사
- 매입/입고: 매입 발주·입고·재고
- 통계: 대시보드·월간/일자별/원가마진 + 엑셀 다운로드
- 전체 업무 흐름도
- FAQ: 택배 라인 / 권한 / 메일 / STUB / 모바일

단일 HTML 파일 — 인쇄 가능, 모바일 대응, 외부 폰트 X

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 20:29:24 +09:00

441 lines
25 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="ko">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>모모유통 ERP 사용자 매뉴얼</title>
<style>
:root{
--bg:#f8fafc; --card:#fff; --border:#e2e8f0; --muted:#64748b; --text:#0f172a;
--primary:#0f766e; --primary-light:#d1fae5; --accent:#1e293b;
--orange:#ea580c; --rose:#e11d48; --violet:#7c3aed; --sky:#0284c7; --amber:#d97706;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--text);font:14px/1.6 -apple-system,"Apple SD Gothic Neo","Pretendard",Segoe UI,sans-serif;}
a{color:var(--primary);text-decoration:none}
a:hover{text-decoration:underline}
code,pre{font-family:"SF Mono","JetBrains Mono",Consolas,monospace;font-size:13px}
code{background:#eef2f7;padding:1px 6px;border-radius:4px;color:#334155}
pre{background:#0f172a;color:#e2e8f0;padding:14px 16px;border-radius:8px;overflow-x:auto;line-height:1.55}
/* 레이아웃 */
.wrap{max-width:1100px;margin:0 auto;padding:32px 20px 80px}
header.cover{background:linear-gradient(135deg,#0d3b24,#1b5e3a 60%,#0f4a2a);color:#fff;border-radius:16px;padding:36px 32px;margin-bottom:32px;}
header.cover h1{margin:0 0 6px;font-size:32px;letter-spacing:-0.02em}
header.cover .sub{opacity:.9;font-size:14px}
header.cover .meta{display:flex;flex-wrap:wrap;gap:14px;margin-top:18px;font-size:12px}
header.cover .meta b{font-weight:700}
header.cover .meta span{padding:6px 12px;border:1px solid rgba(255,255,255,0.2);border-radius:999px;background:rgba(255,255,255,0.08)}
/* TOC */
nav.toc{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:18px 24px;margin-bottom:28px}
nav.toc h3{margin:0 0 8px;font-size:14px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}
nav.toc ol{margin:0;padding-left:20px}
nav.toc li{margin:3px 0}
nav.toc ol ol{padding-left:18px;margin-top:2px}
section{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:24px 28px;margin-bottom:24px}
section h2{margin:0 0 16px;padding-bottom:10px;border-bottom:2px solid var(--border);font-size:22px;letter-spacing:-0.01em;color:var(--accent)}
section h3{margin:24px 0 8px;font-size:16px;color:var(--accent)}
section h4{margin:18px 0 6px;font-size:14px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-weight:700}
.lead{font-size:15px;color:#334155}
/* 카드 그리드 */
.grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));margin:14px 0}
.grid > div{border:1px solid var(--border);border-radius:10px;padding:14px 16px;background:#fafafa}
.grid b{display:block;color:var(--primary);margin-bottom:4px;font-size:13px}
/* 단계 박스 */
.steps{counter-reset:step;margin:14px 0;padding-left:0;list-style:none}
.steps li{counter-increment:step;position:relative;padding:12px 16px 12px 50px;border:1px solid var(--border);border-radius:10px;margin:8px 0;background:#fafafa}
.steps li::before{content:counter(step);position:absolute;left:14px;top:50%;transform:translateY(-50%);background:var(--primary);color:#fff;width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px}
.steps b{color:var(--accent)}
/* 표 */
table{width:100%;border-collapse:collapse;margin:12px 0;font-size:13px}
th,td{border:1px solid var(--border);padding:8px 10px;text-align:left;vertical-align:top}
th{background:#f1f5f9;color:#475569;font-weight:700}
td code{font-size:12px}
/* 알림 박스 */
.note,.tip,.warn{border-left:4px solid;padding:10px 14px;border-radius:6px;margin:12px 0;font-size:13px}
.note{background:#eff6ff;border-color:#3b82f6}
.tip {background:#ecfdf5;border-color:#10b981}
.warn{background:#fff7ed;border-color:#ea580c}
/* 배지 */
.badge{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:700;vertical-align:middle}
.b-orange{background:#fed7aa;color:#9a3412}
.b-rose {background:#fecdd3;color:#9f1239}
.b-violet{background:#ddd6fe;color:#5b21b6}
.b-sky {background:#bae6fd;color:#075985}
.b-amber {background:#fde68a;color:#92400e}
.b-sage {background:#d1fae5;color:#065f46}
.b-slate {background:#e2e8f0;color:#475569}
/* mock 화면 (간이 도식) */
.mock{border:1px solid var(--border);border-radius:8px;background:#fff;overflow:hidden;margin:14px 0;font-size:12px}
.mock .titlebar{background:#1e293b;color:#fff;padding:6px 12px;font-size:11px}
.mock .body{padding:14px}
.mock-row{display:flex;justify-content:space-between;border-bottom:1px solid #f1f5f9;padding:6px 0}
.mock-row:last-child{border-bottom:0}
/* role 칩 */
.role{display:inline-block;padding:3px 10px;border-radius:999px;font-size:11px;font-weight:700;margin-right:6px}
.r-user{background:#dbeafe;color:#1e40af}
.r-admin{background:#fed7aa;color:#9a3412}
hr{border:0;border-top:1px solid var(--border);margin:24px 0}
@media (max-width:640px){
section{padding:18px 16px}
header.cover{padding:24px 20px}
header.cover h1{font-size:24px}
}
@media print{
body{background:#fff}
section,header.cover,nav.toc{box-shadow:none;border:1px solid #ccc}
a{color:inherit;text-decoration:none}
}
</style>
</head>
<body>
<div class="wrap">
<header class="cover">
<h1>모모유통 ERP 사용자 매뉴얼</h1>
<div class="sub">유통관리 시스템 v0.6 · 발주 → 출고 → 정산 → 전자세금계산서까지</div>
<div class="meta">
<span><b>도메인</b> · momotogether.com</span>
<span><b>대상</b> · 거래처 · 모모유통 임직원 · 시스템 관리자</span>
<span><b>업데이트</b> · 2026-05-07</span>
</div>
</header>
<nav class="toc">
<h3>목차</h3>
<ol>
<li><a href="#intro">시스템 개요</a></li>
<li><a href="#login">로그인 · 회원가입</a></li>
<li><a href="#user">거래처(USER) 가이드</a>
<ol>
<li><a href="#user-order-new">출고 요청 — 품목 검색 · 카트 · 택배/용차</a></li>
<li><a href="#user-orders">내 발주 이력</a></li>
<li><a href="#user-profile">회원정보 수정</a></li>
</ol>
</li>
<li><a href="#admin">관리자(ADMIN) 가이드</a>
<ol>
<li><a href="#admin-orders">발주서 관리 · 출고처리 · 거래명세표</a></li>
<li><a href="#admin-payments">입금 관리</a></li>
<li><a href="#admin-invoices">계산서 발행</a></li>
<li><a href="#admin-einvoices">전자세금계산서</a></li>
<li><a href="#admin-master">마스터 관리 (품목 · 거래처 · 매입처 · 창고 · 제조사)</a></li>
<li><a href="#admin-purchase">매입/입고</a></li>
<li><a href="#admin-stats">통계 · 대시보드</a></li>
</ol>
</li>
<li><a href="#flow">전체 업무 흐름도</a></li>
<li><a href="#faq">자주 묻는 질문 / 문제 해결</a></li>
</ol>
</nav>
<!-- ========== 1. 개요 ========== -->
<section id="intro">
<h2>1. 시스템 개요</h2>
<p class="lead">
모모유통 ERP는 본사가 도매처에서 물품을 사들여 자체 창고에 적재하고,
가입된 소매 대리점(거래처)이 시스템에서 출고를 요청하면 담당자가 검수·승인하여 출고하는 유통관리 솔루션입니다.
</p>
<h3>주요 기능</h3>
<div class="grid">
<div><b>거래처 발주</b>품목 검색 → 카트 → 택배/용차 추가 → 발주 요청</div>
<div><b>출고 처리</b>담당자 일괄 승인 + 거래명세표 메일 자동 발송</div>
<div><b>입금 관리</b>입금 등록 → 미수금 추적</div>
<div><b>전자세금계산서</b>출고/입금 후 별도 발행 (국세청 직접 연동 대비 골격)</div>
<div><b>통계 / 그래프</b>일별·월별·업체별·원가/마진 분석 + 엑셀 다운로드</div>
<div><b>회원 권한</b>제한수량 해지 / 숨김품목 보기 등 거래처별 특수권한</div>
</div>
<h3>역할 구분</h3>
<table>
<tr><th width="30%">역할</th><th>설명</th></tr>
<tr><td><span class="role r-user">거래처 USER</span></td><td>가입한 소매 대리점. 발주만 가능.</td></tr>
<tr><td><span class="role r-admin">관리자 ADMIN</span></td><td>모모유통 임직원. 품목/창고/회원 마스터 관리 + 출고/입금 처리 + 통계.</td></tr>
</table>
</section>
<!-- ========== 2. 로그인 ========== -->
<section id="login">
<h2>2. 로그인 · 회원가입</h2>
<h3>로그인 (URL: <code>/login</code>)</h3>
<ol class="steps">
<li><b>아이디</b> 이메일 또는 사번 형태(관리자) 입력</li>
<li><b>비밀번호</b> 입력 후 [로그인]</li>
<li>성공 시 자동 이동 → <b>출고 요청</b> 화면(<code>/m/orders/new</code>)</li>
</ol>
<div class="tip"><b>모든 사용자</b>는 로그인 후 출고 요청 화면으로 이동합니다. 관리자는 좌측 메뉴에서 [출고/정산] 등으로 이동.</div>
<h3>회원가입 (URL: <code>/signup</code>)</h3>
<p>거래처 회원가입 전용. 모모유통 직원은 가입 X, 관리자가 직접 등록.</p>
<table>
<tr><th>필드</th><th>필수</th><th>설명</th></tr>
<tr><td>이메일</td><td>Y</td><td>로그인 ID로 사용</td></tr>
<tr><td>비밀번호</td><td>Y</td><td>8자 이상</td></tr>
<tr><td>업체명</td><td>Y</td><td>거래명세표에 표시</td></tr>
<tr><td>대표자</td><td>N</td><td></td></tr>
<tr><td>연락처</td><td>Y</td><td>휴대폰</td></tr>
<tr><td>주소</td><td>Y</td><td>배송지</td></tr>
<tr><td>사업자등록번호</td><td>N</td><td>전자세금계산서 발행 시 필수</td></tr>
</table>
<div class="warn"><b>비밀번호 분실 시</b> 관리자가 [마스터 관리 → 거래처 회원 관리]에서 초기화하거나 신규 비번 발급. 본인은 [회원정보 수정] 화면에서 변경 가능.</div>
</section>
<!-- ========== 3. 거래처 가이드 ========== -->
<section id="user">
<h2>3. 거래처(USER) 가이드</h2>
<h3 id="user-order-new">3.1 출고 요청 (URL: <code>/m/orders/new</code>)</h3>
<p>로그인 직후 자동으로 이 화면이 열립니다. 품목 카드를 카트에 담고 [발주 요청] 버튼으로 전송합니다.</p>
<h4>화면 구성</h4>
<div class="mock">
<div class="titlebar">/m/orders/new</div>
<div class="body">
<div class="mock-row"><span>🛒 발주 장바구니 [N개]</span><span>면세 ₩ — | 과세 ₩ — | 합계 ₩ — &nbsp;[발주 요청]</span></div>
<div class="mock-row"><span> 택배 추가 / 용차 추가</span><span>전체 삭제</span></div>
<div class="mock-row"><span>품목 검색: <code>[품목명/코드]</code> 전체/면세/과세</span><span>[조회]</span></div>
<div class="mock-row"><span>품목 카드 그리드 (이미지 · 단가 · 재고)</span><span> 담기</span></div>
</div>
</div>
<h4>사용 단계</h4>
<ol class="steps">
<li><b>품목 검색</b>품목명/코드 입력 후 [조회]. 면세/과세 필터 가능.</li>
<li><b> 담기 버튼</b>품목 카드의 [+ 담기] 클릭 → 카트에 1개 추가. 같은 품목 다시 누르면 수량 +1.</li>
<li><b>수량 조정</b>카트의 [−] / [+] 또는 숫자 직접 입력. 재고/한도(<code>max_order_qty</code>) 자동 클램프.</li>
<li><b>택배/용차 추가</b>택배 전용 품목을 담으면 자동으로 택배 라인 1줄 추가. 수동 추가는 카트의 [+ 택배 추가] / [+ 용차 추가].</li>
<li><b>택배/용차 단가 · 수량</b>기본 단가는 택배 4,000원 / 용차 5,000원. 직접 수정 가능. 같은 종류 버튼 다시 누르면 수량 +1.</li>
<li><b>[발주 요청] 클릭</b>합계 + 품목수 확인 모달 → [발주]. 성공 시 발주번호(<code>ORD-YYYYMMDD-NNNN</code>) 부여.</li>
</ol>
<h4>품목 카드 배지</h4>
<table>
<tr><th>배지</th><th>의미</th></tr>
<tr><td><span class="badge b-violet">면세</span></td><td>부가세 면제 품목</td></tr>
<tr><td><span class="badge b-orange">택배</span></td><td>택배 전용 — 카트에 담으면 택배 라인 자동 추가</td></tr>
<tr><td>"1회 한도 ≤ N"</td><td>1회 발주 최대 수량 제한 (관리자 권한 부여 시 무시)</td></tr>
</table>
<h3 id="user-orders">3.2 내 발주 이력 (URL: <code>/m/orders</code>)</h3>
<ul>
<li>전체 발주 이력을 상태별로 조회</li>
<li>출고완료(APPROVED)/입금완료(PAID)/계산서발행(INVOICED) 건은 거래명세표 엑셀 다운로드 가능</li>
<li>[엑셀] 버튼으로 전체 이력을 .xlsx 로 내려받기</li>
</ul>
<table>
<tr><th>상태</th><th>의미</th></tr>
<tr><td><span class="badge b-amber">출고요청</span></td><td>거래처가 발주 요청, 담당자 처리 대기</td></tr>
<tr><td><span class="badge b-sky">출고완료</span></td><td>담당자 승인 후 재고 차감 + 거래명세표 메일 발송됨</td></tr>
<tr><td><span class="badge b-sage">입금완료</span></td><td>대금 입금 등록 완료</td></tr>
<tr><td><span class="badge b-violet">계산서발행</span></td><td>전자세금계산서 발행 완료</td></tr>
<tr><td><span class="badge b-slate">취소</span></td><td>담당자 반려 또는 본인 취소</td></tr>
</table>
<h3 id="user-profile">3.3 회원정보 수정 (URL: <code>/profile</code>)</h3>
<p>헤더 우측의 자기 이름을 클릭하면 진입.</p>
<ul>
<li><b>기본 정보</b> 업체명·대표자·연락처·이메일·주소·사업자번호 수정</li>
<li><b>비밀번호 변경</b> 현재 비번 확인 후 새 비번 (4자 이상) 입력</li>
</ul>
</section>
<!-- ========== 4. 관리자 가이드 ========== -->
<section id="admin">
<h2>4. 관리자(ADMIN) 가이드</h2>
<h3 id="admin-orders">4.1 발주서 관리 · 출고처리 · 거래명세표 (URL: <code>/m/admin/orders</code>)</h3>
<p class="lead">좌측 발주 리스트에서 선택하면 우측에 거래명세표 미리보기가 표시됩니다. 체크박스 다중 선택 후 [출고]를 누르면 일괄 처리됩니다.</p>
<h4>화면 구성 (2분할)</h4>
<div class="mock">
<div class="titlebar">/m/admin/orders — 좌:발주 리스트 | 우:거래명세표 미리보기</div>
<div class="body">
<div class="mock-row"><b>좌측</b><span>상태 필터 · 체크박스 · ORDER-YYYYMMDD-NNNN · 일자 · 업체 · 합계 · 상태</span></div>
<div class="mock-row"><b>우측</b><span>거래명세표 [엑셀 다운로드] · + 택배/용차 추가 · 라인 인라인 편집 · 합계</span></div>
</div>
</div>
<h4>출고 처리 단계</h4>
<ol class="steps">
<li><b>발주 선택</b>좌측 리스트에서 출고요청 상태 발주를 체크박스로 선택 (전체선택 헤더 체크박스 가능)</li>
<li><b>[출고] 버튼</b>상단 녹색 [출고] 클릭 → 확인 모달 → 일괄 승인</li>
<li><b>자동 처리</b>① 재고 차감 ② 거래명세표 .xlsx 자동 생성 ③ 거래처 이메일로 거래명세표 본문 + 첨부파일 발송 ④ 상태 → APPROVED</li>
<li><b>결과 알림</b>성공/실패 건수 + 메일 발송 실패 건수가 모달로 표시</li>
</ol>
<h4>거래명세표 인라인 편집 (REQUESTED 상태에서만)</h4>
<ul>
<li><b>[ 택배 추가]</b> / <b>[ 용차 추가]</b> — 같은 종류가 이미 있으면 수량 +1, 없으면 신규 1줄 (단가 4,000/5,000 기본)</li>
<li>택배/용차 행은 인라인 입력칸 — <b>담당자명·단가·수량</b> 즉시 수정, ✓ 클릭 → 저장 / × 클릭 → 삭제</li>
<li>품목(ITEM) 라인은 보호되어 이 화면에서 수정 불가</li>
<li>택배/용차 라인이 품목보다 위쪽에 표시 (관행)</li>
<li>변경 시 발주 합계(<code>total_supply/vat/amount/delivery/charter</code>)는 백엔드에서 자동 재집계</li>
</ul>
<h4>출고/입금 완료 후</h4>
<p>거래명세표 하단에 [세금계산서 발행 (과세)] / [계산서(면세)] 버튼이 노출. 클릭 시 <code>/api/m/einvoices/issue</code> 호출 → 발행 결과 모달 (승인번호/처리방식).</p>
<div class="warn"><b>현재 stub 모드</b> — 발행은 DB 기록만 수행, 국세청에 실제 전송 X. 사업자 공동인증서 + 홈택스 ERP 연계 승인 후 <code>NTS_ESERO_MODE=test|prod</code> 환경변수 전환 시 활성화.</div>
<h3 id="admin-payments">4.2 입금 관리 (URL: <code>/m/admin/payments</code>)</h3>
<ul>
<li>출고 완료된 발주의 입금 등록</li>
<li>입금일 / 입금액 입력 → 상태 PAID 로 전환, <code>paid_amount/paid_date</code> 갱신</li>
</ul>
<h3 id="admin-invoices">4.3 계산서 발행 (URL: <code>/m/admin/invoices</code>)</h3>
<ul>
<li>월말 일괄 거래명세서/계산서 발행 (자체 PDF/엑셀)</li>
<li>국세청 전송 X — 사업자가 홈택스에서 직접 신고하는 형태</li>
</ul>
<h3 id="admin-einvoices">4.4 전자세금계산서 (URL: <code>/m/admin/einvoices</code>)</h3>
<p class="lead">출고/입금 완료된 발주에 대해 별도로 전자(세금)계산서를 발행하고 이력을 관리하는 전용 메뉴.</p>
<h4>화면 구성</h4>
<ol class="steps">
<li><b>발행 가능 발주 리스트</b>출고완료/입금완료 상태 발주가 표시됨. 한 줄당 [세금계산서] 버튼.</li>
<li><b>발행 클릭</b>확인 모달 → <code>/api/m/einvoices/issue</code> 호출 → 결과 모달 (승인번호/처리방식)</li>
<li><b>발행 이력</b>날짜 범위·상태·거래처별 필터, [엑셀] 다운로드</li>
</ol>
<h4>발행 어댑터 (env: <code>EINVOICE_PROVIDER</code>)</h4>
<table>
<tr><th></th><th>동작</th><th>비용</th></tr>
<tr><td><code>manual</code> (기본)</td><td>자체 거래명세서, DB 기록만</td><td>0원</td></tr>
<tr><td><code>nts</code></td><td>국세청 e-세로 직접 연동 (XMLDSig + SOAP)</td><td>인증서 연 4~5만원</td></tr>
<tr><td><code>popbill</code></td><td>(향후) Popbill REST API</td><td>건당 100~150원</td></tr>
</table>
<h4>상태 머신</h4>
<p><code>DRAFT → QUEUED → SENT → ACK | FAIL | CANCELED</code></p>
<h3 id="admin-master">4.5 마스터 관리</h3>
<h4>① 품목 관리 (<code>/m/admin/items</code>)</h4>
<ul>
<li>등록 / 수정 / 이미지 업로드 / 삭제(soft)</li>
<li>주요 필드:
<ul>
<li><b>면세/과세</b> — 라디오. 면세 품목은 부가세 0.</li>
<li><b>발주 제한수량</b> (<code>max_order_qty</code>) — 1회 발주 최대 수량. 공란/0 = 제한 없음.</li>
<li><b>숨김 처리</b> (<code>is_hidden</code>) — '숨김' 선택 시 일반 회원에게는 카드가 안 보임. 권한자만 노출.</li>
<li><b>택배 전용</b> (<code>requires_delivery</code>) — '택배전용' 선택 시 카트에 담기면 택배 라인 자동 추가, 발주 시 택배 없으면 차단.</li>
<li><b>제조관리</b> — 소비기한·원산지·입고가·보관온도·바코드·메모 (JSONB attributes).</li>
</ul>
</li>
</ul>
<h4>② 거래처 회원 관리 (<code>/m/admin/customers</code>)</h4>
<ul>
<li>거래처(<code>user_type='C'</code>) 회원 목록 + 정보/권한 수정</li>
<li><b>특수 권한 토글</b> 두 가지:
<ul>
<li><b>제한수량 해지</b> (<code>unlimited_qty='Y'</code>) — 모든 품목의 1회 발주 한도를 무시하고 재고만큼 발주 가능</li>
<li><b>숨김처리 보기</b> (<code>view_hidden='Y'</code>) — 숨김 품목도 발주 화면에 노출</li>
</ul>
</li>
<li>관리자 패널(<code>/admin-panel</code>)의 사용자 폼에서도 같은 권한 수정 가능</li>
</ul>
<h4>③ 매입처 / ④ 창고 / ⑤ 제조사</h4>
<table>
<tr><th>메뉴</th><th>경로</th><th>역할</th></tr>
<tr><td>매입처 관리</td><td><code>/m/admin/vendors</code></td><td>매입 발주처 등록 (도매처)</td></tr>
<tr><td>창고 관리</td><td><code>/m/admin/warehouses</code></td><td>적재 창고 + 픽업/입출고 분류</td></tr>
<tr><td>제조사 관리</td><td><code>/m/admin/makers</code></td><td>품목 제조사 마스터</td></tr>
</table>
<h3 id="admin-purchase">4.6 매입/입고</h3>
<table>
<tr><th>메뉴</th><th>경로</th><th>역할</th></tr>
<tr><td>매입 발주</td><td><code>/m/admin/procurements</code></td><td>매입처에 보낼 발주서 작성</td></tr>
<tr><td>입고 처리</td><td><code>/m/admin/inbounds</code></td><td>발주한 품목 입고 등록 → 재고 증가</td></tr>
<tr><td>재고 관리</td><td><code>/m/admin/inventory</code></td><td>현재 재고 + 입출고 이력</td></tr>
</table>
<h3 id="admin-stats">4.7 통계 · 대시보드</h3>
<table>
<tr><th>메뉴</th><th>경로</th><th>설명</th></tr>
<tr><td>대시보드</td><td><code>/m/dashboard</code></td><td>전체 요약</td></tr>
<tr><td>월간 매출</td><td><code>/m/admin/statistics</code></td><td>업체별 면세/과세/총 매출 (TOP15 막대그래프) + 엑셀</td></tr>
<tr><td>일자별 매출</td><td><code>/m/admin/statistics/daily</code></td><td>일별 매출 추이 (스택 막대 + 건수 라인) + 엑셀</td></tr>
<tr><td>원가/마진</td><td><code>/m/admin/statistics/margin</code></td><td>품목별 매출/원가/마진 TOP10 + 마진율 + 엑셀</td></tr>
</table>
<p>모든 통계 화면 우상단의 [엑셀 다운로드] 버튼으로 .xlsx 파일을 받을 수 있습니다.</p>
</section>
<!-- ========== 5. 흐름도 ========== -->
<section id="flow">
<h2>5. 전체 업무 흐름도</h2>
<pre>
[거래처 USER] [관리자 ADMIN]
│ │
① 출고 요청 작성 ─────────────► 발주서 관리 (/m/admin/orders)
(품목+택배/용차) │ 체크 + [출고] 버튼
② 재고 차감
③ 거래명세표 메일 발송 (status = APPROVED)
④ 입금 ──────────────────────► 입금 관리 (/m/admin/payments)
│ 입금 등록
▼ (status = PAID)
⑤ 거래명세표 / 세금계산서 ◄──── 전자세금계산서 (/m/admin/einvoices)
│ [세금계산서 발행] 클릭
▼ (status = INVOICED)
⑥ 통계 / 매출 / 원가 마진 분석
(/m/admin/statistics/*)
</pre>
</section>
<!-- ========== 6. FAQ ========== -->
<section id="faq">
<h2>6. 자주 묻는 질문 / 문제 해결</h2>
<h3>Q. 발주 요청 시 "택배 전용 품목이 포함되어 택배 라인이 필요합니다" 메시지</h3>
<p>A. 카트에 <span class="badge b-orange">택배</span> 배지 품목이 들어 있으면 반드시 택배 라인이 1줄 이상 있어야 합니다. 자동 추가되어야 정상이지만 안 되면 [+ 택배 추가] 수동 클릭.</p>
<h3>Q. 1회 발주 한도가 너무 작아서 더 못 담아요</h3>
<p>A. 품목별 <code>max_order_qty</code> 제한입니다. 관리자가 [거래처 회원 관리]에서 해당 회원에게 <b>제한수량 해지</b> 권한을 부여하면 무시됩니다.</p>
<h3>Q. 숨김 품목을 보고 싶어요</h3>
<p>A. 일반 회원에게는 노출되지 않습니다. 관리자가 [거래처 회원 관리]에서 <b>숨김처리 보기</b> 권한을 부여하면 카드가 보입니다.</p>
<h3>Q. 출고 처리 후 거래명세표 메일이 안 갔어요</h3>
<p>A. 출고 모달의 결과창에 "메일 N건 실패" 표시가 있습니다. 거래처 이메일 주소를 [거래처 회원 관리]에서 확인하고 SMTP 환경변수를 점검합니다 (<code>SMTP_HOST/PORT/USER/PASS/FROM</code>).</p>
<h3>Q. 전자세금계산서 발행 시 "STUB-OK" 가 떠요</h3>
<p>A. 현재 <code>NTS_ESERO_MODE=stub</code> 입니다. 국세청에 실제 전송하지 않고 DB 기록만 합니다. 운영 활성화 절차:</p>
<ol>
<li>사업자용 공동인증서 발급 (한국정보인증/SignKorea, 연 4~5만원)</li>
<li>홈택스 → 전자세금계산서 ERP 연계 신청 → 테스트 ID/PW 승인</li>
<li><code>.env.production</code><code>NTS_ESERO_MODE=test</code>, <code>NTS_ESERO_USER_ID/PW</code>, <code>NTS_ESERO_CERT_PATH/PW</code> 설정</li>
<li>테스트 환경에서 100건 모범 발행 검증 → <code>NTS_ESERO_MODE=prod</code> 전환</li>
</ol>
<h3>Q. 비밀번호를 까먹었어요</h3>
<p>A. 관리자가 [관리자 패널 → 사용자 관리]에서 신규 비밀번호로 초기화. 시스템 관리자(<code>admin</code>)도 같은 방법.</p>
<h3>Q. 모바일에서 화면이 잘 안 맞아요</h3>
<p>A. 발주 작성·통계·관리자 화면 모두 반응형으로 설계되어 있습니다 (375px ~). 헤더는 사용자명 + 로그아웃만 노출. 좌측 메뉴는 햄버거 토글로 접기/펴기.</p>
<hr/>
<p style="text-align:right;font-size:11px;color:#94a3b8;margin:0">
문서 버전: v0.6 — 2026-05-07 · 모모유통 ERP
</p>
</section>
</div>
</body>
</html>