ÃÛ¶¹ÊÓƵ Commerce B2B release notes
These release notes for the B2B extension capture additions and fixes that ÃÛ¶¹ÊÓƵ has added during a release cycle, including:
New features
Fixes and improvements
Known issues
B2B 1.5.0
October 30, 2024
[Supported]{class="badge informative" title="Supported"} ÃÛ¶¹ÊÓƵ Commerce versions 2.4.7-p3+ and 2.4.6-p8+ security patch releases.
Compatible with ÃÛ¶¹ÊÓƵ Commerce versions 2.4.8-beta1, 2.4.7 to 2.4.7-p2, 2.4.6 to 2.4.6-p7
The B2B v1.5.0 release includes new features, quality improvements, and bug fixes.
Company Management
Company Management—Merchants can now view and manage ÃÛ¶¹ÊÓƵ Commerce companies as hierarchical organizations by assigning companies to designated parent companies. After a company is assigned to a parent, the parent company administrator can manage the company account. Only authorized Admin users can add and manage company assignments. For details, see Manage company hierarchy.
-
Add and manage company assignments from the new Company Hierarchy section on the Company Account page in the Admin.
-
Sort and filter companies by the new Company Type setting. In the companies grid, the Company Type column indicates whether a company is an individual company or part of organizational hierarchy (parent or child).
Manage company configuration at scale—Quickly change company configuration settings for selected companies using the Change company setting bulk action now available when managing companies from the Companies or Company Hierarchy grid. For example, if you create a new shared catalog for a group of companies, you can change the shared catalog configuration in a single action instead of editing each company individually.
API Developers can use the new Company Relations REST API endpoint /V1/company/{parentId}/relations
to create, view, and remove company assignments. See in the Web API Developer Guide.
Company Accounts
Multi-company assignment—Simplify company account access for company users by assigning a user to multiple companies. For example, if you have a buyer that orders from multiple company sites, create a single account and assign all companies the buyer works with to that account. Then, the buyer can log in one time, and switch between company accounts by choosing the company from the storefront.
Company scope selector—Provides ability for company users that are assigned to multiple companies to change companies on the storefront. When the scope is switched, the data updates to show the information based on the new company context. For example, if the new company uses a different shared catalog, the company user sees products, prices, and other information based on the new shared catalog. Content related to orders, quotes, quote templates also updates based on the context of the selected company.
Company administrators can now add company users from the storefront. Previously, Commerce logged an error when an Admin user tried to add a new user: CRITICAL: Error: Call to a member function __toArray() on null in app/code/Magento/LoginAsCustomerLogging/Observer/LogSaveCustomerObserver.php:123
.
Quotes and Quote Templates
Improvements to quoting capabilities help Buyers and Sellers manage quotes and quote negotiation more effectively.
Quote templates—Buyers and sellers can now streamline the quote process by creating reusable and customizable quote templates. Using quote templates, the quote negotiation process can be completed once, and buyers can generate pre-approved linked quotes for recurring orders instead of going through the quote negotiation process for each order. Quote templates extend the existing quote functionality by adding the following advanced features:
- Order thresholds allow sellers to set minimum and maximum order commitments, ensuring the buyer adhere to agreed-upon purchasing volumes.
- Setting minimum and maximum item order quantities provides the buyer with the flexibility to adjust order quantities on the linked quote without requiring a new template or further negotiation.
- Track the number of linked quotes generated and successfully completed orders to gain insights into the fulfillment of negotiated agreements.
- Linked quotes are pre-approved quotes that the buyer generates from an active quote template to submit recurring orders based on the terms negotiated in the quote template.
Improvements to existing quote capabilities
-
Updated Commerce Access Control List (ACL) rules allow B2B managers and supervisors to manage quotes and quote templates of subordinate users. Separate rules support granular configuration for view, edit, and delete access.
-
Save Quote as Draft—When creating a quote request from the shopping cart, buyers can now save the quote as a draft so that they can review and update it before initiating the quote negotiation process with the seller. The draft quote does not have an expiration date. Buyers can review and update draft quotes from the My Quotes section of their account dashboard.
-
Rename Quote—Buyers can now change a quote name from the Quote detail page by selecting the Rename option. This option is available to authorized buyers when they are editing the quote. Name change events are recorded in the Quote History Log.
-
Duplicate Quote—Buyers and sellers can now create a new quote by copying an existing quote. A copy is created from the Quote detail view by selecting Create Copy on the Quote detail view in the Admin or the Storefront.
-
Move quote item to requisition list—Buyers now have the flexibility to remove products from a quote and save them to a requisition list if they decide not to include them in the quote negotiation process.
-
Remove multiple products from a quote—On quotes with a large number of products, buyers can now remove multiple products from the quote by selecting them and using the Remove option from the Actions control on the Quote detail page. In previous releases, a buyer had to delete products one at time.
-
Line item discount locking—During quote negotiation, sellers can use line item discount locking for more flexibility when applying discounts during the quote negotiation process. For example, a Seller can apply a special line item discount to an item and lock the item to prevent further discounting. When an item is locked, the item price cannot be updated when a quote-level discount is applied. See Initiate quote for a buyer.
Fixes for existing quote capabilities
-
Merchants clicking the Print button in the Quote detail view in the Admin are now prompted to save the quote as a PDF. Previously, merchants were redirected to a page that contained quote details.
-
Previously when sending a customer quote with
0
percentage and changing quantity, the admin throws an exception but saved the quantity. After this fix applies, for the0 percentage
proper exception with a message will be thrown. -
During quote negotiation, a seller can now specify a
0%
discount in the Negotiated Quote quote discount field and send the quote back to the buyer. Previously, if the seller entered a 0% discount and sent the quote back to the buyer, the Admin returned anException occurred during quote sending
error message. -
ReCaptcha validation now works correctly during the checkout process for a B2B quote when ReCaptcha V3 is configured for storefront checkout. Previously, the validation failed with a
recaptcha validation failed, please try again
error message.
Purchase Orders
Purchase orders can no longer be placed by a user associated with the company after the company has been blocked. Previously, a user associated with the company could place purchase orders when the company was blocked.
B2B v1.4.2-p3
October 8, 2024
[Supported]{class="badge informative" title="Supported"} ÃÛ¶¹ÊÓƵ Commerce 2.4.7-p3+ and 2.4.6-p8+ security patch releases.
Added compatibility with ÃÛ¶¹ÊÓƵ Commerce 2.4.7-p3+ and 2.4.6-p8+ security patch releases.
Includes the security fixes documented in .
B2B v1.4.2-p2
[Supported]{class="badge informative" title="Supported"} ÃÛ¶¹ÊÓƵ Commerce 2.4.7-p2+ and 2.4.6-p7+ security patch releases.
Added compatibility with ÃÛ¶¹ÊÓƵ Commerce 2.4.7-p2+ and 2.4.6-p7+ security patch releases.
Includes the Security fixes documented in Security Bulletin xxxx.
B2B v1.4.2-p1
August 9, 2024
[Supported]{class="badge informative" title="Supported"} ÃÛ¶¹ÊÓƵ Commerce 2.4.7-p1+ and 2.4.6-p6+ security patch releases.
Added compatibility with ÃÛ¶¹ÊÓƵ Commerce 2.4.7-p1+ and 2.4.6-p6+ security patch releases.
B2B v1.4.2
October 10, 2023
[Supported]{class="badge informative" title="Supported"} ÃÛ¶¹ÊÓƵ Commerce version 2.4.7 and version from 2.4.6 to 2.4.6-p5.
The B2B v1.4.2 release includes quality improvements and bug fixes.
If a Seller creates a buyer quote that includes a product SKU not available in the shared catalog associated with the buyer company, the system displays the error message The SKU you entered is not available in the shared catalog. Please check the SKU and try again
. The Seller cannot save the quote until they remove the product that is not available. Previously, the quote was saved with the unavailable SKU included, and the quote failed to load on the storefront.
B2B v1.4.1
August 7, 2023
[Supported]{class="badge informative" title="Supported"} ÃÛ¶¹ÊÓƵ Commerce 2.4.6-p2. Compatible with ÃÛ¶¹ÊÓƵ Commerce 2.4.7-beta1.
The B2B v1.4.1 release includes quality improvements and bug fixes.
Purchase orders can no longer be placed by a user associated with the company after the company has been blocked. Previously, a user associated with the company could place purchase orders when the company was blocked.
Product backordered status is now displayed correctly on the storefront. Previously, products that were available for shipment were incorrectly identified as backordered.
If the company registration form includes a customer file type attribute, the file uploaded during the registration process is now included in the account information for the Company Administrator after the company is created. Previously, the attachment was missing.
The swatch selector for a configurable product is now displayed as expected in the requisition list item configuration page. Previously, the swatch selector was displayed as a dropdown field in the requisition list item configuration page.
When using the to return company details, results are now returned successfully without error.
B2B v1.4.0
June 13, 2023
[Supported]{class="badge informative" title="Supported"} ÃÛ¶¹ÊÓƵ Commerce 2.4.6-p1. Compatible with ÃÛ¶¹ÊÓƵ Commerce 2.4.7-beta1
This release includes new capabilities and enhancements for B2B negotiable quotes and multiple bug fixes.
Added compatibility with ÃÛ¶¹ÊÓƵ Commerce 2.4.7-beta1.
Seller initiated quotes—Sellers can now initiate a quote for a buyer directly from the Quote and Customer grids in the Admin. This capability streamlines the quote process and reduces complexity for customers. If a customer has not initiated an order, a seller can quickly create a quote on behalf of the customer and start the negotiation process. Previously, quotes could only be created from the storefront by the buyer, or by a seller logged in as the customer.
Line item discounts and negotiation— Within a quote, B2B buyers and sellers can now negotiate at the line item level, applying discounts and exchanging notes until an agreement is reached. Note creation and updates are included in the line item and quote history to track communication. Previously, buyers and sellers could only exchange notes and apply discounts at the quote level.
ÃÛ¶¹ÊÓƵ Commerce now displays correct details during payment when the Purchase Orders option is enabled and a virtual quote that was created with the PayPal payment option has been selected. Previously, totals were displayed as zero under these conditions.
Validation errors no longer occur when you try to save a company with a credit limit that exceeds 999. Previously, for company credit limits greater than 999, ÃÛ¶¹ÊÓƵ commerce inserted a comma separator, which caused a validation error that prevented updates from being saved.
The selected shipping address now remains unchanged when you place an order with a negotiable quote. Previously, when you placed an order, the selected shipping address was changed to the default shipping address.
In the Store Configuration settings for B2B Features, the Enable Shared Catalog direct products price assigning field is now disabled automatically. On the storefront, it is hidden when the Enable Company setting or Enable Shared Catalog setting is set to No.
When creating a company account from the storefront, Commerce now validates the email address before processing the company registration. If the email address is invalid, the operation fails and no account updates are processed. Previously, a customer account was created even if the request to create a company account failed because of an invalid email address.
Product SKUs that include double quotation marks in the Shared Catalog and pricing structure no longer cause errors in the Admin.
Updated the Varnish configuration for the Commerce application to prevent Guest users from seeing data from other customer groups.
Known issue
If you install or upgrade B2B 1.4.0 on ÃÛ¶¹ÊÓƵ Commerce version 2.4.6-p1, the following error occurs:
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Root composer.json requires magento/extension-b2b 1.4.0 -> satisfiable by magento/extension-b2b[1.4.0].
- magento/extension-b2b 1.4.0 requires magento/security-package-b2b 1.0.4-beta1 -> found magento/security-package-b2b[1.0.4-beta1] but it does not match your minimum-stability.
Installation failed, reverting ./composer.json and ./composer.lock to their original content.
You can fix this issue by adding manual dependencies for the B2B security package by adding manual dependencies for the B2B security package with a . For instructions, see the ÃÛ¶¹ÊÓƵ Commerce Knowledge Base.
B2B v1.3.5-p8
October 8, 2024
[Supported]{class="badge informative" title="Supported"} ÃÛ¶¹ÊÓƵ Commerce 2.4.6-p8+ security patch releases.
Added compatibility with the ÃÛ¶¹ÊÓƵ Commerce 2.4.6-p8 security patch releases.
Includes the security fixes documented in .
B2B v1.3.5-p7
August 9, 2024
[Supported]{class="badge informative" title="Supported"} ÃÛ¶¹ÊÓƵ Commerce 2.4.6-p7+ security patch releases.
Added compatibility with the ÃÛ¶¹ÊÓƵ Commerce 2.4.6-p7 security patch releases.
B2B v1.3.5
March 14, 2023
[Supported]{class="badge informative" title="Supported"} ÃÛ¶¹ÊÓƵ Commerce 2.4.0 - 2.4.6 and newer versions
Released B2B version 1.3.5-p2 to support compatibility with ÃÛ¶¹ÊÓƵ Commerce 2.4.6-p2.
Released B2B version 1.3.5-p1 to support compatibility with ÃÛ¶¹ÊÓƵ Commerce 2.4.6-p1.
Added support for ÃÛ¶¹ÊÓƵ Commerce 2.4.6.
ÃÛ¶¹ÊÓƵ Commerce now displays correct details during payment when the Purchase Orders option is enabled and a virtual quote that was created with the PayPal payment option has been selected. Previously, totals were displayed as zero under these conditions.
The list of customer groups for the Allow Browsing Category setting no longer contains customer groups that are related to shared catalogs.
The Tax/VAT Number customer attribute now works as expected with company admin accounts on both the Admin and storefront. Custom Tax/VAT attributes are no longer required to create a company account. Previously, when a merchant created a company account with a custom Tax/VAT attribute, ÃÛ¶¹ÊÓƵ Commerce threw a validation error on both the storefront and Admin.
Disabling the shared catalog feature on a specific scope now works correctly. Previously, ÃÛ¶¹ÊÓƵ Commerce set an invalid scope when a merchant saved shared catalog configuration.
Admin users can now save customer custom attribute values for company users. Previously, customer custom attributes for company users could not be saved.
Performance issues are resolved with the validation of company permissions provided through GraphQL when many company permissions are already assigned.
ÃÛ¶¹ÊÓƵ Commerce no longer throws an error on the cart page when Quick Order is used to add a product in a quantity that exceeds available inventory.
The performance of SELECT
company permissions operations has improved.
Category queries now return product prices according to store configuration settings when there are no category permissions explicitly set on the category being queried.
The Place Order button now works as expected when completing a purchase with an approved quote request. Issues with the negotiable quote negotiableQuoteCheckoutSessionPlugin
plugin have been resolved.
B2B v1.3.4-p10
October 9, 2024
[Supported]{class="badge informative" title="Supported"} ÃÛ¶¹ÊÓƵ Commerce 2.4.0 and newer versions
Added support for ÃÛ¶¹ÊÓƵ Commerce 2.4.5-p10.
Includes the security fixes documented in .
B2B v1.3.4
August 9, 2022
[Supported]{class="badge informative" title="Supported"} ÃÛ¶¹ÊÓƵ Commerce 2.4.0 and newer versions
Added support for ÃÛ¶¹ÊÓƵ Commerce 2.4.5.
ÃÛ¶¹ÊÓƵ Commerce no longer sends email notifications each time an existing Company is updated by an API call. Emails are now sent only when a company is created.
ÃÛ¶¹ÊÓƵ Commerce now correctly calculates a grand total of a negotiable quote when the Enable Cross Border Trade tax calculation setting is enabled.
Configurable products are now moved to the last position in the product listing after stock is updated when the Move out of stock to the bottom setting is enabled. A new custom database query is implemented to ensure that the Elasticsearch index sort order now honors the Admin-enabled sort order. Previously, configurable products and their child products were not moved to the bottom of the list when this setting was enabled.
Purchase Order email now honors the email sending setting of each website in a multi-site deployment. A check for the Disable Email Communications setting is added to the custom logic for email queues. Previously, ÃÛ¶¹ÊÓƵ Commerce did not honor the email sending setting for the secondary website.
The title of the SKU field of the Quick Order page is changed for clarity.
ÃÛ¶¹ÊÓƵ Commerce now displays a more informative error message when a shopper enters an invalid SKU in the Enter SKU or Product Name field.
The Account Created in field for a company administrator now retains its value as expected after you save the company.
The customer
query no longer returns empty results when it retrieves requisition lists that are filtered by uid
.
Added a plugin before the collectQuoteTotals
call to ensure that store credits are applied only once.
Customers are now redirected to the login page when their account is deleted by an administrator from the Admin. Previously, ÃÛ¶¹ÊÓƵ Commerce threw an error. The plugin (SessionPlugin
) code block is now inside the ³Ù°ù²â…c²¹³Ù³¦³ó
block. Previously, this code was not wrapped inside the generic exception-handling block.
On the Quick Order page in mobile mode, pressing Enter after entering a valid product name or SKU now takes the shopper to the next field as expected.
Company name is now visible as expected in the billing and shipping address sections of the checkout workflow.
Store credit is now unavailable when the Zero Subtotal Checkout payment method is disabled. Previously, the Store Credit checkbox was not functional during order placement from the Admin. The application did not place the order with the store credit and displayed this error: The requested Payment Method is not available
.
B2B v1.3.3
August 9, 2022
[Supported]{class="badge informative" title="Supported"} ÃÛ¶¹ÊÓƵ Commerce 2.4.0 and newer versions
Added support for ÃÛ¶¹ÊÓƵ Commerce 2.4.4.
The time required to upgrade from ÃÛ¶¹ÊÓƵ Commerce 2.3.x to ÃÛ¶¹ÊÓƵ Commerce 2.4.x in deployments with more than 100,000 company roles has been substantially reduced.
The POST V1/order/:orderId/invoice
request now supports the creation of partial invoices when the Payment on Account payment method is enabled. Previously, ÃÛ¶¹ÊÓƵ Commerce threw this error: An invoice for partial quantities cannot be issued for this order. To continue, change the specified quantity to the full quantity
.
PayPal Payflow Pro now works as expected with B2B negotiable quote when the customer’s cart contains other products. ÃÛ¶¹ÊÓƵ Commerce now successfully processes the order and sends an email to the customer as expected. Previously, ÃÛ¶¹ÊÓƵ Commerce threw a fatal error and sent a confirmation email to the customer that contained zero values.
Pagination is now correctly displayed on catalog search result page after excluding some products in shared catalog.
Customer custom attributes are now saved as expected when creating or saving a company user in the Admin.
The Submit button on the Create New Company form is now disabled after one click to prevent multiple form submissions. Previously, you could submit this form multiple times by clicking this button repeatedly, which generated an error.
ÃÛ¶¹ÊÓƵ Commerce no longer displays the reorder link on the storefront when a shopper logs into a store for which reorders have been disabled.
Quick Order search by SKU is now case-insensitive when shared catalog is enabled.
You can now update a file for a customer attribute when creating a company. Previously, when you tried to create a company with an attachment of type File
, ÃÛ¶¹ÊÓƵ Commerce did not create the company and logged this error in the exception log: Something went wrong while saving file
.
You can now create a company with a customer account that has a custom attribute with a (File
) or (Image
) type. Previously, if the account had one of these customizable options, the Company edit page loader did not resolve, which prevented the editing of company details.
The products
query now returns an accurate total_count
field when shared catalog is enabled.
You can now update a file for a customer attribute when creating a company. Previously, when you tried to create a company with an attachment of type File
, ÃÛ¶¹ÊÓƵ Commerce did not create the company and logged this error in the exception log: Something went wrong while saving file
.
The Company Configuration and Create Company pages now work as expected after you disable an online shipping method. Verification has been added to prevent the attempted processing of disabled Shipping modules. Previously, ÃÛ¶¹ÊÓƵ Commerce displayed this error: Type Error occurred when creating object: Magento\CompanyShipping\Model\Source\ShippingMethod, Too few arguments to function Magento\CompanyShipping\Model\Source\ShippingMethod::__construct(), 1 passed in /var/www/html/elmtup/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php on line 121 and exactly 2 expected
.
The Category page now displays consistent product data while permissions are being generated during partial indexing. A new partial indexer for directory permissions has been added to this process. Previously, the data displayed while the indexer ran was incorrect.
The categoryList
query now returns the correct number of products when catalog permissions are used and products are assigned to a shared catalog.
The categoryList
query now respects category permissions and returns only permitted categories. Previously, it returned all assigned and unassigned categories.
The rest/V1/company/{id}
request now returns is_purchase_order_enabled
attribute values as expected.
Custom customer attributes are now displayed as expected in the Company Admin tab.
The My Wish List block on the My Account page is now displayed as expected for Company Admins and Company Users.
Quick Order errors are no longer displayed in the shopping cart. Previously, ÃÛ¶¹ÊÓƵ Commerce displayed this error in the shopping cart when the SKU was not found in the catalog: The SKU was not found in the catalog
.
Shared catalog save operations have been optimized to execute faster. Previously, saving a shared catalog with many customer groups could take several minutes.
ÃÛ¶¹ÊÓƵ Commerce now deletes all subcategory permissions from the sharedcatalog_category_permissions
table when the parent category is deleted. Previously, only the parent category data was removed.
B2B v1.3.2
August 29, 2022
[Supported]{class="badge informative" title="Supported"} ÃÛ¶¹ÊÓƵ Commerce 2.4.0 and newer versions
Added support for ÃÛ¶¹ÊÓƵ Commerce 2.4.3.
ÃÛ¶¹ÊÓƵ Commerce now successfully sends update emails about expired negotiable quotes. Previously, when a negotiable quote expired, ÃÛ¶¹ÊÓƵ Commerce did not send update emails.
ÃÛ¶¹ÊÓƵ Commerce now successfully sends update emails about soon to expire and expired negotiable quotes when a cron
job is missing.
Company
The Create New Company Account page country dropdown field no longer lists empty option values. Previously, the first two option values and the country code AN
were empty.
Clicking the Return button for an order that was created by a company user now redirects an administrative user to the Create Return page as expected. Previously, the administrator was redirected to the Order History page.
ÃÛ¶¹ÊÓƵ Commerce no longer fails with an out-of-memory error when executing the app/code/Magento/PurchaseOrder/Setup/Patch/Data/InitPermissions.php::apply
method during bin/magento setup:upgrade
. Previously, ÃÛ¶¹ÊÓƵ Commerce did not use batch size for collection when initializing permissions, but instead loaded a collection of all company roles.
Company users can now edit and update customer custom attribute values. Previously, these attributes did not bind properly with the create and edit user form. A company user could enter different attribute values, but ÃÛ¶¹ÊÓƵ Commerce did not save these values correctly.
The resource tree for company role permissions can now be translated as expected. Previously, the permissions tree was not translated even though valid translation files were present.
ÃÛ¶¹ÊÓƵ Commerce now saves custom customer attribute values for B2B users as expected. Previously, creating a company account that contained custom customer attributes triggered a template error, and ÃÛ¶¹ÊÓƵ Commerce did not successfully load the form. Adding an argument to the layout of company_create_account
resolved this issue.
Company user filters such as Show All Users, Show Active Users, and Show Inactive Users now work as expected. Previously, filtering actions on the company user page caused a JavaScript error.
Company credit
Administrators with restricted accounts that include only website-level privileges can now create a company that uses a different currency than the website.