Skip to content

Material Expediting

Module: expedite, shown in the menu as Material Expediting. It tracks every ordered line item from contract to site: the promised delivery date, the required-on-site date, the shipping status and the current issue, grouped by expediting group.

How this page was verified

Written from master on 2026-09-06 and compared with the big five the same day. No earlier page existed. A map, not a line-by-line trace: 12 files, about 100 database calls.

Where it sits

Contract / Purchase Order line items (ts_lineitem)  →  Expediting rows  →  weekly forecast snapshot
                                                                       ↘  IRN attachments

Expediting rows are added per line item (addLine), so the module depends on the Cost Control contract register and the Purchase Order items being there first. addAll writes a forecast snapshot of every row, the same thing the weekly cron does.

The data

TableHolds
ts_expeditingone row per line item: lineitem_id, contract_id, cnt_number, vendor_id, exp_group_id, exp_po_date, exp_delivery_date and its _so twin (as ordered), exp_ros_date (required on site), exp_eta_site, exp_delivery_terms, exp_ship, exp_mvr, exp_current_status, exp_current_issue, exp_status, status_approval
ts_expediting_detailthe same columns per sub-line (lineitem_detail_id)
ts_expediting_groupthe grouping: exp_group_title, exp_group_dept, exp_group_project, so_id
ts_lineitemthe shared line-item register: cbs_id, lineitem_no, lineitem_desc, order_id, po_item_id, is_manual
ts_expediting_attachment, ts_map_expediting_attachment and their _detail twinsthe IRN (inspection release note) files
ts_expediting_forecast, ts_expediting_forecast_snapshotweekly snapshots of the delivery forecast

The screen

expedite.php with the tree on the left (expedite_handler_tree.inc.php, by group) and the grid on the right (expedite_handler_browse.inc.php). Commands: addLine, editLine, groupby, sortby, add_search, set_param_search, update_status_exp, uploadirn. Actions: addLine, editLine, edit, delete, addAll and editSnap for the snapshots, and the attachment set (addAttachment, multiuploadprocess, deleteAttachment, deleteFileAttachment, closeAttachment). Print: due-route and expediting report.

The weekly snapshot

cron/expediting_weekly_cron.php copies every expediting row into ts_expediting_forecast_snapshot under a new ts_expediting_forecast header named by date and time. It is written with mysqli_query($dbLink, ...), which is dead in every repository, so the snapshot has not run since the legacy helpers were removed. See Cron jobs.

What still runs on the legacy helper

Counted on 2026-09-06: 62 calls to iw_mysql_query() against 37 uses of $pdo.

PathState where the legacy helper throws
expedite.inc.php, expedite_handler_tree.inc.php, the print reportson $pdo, work
expedite_handler_browse.inc.php (4 legacy, 18 PDO), expedite.php (2 legacy, 3 PDO)mostly PDO
expedite_handler_post.inc.php (47 legacy, 13 PDO)mixed, most writes on the legacy helper
expedite_handler_ajax.inc.php, expedite_handler_print_dueroute.phpdead
expedite_test.phpa scratch file, not routed

Gotchas

  • Two date pairs. exp_delivery_date is the current promise; exp_delivery_date_so is what the order said. Slippage is the difference. The same for the delivery terms.
  • Detail rows duplicate the header columns, so a status change on the header does not cascade. Update both when a line has sub-lines.
  • exp_status and status_approval are different things. The first is the expediting stage, the second the routing state.

Instance differences

Checked on 2026-09-06.

InstanceDifference
JOTREInstalled. Five files differ and seven were added: an import master schedule screen (expedite_import_master_schedule.php, form_import_master_schedule.inc.php), an evidence upload (expedite_upload.php, form_evidence_upload.inc.php) and three .bak / .tmp leftovers. Legacy paths work there.
Jadestone, Medco, TimasNot installed in their QA databases. Code identical to master.