- Context: hook creation was attempted in module runtime.
- Decision: module only registers existing Core hooks.
- Impact: respects native module responsibilities.
- Context: module used a custom
spl_autoload_register. - Decision: remove custom autoloader, use namespaced classes + Composer autoload.
- Impact: aligns with native module standards.
- Context: duplicated OPC config flags existed.
- Decision: keep only
PS_ONE_PAGE_CHECKOUT_ENABLEDas activation flag. - Impact: BO behavior is consistent across module manager and module BO tab.
- Context: BO direct navigation to OPC config was missing.
- Decision: add
AdminPsOnePageCheckouttab rendering the same module-owned configuration flow as Module ManagerConfigure. - Impact: config is reachable from both entries with the same behavior and without relying on redirect-only navigation.
- Context: module had legacy fallback payload and redirect behavior.
- Decision: remove fallback payload/redirect logic from module.
- Impact: native module owns OPC behavior without legacy coupling.
- Context: no JS watch/build workflow in module.
- Decision: add webpack/npm toolchain under
views/and GitHub workflow. - Impact: reproducible JS build for development and CI.
- Context: BO configuration flow logic was implemented inline in
ps_onepagecheckout.php. - Decision: move BO configuration submit/render logic to
src/Form/BackOfficeConfigurationForm.php. - Impact: clearer separation of concerns and easier BO configuration maintenance.
- Context: OPC form construction was duplicated in builder and module front controllers.
- Decision: centralize OPC form/persister creation in
src/Form/OnePageCheckoutFormFactory.php. - Impact: single source of truth for OPC form wiring and easier future Core-to-module feature ports.
- Context: runtime checkout flag could be inconsistent when module injects its checkout process.
- Decision: use a module-owned checkout process (
OnePageCheckoutProcess) that overridesisOnePageCheckoutEnabled()with module flag. - Impact:
is_one_page_checkout_enabledstays coherent with module activation in checkout runtime without module dependency on Core OPC checker interface.
- Context: BO configuration class attempted to access protected
Moduleinternals ($table,trans()), triggering HTTP 500. - Decision: BO form uses module-safe/public data and
Contexttranslator instead of protected module API. - Impact:
AdminPsOnePageCheckoutconfiguration renders reliably from both BO entry points.
- Context: BO module form used a basic
HelperFormradio and did not match historical Core checkout-layout UX. - Decision: move BO rendering to a module Twig template with enriched checkout layout options (badge, descriptions, features, illustrations), and ship CSS/illustrations in module assets.
- Impact: BO UX parity is preserved while keeping all implementation ownership in
ps_onepagecheckout.
- Context: BO tab was historically stored as
AdminPsOnepagecheckoutin existing databases. - Decision: do not ship a module-owned
upgrade/migration for this rename yet, because the module has not been released and there is no released-to-released upgrade path to support at this stage. - Impact: no speculative upgrade file is added before it is needed, but module-owned
upgrade/scripts remain expected later whenever a real released version transition requires a migration.
- Context: module targets PrestaShop
9.2.0, where BO rendering is Twig-first. - Decision:
BackOfficeConfigurationForm::renderConfigurationForm()now requires Twig and no longer falls back to Smarty templates. - Impact: BO configuration rendering is simpler, explicit, and aligned with
9.2.0expectations.
- Context:
PS_ONE_PAGE_CHECKOUT_ENABLEDis no longer provisioned by Core and must be fully owned by the module lifecycle. - Decision: create
PS_ONE_PAGE_CHECKOUT_ENABLEDduring module install with value0, and remove it during module uninstall instead of recreating it with value0. - Impact: module installation remains self-sufficient without activating OPC by default, and uninstall leaves no stale OPC configuration entry behind.
- Context: module PHPUnit suites were not executed in CI, and local vs CI execution paths were diverging.
- Decision: run unit and integration suites in GitHub Actions through a shared isolated entrypoint,
./scripts/run-tests.sh, used both locally and in CI. - Impact: PHPUnit execution is reproducible across environments, and regressions detected by unit or integration suites now block validation.
- Context:
ps_onepagecheckoutmust be available as a native baseline in the Core and later upgradable from the Back Office. - Decision: publish
prestashop/ps_onepagecheckouton Packagist for initial Core inclusion, then expose newer versions throughdistribution-api. - Impact: the baseline version is pinned by the Core
composer.lock, while newer compatible releases can still be discovered and upgraded from Module Manager.
- Context: distribution and archive retrieval for native module updates are handled outside this repository by Packagist and
distribution-api. - Decision: keep module tests focused on module-owned lifecycle only; document external publication/distribution steps without retesting them here.
- Impact: the suite validates install/enable/disable/uninstall behavior, while Packagist publication, archive retrieval and upgrade execution through
distribution-apistay external operational concerns.