Skip to main content
Version: 4.0

Upgrade Notes

Always check this page for some important upgrade notes before updating to the latest coreshop build.

4.0.12

4.0.11

4.0.10

4.0.9

4.0.8

4.0.7

4.0.6

4.0.5

4.0.4

4.0.3

4.0.2

4.0.1

4.0.0

4.0.0-beta.4

4.0.0-beta.3

  • CoreShop 4.0.0 is the same as 3.2.0 will be, it contains all bug-fixes and feature from 3.1 and 3.2

Bugs

Features

From 3.2

4.0.0-beta.2

  • CoreShop 4.0.0 is the same as 3.2.0 will be, it contains all bug-fixes and feature from 3.1 and 3.2

4.0.0-beta.1

CoreShop 4.0.0 is the same as 3.1.0, but with Pimcore 11 compatibility. Updating CoreShop therefore is quite easy. Since Symfony now doesn't have a full container anymore, we use Service Containers now for our Controllers. So your overwritten Controllers probably need changes.

3.2.15

3.2.14

3.2.13

3.2.12

3.2.11

3.2.10

3.2.9

3.2.8

3.2.7

3.2.6

3.2.5

3.2.4

3.2.3

  • [ProductBundle] fix ClearCachedPriceRulesListener - remove service definition

3.2.2

3.2.1

3.2.0

3.2.0-beta.1

3.2.0-beta.1

Features

3.1.5

3.1.4

3.1.3

3.1.2

Bugs

3.1.1

Bugs

3.1.0

BC Breaks:

  • core_shop_order.expiration
    core_shop_order:
    expiration:
    cart:
    days: 20
    anonymous: true
    customer: true
    order:
    days: 20

    is now configured like:
      core_shop_storage_list:
    list:
    order:
    expiration:
    params:
    cart:
    days: 0
    params:
    anonymous: true
    customer: false
    order:
    days: 20

Bugs

Features

3.0.7

Bugs

3.0.6

Bugs

3.0.5

Bugs

3.0.4

Bugs

3.0.3

Feature

Bugs

3.0.2

Please make sure you also start the messenger worker for the CoreShop Tasks bin/console messenger:consume coreshop_notification coreshop_index --time-limit=300

Features

Bugs

3.0.1

Bugs

3.0.0

CoreShop is now Licenced under CCL and GPLv3! (https://github.com/coreshop/CoreShop/pull/2061)

Feature

Bugs

3.0.0-beta.5

This will be the last BETA for the final release.

Bugs

3.0.0-beta.4

Feature

Bugs

3.0.0-beta.3

3.0.0-beta.2

3.0.0-beta.1

parameters:
coreshop.security.frontend_regex: "^/(?!admin)[^/]++"

security:
providers:
coreshop_customer:
id: CoreShop\Bundle\CoreBundle\Security\ObjectUserProvider
firewalls:
coreshop_frontend:
anonymous: ~
provider: coreshop_customer
pattern: '%coreshop.security.frontend_regex%'
context: shop
form_login:
login_path: coreshop_login
check_path: coreshop_login_check
provider: coreshop_customer
failure_path: coreshop_login
default_target_path: coreshop_index
use_forward: false
use_referer: true
remember_me:
secret: "%secret%"
name: APP_CORESHOP_REMEMBER_ME
lifetime: 31536000
remember_me_parameter: _remember_me
logout:
path: coreshop_logout
target: coreshop_login
invalidate_session: false
success_handler: CoreShop\Bundle\CoreBundle\EventListener\ShopUserLogoutHandler

access_control:
- { path: "%coreshop.security.frontend_regex%/_partial", role: IS_AUTHENTICATED_ANONYMOUSLY, ips: [127.0.0.1, ::1] }
- { path: "%coreshop.security.frontend_regex%/_partial", role: ROLE_NO_ACCESS }

2.2.14

2.2.13

2.2.12

2.2.11

2.2.10

2.2.9

2.2.8

2.2.7

2.2.6

2.2.5

2.2.4

2.2.3

2.2.2

2.2.1

2.2.0

2.2.0-RC.2

2.2.0

2.1.9

2.1.8

2.1.7

2.1.6

2.1.5

2.1.4

2.1.3

2.1.2

2.1.1

2.1.0

  • If you have a custom validation File for AddToCart or Cart, make sure to use the new 2 MinimumQuantity and MaximumQuantity Constraints. Otherwise it will happen that a validation is triggered twice.

2.1.0

2.1.0-rc.2

2.1.0

2.0.12

2.0.11

2.0.10

2.0.9

2.0.8

2.0.7

2.0.6:

2.0.5:

2.0.4

2.0.3

2.0.2

2.0.1

2.0.0

  • CoreShop\Component\Index\Condition\RendererInterface has been deprecated in favor of CoreShop\Component\Index\Condition\DynamicRendererInterface to allow dynamic registration of condition renderers

2.0.0-RC.1

  • Flash Messages are translated in the Controllers now, not in views anymore. If you have custom Flash Messages, translate them in your Controller instead of the view.

2.0.0-beta.4

  • Completely remove FOSRestBundle, you still can use it, but you need to install it yourself. CoreShop only used the BodyListener to decode POST/PUT Requests, this Listener is now added by CoreShop if FOSRestBundle is not installed.

2.0.0-beta.3 to 2.0.0-beta.4

  • BC break: All occurrences of parameters coreshop.all.stack.pimcore_class_ids, "application".model."class".pimcore_class_id, coreshop.all.pimcore_classes.ids have been removed. Inject the corresponding Repository and use classId function instead
  • Pimcore: CoreShop now requires at least Pimcore 5.4.0. You need to update Pimcore to the at least 5.4.0 in order to use/update CoreShop.

Product Price Calculation

In order to allow custom price calculation on API Level, we changed the way CoreShop calculates product prices by introducing a new parameter to every PriceCalculation Interface. Price Calculator Conditions are not anymore using a Live context, instead it gets passed via API.

Following interfaces have changed:

  • CoreShop\Component\Core\Product\TaxedProductPriceCalculatorInterface
  • CoreShop\Component\Order\Calculator\PurchasableDiscountCalculatorInterface
  • CoreShop\Component\Order\Calculator\PurchasableDiscountPriceCalculatorInterface
  • CoreShop\Component\Order\Calculator\PurchasablePriceCalculatorInterface
  • CoreShop\Component\Order\Calculator\PurchasableRetailPriceCalculatorInterface
  • CoreShop\Component\Product\Calculator\ProductDiscountCalculatorInterface
  • CoreShop\Component\Product\Calculator\ProductDiscountPriceCalculatorInterface
  • CoreShop\Component\Product\Calculator\ProductPriceCalculatorInterface
  • CoreShop\Component\Product\Calculator\ProductRetailPriceCalculatorInterface
  • CoreShop\Component\Product\Rule\Action\ProductDiscountActionProcessorInterface
  • CoreShop\Component\Product\Rule\Action\ProductDiscountPriceActionProcessorInterface
  • CoreShop\Component\Product\Rule\Action\ProductDiscountPriceActionProcessorInterface
  • CoreShop\Component\Product\Rule\Action\ProductPriceActionProcessorInterface
  • CoreShop\Component\Product\Rule\Fetcher\ValidRulesFetcherInterface

If you have anything customized with those classes, please change them accordingly.

If you use the PriceCalculator Service directly, you also need to change the call from

$this->priceCalculator->getPrice($object, true)

to

$this->priceCalculator->getPrice($object, [
'store' => $store,
'country' => $country,
'customer' => $customer,
'currency' $currency,
'cart' => $cart
], true)

The new second argument, is the Context for which you want to get the Price. This is highly depends on your need. On a default CoreShop setup, the context can be fetched form the ShopperContext Service like this:

return  [
'store' => $this->shopperContext->getStore(),
'customer' => $this->shopperContext->hasCustomer() ? $this->shopperContext->getCustomer() : null,
'currency' => $this->shopperContext->getCurrency(),
'country' => $this->shopperContext->getCountry(),
'cart' => $this->shopperContext->getCart()
];

CoreShop makes that easier for you, you can just use $this->shoppperContext->getContext(). But be aware, the Shopper Context is only in a Web Request available. When you work on a CLI Level, you have to define the context yourself.

If you already have a cart and want to calculate the price for the cart, the context is a bit different, cause it resolves from the cart

$context = [
'store' => $cart->getStore(),
'customer' => $cart->getCustomer() ?: null,
'currency' => $cart->getCurrency(),
'country' => $cart->getStore()->getBaseCountry(),
'cart' => $cart
];

Taxation

Tax Rule Store relation has been removed as it makes currently no sense.

Tracking

Tracking bundle has completely been refactored in order to support more use-cases than just ecommerce. If you have any customizations made, please check the current implementation to adapt your changes.

Order Invoice

Due to changes in adjustments, we also need to change OrderInvoice/OrderInvoiceItem.

After you have migrated to the latest version you also have to remove some fields:

CoreShopOrderInvoice

  • totalTax
  • baseTotalTax
  • subtotalTax
  • baseSubtotalTax
  • shippingTax
  • baseShippingTax
  • taxes
  • baseTaxes
  • discountTax
  • baseDiscountTax
  • discountNet
  • discountGross
  • baseDiscountNet
  • baseDiscountGross
  • shippingNet
  • shippingGross
  • baseShippingNet
  • baseShippingGross
  • shippingTaxRate

CoreShopOrderInvoiceItem

  • totalTax
  • baseTotalTax
  • taxes
  • baseTaxes

Adjustments

BC break / New Feature

There are several deprecated class fields. After you have migrated to the latest version you also have to remove them:

CoreShopOrder / CoreShopQuote

  • shippingGross
  • shippingNet
  • shippingTax
  • discountGross
  • discountNet
  • discountTax
  • baseShippingNet
  • baseShippingGross
  • baseShippingTax
  • baseDiscountNet
  • baseDiscountGross
  • totalTax
  • baseTotalTax
  • subTotalTax
  • baseSubtotalTax

CoreShopOrderItem / CoreShopQuoteItem

  • totalTax
  • baseTotalTax

CoreShopCart

  • shippingGross
  • shippingNet
  • discountGross
  • discountNet

2.0.0-beta.2 to 2.0.0-beta.3

  • BC break Signature of following interfaces changed:

    • CoreShop\Component\Index\Interpreter\InterpreterInterface: public function interpret($value, IndexableInterface $object, IndexColumnInterface $config, $interpreterConfig = []);
    • CoreShop\Component\Index\Interpreter\LocalizedInterpreterInterface: public function interpretForLanguage($language, $value, IndexableInterface $object, IndexColumnInterface $config, $interpreterConfig = []);
    • CoreShop\Component\Index\Interpreter\RelationInterpreterInterface: public function interpretRelational($value, IndexableInterface $indexable, IndexColumnInterface $config, $interpreterConfig = []);
    • CoreShop\Component\Customer\Model\UserInterface::ROLE_DEFAULT renamed CoreShop\Component\Customer\Model\UserInterface::CORESHOP_ROLE_DEFAULT
    • CoreShop\Component\Customer\Model\UserInterface::ROLE_SUPER_ADMIN renamed CoreShop\Component\Customer\Model\UserInterface::CORESHOP_ROLE_SUPER_ADMIN
  • BC break Shipment / Invoice Creation via API changed

    • Before adding a new Shipment / Invoice you need to dispatch a request state to your order.
  • BC break getName in CoreShop\Component\Index\Model\IndexableInterface has been changed to getIndexableName as getName could eventually conflict with a non localized Pimcore Field

  • BC break getEnabled in CoreShop\Component\Index\Model\IndexableInterface has been changed to getIndexableEnabled as getEnabled could eventually conflict with a localized Pimcore Field

2.0.0-beta.1 to 2.0.0-beta.2

  • Link Generator implemented. If you want to use nice urls, you need to add the link generator service:
    • CoreShopProduct: add @coreshop.object.link_generator.product as Link Provider
    • CoreShopCategory: add @coreshop.object.link_generator.category as Link Provider
    • Change {{ path('') }} to {{ coreshop_path('') }}. You may want to checkout the FrontendBundle to get a deeper insight.
  • Deprecated Field Names in - CoreShop\Component\Payment\Model\PaymentInterface`:
    • getName is now getTitle
    • getOrderId is now getOrder and directly returns a OrderInterface
  • Deprecated Field Names in - CoreShop\Component\Shipping\Model\CarrierInterface:
    • getLabel is not getTitle
    • getName is now getIdentifier

2.0.0-alpha.4 to 2.0.0-beta.1

  • BC break Signature of following interfaces changed:

    • CoreShop\Component\Index\Interpreter\InterpreterInterface: public function interpret($value, IndexableInterface $object, IndexColumnInterface $config);
    • CoreShop\Component\Index\Interpreter\LocalizedInterpreterInterface: public function interpretForLanguage($language, $value, IndexableInterface $object, IndexColumnInterface $config);
    • CoreShop\Component\Index\Interpreter\RelationInterpreterInterface: public function interpretRelational($value, IndexableInterface $indexable, IndexColumnInterface $config);
  • BC break CoreShop now takes advantage of the dependent bundle feature introduced in Pimcore 5.1.2. Therefore, all bundles are now automatically loaded. This is a BC break, as when updating, you might run into issues. To solve the issues, check following things:

    • remove RegisterBundles entry from app/AppKernel.php
    • remove loading CoreShopCoreBundle Configuration in app/config.yml
    • enable CoreShopCoreBundle via CLI or manually in var/config/extensions.php: "CoreShop\\Bundle\\CoreBundle\\CoreShopCoreBundle" => TRUE
  • BC break Upgraded Default Layout to Bootstrap 4. This will most certainly cause issues when you just override certain templates. Best would be to copy all templates from before the Bootstrap 4 Upgrade.

2.0.0-alpha.4 to 2.0.0-alpha.5

  • BC break added Component\Core\Model\OrderItem and Component\Core\Model\QuoteItem. If you already customized them, inherit them from the Core Models.
  • BC break changed the way CoreShop processes Cart-Rules. If you implemented a custom-condition, inherit from CoreShop\Component\Order\Cart\Rule\Condition\AbstractConditionChecker and implement isCartRuleValid instead of isValid
  • Deprecated: remove cart/add-price-rule/ static route.

2.0.0-alpha.3 to 2.0.0-alpha.4

  • BC break decoupled MoneyBundle from CurrencyBundle, therefore the Twig Extension for Money Conversion went to the CurrencyBundle. Therefore the name of that extension was renamed from coreshop_convert_money to coreshop_convert_currency. If you use it directly in your code, please rename all of them.
  • Deprecated CoreShopAdminBundle which responsability was only handling installation and deliviering pimcore resources like JS and CSS files.
    • Installation has been moved to CoreShopCoreBundle
    • Delivering of resources is now handled by CoreShopResourceBundle, this also makes it easier to use CoreShop Bundles without handling resources yourself.

2.0.0-alpha.2 to 2.0.0-alpha.3

  • BC break getPrice in PurchasableInterface and ProductInterface has been removed. In favor of this a new coreShopStorePrice editable has been introduced, which stores prices for each store. This makes handling of multiple currencies way more elegant.

    If you still want to use the old getPrice, create a new Subclass of \CoreShop\Component\Core\Model\Product, implement \CoreShop\Component\Order\Model\PriceAwarePurchasableInterface and set your class to CoreShopProduct parents.

V1 to V2

  • CoreShop 2 is not backward compatible. Due to the framework change, we decided to re-make CoreShop from scratch. If you still have instances running and want to migrate, there is a basic migration way which gets you data from V1 to V2.
  • Export from CoreShop1
  • Import into CoreShop2

Within V1

  • Nothing available