Releases: i-love-flamingo/flamingo-commerce
Releases · i-love-flamingo/flamingo-commerce
v3.12.0
Highlighted release notes
product
- Added exported method BundleConfiguration to the GraphQL DTO for the bundle product
- Deprecated struct error ProductNotFound in favour of var ErrProductNotFound
- Introduced product not found error and general error to product graphql resolver
checkout
- add config
commerce.checkout.orderService.skipCartValidationto disable cart validation that happens right before placing an order in the OrderService
search
- Breaking: fixed fake service to interpret sort options and gives away empty promotion
- removed deprecation notice from fields
AscandDescinSortOptionstruct
category
- Introduced general error to category graphql resolver
What's Changed
- chore(deps): update module golang.org/x/mod to v0.19.0 by @renovate in #585
- chore(deps): update module github.com/testcontainers/testcontainers-go to v0.32.0 by @renovate in #586
- chore(deps): update module github.com/vektra/mockery/v2 to v2.43.2 by @renovate in #566
- chore(deps): update module github.com/go-test/deep to v1.1.1 by @renovate in #583
- chore(deps): update module github.com/coreos/etcd to v3.3.27+incompatible by @renovate in #572
- fix(sourcing): use correct error to generate the message by @tessig in #588
- chore(deps): update module flamingo.me/flamingo/v3 to v3.9.0 by @renovate in #589
- chore(deps): update dependency go to v1.22.5 by @renovate in #570
- feat(checkout/orderservice): Introduce flag to skip cart validation during place order by @carstendietrich in #590
- build(deps): bump github.com/docker/docker from 27.0.3+incompatible to 27.1.0+incompatible by @dependabot in #592
- fix(product): add sorting options by @IvanMaidurov in #587
- chore: Replace github.com/pkg/errors with Go core error package by @carstendietrich in #593
- chore(deps): update module github.com/rhymond/go-money to v1.0.14 by @renovate in #591
- chore(deps): update module golang.org/x/mod to v0.20.0 by @renovate in #595
- chore(deps): update module github.com/vektra/mockery/v2 to v2.44.1 by @renovate in #594
- fix(product): extend fake search with default value by @IvanMaidurov in #598
- chore(deps): update dependency go to v1.22.6 by @renovate in #597
- chore(deps): update module golang.org/x/text to v0.17.0 by @renovate in #596
- build(deps): bump github.com/docker/docker from 27.1.0+incompatible to 27.1.1+incompatible by @dependabot in #599
- chore: bump minimum Go version to 1.22 by @carstendietrich in #603
- chore(deps): update module github.com/go-redsync/redsync/v4 to v4.13.0 by @renovate in #543
- chore(deps): update module github.com/vektra/mockery/v2 to v2.45.0 by @renovate in #601
- chore(deps): update module github.com/testcontainers/testcontainers-go to v0.33.0 by @renovate in #602
- chore(deps): update module flamingo.me/flamingo/v3 to v3.10.0 by @renovate in #604
- feat(271627): expose bundle configuration via method by @kgrigorev in #612
- chore(deps): update module flamingo.me/flamingo/v3 to v3.11.0 by @renovate in #608
- chore(deps): update module golang.org/x/text to v0.18.0 by @renovate in #606
- chore(deps): update module github.com/vektra/mockery/v2 to v2.46.1 by @renovate in #609
- chore(deps): update dependency go to v1.23.2 by @renovate in #607
- chore(deps): update dependency go to v1.23.4 by @renovate in #620
- chore(deps): update module github.com/testcontainers/testcontainers-go to v0.34.0 by @renovate in #619
- build(deps): bump golang.org/x/crypto from 0.25.0 to 0.31.0 by @dependabot in #621
- chore(deps): update module flamingo.me/dingo to v0.3.0 by @renovate in #622
- chore(deps): update module github.com/swaggo/swag to v1.16.4 by @renovate in #617
- chore(deps): update module github.com/swaggo/swag/cmd/swag to v1.16.4 by @renovate in #618
- chore(deps): update module github.com/vektah/gqlparser/v2 to v2.5.20 by @renovate in #613
- chore(deps): update module golang.org/x/mod to v0.22.0 by @renovate in #605
- chore(deps): update module flamingo.me/graphql to v1.12.0 by @renovate in #611
- build(deps): bump golang.org/x/net from 0.27.0 to 0.33.0 by @dependabot in #625
- chore(deps): update module flamingo.me/flamingo/v3 to v3.12.0 by @renovate in #626
- feat(product): unify graphql product related errors by @KarolNowakk in #630
- feat(309774): replace Redis container images with Valkey by @kgrigorev in #633
- chore: bump go version, flamingo, graphql, linter and mockery by @tessig in #635
- chore(deps): update module flamingo.me/form to v1.1.3 by @renovate in #637
- chore(deps): update module github.com/testcontainers/testcontainers-go to v0.35.0 by @renovate in #627
- chore(config): migrate renovate config by @renovate in #639
New Contributors
- @kgrigorev made their first contribution in #612
Full Changelog: v3.11.0...v3.12.0
v3.11.0
v3.11.0
search
- The fake search service now interprets the passed sort options.
cart
- add possibility to get price in main currency for a payment method
- during add to cart delivery method is now saved in context
- Fix: error throw by
collectTotals(cart)in DefaultCartBehaviour is now bubble up
product
- Fix: price in loyalty points, during calculation of loyalty charge, is now rounded mathematically according to possible currency fractions
v3.10.0
sourcing
- Breaking: Drop deprecated sourcing service
SourcingServiceDetailand all things related.
price
- Breaking: Introduce currency library http://github.com/Rhymond/go-money for more flexible rounding. All currency codes should comply to ISO4217 from now on.
product
- Introduced multiple loyalty prices for one product by adding AvailablePrices to ProductLoyalty.
- Added ActiveLoyaltyPrice to Saleable and adapted charges generation to use it instead of array
v3.9.0
search
- Introduce an Action to search result to advise the frontend to perform an action for that search different from displaying the result page.
The action model is completely open to anything, but the most common use case is to redirect certain searches directly to product detail pages or special brand landing pages.
cart
- Fix: Cart merge of bundle products was broken, bundle configuration is now correctly added to the new customer cart
- Fix: Add to cart of bundle products now only fails for missing required bundle choices. As prior passing all choices with qty of zero have been required. Now optional choices with qty of zero can be omitted.
- Fix: Correctly evaluate min / max quantities of bundle choices. Previously it was possible to add bundle choices with qty 0 even if min qty was 1.
- Breaking(In case you have implemented a custom cart service): Extend the cart service interface with
UpdateItemBundleConfigto allow updating bundles that have already been placed inside the cart. - GraphQL:
- Add new mutation
Commerce_Cart_UpdateItemBundleConfigto update bundle configs for existing cart items - Breaking Make the qty in the
Commerce_Cart_ChoiceConfigurationInputtype mandatory, previously 1 was taken as a default
- Add new mutation
checkout
- initialize place order metrics with 0 on application start to follow prometheus best practices
product
- GraphQL:
- Expose Active Option (product+qty) for bundle products
- Breaking Make the qty in the
Commerce_Product_ChoiceConfigurationInputtype mandatory, previously it was 0 which lead to taking the minimum required qty of that choice
v3.8.0
sourcing
- Introduce constant
MaxSourceQtyto indicate unlimited stock.
cart
- DefaultBehavior: consider discounts when updating cart item row prices
- Make the cart merge strategy configurable, this strategy handles how a guest cart is transformed into a customer cart.
The following strategies can be set via the configcommerce.cart.mergeStrategy:merge(default): Merge the content of the guest and customer cartreplace: Replace the customer cart with the guest cart contentnone: Don't do anything, guest cart is lost during customer sign-in.
- Telephone in Address is now deprecated. To distinguish phone number parts new fields were introduced: TelephoneCountryCode,
TelephoneAreaCode, TelephoneNumber. Changes are expected to be non-breaking.
v3.7.0
cart
- Updated the
DefaultCartBehaviourto be able to support otherCartStorageimplementations- Dropped the fake implementations of
GiftCardHandlerandVoucherHandlerto not magically add some discounts
- Dropped the fake implementations of
general
- Add .golangci.yml and github workflow
- Add .mockery.yaml config
sourcing
- Breaking
- SourcingService changed types for return values for bundle product support.
Every sourcing value is now returned per product id.
- SourcingService changed types for return values for bundle product support.
v3.6.0
cart
- Breaking: Move all calculations to cart behaviour implementation
- By moving calculation responsibility, we enable different implementation possibilities for calculations like tax before or after discounts, tax on single item or sum and different tax rounding modes instead of having it hard-coded in the flamingo cart.
- All calculation functions on cart item, shipping item, delivery and cart are now public fields for which the values must be set by the cart behaviour implementation
- The
DefaultCartBehaviourcalculates all new fields accordingly - Removed
ItemBuilder,DeliveryBuilderandBuildersince they didn't provide any meaningful functionality after removing the calculations. Please create structs directly. - Changed the GraphQL cart model accordingly.
- To help with the migration there are sed commands for the following fields in
cart/migration.sed: runfind . -type f -iname '*.go' -exec gsed -i -f migration.sed "{}" +; - Cart items
-
Old Function New Field RowPriceGrossWithDiscount() RowPriceGrossWithDiscount RowPriceGrossWithItemRelatedDiscount() RowPriceGrossWithItemRelatedDiscount RowPriceNetWithDiscount() RowPriceNetWithDiscount RowPriceNetWithItemRelatedDiscount() RowPriceNetWithItemRelatedDiscount TotalDiscountAmount() TotalDiscountAmount ItemRelatedDiscountAmount() ItemRelatedDiscountAmount NonItemRelatedDiscountAmount() NonItemRelatedDiscountAmount
-
- Shipping items
-
Old Function New Field TotalWithDiscountInclTax() PriceGrossWithDiscounts - PriceNetWithDiscounts
-
- Deliveries
-
Old Function New Field SubTotalGross() SubTotalGross SubTotalNet() SubTotalNet SumTotalDiscountAmount() TotalDiscountAmount SumSubTotalDiscountAmount() SubTotalDiscountAmount SumNonItemRelatedDiscountAmount() NonItemRelatedDiscountAmount SumItemRelatedDiscountAmount() ItemRelatedDiscountAmount SubTotalGrossWithDiscounts() SubTotalGrossWithDiscounts SubTotalNetWithDiscounts() SubTotalNetWithDiscounts GrandTotal() GrandTotal
-
- Cart
-
Old Function New Field GrandTotal() GrandTotal - GrandTotalNet SumShippingNet() ShippingNet SumShippingNetWithDiscounts() ShippingNetWithDiscounts SumShippingGross() ShippingGross SumShippingGrossWithDiscounts() ShippingGrossWithDiscounts SubTotalGross() SubTotalGross SubTotalNet() SubTotalNet SubTotalGrossWithDiscounts() SubTotalGrossWithDiscounts SubTotalNetWithDiscounts() SubTotalNetWithDiscounts SumTotalDiscountAmount() TotalDiscountAmount SumNonItemRelatedDiscountAmount() NonItemRelatedDiscountAmount SumItemRelatedDiscountAmount() ItemRelatedDiscountAmount SumAppliedGiftCards() TotalGiftCardAmount SumGrandTotalWithGiftCards() GrandTotalWithGiftCards - GrandTotalNetWithGiftCards
-
- Dispatch a
PreCartMergeEventbefore and aPostCartMergeEventafter merging a guest and customer cart when logging in - Update payment selection on cart merge with the guest carts' payment selection after applying coupons and giftcards and only if customer cart has no items
- Add possibility to have additional data in
AddToCartNotAllowederror - Deprecate
BuildAddRequestin cart service (build your own add request) - Provide
BaseCartReceiverfor fetching carts withoutDecoratedCartFactorydependency - Provide
Receiverinterface to be able to mock receiving a cart - GraphQL:
- Aggregate many input values to
Commerce_Cart_AddToCartmutation inCommerce_Cart_AddToCartInput - Add support for bundle and configurable products in
Commerce_Cart_AddToCartmutation
- Aggregate many input values to
- Added support for AdditionalData on CartItem Level for the defaultCartBehaviour.
checkout
- Add possibility to have additional data in
PaymentFlowActionTriggerClientSDK - Breaking: Disable auto canceling of orders during place order rollback, to restore old behaviour set
commerce.checkout.placeorder.states.placeorder.cancelOrdersDuringRollback: true
product
- Introduce
Labels()function onAttributeto handle translations for attributes with multiple values, will fallback toValues()function if not translated. - Introduce
Stockslice inBasicProductDatato store more accurate information about availability for each delivery code - Introduce new
BundleProductandBundleProductWithActiveChoicestypes - GraphQL:
- Add
unitCodetoCommerce_Product_VariationSelection_OptionandCommerce_Product_ActiveVariationSelection - Fix mapping of VariationSelections
- Introduce
Labelsfor attributes here as well - Extend
Commerce_Productquery with non-mandatory bundle configuration argument - Add type
Commerce_Product_BundleProductthat implementsCommerce_Productinterface and is used as bundle product graphql representation. - Change
variantionSelectionsfield in configurable products withvariantSelectionthat handles all possible combinations of multi axis configurable.
- Add
- FakeService
- Add configuration option
commerce.product.fakeservice.defaultProductswhich toggles the delivery of default test products. - Add category facet functionality to the fake
SearchServicewith default category facet items. - Add configuration option
commerce.product.fakeservice.jsonTestDataCategoryFacetItemswhich can be used to provide your own category facet items. - Add new
Stockfield to returnedSimpleProductfrom service - Add configuration option for delivery codes
commerce.product.fakeservice.deliveryCodeswhich can be used to provide different delivery codes for stock.
- Add configuration option
v3.5.0
general
- Switch to MIT License
cart
- Add convenience function to clone carts
- DefaultCartBehaviour now returns real cart clones to prevent data races on cart fields
- API
- Breaking: Update
DELETE /api/v1/cartto actually clean the whole cart not only removing the cart items (introduces new route for the previous behaviour, see below) - Add new endpoint
DELETE /api/v1/cart/deliveries/itemsto be able to remove all cart items from all deliveries but keeping delivery info and other cart data untouched
- Breaking: Update
- Add new method
SumShippingGrossWithDiscountsto the cart domain which returns gross shipping costs for the cart - When using the
ItemSplitterto split items in items with single qty (SplitInSingleQtyItems) the split discounts are reversed to make splitting the row total stable. - Breaking:
SumTotalTaxAmountnow takes taxes on shipping costs into account - Breaking: Delivery discount sum calculations
SumTotalDiscountAmount,SumNonItemRelatedDiscountAmount,SumItemRelatedDiscountAmountnow take discount on shipping costs into account- Old calculation is now in
SumSubTotalDiscountAmount.
- Old calculation is now in
CartService- Add
UpdateAdditionalDatato be able to set additional data to cart - Add
UpdateDeliveryAdditionalDatato be able to set additional data to the delivery info - Introduce new interface to be able to easier mock the whole
CartService - Add auto generated mockery mock for the
CartService - Add new field
PriceGrossofshippingItemto directly get the shipping cost incl tax (must be filled by cart adapter)
- Add
- GraphQL:
- Add new method
sumShippingGrossWithDiscountsto theCommerce_DecoratedCarttype - Add new field
sumShippingGrossto theCommerce_DecoratedCarttype - Add new field
priceGrossto theCommerce_Cart_ShippingItemtype - Add new mutation
Commerce_Cart_UpdateAdditionalData - Add new mutation
Commerce_Cart_UpdateDeliveriesAdditionalData - Add new field
customAttributesto theCommerce_CartAdditionalDatatype - Add new field
additionalDatato theCommerce_CartDeliveryInfotype - Add new type
Commerce_Cart_CustomAttributeswith method for getting key/value pairs - Breaking: Make naming convention consistent in graphql schema
Commerce_Cart_* - Breaking: Remove the fields
getAdditionalData, additionalDataKeys, additionalDeliveryInfoKeysfrom theCommerce_CartDeliveryInfotype - Breaking:
Commerce_Cart_UpdateDeliveryShippingOptionsmutation responded with slice ofCommerce_Cart_DeliveryAddressFormwhich was incorrect as we don't process any form data within the mutation. It responds now rightly only withprocessedstate.
- Add new method
- Breaking: Upgrade github.com/go-playground/form to v4, all types are fully compatible, but import paths have to be changed
checkout
- Introducing Flamingo events on final states of the place order process
- Introduce a max ttl for the checkout state machine to avoid polluting the redis with stale checkout processes, defaults to 2h
- Checkout controller: force new order id reservation if an early place happened and there was a payment issue
- API
- In case of an invalid cart during place order process we now expose the cart validation result, affected endpoints:
GET /api/v1/checkout/placeorder POST /api/v1/checkout/placeorder/refresh POST /api/v1/checkout/placeorder/refresh-blocking
- In case of an invalid cart during place order process we now expose the cart validation result, affected endpoints:
- Add new Flow Action
PaymentFlowActionTriggerClientSDKto the checkout - Breaking: Upgrade github.com/go-playground/form to v4, all types are fully compatible, but import paths have to be changed
customer
- Add mockery mocks for both
Customer/CustomerIdentityServicefor easier testing - Add
Statefield to customer address to be closer to cart address type, expose via GraphQL
price
- When marshalling
domain.Priceto JSON the amount is rounded. - Fix various rounding issues with negative prices, add all rounding modes and examples to moduel readme.
product
- Enhance the
PriceContextto allow potential delivery specific pricing - GraphQL:
- Breaking: Change
activeBaseofCommerce_Product_PriceInfofromFloattoCommerce_Price - Add
availablePricesto theCommerce_Productinterface to display potential pricing options in the frontend - Add
contextto theCommerce_Product_PriceInfomodel to be able to differ between prices
- Breaking: Change
Further GraphQL improvements, clean up of JSON API
cart
-
Added desired time to DeliveryForm
-
InMemoryCartStorage: initialize lock and storage already in Inject() to avoid potential race conditions
-
API
- Add endpoints for deleting / updating a item in the cart (DELETE/PUT: /api/v1/cart/delivery/{deliveryCode}/item)
- Breaking: Affects v1 prefixed routes, switched to a more RESTful naming and use of the correct HTTP verbs to mark idempotent operations
-
old HTTP verb old route new HTTP verb new route POST /api/v1/cart/delivery/{deliveryCode}/additem POST /api/v1/cart/delivery/{deliveryCode}/item POST/PUT /api/v1/cart/applyvoucher POST /api/v1/cart/voucher POST/DELETE /api/v1/cart/removevoucher DELETE /api/v1/cart/voucher POST/PUT /api/v1/cart/applygiftcard POST /api/v1/cart/gift-card POST /api/v1/cart/applycombinedvouchergift POST /api/v1/cart/voucher-gift-card POST /api/v1/cart/removegiftcard DELETE /api/v1/cart/gift-card POST /api/v1/cart/billing PUT /api/v1/cart/billing POST /api/v1/cart/delivery/{deliveryCode}/deliveryinfo PUT /api/v1/cart/delivery/{deliveryCode} PUT /api/v1/cart/updatepaymentselection PUT /api/v1/cart/payment-selection
-
-
GraphQL
- Update schema and resolver regarding desired time
category
- Added cue config to module
- Update fake service documentation
- FakeService
- The category fake service was added which can return a project specific category tree and categories
- Added configuration options are
fakeService.enabledandfakeService.testDataFolderto enable the fake category service and to use json files as fake categories and tree. You can find examples in the documentation of the module
checkout
- Checkout Controller, update handling of aborted/canceled payments:
- Cancel the order / restore the cart before generating the new idempotency key of the payment selection
- Resolve goroutine leak in redis locker
- Breaking Change StartPlaceOrder behaviour to always start a new one.
- Breaking Change ClearPlaceOrderProcess behaviour to be always possible (no matter on which state)
- API
- Breaking: Affects v1 prefixed routes, switched to a more RESTful naming and use of the correct HTTP verbs to mark idempotent operations
-
old HTTP verb old route new HTTP verb new route POST /api/v1/checkout/placeorder/refreshblocking POST /api/v1/checkout/placeorder/refresh-blocking
-
- Breaking: Affects v1 prefixed routes, switched to a more RESTful naming and use of the correct HTTP verbs to mark idempotent operations
customer
- GraphQL
- Extend
Commerce_Customer_Addresswith some useful fields - Extend
Commerce_Customer_Resultwith a field for querying a specific address - Breaking:
Commerce_Customer_Address: rename fieldStreetNrtoStreetNumber,lastnametolastNameandfirstnametofirstNameCommerce_Customer_Result:defaultShippingAddressanddefaultBillingAddressnow can return null if there is no default addressCommerce_Customer_PersonData: fieldbirthdayis now nullable and of typeDate.
- Extend
payment
- Introduced wallet payment method
product
- Add support for product badges
- GraphQL
- Breaking New schema for products:
Commerce_Producthas been restructured and now has three subtypes:Commerce_Product_SimpleProduct,Commerce_Product_ConfigurableProduct,Commerce_Product_ActiveVariantProduct- Product variant data, that has previously been buried in
Commerce_ConfigurableProduct.variants, has been mapped to the toplevel of each product and can be accessed directly. - Both
ActiveVariantProductandConfigurableProductprovide a new property namedvariationSelectionswhich exposes a list of possible attribute combinations for the configurable.
- Breaking New schema for products:
- FakeService
- The product fake search service is now able to return products with an active variant via
fake_configurable_with_active_variant. Variation attributes have been changed to only includecolorandsize. - Added configuration option
jsonTestDataFolderto use json files as fake products. You can find an example product under:test/integrationtest/projecttest/tests/graphql/testdata/products/json_simple.json - Added fakservice documentation to the product module.
- The product fake search service is now able to return a specific product if the given query matches the marketplace code / name of the json file of the product
- The product fake search service returns no products if it is queried with
no-results
- The product fake search service is now able to return products with an active variant via
- Expose
VariantVariationAttributesSortingondomain.ConfigurableProductWithActiveVariant - Breaking: Update stock handling: Remove magic alwaysInStock product attribute. Just Rely BasicProductData.StockLevel field instead.
sourcing
- Breaking
- Optional pointer
DeliveryInfoadded as parameter toStockProvider.GetStock
- Optional pointer
docs
- Embed swagger.json via go-bindata, so it can be used from the outside
GraphQL Enhancements & New auth module
This release mainly focuses on improving existing GraphQL queries/mutations, general maintenance, and the switch from the deprecated oauth module to the new auth implementation.
product
- Switch module config to CUE
- Extended product model with loyalty earnings
- Added Rest API route to get products
- GraphQL
- Added values field of Attribute to the schema
- exposed loyalty earnings
- Added facets to fake search service
- Expose unit of product variant attributes
- fake: add loyalty pricing for
fake_simpleproduct, introducedfake_fixed_simple_without_discountsproduct
cart
- Breaking: Moved to new flamingo auth module, breaks several interfaces which previously relied on the OAuth module
- Breaking
- Cart item validation now requires the decorated cart to be passed to assure that validators don't rely on a cart from any other source (e.g. session)
- Session added as a parameter to interface method
MaxQuantityRestrictor.Restrict - Session added as a parameter to
RestrictionService.RestrictQty - Changed no cache entry found error for cartCache
Invalidate,DeleteandDeleteAlltoErrNoCacheEntry
- Switch module config to CUE
- GraphQL
- Add new mutation to set / update one or multiple delivery addresses
Commerce_Cart_UpdateDeliveryAddresses - Add new mutation to update the shipping options (carrier / method) of an existing delivery
Commerce_Cart_UpdateDeliveryShippingOptions - Add new mutation to clean current users cart
Commerce_Cart_Clean - Add new query to check if a product is restricted in terms of the allowed quantity
Commerce_Cart_QtyRestriction - Add new field
sumPaymentSelectionCartSplitValueAmountByMethodsto theCommerce_Cart_Summarywhich sums up cart split amounts of the payment selection by the provided methods. - Expose PaymentSelection.CartSplit() via GraphQL, add new types
Commerce_Cart_PaymentSelection_SplitandCommerce_Cart_PaymentSelection_SplitQualifier - Breaking: renamed the following GraphQL types
- type
Commerce_Cart_BillingAddressFormDatais nowCommerce_Cart_AddressForm - input
Commerce_BillingAddressFormInputis nowCommerce_Cart_AddressFormInput - type
Commerce_Chargeis nowCommerce_Price_Charge - type
Commerce_ChargeQualifieris nowCommerce_Price_ChargeQualifier - input
Commerce_ChargeQualifierInputis nowCommerce_Price_ChargeQualifierInput
- type
- Add new mutation to set / update one or multiple delivery addresses
- Adjusted log level for cache entry not found error when trying to delete the cached cart
customer
- Breaking: renamed
GetIdtoGetIDindomain.Customerinterface - introduced new
CustomerIdentityServiceto retrieve authenticated customers byauth.Identity - Breaking: removed
CustomerServiceplease useCustomerIdentityService - GraphQL: Add new customer queries:
Commerce_Customer_Statusreturns the customer's login statusCommerce_Customerreturns the logged-in customer
checkout
- Deprecate Sourcing service port in checkout (activate if required with setting
commerce.checkout.activateDeprecatedSourcing) - Make cart validation before place order optional with configuration
- State Machine
- Add additional metrics to monitor place order flow
- flamingo_commerce_checkout_placeorder_starts
- flamingo_commerce_checkout_placeorder_state_run_count
- flamingo_commerce_checkout_placeorder_state_failed_count
- Add a step to validate the payment selection if needed. The step provides a port to be implemented if needed.
- Add additional metrics to monitor place order flow
- Expose place order endpoints also via rest
- Checkout controller, update to the error handling:
- In case of a payment error, the checkout controller will now redirect to the checkout/review action instead of just rendering the matching template on the current route.
- Same applies in case of an error during place order, the checkout controller will now redirect to the checkout step.
- In both cases the error will be stored as a flash message in the session before redirecting, the target action will then receive it and pass it to the template view data.
search
- Switch module config to CUE
- Update
paginationmodule configuration. Usecommerce.paginationnamespace for configuration now. - GraphQL
- Breaking simplified Commerce_Search_SortOption type
- Breaking use GraphQL specific search result type
- Added facets resolver
category
- GraphQL
- Breaking moved GraphQL
dtopackage tocategorydto
- Breaking moved GraphQL
docs
- Add Swagger/OpenAPI 2.0 specification to project, using swaggo/swag
sourcing - Add a new "sourcing" module that can be used standalone. See sourcing/Readme.md for more details
w3cdatalayer
- Breaking: Switch from flamingo
oauthmodule to the newauthmodule, to keep w3cdatalayer working please configure the newauthmodule accordingly
order
- Breaking: removed interface
CustomerOrderServiceplease useCustomerIdentityOrderService - Update config path:
order.useFakeAdapterstocommerce.order.useFakeAdapter