diff --git a/app/modules/malaysia/router.py b/app/modules/malaysia/router.py
index 86921f9..fd9cc08 100644
--- a/app/modules/malaysia/router.py
+++ b/app/modules/malaysia/router.py
@@ -40,6 +40,21 @@ def _bom_map(request: Request) -> dict[str, list[dict[str, Any]]]:
return r.set_bom_map() if r else {}
+_WEEKDAYS_KO = ("월", "화", "수", "목", "금", "토", "일")
+
+
+def _date_label(iso: str | None) -> str:
+ """'2026-06-11' → '2026-06-11 (목)'. 파싱 실패 시 원문."""
+ from datetime import date as _date # noqa: WPS433
+
+ s = (iso or "").strip()
+ try:
+ d = _date.fromisoformat(s[:10])
+ except (ValueError, TypeError):
+ return s
+ return f"{d.isoformat()} ({_WEEKDAYS_KO[d.weekday()]})"
+
+
def _require_user(request: Request) -> dict[str, Any]:
from app.main import get_current_user_record # noqa: WPS433
from app.store import has_module # noqa: WPS433
@@ -151,6 +166,16 @@ async def movements_page(request: Request) -> HTMLResponse:
st, user = guard
wh = _selected_wh(request, st)
mtype = (request.query_params.get("type") or "").strip().upper()
+ fdate = (request.query_params.get("date") or "").strip()
+ movements = st.list_movements(
+ warehouse_code=wh,
+ movement_type=mtype if mtype in store.MOVEMENT_TYPES else None,
+ date_from=fdate or None,
+ date_to=fdate or None,
+ limit=300,
+ )
+ for m in movements:
+ m["date_label"] = _date_label(m.get("movement_date"))
ctx = _base_ctx(request, user, st, wh=wh)
ctx.update(
{
@@ -158,13 +183,10 @@ async def movements_page(request: Request) -> HTMLResponse:
"page_subtitle": f"{wh} · 입고/출고/조정 일괄 등록",
"individual_items": st.list_items(kind="individual"),
"set_items": st.list_items(kind="set"),
- "movements": st.list_movements(
- warehouse_code=wh,
- movement_type=mtype if mtype in store.MOVEMENT_TYPES else None,
- limit=200,
- ),
+ "movements": movements,
"today": today_kst().isoformat(),
"filter_type": mtype if mtype in store.MOVEMENT_TYPES else "",
+ "filter_date": fdate,
}
)
return render_template(request, "malaysia/movements.html", ctx)
diff --git a/app/modules/malaysia/templates/malaysia/movements.html b/app/modules/malaysia/templates/malaysia/movements.html
index b32c9b2..8e09311 100644
--- a/app/modules/malaysia/templates/malaysia/movements.html
+++ b/app/modules/malaysia/templates/malaysia/movements.html
@@ -34,7 +34,6 @@
-
세트는 항상 출고(OUT) · BOM 분해. 빈칸/0 제외.
@@ -42,7 +41,7 @@
-
낱개 아이템
+
낱개 상품
| Code | Name | Qty |
@@ -61,7 +60,7 @@
-
세트 아이템 — 출고(OUT)
+
콤보 상품
| Set Code | Set Name | Qty (OUT) |
@@ -82,32 +81,37 @@
-
-
최근 이동 이력
-
- 전체
+
+
이동 이력{% if filter_date %} · {{ filter_date }}{% endif %}
+
+
+ 전체
{% for t in ['IN','OUT','ADJUST','STOCKTAKE'] %}
- {{ t }}
+ {{ t }}
{% endfor %}
- | Date | Type | Item | Qty | Ref | Memo | By |
+ | Date | Type | Item | Qty | Memo | By |
{% for m in movements %}
- | {{ m.movement_date }} |
+ {{ m.date_label }} |
{{ m.movement_type }} |
{{ m.item_code }} |
{{ m.qty }} |
- {{ m.ref_type }}{% if m.ref_no %} / {{ m.ref_no }}{% endif %} |
{{ m.memo or '—' }} |
{{ m.created_by or '—' }} |
{% endfor %}
{% if not movements %}
- | 이동 이력이 없습니다. |
+ | 이동 이력이 없습니다. |
{% endif %}