feat(cupang): 제품명 설정에 수기 추가 폼

itemcode_db 목록에 없는 상품도 제품명·제품코드를 직접 입력해 등록할 수
있게 왼쪽 카드 상단에 폼 추가. 기존 POST /cupang/products (upsert)를
그대로 사용하며 같은 제품코드는 덮어쓴다. itemcode 검색이 비활성인
환경에서도 동작하도록 search_enabled 분기 밖에 둔다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-28 12:50:22 +09:00
parent 414c47e24d
commit 5c54c99f7e
8 changed files with 46 additions and 7 deletions
@@ -1,6 +1,6 @@
{% extends "erp_base.html" %}
{% block head_extra %}<link rel="stylesheet" href="/static/cupang.css?v=20260828x" />{% endblock %}
{% block head_extra %}<link rel="stylesheet" href="/static/cupang.css?v=20260828y" />{% endblock %}
{% block content %}
<section class="cpg">
@@ -1,6 +1,6 @@
{% extends "erp_base.html" %}
{% block head_extra %}<link rel="stylesheet" href="/static/cupang.css?v=20260828x" />{% endblock %}
{% block head_extra %}<link rel="stylesheet" href="/static/cupang.css?v=20260828y" />{% endblock %}
{% block content %}
<section class="cpg">
@@ -1,6 +1,6 @@
{% extends "erp_base.html" %}
{% block head_extra %}<link rel="stylesheet" href="/static/cupang.css?v=20260828x" />{% endblock %}
{% block head_extra %}<link rel="stylesheet" href="/static/cupang.css?v=20260828y" />{% endblock %}
{% block content %}
<section class="cpg">
@@ -1,6 +1,6 @@
{% extends "erp_base.html" %}
{% block head_extra %}<link rel="stylesheet" href="/static/cupang.css?v=20260828x" />{% endblock %}
{% block head_extra %}<link rel="stylesheet" href="/static/cupang.css?v=20260828y" />{% endblock %}
{% block content %}
<section class="cpg">
@@ -1,6 +1,6 @@
{% extends "erp_base.html" %}
{% block head_extra %}<link rel="stylesheet" href="/static/cupang.css?v=20260828x" />{% endblock %}
{% block head_extra %}<link rel="stylesheet" href="/static/cupang.css?v=20260828y" />{% endblock %}
{% block content %}
<section class="cpg">
@@ -1,6 +1,6 @@
{% extends "erp_base.html" %}
{% block head_extra %}<link rel="stylesheet" href="/static/cupang.css?v=20260828x" />{% endblock %}
{% block head_extra %}<link rel="stylesheet" href="/static/cupang.css?v=20260828y" />{% endblock %}
{% block content %}
<section class="cpg">
@@ -1,6 +1,6 @@
{% extends "erp_base.html" %}
{% block head_extra %}<link rel="stylesheet" href="/static/cupang.css?v=20260828x" />{% endblock %}
{% block head_extra %}<link rel="stylesheet" href="/static/cupang.css?v=20260828y" />{% endblock %}
{% block content %}
<section class="cpg">
@@ -21,6 +21,21 @@
</span>
</div>
<!-- 수기 추가: itemcode_db 에 없는 상품도 직접 등록 -->
<form method="post" action="/cupang/products" class="cpg-prod-manual">
<div class="cpg-prod-manual-head">
<strong>수기 추가</strong>
<span class="erp-muted">아래 목록에 없는 상품을 직접 등록합니다. 같은 제품코드는 덮어씁니다.</span>
</div>
<div class="cpg-prod-manual-row">
<label class="erp-field"><span>제품명 *</span>
<input class="erp-input" type="text" name="product_name" required placeholder="예: 미라네 12호 세트" /></label>
<label class="erp-field"><span>제품코드 *</span>
<input class="erp-input" type="text" name="product_code" required placeholder="예: MS-1012" /></label>
<button type="submit" class="erp-btn erp-btn-primary">추가</button>
</div>
</form>
{% if search_enabled %}
<div class="cpg-inline-form" style="margin-bottom:10px;">
<input class="erp-input" type="text" id="cpg-prod-q" placeholder="이름/코드 필터" style="min-width:200px" />
+24
View File
@@ -537,3 +537,27 @@
.cpg-calc-layout > .erp-card { display: flex; flex-direction: column; }
.cpg-calc-card .erp-table-wrap { flex: 1 1 auto; }
.cpg-calc-sum { overflow: auto; max-height: min(78vh, 900px); }
/* 제품명 설정 — 수기 추가 폼 */
.cpg-prod-manual {
padding: 12px;
margin-bottom: 12px;
border: 1px solid var(--color-subtle-ash);
border-radius: 10px;
background: var(--color-ghost-gray);
}
.cpg-prod-manual-head {
display: flex;
flex-direction: column;
gap: 2px;
margin-bottom: 8px;
}
.cpg-prod-manual-head .erp-muted { font-size: 12px; }
.cpg-prod-manual-row {
display: flex;
gap: 10px;
align-items: flex-end;
flex-wrap: wrap;
}
.cpg-prod-manual-row .erp-field { flex: 1 1 160px; min-width: 0; }
.cpg-prod-manual-row .erp-input { min-width: 0; width: 100%; }