feat: 입고장 관리 기능 추가

 새로운 기능
- 입고장 목록 조회 (날짜/공급업체 필터링)
- 입고장 상세 보기 (모달 팝업)
- 입고장 삭제 (재고 미사용시만 가능)
- 입고장 라인별 수정 API

📊 화면 구성
1. 입고장 목록 테이블
   - 입고일, 공급업체, 품목수, 총수량, 총금액
   - 상세보기, 삭제 버튼

2. 입고장 필터링
   - 시작일/종료일 선택
   - 공급업체별 조회

🔧 백엔드 API
- GET /api/purchase-receipts - 입고장 목록
- GET /api/purchase-receipts/<id> - 입고장 상세
- PUT /api/purchase-receipts/<id>/lines/<line_id> - 라인 수정
- DELETE /api/purchase-receipts/<id> - 입고장 삭제

🛡️ 안전장치
- 이미 조제에 사용된 재고는 수정/삭제 불가
- 재고 원장에 모든 변동사항 기록

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-02-15 08:26:51 +00:00
parent 974000acaa
commit 40be340a63
7 changed files with 534 additions and 3 deletions

View File

@@ -222,15 +222,66 @@
<div class="d-flex justify-content-between align-items-center mb-4">
<h3>입고 관리</h3>
</div>
<div class="card">
<!-- 입고장 목록 -->
<div class="card mb-4">
<div class="card-header">
<h5 class="mb-0">입고장 목록</h5>
</div>
<div class="card-body">
<div class="row mb-3">
<div class="col-md-3">
<label class="form-label">시작일</label>
<input type="date" class="form-control" id="purchaseStartDate">
</div>
<div class="col-md-3">
<label class="form-label">종료일</label>
<input type="date" class="form-control" id="purchaseEndDate">
</div>
<div class="col-md-3">
<label class="form-label">공급업체</label>
<select class="form-control" id="purchaseSupplier">
<option value="">전체</option>
</select>
</div>
<div class="col-md-3">
<label class="form-label">&nbsp;</label>
<button class="btn btn-primary w-100" id="searchPurchaseBtn">
<i class="bi bi-search"></i> 조회
</button>
</div>
</div>
<table class="table table-hover">
<thead>
<tr>
<th>입고일</th>
<th>공급업체</th>
<th>품목 수</th>
<th>총 수량</th>
<th>총 금액</th>
<th>파일명</th>
<th>작업</th>
</tr>
</thead>
<tbody id="purchaseReceiptsList">
<!-- Dynamic content -->
</tbody>
</table>
</div>
</div>
<!-- Excel 업로드 -->
<div class="card">
<div class="card-header">
<h5 class="mb-0">새 입고 등록 (Excel 업로드)</h5>
</div>
<div class="card-body">
<h5>Excel 파일 업로드</h5>
<form id="purchaseUploadForm" enctype="multipart/form-data">
<div class="mb-3">
<label for="purchaseFile" class="form-label">입고 Excel 파일 선택</label>
<input type="file" class="form-control" id="purchaseFile" accept=".xlsx,.xls" required>
<div class="form-text">
양식: 제품코드, 업체명, 약재명, 구입일자, 구입량, 구입액, 원산지
지원 형식: 한의사랑, 한의정보 (자동 감지)
</div>
</div>
<button type="submit" class="btn btn-primary">