Troubleshooting¶
If the screen itself is blank, or the extension does not appear at all, that is the same problem for every extension sold here and is answered on the shared troubleshooting page. What is below is specific to Pre-Order.
Whatever the symptom, Pre-Order wrote down what it did and what it refused to do, in a file your own admin downloads in one click. See what Kyvero extensions log.
The product has no Pre-Order tab¶
- The module is not enabled. Enabling it is what creates the tables the tab reads; until then the tab does not draw. Extensions → Extensions → Modules → Pre-Order.
- It is a variant product. A variant's options belong to its master, so the tab is offered on the master only. Mark the master.
- The store is below OpenCart 4.0.2.0. Pre-Order installs nothing there, and its own screen says so.
- Your theme rewrote the product form. The tab is placed by finding the form's own tab strip. If a theme replaced it, the tab is not drawn. The rest of the form is unaffected.
The product page shows no pre-order panel¶
- The product is not marked, or the option value the shopper selected says Not a pre-order, or the option values that are marked are not the ones selected. Remember that an option value with a row of its own overrides the product completely.
- The module is switched off. Off means off everywhere.
- Your theme rewrote the product form. The panel is placed above the add-to-cart button by finding that block in the template. A theme that replaced it loses the panel; the button wording and the order itself are unaffected.
The same applies to the line under a product card in a listing, which is placed by finding the price block.
A shopper cannot check out, and is told the store is short of stock¶
That is core's own message, and on a mixed basket it is accurate but misleading. A deferred pre-order has to be bought on its own, and the basket page carries the sentence that explains it. Remove either the pre-order items or the in-stock ones.
If the basket holds only pre-order items and still will not check out, the blocker is an ordinary item that has itself gone out of stock, or a pre-order line whose product was un-marked after it went into the basket.
A shopper placing a deferred pre-order was charged today¶
Pre-Order's own payment method is missing or switched off, so the checkout offered your real gateways. The module's screen says so in red whenever the store is holding deferred pre-orders in that state.
If it is only switched off, switch it back on under Extensions → Extensions → Payments → Pre-Order. If it is gone, uninstall and reinstall the module at Extensions → Extensions → Modules → Pre-Order, which writes the payment method again. Neither touches your tables, your pre-orders or your outstanding links.
The stock landed and nothing happened¶
- The quantity was not written by a product save. The release is triggered by OpenCart saving the product, so a quantity written straight into the database (by an import tool that does not go through the admin's own product save, or by hand) does not trigger it. Open the product and save it, and the pass runs.
- You have not got enough for everybody waiting. The lines are marked ready and the request deliberately waits for you: the order is under Ready to notify with a sentence saying how short you are, and the button beside it sends anyway.
- The order has another line still waiting. An order has one link and one payment, so the request goes out once every line has landed. Release this line on the lines that will not arrive.
- The counter cannot move. An option value with stock subtraction switched off has a quantity OpenCart never changes, so nothing will ever release it automatically. The product tab says so where you set it; release the line yourself.
- The product or option value was deleted. A line whose stock nobody can count is held rather than released. Release it yourself, or cancel it.
The customer says the payment email never arrived¶
Press Reissue on the order, which mints a fresh link, emails it, and restarts the payment window from today. The old link stops working.
If no email from your store arrives at all, the problem is the store's mail configuration rather than this extension: System → Settings → Mail. Pre-Order hands its two emails to whatever engine is configured there.
A payment link says it has expired, and the order still says it was requested¶
This is expected, and the safe way round. Whether a link is dead is worked out when it is opened, against your current Days to pay. Moving the order to Pre-Order Expired is bookkeeping done by the daily sweep, so on a store where nothing is running that sweep, the link is correctly refused and the status is stale. On OpenCart 4.1.0.4 that is the ordinary case until you set up one of the two doors that do not use OpenCart's scheduler; see install.
Asked to pay, not paid on the Pre-Orders screen is the list that surfaces those orders. Reissue to give the customer a fresh window, or cancel the lines.
A payment link says it is no longer valid¶
Four things produce that, and the page deliberately does not say which. An unknown token must not disclose whether it is unknown, spent or somebody else's:
- It has already been paid with. A link is single use.
- It was replaced by a Reissue.
- The order's lines were cancelled, or the order has nothing outstanding.
- The module is switched off, including straight after an update until you re-enable it. The link works again once it is back on.
"You have items in your basket"¶
The payment page refuses to start while the shopper's basket has anything in it, because OpenCart's own success page clears a basket once an order id is in the session, so resuming with a live basket would silently wipe it. The customer orders or empties the basket, then opens the link again.
The reminder never sends¶
- Nothing is running the sweep. It has three doors and needs exactly one of
them. OpenCart's own scheduler runs only if the host runs it;
Extensions → Cron Jobs shows whether it ever has. The other two
are the Sweep address on Pre-Order's settings screen, fetched daily by a
cron panel or a cron service, and
php extension/preorder/preorder.phpfrom your store's directory. See install. - The store is on OpenCart 4.1.0.4, where OpenCart's own scheduler is broken and every scheduled task on the store dies inside core. The other two doors work there, which is what they are for. See limits.
- Days to pay is 0, which means links never lapse, so there is nothing to remind anybody about and nothing to expire.
- It already went. There is one reminder per request, ever, and a reissue is what gives a customer a fresh one.
Checking a door actually works¶
Run the command and read what it says: it prints the counts and exits 0 when the
sweep ran, and prints the reason and exits 1 when it did not. For the web
address, fetch it once and then look at the extension's log
(System → Maintenance → Error Logs, the kyvero.log tab), where every wake-up
writes one line whether or not it had anything to do.
Fetching the scheduled route without the secret does not work: it answers 404, because that route emails customers and expires their links. The address on the settings screen already has the secret in it; copy it whole.
An order is on the wrong status¶
Pre-Order never moves an order back. If you moved one by hand, the Pre-Orders screen shows the status Pre-Order would have named beside the one the order carries, marked Moved, and leaves it alone.
Two cases are not caused by you: a charge-in-full pre-order and a pre-order created from the admin order editor both carry your store's normal status rather than Pre-Order Received. Both are explained under where the order statuses do not tell the truth. The pre-order itself is fine in both.
An order editor refuses to open¶
On the OpenCart 4.1 releases the order editor needs the store's API user configured, for every order, with or without this extension. System → Users → API, then set it under System → Settings → edit your store → Option → Checkout.
Days to pay changed and old links died¶
Days to pay is measured against when each request was sent, not against when the setting was saved, so lowering it retroactively shortens every window currently open. Raising it lengthens them again. Reissue anything that lapsed by accident.
Everything stopped after an update¶
Enabling the module is what registers its event rows and its scheduled row, and an update in OpenCart is an uninstall followed by an install, which switches the module off. Switch it back on with Status on the Settings tab of Extensions → Extensions → Modules → Pre-Order → Edit: the module list itself has no switch. Your settings, your pre-orders and your outstanding links all survived.