PHPackages                             positibe/sylius-composite-price-calculator-bundle - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. positibe/sylius-composite-price-calculator-bundle

ActiveSylius-plugin[Utility &amp; Helpers](/categories/utility)

positibe/sylius-composite-price-calculator-bundle
=================================================

Composite Price Calculator Bundle for Sylius Project.

0.1.0(7y ago)228MITPHPPHP ^7.2

Since Mar 19Pushed 7y ago1 watchersCompare

[ Source](https://github.com/Positibe/CompositePriceCalculatorBundle)[ Packagist](https://packagist.org/packages/positibe/sylius-composite-price-calculator-bundle)[ RSS](/packages/positibe-sylius-composite-price-calculator-bundle/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependencies (4)Versions (2)Used By (0)

CompositePriceCalculatorBundle for Sylius Core Price Calculator
===============================================================

[](#compositepricecalculatorbundle-for-sylius-core-price-calculator)

This bundle allows you to use multiples price calculators on chain by replacing the default calculator for a composite calculator.

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

[](#installation)

1. Require plugin with composer:

    ```
    composer require positibe/sylius-composite-price-calculator-bundle
    ```
2. Add plugin class to your `AppKernel`:

With Symfony Flex:

```
```php
# config/bundles.php
return [
    //...
    Positibe\Sylius\CompositePriceCalculatorBundle\SyliusCompositePriceCalculatorBundle::class => ['all' => true]
];
```

```

Without Symfony Flex:

```
```php
$bundles = [
   new \FOS\JsRoutingBundle\FOSJsRoutingBundle(),
   new \Sylius\AdminOrderCreationPlugin\SyliusAdminOrderCreationPlugin(),
];
```

```

How to use
----------

[](#how-to-use)

`Nota: The main advantage of this bundle is to provide a way to implement product variant price calculator on Sylius plugins without having conflict between them. We recommend do not use it if you don't really need it.`

This bundle add a new entry to our `$context` passed on the `calculate(ProductVariantInterface $productVariant, array $context): int` method. Now we have a `price` where we have the last price before calling the current calculator.

The job of calculator now is add or modify the price given depend of the custom logic.

Here is a example of a fee calculator plugin:

```
```php

namespace Positibe\Sylius\FeePlugin\Calculator;

use Positibe\Sylius\FeePlugin\Entity\FeeableInterface;
use Sylius\Component\Core\Calculator\ProductVariantPriceCalculatorInterface;
use Sylius\Component\Core\Model\ProductVariantInterface;

class ProductVariantFeeablePriceCalculator implements ProductVariantPriceCalculatorInterface
{
    //... Some stuf to get services

    /**
     * @param ProductVariantInterface|FeeableInterface $productVariant
     * @param array $context
     * @return int
     */
    public function calculate(ProductVariantInterface $productVariant, array $context): int
    {
        $price = (int) $context['price'] ?? 0;
        $fees = $productVariant->getFees();
        foreach ($fees as $fee) {
            if ($fee->isIncludedInPrice()) {
                $price += $this->feeCalculator->calculate($context['price'], $fee);
            }
        }

        return (int) $price;
    }
}
```

```

### Default calculator

[](#default-calculator)

The `Positibe\Sylius\CompositePriceCalculatorBundle\Calculator\CompositePriceCalculator` overrides the default calculator `sylius.calculator.product_variant_price` and the alias `Sylius\Component\Core\Calculator\ProductVariantPriceCalculatorInterface`.

The default one now has the id `Sylius\Component\Core\Calculator\ProductVariantPriceCalculator` and has `priority: 40`, the higher priority the sooner is executed.

This bundle autoconfigure your services that implement `Sylius\Component\Core\Calculator\ProductVariantPriceCalculatorInterface` interface and inject the service on the chain.

### Order matters

[](#order-matters)

You can change the order of the chain calculator by providing a `priority`.

`Causion: By default the priority is cero (`0`) so the order without priority is unpredictable.`

Here `yaml Positibe\Sylius\FeePlugin\Calculator\ProductVariantFeeablePriceCalculator: autoconfigure: false tags: - { name: 'sylius.price_calculator', priority: 10 } `

###  Health Score

22

—

LowBetter than 22% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity10

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity44

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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

Unknown

Total

1

Last Release

2612d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/7a0a4509b3c113e5160b4f3f7708a1ead7bc99b2b33ebe4c1e3b59c14b6e530d?d=identicon)[pcabreus](/maintainers/pcabreus)

---

Top Contributors

[![pcabreus](https://avatars.githubusercontent.com/u/8780578?v=4)](https://github.com/pcabreus "pcabreus (2 commits)")

---

Tags

symfonysyliuse-commerceSymfony Bundlepricesylius-plugin

### Embed Badge

![Health badge](/badges/positibe-sylius-composite-price-calculator-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/positibe-sylius-composite-price-calculator-bundle/health.svg)](https://phpackages.com/packages/positibe-sylius-composite-price-calculator-bundle)
```

###  Alternatives

[sylius/refund-plugin

Plugin provides basic refunds functionality for Sylius application.

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

Invoicing plugin for Sylius.

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

Sylius plugin for managing redirects

26352.1k](/packages/setono-sylius-redirect-plugin)[sylius/price-history-plugin

Implementation of the Omnibus Directive for Sylius application.

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

Mailchimp plugin for Sylius.

1137.2k](/packages/setono-sylius-mailchimp-plugin)

PHPackages © 2026

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