Files
dbx-main/app/modules/malaysia/templates/malaysia/index.html
T
king eb6ee77f72 style(malaysia): 모바일 화면 최적화 — 다단 그리드·랙·표 반응형
- _i18n.html 공용 모바일 CSS: ≤820px 다단 그리드 1단 적층,
  정보바 줄바꿈, 표 가로 스크롤로 열 정렬 유지, 랙 6→3열
- ≤480px 랙 3→2열, 코드열 폭 자동
- index·movements·stocktakes 고정폭 그리드에 mys-grid 클래스

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 13:06:10 +09:00

106 lines
4.7 KiB
HTML

{% extends "erp_base.html" %}
{% block head_extra %}
<style>
.mys-compact .erp-table th,
.mys-compact .erp-table td { padding-top:4px; padding-bottom:4px; }
.mys-compact td.nm { white-space:nowrap; }
.mys-compact th.ccol, .mys-compact td.ccol { white-space:nowrap; width:88px; }
</style>
{% endblock %}
{% block content %}
<section class="mys mys-compact">
{% include "malaysia/_i18n.html" %}
{% set active_tab = 'status' %}
{% include "malaysia/_nav.html" %}
<div class="mys-grid" style="display:grid;grid-template-columns:1fr 420px;gap:16px;align-items:start;">
<!-- 좌: 낱개로 분리된 전체 재고 -->
<div class="erp-card">
<div class="cpg-card-head" style="display:flex;justify-content:space-between;align-items:center;">
<h2><span class="i18n">전산 재고 현황 — 낱개 기준</span> ({{ rows|length }})</h2>
<span class="erp-muted">현재고 = 입고 − 출고 + 조정 + 재고조사반영 (콤보는 낱개로 분해 반영됨)</span>
</div>
<div class="erp-table-wrap">
<table class="erp-table">
<thead>
<tr>
<th class="ccol">Item Code</th><th>Product Name</th>
<th style="text-align:right">전산재고</th>
<th>Last Stocktake</th>
<th style="text-align:right">조사수량</th>
<th style="text-align:right">차이</th>
</tr>
</thead>
<tbody>
{% for r in rows %}
<tr>
<td class="ccol">{{ r.item_code }}</td>
<td class="nm" data-en="{{ r.item_name }}" data-ko="{{ ko_names.get(r.item_code, r.item_name) }}">{{ r.item_name }}</td>
<td style="text-align:right;font-weight:600;">{{ "{:,}".format(r.current_qty) }}</td>
<td>{{ r.last_stocktake_date or '—' }}</td>
<td style="text-align:right">{{ "{:,}".format(r.last_qty) if r.last_qty is not none else '—' }}</td>
<td style="text-align:right;font-weight:600;{% if r.diff %}color:#b91c1c;{% endif %}">
{% if r.diff is not none %}{{ "{:+,}".format(r.diff) }}{% else %}—{% endif %}
</td>
</tr>
{% endfor %}
{% if not rows %}
<tr><td colspan="6" class="erp-muted">표시할 재고가 없습니다.</td></tr>
{% endif %}
</tbody>
</table>
</div>
</div>
<!-- 우: 콤보(세트) 단위 재고 -->
<div class="erp-card">
<div class="cpg-card-head"><h2>콤보 재고 (세트 단위)</h2></div>
<span class="erp-muted">
{% if set_stocktake_date %}최근 재고조사 {{ set_stocktake_date }} 기준 입력 수량{% else %}재고조사 입력 없음{% endif %}
</span>
<div class="erp-table-wrap" style="margin-top:8px;">
<table class="erp-table">
<thead><tr><th class="ccol">Set Code</th><th>Set Name</th><th style="text-align:right">Qty</th></tr></thead>
<tbody>
{% for s in set_rows %}
<tr>
<td class="ccol">{{ s.set_code }}</td>
<td class="nm" data-en="{{ s.set_name }}" data-ko="{{ ko_names.get(s.set_code, s.set_name) }}">{{ s.set_name }}</td>
<td style="text-align:right;font-weight:600;">{{ "{:,}".format(s.qty) }}</td>
</tr>
{% endfor %}
{% if not set_rows %}
<tr><td colspan="3" class="erp-muted">콤보 재고 입력이 없습니다.</td></tr>
{% endif %}
</tbody>
</table>
</div>
</div>
</div>
{% if is_super %}
<div class="erp-card" style="margin-top:16px;border:1px solid #fecaca;background:#fef2f2;">
<div class="cpg-card-head"><h2 style="color:#b91c1c;">위험 구역 (슈퍼관리자)</h2></div>
<p class="erp-muted" style="margin:4px 0 12px;">
전체 창고의 입출고 이력·재고조사 데이터를 모두 삭제해 재고 수량을 0으로 초기화합니다.
창고/아이템 마스터는 유지됩니다. <strong>되돌릴 수 없습니다.</strong>
</p>
<form method="post" action="/malaysia/reset" onsubmit="return mysConfirmReset()">
<button type="submit" class="erp-btn" style="background:#b91c1c;color:#fff;">재고 초기화</button>
</form>
</div>
<script>
function mysConfirmReset() {
if (!confirm('전체 창고의 입출고 이력과 재고조사 데이터를 모두 삭제합니다.\n재고 수량이 0으로 초기화되며 되돌릴 수 없습니다.\n\n계속하시겠습니까?')) return false;
var t = prompt('정말 초기화하려면 RESET 을 입력하세요.');
if (t !== 'RESET') { alert('초기화가 취소되었습니다.'); return false; }
return true;
}
</script>
{% endif %}
</section>
{% endblock %}