- Translations:
- New Crowdin translations (#1165)
- Tests
- [Tests] add conflict for monolog (#1178)
- Bug
- [TRACKING] use single item price in order item extractor (#1231)
- Bugs:
- [IndexBundle] use doctrine schema-config to create index-table schema (#1142)
- Bugs:
- [PayumBundle]: add sandbox to PayPal Configuration (#1112)
-
Bugs:
- [Pimcore] fix stan tests on 2.0 (#998)
- [CurrencyBundle] fix for money-currency editable when data comes from pimcore editmode (#1023)
- [PimcoreBundle] use reflection to get class methods (#1038)
- [CoreExtensions] don't allow any diff until properly implemented (#1050)
- [ProductBundle] specific price rules: keep id on save (#1045)
- [TrackingBundle] fix total tax in tag manager tracker (#1053) @solverat
- [IndexBundle] fix iterator and nested interpreter (#1054)
- [IndexBundle] fix index iterator interpreter (#1076)
- [ResourceBundle] fix resource-select options (#1077)
- [Tests] fix stan and travis tests (#1078)
- [Docs] Fix extend docs (#1082)
- [PimcoreBundle] embedd CoreExtension - Protected members are available only via getters (#1089) @rishadomar
- [IndexBundle] fix order-direction now serialized properly (#1097)
- [All] Fixing Configuration Keys (#1100) @khusseini
- [FrontendBundle] CategoryController perPage Configuration fix (#1105)
-
Features:
- Bug:
-
Bug:
- [Taxation] Wrong Tax Calculation when using Store Gross Values (#971)
- [Core] remove unused Helper Classes (#966)
- [Core] add index to StorePrice Table for better performance (#962)
- [Core] remove result cache for Store Price due to issues with inheritance (#961)
- [Core] strip_tags for meta description in Category (#959)
- [Currency] MoneyCurrency fixes and improvements (#958)
- [Purchasable] When using custom purchasable, CoreShop always assumed that your class has a weight, even though it didn't had to. That's why we moved all weight related fields to the Core Component and CoreBundle.
- [Core] prevent empty carts from being persisted (#920)
- [Core] move weight/total weight to Core Component (#938)
- [Address] use isoCode as fallback if no language value is set (#939)
-
Features
- [JMS Serializer] Updated JMS Serializer to 2.0 (#955)
-
Bug:
- [Adjustments] in the classes "CoreShopOrderItem", "CoreShopQuoteItem", was a typo
basePdjustmentItems
instead ofbaseAdjustmentItems
. Please manually rename them tobaseAdjustmentItems
- [ProductBundle] Fix extjs layout crash price rule is inactive (#908)
- [FrontendBundle] fix address creation redirect (#910)
- [StorageList] Storage List and Storage List Item is not a Pimcore Object (#907)
- [Order] fix typo in OrderItem and QuoteItem (#906)
- [NotificationBundle] fix typo in serializer namespace declaration (#901)
- [CoreBundle] fix notification rule setting for order mail action (#886)
- [Core] use PriceCalculatorInterface in product tracking extractor (#892)
- [Core] fix not passing full configuration in store based email (#917)
- [Core] fix copying object brick data from cart to sale (#918)
- [CoreBundle/OrderBundle] KernelResponse Event should ignore Profile Toolbar (#919)
- [Pimcore] Make CoreShop compatible with Pimcore 5.7.2 (#914)
- [Adjustments] in the classes "CoreShopOrderItem", "CoreShopQuoteItem", was a typo
-
Features:
-
Deprecations:
- [WorkflowBundle] refactor state change logging (#835)
CoreShop\Bundle\OrderBundle\Workflow\OrderHistoryLogger
has been deprecated, useCoreShop\Bundle\WorkflowBundle\History\HistoryLoggerInterface
insteadCoreShop\Bundle\OrderBundle\Workflow\OrderStateHistoryLogger
has been deprecated, useCoreShop\Bundle\WorkflowBundle\History\StateHistoryLoggerInterface
insteadCoreShop\Bundle\OrderBundle\Workflow\WorkflowStateManager
has been deprecated, useCoreShop\Bundle\WorkflowBundle\StateManager\WorkflowStateInfoManagerInterface
instead
- [WorkflowBundle] refactor state change logging (#835)
-
Bugs
- [PimcoreBundle] Make embedded classes work for Pimcore 5.6 (#867)
- [All] Make CoreShop 2.0.x compatible with Pimcore 5.7 (#869)
- [All] fix PHP5 sort issues by removing them (#840)
- [Shipping] if cart has no shippables, don't force carriage calculation (#863)
- [Checkout] validate cart before submitting the order (#858)
- [Frontend] remove unused property in templates (#859)
- [Permissions] prefix permission labels (#855)
- [Order] refactor creation of invoices/shipments (#852 + #849)
- [Order] introduce options for order-document-items (#848)
- [Autoloading] fix paths (#846)
- [ResourceBundle] Introduce more basic resource-types (#838 + #845)
- [AddressBundle] add missing translations (#836)
-
Features
- [Index] Introduce advanced sorting for indexes (#856)
-
Features:
-
Bugs:
- [Order] fix code-generator length (#833)
- [JS] Split JS Helpers into several regions of usability (#829)
- [Core] fix for cart-item digital product never set (#821)
- [Docs] Fix dead link (#822)
- [Resource] move settings icon to resource-bundle (#815)
- [Tracker] Update CompositeTracker::trackCheckoutStep (#810)
- Features:
- [All] Replace intval with int cast (#805)
- [Core] Store Price Dirty Detection if installed Pimcore Version >= 5.5 (#807)
- [Core] Allow Variants in Product Rule Conditions (#794)
- [Core] Add Event for Settings (#785)
- [Core] Extract CartItem Processor (#784)
- [Core] Decouple Shipping Calculator from Cart (#783)
- [Order] extract DataLoader into Pimcore Component (#782)
- [Order] rename Pimcore Grid Operators to be more CoreShop specific (#787)
- [Order] Check also for CurrencyAwareInterface in PriceFormatter Gird Operator (#788)
- [Index] Introduce Iterator Interpreter (#802)
- [Index] Introduce new Abstract function in AbstractWorker to allow handling of array data (#803)
- [Pimcore] add object_method twig function (#809)
- Bugs:
- Pimcore:
- This release makes CoreShop compatible with Pimcore 5.6.0 (#762)
- Features:
- Bugs:
- [Tracking] Fixes a Bug in the Tracking Manager when a Product does not have any categories applied (#767)
- Features:
- [Core] Remove login customer after successfully registration (#735)
- Bugs:
- [Core] Countries are removed when removing Store (#746)
- [Core] order Document State Resolver when a Document is cancelled (#738)
- [Core] safe path for folders (#742)
- [Core] Fix for StoreMailActionProcessor exception in Notification Rule (#740)
- [Shipping] is invalid when no Shipping Rules are given (#741)
- [Frontend] Inaccurate Store Filter Query in Category Controller (#744)
- CoreShop\Component\Index\Condition\RendererInterface has been deprecated in favor of CoreShop\Component\Index\Condition\DynamicRendererInterface to allow dynamic registration of condition renderers
- 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.
- 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.
- 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 useclassId
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.
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
];
Tax Rule Store relation has been removed as it makes currently no sense.
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.
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:
- totalTax
- baseTotalTax
- subtotalTax
- baseSubtotalTax
- shippingTax
- baseShippingTax
- taxes
- baseTaxes
- discountTax
- baseDiscountTax
- discountNet
- discountGross
- baseDiscountNet
- baseDiscountGross
- shippingNet
- shippingGross
- baseShippingNet
- baseShippingGross
- shippingTaxRate
- totalTax
- baseTotalTax
- taxes
- baseTaxes
BC break / New Feature
There are several deprecated class fields. After you have migrated to the latest version you also have to remove them:
- shippingGross
- shippingNet
- shippingTax
- discountGross
- discountNet
- discountTax
- baseShippingNet
- baseShippingGross
- baseShippingTax
- baseDiscountNet
- baseDiscountGross
- totalTax
- baseTotalTax
- subTotalTax
- baseSubtotalTax
- totalTax
- baseTotalTax
- shippingGross
- shippingNet
- discountGross
- discountNet
-
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
renamedCoreShop\Component\Customer\Model\UserInterface::CORESHOP_ROLE_DEFAULT
CoreShop\Component\Customer\Model\UserInterface::ROLE_SUPER_ADMIN
renamedCoreShop\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 togetIndexableName
asgetName
could eventually conflict with a non localized Pimcore Field -
BC break getEnabled in
CoreShop\Component\Index\Model\IndexableInterface
has been changed togetIndexableEnabled
asgetEnabled
could eventually conflict with a localized Pimcore Field
- 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.
- CoreShopProduct: add
- 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
-
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 fromapp/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
- remove
-
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.
- 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 implementisCartRuleValid
instead ofisValid
- Deprecated: remove
cart/add-price-rule/
static route.
- 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.
-
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.
- 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
- Nothing available