From 9039d1d80b728b0a2f62b234715b3453cb5d63e9 Mon Sep 17 00:00:00 2001 From: king Date: Thu, 11 Jun 2026 16:05:50 +0900 Subject: [PATCH] =?UTF-8?q?ui(malaysia):=20=EC=9D=B4=EB=8F=99=EC=9D=B4?= =?UTF-8?q?=EB=A0=A5=20=EB=82=A0=EC=A7=9C=ED=95=84=ED=84=B0+=EC=9A=94?= =?UTF-8?q?=EC=9D=BC,=20Ref=EC=97=B4=20=EC=A0=9C=EA=B1=B0,=20=ED=97=A4?= =?UTF-8?q?=EB=94=A9=20=EB=B3=80=EA=B2=BD(=EB=82=B1=EA=B0=9C/=EC=BD=A4?= =?UTF-8?q?=EB=B3=B4=20=EC=83=81=ED=92=88)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 이동 이력에 날짜 선택 필터(요일 포함 표시), 날짜+종류 조합 유지 - 이력 Ref 컬럼 삭제 - "낱개 아이템"→"낱개 상품", "세트 아이템 — 출고(OUT)"→"콤보 상품" - 안내 문구 삭제 Co-Authored-By: Claude Opus 4.8 --- app/modules/malaysia/router.py | 32 ++++++++++++++++--- .../templates/malaysia/movements.html | 28 +++++++++------- 2 files changed, 43 insertions(+), 17 deletions(-) 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 @@
-

낱개 아이템

+

낱개 상품

@@ -61,7 +60,7 @@
-

세트 아이템 — 출고(OUT)

+

콤보 상품

CodeNameQty
@@ -82,32 +81,37 @@
-
-

최근 이동 이력

- - 전체 +
+

이동 이력{% if filter_date %} · {{ filter_date }}{% endif %}

+ +
+ + {% if filter_type %}{% endif %} + + {% if filter_date %}날짜해제{% endif %} + + 전체 {% for t in ['IN','OUT','ADJUST','STOCKTAKE'] %} - {{ t }} + {{ t }} {% endfor %}
Set CodeSet NameQty (OUT)
- + {% for m in movements %} - + - {% endfor %} {% if not movements %} - + {% endif %}
DateTypeItemQtyRefMemoBy
DateTypeItemQtyMemoBy
{{ 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 '—' }}
이동 이력이 없습니다.
이동 이력이 없습니다.