Mass actions
Three mass-action surfaces.
On the product grid
Catalog → Products. The standard mass-action menu includes:
| Action | What it does |
|---|---|
| Apply Pre-Order | Sets preorder_enabled = Yes on every selected product. Does not set availability date — set that per product (or via attribute import). |
| Disable Pre-Order | Sets preorder_enabled = No. Does not delete existing pre-orders against those products. |
Use this when launching a category — apply once, then bulk-import availability dates via Magento's attribute import.
Implementation: Controller/Adminhtml/Product/MassApplyPreorder.php and MassDisablePreorder.php.
On the pre-order grid
Sales → Operations → Pre-Orders:
| Action | What it does |
|---|---|
| Send Availability Notification | Bulk-sends the availability email to the customer of every selected pre-order. Useful when a back-in-stock round failed (e.g. ESP outage) and you need to resend. |
| Mark Ready | Flips selected pre-orders to ready, generates each completion token, queues the Pay Remaining Balance email for the next cron drain (within 60 seconds). |
| Force Complete | Zeroes the remaining balance and runs completePreorder on each selected row. Only use after collecting payment out-of-band. |
| Cancel | Cancels each selected pre-order. Customers will not be charged the remaining balance. Tagged with reason Cancelled by admin via pre-order grid mass action. |
On the sales order grid
Sales → Operations → Orders — three pre-order mass actions, mirroring the pre-order grid:
| Action | What it does |
|---|---|
| Mark Pre-Order Ready | Looks up the pre-order for each selected order and marks it ready. Orders without a pre-order are silently skipped and counted. |
| Force Complete Pre-Order | Force-completes the pre-order for each selected order. |
| Cancel Pre-Order | Cancels the pre-order for each selected order. |
The success message reports succeeded / skipped / orders-without-pre-order so you can see exactly what the batch did.
Behaviour notes
- Email delivery is deferred. Mark Ready (single or mass) does not send the email inline. It flips status and clears the
ready_notification_sent_atflag; thebyte8_preorder_send_ready_notificationscron drains the queue every minute. The success message is honest about this: "Pre-order(s) processed successfully — email will follow within 1 minute." See Cron jobs for the drainer details. - Per-row failures are isolated. One bad row never aborts the batch; aggregate counts are reported as
succeeded / skipped / failedwith the specific errors. - Skipped rows are pre-orders already in
completeorcancelled— the action no-ops rather than throws. - Audit trail — every transition is logged through the pre-order's status history and
var/log/byte8_preorder.log.
Permissions
| Surface | ACL |
|---|---|
| Product grid actions | Magento_Catalog::products (standard catalog edit) |
| Pre-order grid Mark Ready / Force Complete / Cancel | Byte8_Preorder::preorder_view |
| Pre-order grid Send Availability + Capture Vault | Byte8_Preorder::preorder_manage |
| Sales order grid pre-order mass actions | Byte8_Preorder::preorder_view |
Related
- Pre-order grid — listing where the mass actions live.
- Order-view Pre-Order tab — same actions for one order at a time.
- Email configuration — what the mass emails actually send.
- CLI commands — scripting equivalents for very large batches.