Skip to main content

Mass actions

Three mass-action surfaces.

On the product grid

Catalog → Products. The standard mass-action menu includes:

ActionWhat it does
Apply Pre-OrderSets preorder_enabled = Yes on every selected product. Does not set availability date — set that per product (or via attribute import).
Disable Pre-OrderSets 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:

ActionWhat it does
Send Availability NotificationBulk-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 ReadyFlips selected pre-orders to ready, generates each completion token, queues the Pay Remaining Balance email for the next cron drain (within 60 seconds).
Force CompleteZeroes the remaining balance and runs completePreorder on each selected row. Only use after collecting payment out-of-band.
CancelCancels 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:

ActionWhat it does
Mark Pre-Order ReadyLooks 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-OrderForce-completes the pre-order for each selected order.
Cancel Pre-OrderCancels 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_at flag; the byte8_preorder_send_ready_notifications cron 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 / failed with the specific errors.
  • Skipped rows are pre-orders already in complete or cancelled — 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

SurfaceACL
Product grid actionsMagento_Catalog::products (standard catalog edit)
Pre-order grid Mark Ready / Force Complete / CancelByte8_Preorder::preorder_view
Pre-order grid Send Availability + Capture VaultByte8_Preorder::preorder_manage
Sales order grid pre-order mass actionsByte8_Preorder::preorder_view