kdrug-inventory-system/test_db.py
시골약사 40be340a63 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>
2026-02-15 08:26:51 +00:00

46 lines
1.4 KiB
Python

import sqlite3
import json
conn = sqlite3.connect('database/kdrug.db')
conn.row_factory = sqlite3.Row
cursor = conn.cursor()
cursor.execute("""
SELECT
pr.receipt_id,
pr.receipt_date,
pr.receipt_no,
pr.total_amount,
pr.source_file,
pr.created_at,
s.name as supplier_name,
s.supplier_id,
COUNT(prl.line_id) as line_count,
SUM(prl.quantity_g) as total_quantity
FROM purchase_receipts pr
JOIN suppliers s ON pr.supplier_id = s.supplier_id
LEFT JOIN purchase_receipt_lines prl ON pr.receipt_id = prl.receipt_id
GROUP BY pr.receipt_id
LIMIT 1
""")
row = cursor.fetchone()
if row:
print("Row keys:", row.keys())
receipt = dict(row)
for key, value in receipt.items():
print(f"{key}: {value} (type: {type(value).__name__})")
# 타입 변환 시도
if isinstance(receipt.get('receipt_date'), bytes):
receipt['receipt_date'] = receipt['receipt_date'].decode('utf-8')
elif receipt.get('receipt_date'):
receipt['receipt_date'] = str(receipt['receipt_date'])
if isinstance(receipt.get('created_at'), bytes):
receipt['created_at'] = receipt['created_at'].decode('utf-8')
elif receipt.get('created_at'):
receipt['created_at'] = str(receipt['created_at'])
print("\nAfter conversion:")
print(json.dumps(receipt, indent=2))