Skip to main content

Installation

Requirements

Minimum
Magento2.4.x
PHP8.1+
Composer2.x
DatabaseMySQL 8.0 / MariaDB 10.6+

The module is built and tested on Magento 2.4.6 — 2.4.8.

Composer

composer require byte8/module-preorder
bin/magento module:enable Byte8_Preorder
bin/magento setup:upgrade
bin/magento setup:di:compile # production mode only
bin/magento setup:static-content:deploy -f en_US # if static deploy is gated
bin/magento cache:flush

What setup:upgrade does

setup:upgrade runs the data patches in Setup/Patch/Data/:

  • CreateCustomerAttributes — adds preorder_deposit_override and related fields to the customer entity, used for VIP / wholesale customer overrides.
  • CreateCompletionProduct — provisions an internal virtual product used as the line item for the deferred-balance "completion order" when vault capture is not used.

The schema declarations in etc/db_schema.xml create:

TablePurpose
byte8_preorderMain pre-order records — status, deposit, balance, vault metadata
byte8_preorder_itemLine items per pre-order
byte8_preorder_paymentPayment / capture history
byte8_preorder_notificationNotification log (availability, vault-failed, etc.)

Plus a preorder_id column on quote_item so the pre-order context survives the quote-to-order transfer.

Module dependencies

Byte8_Preorder declares the following sequence in module.xml:

  • Magento_Catalog, Magento_Sales, Magento_Quote, Magento_Customer, Magento_Checkout
  • Magento_CatalogInventory — for legacy stock-item reads
  • Magento_Inventory, Magento_InventorySalesApi, Magento_InventoryReservationsApi — for MSI-aware reservations
  • Magento_Vault — for stored-token vault capture
  • Magento_CatalogRule, Magento_SalesRule — pre-order condition support
  • Magento_Wishlist, Magento_Paypal — wishlist / PayPal Express integrations

If any of these are disabled in your install, module:enable Byte8_Preorder will fail with a clear sequence error — re-enable the missing parent module first.

Verifying

bin/magento module:status Byte8_Preorder
# Module is enabled

bin/magento preorder:list --limit=1
# (no rows yet, but the command succeeds)

If preorder:list returns "command not found", you need to re-run setup:di:compile — the CLI command DI registration didn't take.

Uninstall

bin/magento module:disable Byte8_Preorder
composer remove byte8/module-preorder

The DB tables are left intact by default — drop them manually if you need a clean slate. The customer attributes and completion product are also left in place; remove them via SQL if necessary.