Skip to content

Changes

Started by timer
Started 1 mo 5 days ago
Took 1 min 3 sec on built-in

Summary

  1. Unit tracking on goods receipt: serial numbers and charges (lot + MHD) as iDempiere attribute set instances (details)
  2. Unit tracking: MHD-only mode (LogShip MHD attribute set, no lot) (details)
  3. Generate shipments: Simple/Advanced tabs with merchant cards, admin top-bar modal, mobile parity (details)
  4. Top bar: admin shortcuts (Shipments modal + Commission page) moved left of the Ticket/Order quick buttons (details)
Commit 5297eb3c1feed3bb828a0ac35972b89c90c8f744 by info
Unit tracking on goods receipt: serial numbers and charges (lot + MHD) as iDempiere attribute set instances

Port of the blut24 ASI mechanics to the LogShip catalogue. Three attribute sets are created lazily by name
(LogShip Seriennummer / Charge / Seriennummer + Charge, all fields optional, FEFO via
UseGuaranteeDateForMPolicy); a product is tracked when its M_AttributeSet_ID points at one of them.

Server: attributeTracking.ts (set bootstrap + cache, ASI create/lookup, line expansion) hooked into
POST /api/inouts/store — a receive line may carry tracking { attributeSetId, serials[], charges[] } and is
expanded into one qty-1 line per serial, one line per charge (identical set/org/lot/MHD charges reused),
remainder untracked; serials already in stock are rejected with a 400 before anything is written. New
routes products/[id]/tracking (enable/switch/clear), products/[id]/units, materials/tracking-overview,
inouts/check-serials, ag-grid/products-v2 (grid body shared via productsGrid.ts); product-lookup and
orders/[id]/order-line return the tracking flags and C_UOM_ID.

Desktop receive: per-line tracking chip, enable dialog, capture modal with scan/paste input, CSV import
(serial;lot;mhd[;qty], header optional), several lot/MHD groups per position, in-stock serial warnings,
warn + confirm on incomplete capture. Mobile receive: serial scan mode (every scan = one serial until the
qty is reached), one lot/MHD per position via native inputs with the scanner-focus pause, mode picker,
incomplete-capture confirm; fixes the stray "On" before <script setup>. Staff-only products clone
/materials/products-v2 with Tracking + Einheiten columns and a units side panel; menu entries only in the
staff branches. Recipe added to reference/recipes.md.
The file was addedserver/utils/productsGrid.ts
The file was modifiedapp/components/MainNavigationMenu.vue (diff)
The file was addedserver/api/inouts/check-serials.post.ts
The file was modifiedserver/api/inouts/store.post.ts (diff)
The file was addedapp/components/AgGrid/Products/AgTrackingMode.vue
The file was modifiedapp/pages/integrations/receive-desktop.vue (diff)
The file was modifiedapp/pages/mobile/receive.vue (diff)
The file was modifiedserver/api/orders/[id]/order-line/index.get.ts (diff)
The file was modifiedapp/assets/langs/shared.js (diff)
The file was addedapp/composables/useReceiptTracking.ts
The file was modifiedserver/api/mobile/product-lookup.post.ts (diff)
The file was addedapp/components/AgGrid/Products/AgTrackingUnits.vue
The file was addedapp/pages/materials/products-v2/index.vue
The file was addedserver/api/materials/products/ag-grid/products-v2.post.ts
The file was modifiedserver/api/materials/products/ag-grid/products.post.ts (diff)
The file was addedapp/components/receive/TrackingEnableDialog.vue
The file was addedserver/api/materials/products/[id]/tracking.post.ts
The file was addedapp/components/receive/TrackingCaptureModal.vue
The file was modifiedapp/composables/menu/admin/materials.ts (diff)
The file was addedserver/api/materials/products/[id]/units.get.ts
The file was addedserver/api/materials/tracking-overview.get.ts
The file was modifiedreference/recipes.md (diff)
The file was addedapp/components/materials/ProductUnitsPanel.vue
The file was addedserver/utils/attributeTracking.ts
Commit c466a90e190da1bede631c4e2904d390acfabf05 by info
Unit tracking: MHD-only mode (LogShip MHD attribute set, no lot)

Fourth lazily created set "LogShip MHD" (IsGuaranteeDate + FEFO, no IsLot) and mode 'mhd' across the
server util, tracking route, products-v2 filter, the composable (label, badge "MHD n/qty"), the desktop
enable dialog (mhd can be widened to charge or both), the mobile mode picker and the products-v2 mode
select; translation key tracking_mhd in all four locales. ensureTrackingSets re-resolves a cached map that
lacks a mode and the tracking route refuses to clear a product when the requested mode's set cannot be
resolved.
The file was modifiedapp/pages/mobile/receive.vue (diff)
The file was modifiedreference/recipes.md (diff)
The file was modifiedapp/composables/useReceiptTracking.ts (diff)
The file was modifiedserver/utils/attributeTracking.ts (diff)
The file was modifiedapp/assets/langs/shared.js (diff)
The file was modifiedapp/components/receive/TrackingEnableDialog.vue (diff)
The file was modifiedapp/pages/materials/products-v2/index.vue (diff)
The file was modifiedserver/api/materials/products/ag-grid/products-v2.post.ts (diff)
The file was modifiedapp/components/AgGrid/Products/AgTrackingMode.vue (diff)
The file was modifiedserver/api/materials/products/[id]/tracking.post.ts (diff)
Commit afa845908e73499e48e0a4c62dde34934b0c8795 by info
Generate shipments: Simple/Advanced tabs with merchant cards, admin top-bar modal, mobile parity

Simple mode (default) shows one card per merchant (org) with the fulfillable / open
order counts from the dashboard universe (openso-count-by-warehouse now also returns
`fulfillable` per warehouse/org via the same stock rule as unfulfillable-count). All
merchants are in scope by default, cards can be picked to narrow the run; one button
generates for the merchants' warehouses with plain defaults and prints every shipment
right away. Advanced keeps the full parameter form; the merchant cards act as an org
filter for the selected/all warehouse scopes and the sequential queue (new `orgIds`).

The page body moved to components/sales/GenerateShipmentsPanel.vue so the admin
quick link in TopMegaBar can open it in a big modal (GenerateShipmentsModal.vue,
kept alive across closes). Runs set a shared busy flag: the modal asks before
closing, the page guards route leave, both warn on unload; keep-open notices show
on the Advanced tab when a queue-driven filter is on and while any run is going.
Mobile generate-shipments gets the same Simple/Advanced split and merchant cards.
The file was addedapp/components/sales/GenerateShipmentsModal.vue
The file was addedapp/components/sales/GenerateShipmentsPanel.vue
The file was modifiedapp/pages/mobile/generate-shipments.vue (diff)
The file was modifiedserver/api/orders/openso-count-by-warehouse.get.ts (diff)
The file was modifiedapp/pages/generate-shipments.vue (diff)
The file was modifiedserver/api/orders/openso-generation-queue.get.ts (diff)
The file was modifiedapp/components/TopMegaBar.vue (diff)
The file was modifiedapp/assets/langs/shared.js (diff)
The file was modifiedapp/composables/states.ts (diff)
Commit e8c7fd8e4778aacc2e5850afe4f018b87a3b763e by info
Top bar: admin shortcuts (Shipments modal + Commission page) moved left of the Ticket/Order quick buttons
The file was modifiedapp/components/TopMegaBar.vue (diff)
The file was modifiedapp/assets/langs/shared.js (diff)