Skip to content

Booking Legacy Capability Ledger

This is the source-backed compatibility ledger for the first operating Booking page. PRESERVED means the existing workflow remains available through the shared KJ runtime. IMPROVED means the same capability has a clearer or safer Logistics Workspace surface. PARTIAL means the route exists but the acceptance evidence is incomplete. Client 1 (CLIENT_ID=1) and Client 2 (CLIENT_ID=2) use the same operating page through their effective menu and tenant session; no separate tenant selector is part of the user flow. No item is silently omitted.

Capability Legacy source/caller Logistics Workspace disposition Evidence / remaining work
Booking list and real tenant rows kj-table-definitions.js, kj-table-schema-mount.js, mk-booking-list.php IMPROVED Explicit booking-list and mk-booking-list profiles share one compact KJTable runtime; authenticated Client 1 read 11,170 rows / 224 pages and Client 2 read 3,063 rows / 62 pages
Date range, clear and day navigation mk-booking-list.php, KJTable date-range plugin PRESERVED Legacy-compatible From=today/open-To default, explicit Clear, and previous/next/today controls without an inferred week
Global keyword search App Shell search and Booking table query IMPROVED The shared permission resolver selects booking-list or mk-booking-list from the authenticated menu/module contract without a tenant-ID branch. Client 1 opened Booking 57270 from MAEU273938756; Client 2 opened Booking 69805 from NAM8462287, preserving each profile after refresh
Sort, column filter and filter mode KJTable renderer/dom bridge and Booking query IMPROVED Header-driven filtering and allowlisted server-side sorting passed against real Client 1 and Client 2 data; trimmed Booking numbers sort correctly in both directions; Apply, Remove and Escape restore focus to the source header
Row selection and selection actions KJTable selection manager, kj-table-options-master.js IMPROVED Selection toolbar replaces normal toolbar; Client 1 browser verified 1 selected
Paging and page size KJTable renderer PRESERVED 25/50/100/250 options; authenticated Client 1 moved to page 2 and returned to page 1, while the current Client 2 result correctly disabled Next because it contained fewer than 25 rows
Column visibility, order and width KJTable column controls/resize/drag handlers ACCEPTED REPLACEMENT Columns control is intentionally hidden by the explicit approved table direction; visible columns remain fixed to the operational profile and both pointer and keyboard width resize passed in Client 1/2
Create/edit/view Booking booking-editor.js, booking-editor-contracts.js IMPROVED Shared KJModal editor; Client 1/2 UI Create, direct reopen, UI Save and authoritative GET readback passed with generated records left inactive after cleanup. Editable list cells open by mouse, Enter or Space. Primary document/save actions remain visible while seven secondary operations are retained in one keyboard-operable More menu
Autocomplete and multiselect fields kj.autocomplete.js, kj-field-* runtimes PRESERVED Existing option/selection runtime reused; Client 1 editor opened with populated options
Validation and invalid recovery Legacy Booking writer and editor contract IMPROVED Client 1/2 UI Create blocked the initial missing-required-field attempt without a request. A client-side connection failure injected before the first UI Save request displayed unknown-result/read-before-retry guidance; authoritative GET proved unchanged values before the explicit retry succeeded
Cancel, close and parent refresh booking-editor.js, KJModal follow-up PRESERVED Save callback refreshes list/focus; browser cancel does not write
Clone Booking booking-editor.js, booking-clone-contract.js IMPROVED Client 1/2 one-copy clone and inactive cleanup passed; Client 2 clone remained unlinked, while a linked C2 source/Sales Order runtime fixture is still unavailable
Not In Use record flag Booking form writer and NOT_IN_USE state PRESERVED A disposable NOT_IN_USE set/clear readback passed. Source proves an independent flag, not a Cancel/Reopen lifecycle; no invented lifecycle action is presented to users
Linked containers and container edit container-edit-modal.js, YMS/TMS callers PRESERVED Client 1 detail/multi-detail and non-trivial mutation/restore passed
Edit all containers / Direct Move booking-editor.js, container-edit-modal.js, kj-table-options-master.js, YMS container form PARTIAL Client 1 two-container bulk Remark update/readback passed with original values restored; browser drag Direct Move update/readback/restoration passed. Client 2 bulk mutation remains NOT_RUN because no reversible two-container fixture exists
Packing List mkPackingList.php, Booking editor PRESERVED Client 1 and Client 2 authenticated HTTP 200/readback paths passed; a Booking without a linked Packing List container now returns stable 400 INVALID_REQUEST instead of 500
Booking Confirmation bookingConfirmation.php, popup/table actions IMPROVED Client 1 Booking 57290 rendered tenant-branded Booking Confirmation without MK copy; Client 2 Booking 69805 preserved Shipping Instruction and MK composition
AI Booking Instruction PDF booking-editor.js, booking-instruction API PARTIAL A repeatable Client 1 actual-shell/editor test intercepts only the provider POST and passes failure, retry, review and Apply Results without saving. This proves UI integration but not the actual provider; Client 2 tenant flag disables the UI and returns 403 FEATURE_DISABLED before prompt/provider access
AI timeout/failure/manual fallback booking-editor.js error/recovery states PARTIAL The repeatable Client 1 editor test displays Booking analysis failed. Try again or enter the booking fields manually. and then retries successfully with the provider POST intercepted. Actual-provider timeout/recovery remains unaccepted
Booking documents kj-upload-plugin.js, PHOTO.create_fieldset PRESERVED Client 1/2 upload/register/read/soft-delete readback passed; provider cleanup queued by contract
Container photos kj-photo-plugin.js, booking-editor.js PRESERVED Client 1 upload/register/read/delete readback passed; actual Booking 57290 Manage Photos rendered four linked containers with Fancybox loaded and no page error
Empty/Return EIR Booking editor and global search EIR route PRESERVED Client 1 Booking 57125 returned real Empty and Return EIR ZIP downloads with correct filenames and no download failure
Create Empty Booking editor and delivery writer PRESERVED Client 1 authenticated dispatch DISPATCH=N created Equipment 186799/Load 188065, read back as EMPTY, then Logistics Workspace YMS delete soft-deleted both rows
Related delivery/transload history TMS delivery/profile callers PRESERVED Client 1 equipment-load delivery/transload reads returned HTTP 200
CTC/MK composition shared editor + tenant document composition IMPROVED Menu-driven Client 1/CTC and Client 2/MK profiles preserve separate list composition and editors without a tenant selector or duplicate Booking backend

Gate status

The ledger prevents silent omission but is not a completion claim. Remaining gates are actual-provider AI acceptance, a reversible Client 2 two-container bulk fixture, linked Client 2 Sales Order clone evidence, accepted save/readback performance targets and target-role visual UAT. Target Cancel/Reopen semantics remain a separate Process decision and do not relabel the preserved Legacy NOT_IN_USE flag.

---

Source: new-system/docs/pages/transportation/booking-compatibility/CAPABILITY_LEDGER.md — ctc repository · This page is an English translation of the source document. Identifiers, file paths and code symbols are unchanged.