• Replace every hardcoded English string across all 35 SPA page files
    with useT() calls backed by message keys in messages.ts. Both en-US
    and zh-CN translations are provided for every key (~200 new keys).
    
    Pages updated: DashboardPage, LoginPage, FormDesignerPage,
    ListViewDesignerPage, MetadataAdminPage, SalesOrderDetailPage,
    PurchaseOrderDetailPage, WorkOrderDetailPage, ShopFloorPage,
    UserTasksPage, TaskDetailPage, UserDetailPage, all Create* pages,
    all Edit* pages, and all list pages (Items, Partners, Locations,
    Balances, Movements, SalesOrders, PurchaseOrders, WorkOrders,
    Users, Roles, Accounts, JournalEntries, UoMs, AdjustStock).
    zichun authored
     
    Browse Code »
  • Two more operator-facing forms:
      - CreateLocationPage: code, name, type (WAREHOUSE/BIN/VIRTUAL)
      - AdjustStockPage: item dropdown, location dropdown, absolute
        quantity. Creates the balance row if absent; sets it to the
        given value if present. Shows the resulting balance inline.
    
    API client: inventory.createLocation, inventory.adjustBalance.
    Locations list gets "+ New Location"; Balances list gets "Adjust
    Stock". Routes wired at /locations/new and /balances/adjust.
    
    With this commit, every PBC entity that operators need to create
    or manage has a SPA form: items, partners, locations, stock
    balances, sales orders, purchase orders, work orders (with BOM +
    routing), users, and roles. The only create-less entities are
    journal entries (read-only, event-driven) and stock movements
    (append-only ledger).
    zichun authored
     
    Browse Code »