PHPackages                             akawakaweb/customer-reorder-plugin - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. akawakaweb/customer-reorder-plugin

ActiveSylius-plugin

akawakaweb/customer-reorder-plugin
==================================

Sylius plugin that enables order reordering for a customer

2.1.0(6mo ago)02.5k↓50%MITPHPPHP ^8.1

Since Apr 18Pushed 6mo agoCompare

[ Source](https://github.com/akawakaweb/CustomerReorderPlugin)[ Packagist](https://packagist.org/packages/akawakaweb/customer-reorder-plugin)[ RSS](/packages/akawakaweb-customer-reorder-plugin/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (3)Dependencies (35)Versions (7)Used By (0)

> ⚠️ **BEWARE!**This repository has been deprecated and will not be maintained or evolved by the Sylius Team. You can still use it with compatible Sylius versions, but at your own risk, as no bugs will be fixed on it.

 [ ![](https://camo.githubusercontent.com/1567208cc7c8ec53cf6e2af4f54449a9bb3ab0dee7916998de4e3ce9b7f79015/68747470733a2f2f64656d6f2e73796c6975732e636f6d2f6173736574732f73686f702f696d672f6c6f676f2e706e67) ](https://sylius.com)

Customer Reorder Plugin
=======================

[](#customer-reorder-plugin)

[![](https://camo.githubusercontent.com/9b437c7f32af7f569d4c0d8e750fd3e94c19a1a7ad491228a34cf567b0ea8af4/68747470733a2f2f73796c6975732e636f6d2f6173736574732f62616467652d6f6666696369616c2d73796c6975732d706c7567696e2e706e67)](https://sylius.com/plugins/)

This plugin allows customers to reorder a previously placed order.

[![Screenshot showing the customer's orders page with reorder buttons](docs/screenshot.png)](docs/screenshot.png)

Business value
--------------

[](#business-value)

The plugin allows Customer to reorder any Order that has already been placed. Once a Reorder button is clicked, a new cart filled with items taken from a previously placed order is created. If for some reason Reorder can't be fulfilled completely, the Customer is informed about every circumstance that have affected the Order (i. e. promotion being no longer available or differences in item's prices).

Once the Reorder process is completed, the newly created Order is listed in the history just like any other Orders.

Installation
------------

[](#installation)

#### Beware!

[](#beware)

> This installation instruction assumes that you're using Symfony Flex. If you don't, take a look at the [legacy installation instruction](docs/legacy_installation.md). However, we strongly encourage you to use Symfony Flex, it's much quicker! :)

To install plugin, just require it with composer:

```
composer require sylius/customer-reorder-plugin
```

> Remember to allow community recipes with `composer config extra.symfony.allow-contrib true` or during plugin installation process

Extension points
----------------

[](#extension-points)

Customer Reorder plugin is based on two processes:

- reorder processing
- reorder eligibility checking

They are both based on Symfony's compiler passes and configured in `services.xml` file.

ReorderProcessing and EligibilityChecking are independent processes - once a Reorder is created using Processors (services tagged as `sylius_customer_reorder_plugin.reorder_processor`), the created entity is passed to Eligibility Checkers (services tagged as `sylius_customer_reorder_plugin.eligibility_checker`).

Hence, both processes can be extended separately by adding services that implement `ReorderEligibilityChecker`and are tagged as `sylius_customer_reorder_plugin.eligibility_checker` or implement `ReorderProcessor` and are tagged as `sylius_customer_reorder_plugin.reorder_processor`.

Both `Reorder` button layout and action performed on clicking it are defined in `reorder.html.twig` template which is declared in `config.yml` file.

What's more, since Order is a Resource, major part of its configuration is placed in `*.yml` files. Without using the plugin, Order had `Show` and `Pay` actions. Adding `Reorder` action required extending order-related behaviours in `config.yml` file.

You can read much more about Resources here: [http://docs.sylius.com/en/1.2/components\_and\_bundles/bundles/SyliusResourceBundle/index.html](http://docs.sylius.com/en/1.2/components_and_bundles/bundles/SyliusResourceBundle/index.html)

Security issues
---------------

[](#security-issues)

If you think that you have found a security issue, please do not use the issue tracker and do not post it publicly. Instead, all security issues must be sent to `security@sylius.com`.

Contributing : installation
---------------------------

[](#contributing--installation)

### Traditional

[](#traditional)

1. Run `composer create-project sylius/customer-reorder-plugin ProjectName`.
2. From the plugin skeleton root directory, run the following commands:

    ```
    $ (cd tests/Application && yarn install)
    $ (cd tests/Application && yarn build)
    $ (cd tests/Application && APP_ENV=test bin/console assets:install public)

    $ (cd tests/Application && APP_ENV=test bin/console doctrine:database:create)
    $ (cd tests/Application && APP_ENV=test bin/console doctrine:schema:create)
    ```

To be able to set up a plugin's database, remember to configure you database credentials in `tests/Application/.env` and `tests/Application/.env.test`.

### Docker

[](#docker)

1. Initialize plugin `make init`
2. See your browser `open localhost`

Usage
-----

[](#usage)

### Running plugin tests

[](#running-plugin-tests)

- PHPUnit

    ```
    vendor/bin/phpunit
    ```
- PHPSpec

    ```
    vendor/bin/phpspec run
    ```
- Behat (non-JS scenarios)

    ```
    vendor/bin/behat --strict --tags="~@javascript"
    ```
- Behat (JS scenarios)

    1. [Install Symfony CLI command](https://symfony.com/download).
    2. Start Headless Chrome:

    ```
    google-chrome-stable --enable-automation --disable-background-networking --no-default-browser-check --no-first-run --disable-popup-blocking --disable-default-apps --allow-insecure-localhost --disable-translate --disable-extensions --no-sandbox --enable-features=Metal --headless --remote-debugging-port=9222 --window-size=2880,1800 --proxy-server='direct://' --proxy-bypass-list='*' http://127.0.0.1
    ```

    3. Install SSL certificates (only once needed) and run test application's webserver on `127.0.0.1:8080`:

    ```
    symfony server:ca:install
    APP_ENV=test symfony server:start --port=8080 --dir=tests/Application/public --daemon
    ```

    4. Run Behat:

    ```
    vendor/bin/behat --strict --tags="@javascript"
    ```
- Static Analysis

    - Psalm

        ```
        vendor/bin/psalm
        ```
    - PHPStan

        ```
        vendor/bin/phpstan analyse -c phpstan.neon -l max src/
        ```
- Coding Standard

    ```
    vendor/bin/ecs check
    ```

###  Health Score

42

—

FairBetter than 90% of packages

Maintenance68

Regular maintenance activity

Popularity19

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 59.7% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~312 days

Total

4

Last Release

187d ago

Major Versions

1.2.1 → 2.0.02025-11-06

PHP version history (2 changes)1.2.0PHP ^8.0

2.0.0PHP ^8.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/4409af876442306929e286aba346113202328e1668a2af73acb2aa54d20f8088?d=identicon)[vasilvestre](/maintainers/vasilvestre)

---

Top Contributors

[![bartoszpietrzak1994](https://avatars.githubusercontent.com/u/22262296?v=4)](https://github.com/bartoszpietrzak1994 "bartoszpietrzak1994 (108 commits)")[![Zales0123](https://avatars.githubusercontent.com/u/6212718?v=4)](https://github.com/Zales0123 "Zales0123 (32 commits)")[![pamil](https://avatars.githubusercontent.com/u/1897953?v=4)](https://github.com/pamil "pamil (15 commits)")[![vasilvestre](https://avatars.githubusercontent.com/u/17164385?v=4)](https://github.com/vasilvestre "vasilvestre (12 commits)")[![GSadee](https://avatars.githubusercontent.com/u/6140884?v=4)](https://github.com/GSadee "GSadee (7 commits)")[![pocky](https://avatars.githubusercontent.com/u/204451?v=4)](https://github.com/pocky "pocky (6 commits)")[![lchrusciel](https://avatars.githubusercontent.com/u/6213903?v=4)](https://github.com/lchrusciel "lchrusciel (1 commits)")

---

Tags

symfonysyliuse-commercesylius-plugincustomer reorder

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan, Rector

Type Coverage Yes

### Embed Badge

![Health badge](/badges/akawakaweb-customer-reorder-plugin/health.svg)

```
[![Health](https://phpackages.com/badges/akawakaweb-customer-reorder-plugin/health.svg)](https://phpackages.com/packages/akawakaweb-customer-reorder-plugin)
```

###  Alternatives

[sylius/invoicing-plugin

Invoicing plugin for Sylius.

901.0M2](/packages/sylius-invoicing-plugin)[sylius/refund-plugin

Plugin provides basic refunds functionality for Sylius application.

691.7M14](/packages/sylius-refund-plugin)[sylius/price-history-plugin

Implementation of the Omnibus Directive for Sylius application.

1140.5k](/packages/sylius-price-history-plugin)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
