2c0eeb5502
같은 날짜+창고에 finalized 조사가 있으면 생성 버튼 클릭 시 alert 로
'{날짜} 은 재고조사가 확정되어 다시 재고조사를 생성할 수 없습니다.' 안내
후 제출 차단. 확정 날짜는 이미 받아온 stocktakes 목록에서 추출(추가 쿼리
없음). 서버측 차단(create_stocktake ValueError)은 안전망으로 유지. 한/영 안내.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
81 lines
3.7 KiB
HTML
81 lines
3.7 KiB
HTML
{% extends "erp_base.html" %}
|
|
|
|
{% block content %}
|
|
<section class="mys mys-compact">
|
|
{% include "malaysia/_i18n.html" %}
|
|
{% set active_tab = 'stocktake' %}
|
|
{% include "malaysia/_nav.html" %}
|
|
|
|
<div class="mys-grid" style="display:grid;grid-template-columns:340px 1fr;gap:16px;align-items:start;">
|
|
|
|
<!-- 신규 조사 생성 -->
|
|
<div class="erp-card">
|
|
<div class="cpg-card-head"><h2>재고조사 생성</h2></div>
|
|
<form method="post" action="/malaysia/stocktakes" onsubmit="return mysCheckFinalizedDate(this)" style="margin-top:10px;display:flex;flex-direction:column;gap:8px;">
|
|
<input type="hidden" name="warehouse_code" value="{{ selected_wh }}" />
|
|
<label class="erp-field"><span>조사 날짜</span>
|
|
<input class="erp-input" type="date" name="stocktake_date" value="{{ today }}" required /></label>
|
|
<label class="erp-field"><span>메모</span>
|
|
<input class="erp-input" type="text" name="memo" /></label>
|
|
<div class="erp-page-actions"><button type="submit" class="erp-btn erp-btn-primary">생성</button></div>
|
|
</form>
|
|
<p class="erp-muted">생성 후 상세에서 낱개/세트 수량을 입력하고 확정하세요.</p>
|
|
</div>
|
|
|
|
<!-- 조사 목록 -->
|
|
<div class="erp-card">
|
|
<div class="cpg-card-head"><h2><span class="i18n">조사 목록</span> ({{ stocktakes|length }})</h2></div>
|
|
<div class="erp-table-wrap">
|
|
<table class="erp-table">
|
|
<thead><tr><th>#</th><th>Date</th><th>Warehouse</th><th>Status</th><th>By</th><th></th></tr></thead>
|
|
<tbody>
|
|
{% for s in stocktakes %}
|
|
<tr>
|
|
<td>{{ s.id }}</td>
|
|
<td>{{ s.stocktake_date }}</td>
|
|
<td>{{ s.warehouse_code }}</td>
|
|
<td>
|
|
{% if s.status=='finalized' %}<span class="erp-badge erp-badge-success">확정</span>
|
|
{% elif s.status=='cancelled' %}<span class="erp-badge erp-badge-neutral">취소</span>
|
|
{% else %}<span class="erp-badge erp-badge-inverse">작성중</span>{% endif %}
|
|
</td>
|
|
<td>{{ s.created_by or '—' }}</td>
|
|
<td style="display:flex;gap:6px;">
|
|
<a class="erp-btn erp-btn-outline" href="/malaysia/stocktakes/{{ s.id }}">열기</a>
|
|
{% if is_super %}
|
|
<form method="post" action="/malaysia/stocktakes/{{ s.id }}/delete" onsubmit="return confirm('재고조사 #{{ s.id }} 완전 삭제. 계속?');">
|
|
<button type="submit" class="erp-btn erp-btn-danger">삭제</button>
|
|
</form>
|
|
{% endif %}
|
|
</td>
|
|
</tr>
|
|
{% endfor %}
|
|
{% if not stocktakes %}
|
|
<tr><td colspan="6" class="erp-muted">재고조사가 없습니다.</td></tr>
|
|
{% endif %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
// 이미 확정된 날짜 목록(현재 창고). 그 날짜로 생성 시도 시 안내 후 차단.
|
|
var MYS_FINALIZED_DATES = [
|
|
{% for s in stocktakes %}{% if s.status == 'finalized' %}"{{ s.stocktake_date }}",{% endif %}{% endfor %}
|
|
];
|
|
function mysCheckFinalizedDate(form) {
|
|
var d = (form.querySelector('[name=stocktake_date]').value || '').trim();
|
|
if (MYS_FINALIZED_DATES.indexOf(d) !== -1) {
|
|
var en = localStorage.getItem('mys_lang') === 'en';
|
|
alert(en
|
|
? d + ' is already finalized; you cannot create another stocktake for this date.'
|
|
: d + ' 은 재고조사가 확정되어 다시 재고조사를 생성할 수 없습니다.');
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
</script>
|
|
</section>
|
|
{% endblock %}
|