Installation
Requirements
| Minimum | |
|---|---|
| Magento | 2.4.x |
| PHP | 8.1+ |
| Composer | 2.x |
| Database | MySQL 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— addspreorder_deposit_overrideand 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:
| Table | Purpose |
|---|---|
byte8_preorder | Main pre-order records — status, deposit, balance, vault metadata |
byte8_preorder_item | Line items per pre-order |
byte8_preorder_payment | Payment / capture history |
byte8_preorder_notification | Notification 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_CheckoutMagento_CatalogInventory— for legacy stock-item readsMagento_Inventory,Magento_InventorySalesApi,Magento_InventoryReservationsApi— for MSI-aware reservationsMagento_Vault— for stored-token vault captureMagento_CatalogRule,Magento_SalesRule— pre-order condition supportMagento_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.