The Operations Portal now includes a configurable setting that automatically merges guest shopping cart items with a customer's previous logged-in session cart. This feature eliminates the frustration of losing items when customers browse as guests before logging into their accounts.
The functionality is controlled through the "AutoMergeGuestCartOnLogin" setting in the Operations Portal Settings screen. When enabled, the system automatically combines items from both the customer's previous authenticated session and their current guest session upon login. This creates a seamless shopping experience where customers retain all their selected items regardless of their authentication status when they were added.
This enhancement addresses common e-commerce scenarios where customers may start shopping before logging in, or when their sessions expire during extended browsing. The feature preserves customer intent and reduces cart abandonment by ensuring no selected items are lost during the authentication process.
The Auto-Merge Guest Cart feature is now available through the Operations Portal configuration. For a detailed walkthrough of the setup process and functionality, refer to the demonstration video that shows the complete configuration and user experience flow.
https://youtu.be/i8wIrdElVok
Tickets
KOD-23784: Manage discontinued products and reactivation
Regression Tests
Case 1
Verify that product indexing still works correctly with the business event disabled. For example, if I update a product, check that the corresponding field in the search tab of the products page is updated.
Tests
Case 1
Ensure BusinessEvent with code searchProductPrepareDocument is enabled ( isActive = 1 ).
Enable the Rule with code RLU_DEFAULT_018 . Rules can be found in the automation app and this rule is under Inline Interceptors.
Make some edit such as changing the description for a product WITHOUT any SKU status 'X'.
Check application logs for the interceptor firing.
Verify the product's showPublic field on the search tab of the product page is unchanged.
Expected Result: Interceptor fires, but since no SKUs have status 'X', no changes are made to the document.
Case 2
Discontinued Product WITH Inventory - Should Be Visible.
Setup:
Find or create a product with at least one SKU where:
status = 'X' (discontinued)
inventoryLevel > 0 (has inventory)
Warehouse is active ( isActive = true )
Warehouse is displayable ( isDisplay = true )
Warehouse is NOT a customer warehouse
Warehouse has no company code (or empty string)
Steps:
Note the product's current showPublic value on the product search page.
Make some edits to the product (such as editing the description).
Use the search page to find the product and check the showPublic field.
Expected Result:
showPublic = true on the product search page.
Now do the same thing but make the inventory of the sku be 0. Make some edit to the product. Then showPublic should be false.
Now add back inventory to that sku and make another edit to the product. showPublic should be true again.
Now you can do the same test with a warehouse that is not active, or display is false, or is a customer warehouse, or is linked to a company. Nothing should be changed in any of these cases.
Case 3
Inventory Fully Reserved
Setup:
Discontinued SKU (status 'X') where:
inventoryLevel = 100
quantityReserved = 100
quantityCommitted = 0
Available = 100 - 100 - 0 = 0
Change something on the product.
Expected Result: Product should be hidden ( showPublic = false ) because available inventory is 0.
Setup:
Discontinued SKU (status 'X') where:
inventoryLevel = 100
quantityReserved = 30
quantityCommitted = 20
Available = 100 - 30 - 20 = 50
Change something on the product.
Expected Result: Product should be visible ( showPublic = true ) because available inventory > 0.
Discontinued SKU (status 'X') where:
inventoryLevel = 50
quantityReserved = 40
quantityCommitted = 30
Available = 50 - 40 - 30 = -20
Change something on the product.
Expected Result: Product should be hidden ( showPublic = false ) because available inventory <= 0.
Test 4
Multiple Discontinued SKUs - One Has Inventory.
Setup:
Product with 3 SKUs:
SKU 1: status 'X', inventoryLevel = 0
SKU 2: status 'X', inventoryLevel = 50
SKU 3: status 'X', inventoryLevel = 0
All warehouses meet the filter criteria.
Change something on the product.
Expected Result: Product should be visible ( showPublic = true ) because at least one discontinued SKU has inventory.
Setup:
Product with 2 SKUs:
SKU 1: status 'X' (discontinued), inventoryLevel = 0
SKU 2: status 'A' (active), inventoryLevel = 100
Change something on the product
Expected Result:
The rule does NOT modify showPublic - product stays visible .
KOD-28311: Search bug when searching Vendors
Regression Tests
Case 1
Navigate to the Vendors page.
Verify: The "Code" column is displayed and shows vendor codes correctly.
Verify: The "Name" column is displayed and shows vendor names correctly.
Tests
Case 1
Open Vendors Page on the Search tab, note any vendor code
Enter code in the search field.
Verify: Matching vendor appears in results.
Case 2
Open Vendors Page on the Search tab, note any vendor name
Enter name in the search field.
Verify: Matching vendor appears in results.
KOD-28902: Rollout
KOD-29210: Approval Workflow Questions
Tests
Case 1
Test direct role assignment for orderApprover and secondOrderApprover, across:
approve flow.
not-approve flow.
edit flow.
Case 2
Test permission-group-based (orderApprover and secondOrderApprover roles) through role assignment for orderApprover and secondOrderApprover, across:
approve flow.
not-approve flow.
edit flow. (edited and approved order should be transitioned to 'Received'(or any completed) status) .
Generate a return order from an original order on the customer side.
Add an item to it and make sure everything is working as expected:
Item should be added to the return order successfully.
For creating a return you need to create from an invoiced order (And the item you are trying to return should have quantityShipped > 0 ).
Case 2
Generate a return order based on delivery address.
Then try to add an item to that return.
Here you could typically end up with more than one return item depending on the shipped quantity available from all invoiced orders.
Make sure the item(s) are added correctly to the return.
KOD-29443: Investigate upc code scanning in customer app
KOD-29640: Kodaris Migration Scripts
KOD-29641: Provide technical documentation of budget recalculation jobs
KOD-29680: Add action for creating a service ticket
KOD-29776: Update with latest scripts, API interactions, etc.
KOD-29864: Capture customer vehicle data
KOD-29897: Discount by Item
KOD-29950: OA: Supersede Pricing Issue - System Not Updating Price After Part Number Supersede
KOD-30009: Have "County" as Available Column Option on Opportunities
Regression Tests
Case 1
Verify that the existing fields on the Search tab (Opportunities) are working correctly.
Verify that the existing fields on the Data tab (Opportunities) are working correctly.
Tests
Case 1
Verify that the County field is displayed on the Search tab.
Verify that the County field is displayed on the Data tab.
Verify that sorting by County works on the Search (Solr) tab.
Verify that searching by County works on the Search (Solr) tab.
Verify that editing, filtering, and sorting for the County field are not supported on the Data tab.
KOD-30031: Add column sorting to Interceptors, Workflows, and Inline Interceptors tables
Regression Tests
Case 1
Make sure the workflows, interceptors and inline interceptors tables still load properly.
Tests
Case 1
In all 3 tables, make sure to add all the columns and notice that only Rule ID and Rule Order are sortable (you should not see the arrow in any of the other columns).
Click the arrow and notice it sorts by ascending and click again and it will sort by descending order, click it a third time and the sort goes away.
KOD-30073: Requested Template for Price List Download
Regression Tests
Case 1
Navigate to the Commerce Site and log in as a customer user.
Navigate to Catalogs (/spcu/catalogs) and click on a catalog that has products with prices.
Click the "Actions" dropdown and select "Export Price List".
In the Export Price List modal, select a CSV template from the template dropdown.
Check "Attach file to email" and click "Confirm".
Verify the confirmation message: "The price book is being generated and will be sent to your email shortly."
Verify the CSV email is received with the correct product codes and formatted prices
Navigate to the Employee Portal (Operations) and log in as an employee user.
Navigate to the company catalog / price book section for a test company.
Select a catalog and trigger the CSV price book export for the company.
Verify the CSV file is generated and the email notification is sent to the employee.
Verify the CSV contains the expected product codes and formatted prices from the catalog.
Tests
Case 1
Navigate to the Commerce Site and log in as a customer user.
Navigate to Catalogs (/spcu/catalogs) and click on a catalog that has the PDF price book template configured.
Click the "Actions" dropdown and select "Export Price List".
In the Export Price List modal, select the PDF template from the template dropdown.
Check "Attach file to email" and click "Confirm".
Verify the confirmation message: "The price book is being generated and will be sent to your email shortly."
Open the PDF from the email and verify the company name and today's date are populated in the header
Verify product prices are populated (not showing priceProductCode=XXX tokens or - for products that have prices).
Repeat steps 2-4, but leave "Attach file to email" unchecked and click "Confirm".
Verify the email notification is received without the PDF attachment.
Verify the PDF is still stored as a CustomerFile under the selected company.
Case 2
Navigate to the Employee Portal (Operations) and log in as an employee user.
Navigate to the company catalog / price book section for a test company.
Select the PDF price book catalog and trigger the PDF generation for the company.
Verify an email notification is received at the employee email address.
Open the PDF and verify the company name, date, and section headers render correctly.
Verify product prices from the catalog are correctly replaced in all sections (Wallboard, Steel Framing, Insulation, etc.).
Verify the PDF is stored as a CustomerFile under the selected company.
Repeat steps 2-3, but leave "Attach file to email" unchecked and trigger the PDF generation.
Verify the email notification is received without the PDF attachment.
Verify the PDF is still stored as a CustomerFile under the selected company.
KOD-30119: Ability to Generate Price Books for Future Prices
Regression Tests
Case 1
Surf a commerce site logged in and record a few prices.
Surf a commerce site logged in and make sure that pricing matches your previous checks.
This is all new code so there should be no changes as we are not using the new feature yet.
KOD-30122: Website Configurator Tool
KOD-30153: Synchronization Issue: shipping address not syncing with CSD
KOD-30187: Website Customization
KOD-30206: Configuration update to allow auto merging guest cart with previous logged in cart upon login
Regression Tests
Case 1
Validate that standard login behavior is unchanged when autoMergeGuestCartOnLogin setting is disabled (default).
Pre-requirements:
The autoMergeGuestCartOnLogin setting is set to 0 (disabled — this is the default).
Steps:
Log in on the customer portal.
Add one or more items to the cart.
Log out.
Log in again, the previous cart must be loaded.
Log out again.
As a guest, add one or more items to the cart.
Log in as the customer who has a previous cart with items.
Tests
Case 1
Validate the auto merge – guest cart items are merged with previous customer cart items on login.
Pre-requirements:
A customer account with a previous cart containing items (e.g., items C and D).
The autoMergeGuestCartOnLogin setting is set to 1 (enabled).
Steps:
Log in on the customer portal.
Add one or more items to the cart.
Log out.
As a guest , one or more items to the cart.
Log in as the customer – who has a previous cart.
Verify the cart now contains all items: the ones in the guest cart and the ones in the previous cart.
Verify the merged cart is repriced with the customer's pricing context.
Case 2
Validate that login with an empty guest cart does not trigger auto-merge and loads the previous cart normally.
Pre-requirements:
A customer account with a previous cart containing items.
The autoMergeGuestCartOnLogin setting is set to 1 (enabled).
Steps:
Open the site as a guest but do not add any items to the cart (empty guest cart).
Log in as the customer who has a previous cart with items.
Verify the previous cart is loaded normally into the session (standard behavior).
Verify no merge occurred (the auto-merge block is not entered because the guest cart has no items).
Case 4
Validate the three-session scenario — only the most recent previous cart merges, not older ones
Pre-requirements:
A customer account.
The autoMergeGuestCartOnLogin setting is set to 1 (enabled).
Steps:
As a guest, add item A to the cart and log in as the customer — this creates Order A as the session cart.
Log out.
As a guest, add item B to the cart and log in as the same customer — Order A merges into Order B's session cart (merged cart now has A + B).
Log out.
As a guest, add item C to the cart and log in as the same customer.
Verify that Order B (the most recent previous cart, containing A + B) merges into the current session cart (which has C).
Verify Order A does not re-merge (it was already marked as Saved or is outside the Page-size-2 window).
Verify the final cart contains items A, B, and C.
Verify no errors appear in the logs screen.
Case 5
Validate that customers with Start new cart on login enabled are unaffected by auto-merge.
Pre-requirements:
A customer account configured with Start new cart on login enabled.
The customer has a previous cart with items.
The autoMergeGuestCartOnLogin setting is set to 1 (enabled).
Steps:
As a guest, add items to the cart (or not).
Log in as the customer with Start new cart on login enabled.
Verify a new order/cart is created on login as expected by the Start new cart on login behavior.
Verify the auto-merge did not interfere with the Start new cart on login flow.
KOD-30262: Kodaris Ticket System Refinement Requested Custom Fields
KOD-30269: Designate Unit Displayed to Customer
KOD-30285: Forms Integration
KOD-30306: Error when adding certain parts to Order Templates (Catalogs)
Regression Tests
Case 1
Log in as a user with a company admin role.
Search for any product.
Add the product to an Order Template (either from the product card or from the product detail page).
Select a company order template from the list.
Verify:
Success message displays.
Navigate to Order Templates and open the selected company template.
Verify:
Product was added to the template.
Add the product to an Order Template (either from the product card or from the product detail page).
Select a customer order template from the list.
Verify:
Success message displays.
Navigate to Order Templates and open the selected customer template.
Verify:
Product was added to the template.
Case 2
Search for any product.
Add this product to cart.
Navigate to the Cart page.
Click the actions button.
Add the product to the company template.
Verify:
You are redirected to the Order Template page on your company order template.
The product was added successfully to the list.
Click the remove button for this product.
Verify:
Product is removed from the list immediately.
Navigate to the Cart page.
Click the actions button.
Add the product to your personal order template.
Verify:
You are redirected to the Order Template page on your customer order template.
The product was added successfully to the list.
Click the remove button for this product.
Verify:
Product is removed from the list immediately.
Tests
Case 1
Log in as a user with a company admin role.
Search for a product that has + in the part number (e.g., "ABC+123").
Add the product to an Order Template (either from the product card or from the product detail page).
Select a company order template from the list.
Verify:
Success message displays.
No error message displays.
Navigate to Order Templates and open the selected company template.
Verify:
Added product displays in the list.
Add the product to an Order Template (either from the product card or from the product detail page).
Select a customer order template from the list.
Verify:
Success message displays.
No error message displays.
Navigate to Order Templates and open the selected customer template.
Verify:
Added product displays in the list.
Case 2
Log in as a user with a company admin role.
Search for a product that has + in the part number.
Add this product to cart.
Navigate to Cart page.
Click the actions button.
Add the product to the company template.
Verify:
No error message displays.
You are redirected to the Order Template page on your company order template.
The product was added successfully to the list.
Click the remove button for this product.
Verify:
Product is removed from the list immediately.
No error message displays.
Navigate to the Cart page.
Find an option to save cart items to order templates.
Click the actions button.
Add the product to your personal order template.
Verify:
No error message displays.
You are redirected to the Order Template page on your personal order template.
The product was added successfully to the list.
Click the remove button for this product.
Verify:
Product is removed from the list immediately.
No error message displays.
KOD-30341: Implementation
KOD-30340: Implementation
KOD-30343: Pull orders from different cono using tenant setting
Ensure that the breadcrumbs look and function correctly.
Tests
Case 1
Ensure that when the opportunity name is present, breadcrumb displays "Opportunity {opportunity name}".
Ensure that when the opportunity name is empty, breadcrumb displays "Opportunity {order number}".
KOD-30359: Link Display Issues
Regression Tests
Case 1
Open pages on the website that were previously created with Gutenberg.
Verify existing links were not affected by this change.
Ensure link color is applied only when the user explicitly sets it in the editor.
If a color was previously added manually in the editor, verify it is still displayed correctly.
Tests
Case 1
Open Operations Portal → Pages.
Create a test page or use an existing one.
Add a Header, Paragraph, and List block.
Select any word or sentence and apply a Link Color.
Open the page on the website.
Verify the link color changes from the default color to the one selected by the user in Gutenberg editor.
Case 2
Open the Operations Portal → Pages.
Create a test page or use an existing one.
Add a Header, Paragraph, and List block.
Select any word or sentence and add a Link.
Open the page on the website.
Check if links have color.
Check for different browsers .
KOD-30361: Warranty Purchasing Part 2
KOD-30367: Add exception to see if any supersede cross references exists for a product
KOD-30377: Add facets to Create Catalog
Regression Tests
Case 1
Navigate to a category → click create catalog → name it and click create → make sure you can still create a catalog based off.
Tests
Case 1
Go to the brands page then click a brand → click create catalog → name it and click create → a catalog should be created only with the products that you see on the screen (same number of products on that category page should be the same as how many are in the newly created catalog).
Case 2
Go to a category and add in any facets, then click create catalog → once the catalog is created, verify that the products in that catalog are the same products that were in the filtered category (want to make sure the facets that you added on the category screen are taken into account when creating the catalog).
KOD-30376: Update orders screen with delivery limitations message to customers
In the commerce site, open a product page with no price breaks:
Everything should work normally.
Tests
Case 1
In the commerce site, open a product page with price breaks :
Select an option with price breaks: it should show the Quantity Pricing list.
Select an option with no price breaks: it should hide the Quantity Pricing list.
KOD-30387: Fix bubbles on order items discrepancies
Tests
Case 1
Log in the Operations Portal, and open the Orders page.
Open an order with discrepancies in its items, and open the Items tab.
Find an order item with Code “NONSTOCK”: it should show a warning bubble in an amber color, indicating a discrepancy.
Hover the bubble: it should show a tooltip with the discrepancy message (in this case, “Product not Found”).
Double click this Code field to edit it, and change it to a valid product code.
Blur the field to save the change:
It should hide the discrepancy warning bubble.
Double click this Code field again to edit it, and change it back to “NONSTOCK”.
Blur the field to save the change:
It should show the discrepancy warning bubble again.
KOD-30391: Menu Item Display Issue
Regression Tests
Case 1
Open the website.
Open browser DevTools and inspect the page.
Add more text to the existing header element.
Verify the updated text still looks good on the site.
Ensure the header remains user-friendly and does not break the layout.
KOD-30394: Chat Code
Regression Tests
Case 1
Log in as a customer.
Navigate through different pages (Home, Products, Product detail).
Verify:
Pages load correctly.
Site functionality works properly.
No console errors related to script.
Note: Console may show errors from service (e.g., 404 "Unknown thread uuid") - these are RingCentral server-side issues, not related to site functionality.
Case 2
Clear browser local storage.
Open the website.
Log in as a customer account.
Verify:
Cookie consent popup appears.
A chat button also appears.
Both elements are visible and do not completely overlap.
Accept or decline cookies.
Verify:
Cookie popup closes.
A chat button remains visible and functional.
Tests
Case 1
Open the website.
Log in as a customer.
Navigate to the home page.
Look at the bottom right corner of the page.
Verify:
A chat button appears in the bottom right corner.
Clicking the button opens a chat form.
Clicking the X button closes a chat form.
Scroll down to the bottom of the page.
Verify:
Chat button remains visible and accessible.
Navigate to any other public page (Products page, product detail page).
Verify:
Chat button appears in the bottom right corner.
Navigate to any non-public page (Cart).
Verify:
No chat button appears in the bottom right corner.
Case 2
Open the website without logging in (or log out if logged in).
Navigate through different pages.
Verify:
No chat button appears.
Case 3
Chat widget does NOT appear for employee accounts.
Log in as an employee.
Navigate through different pages.
Verify:
No chat button appears.
Case 4
Log in as a customer.
Click the chat button in the bottom right corner.
Verify:
Chat form opens with fields: Name, Account Number, Message.
All fields are marked as required (asterisk *).
Try to click "Start chat" without filling any fields.
Verify:
Chat does not start.
Validation errors appear.
Fill in all required fields (Name, Account Number, Message).
Click "Start chat".
Verify:
Chat starts successfully.
After a few seconds, a welcome message appears from the agent.
Click the emoji icon to open the emoji panel.
Verify:
Emoji panel opens.
Emojis display correctly on the panel.
Select an emoji from the panel.
Verify:
Emoji name appears in the message field (e.g., ":smirk:") - this is expected behavior.
Send the emoji message.
Verify:
Emoji displays correctly in the chat (as image, not text).
Type a text message and send it.
Verify:
Text message appears in the chat.
Click the attach file button and select an image.
Verify:
File uploads successfully.
The image can be opened by clicking on it .
KOD-30396: Company Group Catalog Pricebook Company Select Cut Off (FIX)
Regression Tests
Case 1
Test autocomplete in Orders/Quotes → Items → Add Item.
Open Orders or Quotes screen.
Go to Items → Add Item.
Trigger the autocomplete dropdown.
Verify the dropdown is fully visible to the user.
Ensure it opens above the field when there is not enough space below.
Verify scrolling works correctly.
Verify search inside the dropdown works correctly.
Test autocomplete inside tables.
Navigate to Pricing → Company Applies.
Trigger autocomplete inside the table.
Verify the dropdown renders correctly within the table layout.
Test with different screen heights.
Ensure the dropdown opens above or below the field depending on available space.
Test autocomplete on Order Detailed screen.
Open any order detailed view.
Locate fields with autocomplete.
Scroll the page and trigger the dropdown from different vertical positions.
Verify the dropdown opens correctly above or below depending on space.
Ensure the dropdown is not visually clipped and all items can be accessed via scrolling.
Test autocomplete in Company Groups → Detailed Screen → Catalog.
Navigate to Company Groups detailed view.
Open Catalog tab.
Test autocomplete in Assign Product.
Test autocomplete in Actions → Generate Price Book.
Verify dropdown position, visibility, scrolling, and search functionality.
Expected Result:
Autocomplete dropdowns display correctly across all screens, adapt their position based on available space , support scrolling and search, and are never visually clipped.
Tests
Case 1
Open the Operations Portal.
Navigate to Generate Price Book.
Go to Company Groups → Catalog.
Click Actions.
Select Generate Price Book.
Open Company autocomplete.
Click on the Company field.
Trigger the autocomplete dropdown.
Verify dropdown display.
Ensure the dropdown fits within the page layout.
Verify it does not overflow outside the visible screen area.
Ensure the user can easily scroll and select the last item in the list.
Case 2
Open the Operations Portal.
Go to Company Groups → Catalog.
Trigger the autocomplete dropdown.
Click + Assign product.
Verify dropdown display.
Ensure the dropdown fits within the page layout.
Verify it does not overflow outside the visible screen area.
Ensure the user can easily scroll and select the last item in the list.
KOD-30399: More Template Updates
Regression Tests
Case 1
Go to Operations Portal Orders → Orders. Pick a random order. Try to generate an internal file for it with template wrappedOrderPDF-EJS-test .
Check that everything looks good and we don’t have any broken UI.
Try to generate Email to send with template wrappedOrderEmail-EJS-test . Do the same check, that everything looks good.
Do the same thing for the customer portal order template by checking wrappedOrderHTML-EJS-test.
KOD-30406: Add Account Integration Screens
KOD-30407: Create Separate Setting for Customer FAQ Statuses
KOD-30409: Return Parent Name/Code on Intranet Page Endpoints
KOD-30419: Credit Hold Login Interceptor
Regression Tests
Case 1
Attempt customer login with valid credentials.
Expected: Login succeeds normally, no interception.
Also try to login with invalid credentials (login should be rejected).
Case 2
Attempt to use SSO to login as a customer.
Login should succeed.
Case 3
Login as a customer and select remember me. Then refresh or x out of the page and see if you are remembered.
Expected: You should not have to log in again.
Tests
Case 1
Turn on business events with code customerLoginCheck and set Rule with code RLU_DEFAULT_019 to be active. To find this rule go to the automation app and it will be under Inline Interceptors. Then attempt to login to a customer account with valid credentials. You should be able to.
Then, do the same test as in case 1. In this case, your login should be blocked and you should get the error message "Test block message - please ignore."
Case 3
Leave the interceptor script as it is for case 2. Now try to login using SSO (like Google or Microsoft). It should still fail.
Then delete the changes from the interceptor script, log in successfully selecting remember me, then revert the interceptor script back to how it was for case 2 and refresh the page you logged in on. You should be logged out now.
KOD-30427: PARSER
KOD-30429: Adding facets to bulk add products to catalog
Regression Tests
Case 1
Create catalog from category.
It should work as before, no regressions should be introduced.
Tests
Case 1
Create a catalog from category with applied facets.
Use swagger endpoint, since UX does not provide facets to new param yet: /api/account/companyProductCategory/createFromCategory
Ensure the created catalog has only products that correspond to the applied facet.
Need to test which shipvias we are sending to ERP. We have three cases:
When a company address has a type field populated, we are sending this value in the shipVia field.
When the company address doesn’t have a type field populated and the company have default shipvia populated, we are sending this value in the shipVia field.
When both fields are empty, we are sending the BEST shipvia in shipVia field.
KOD-30433: Checklist Required for SSO and Integration - Phase 2
KOD-30437: Data Migrations
KOD-30439: End User Pricing Margin Increase
Regression Tests
Case 1
Make sure the product list page and product details page still load properly.
Tests
Case 1
Need to make sure displayRetailPriceOnProductPage is set (most likely going to be listPrice).
Also need to make sure enableRetailPriceUpdate is added to the settings and turned on to be able to update the retail price.
Click into a product → you should see:
‘Retail Price’: xxx which is the listPrice (or whatever is set in displayRetailPriceOnProductPage of the sku- as long as it it greater than 0).
Your Retail Price: xxx if you updated the retail price.
Update Retail Price which you can click to update the retail price.
Case 2
Click Update Retail Pricing → a modal should appear → here you will see cost, markup type, markup value, retail price, and new retail price.
Cost = price that is listed for the product.
Markup Type = can choose between static markup or percentage markup.
Markup Value = The markup amount. If you choose static markup, whatever you type in there is going to be the updated retail price. If you chose percentage, whatever value you type in there will be the percentage of increase of the cost.
Retail Price = if you have updated the retail price it will be that value. If you have not updated it yet, it will default back to the listPrice of the sku (or whatever value you have in displayRetailPriceOnProductPage ).
New Retail Price = The new retail price that is determined based on the markup type and value.
Case 3
Update the markup type and value and click save → you should now see the product page update and you will see ‘Your Retail Price’ be updated accordingly.
Case 4
When saving the updates, it will either add or update the product in the retail price catalog. If that catalog does not exist, one will be created upon updating the retail price on a product.
If you navigate to the retail price catalog of that company, you will see the products you updated as well as if you add in product markup and product markup type to the grid, you can see what values you added in the popup.
Case 5
If enableRetailPriceUpdate is turned off, you should not see the Update Retail Pricing button.
Or if you are not logged in, you should not see the Update Retail Pricing button.
If displayRetailPriceOnProductPage isn’t present or is not set and enableRetailPriceUpdate is turned on, then the retail price on the modal defaults to $0.00, as well as you won’t see ‘Retail Price’ on the product.
In a normal environment we shouldn’t have such case, but just in case - whatever displayRetailPriceOnProductPage is set to (most likely listPrice), if the skus have a listPrice of 0, then you will not see Retail Price: on the product page (similar case to what was written above).
KOD-30451: Remove the 1 From Company Code
KOD-30454: Create Product Overview Template
Tests
Case 1
Navigate to a child product page (e.g., CRM > Overview).
Verify that a dark navy sub-navigation bar appears below the header.
Verify that the parent product name (e.g., "CRM") is displayed on the left.
Verify that all active child pages appear as tab links.
Verify that the current page's tab is highlighted with green text and underline.
Verify that page content (Gutenberg blocks) renders below the sub-nav.
Case 2
Click each tab. Verify it navigates to the correct child page.
Verify that the active tab highlights updates on each page.
Verify that the same tabs and product name appear on every child page.
Case 3
Scroll down. Verify the sub-nav sticks below the header.
Verify that page content does not show through behind the sticky sub-nav.
KOD-30457: Turn off Quantity Pricing
Regression Tests
Case 1
Product pricing still displays correctly.
Navigate to a product detail page.
Verify the product price is displayed correctly.
Click the "Add to Cart" button.
Verify the item is added to the cart with the correct quantity and price.
Verify the cart badge/count updates to reflect the added item.
Tests
Case 1
The Quantity Pricing section is no longer displayed on the product page.
Navigate to a product detail page for a product that has quantity price breaks configured (tiered pricing based on quantity).
Verify that the "Quantity Pricing" section (listing quantity-at-price tiers) does NOT appear anywhere on the product page.
Verify that the rest of the product page renders correctly — product name, description, base price, and unit of measure all display as expected.
KOD-30462: COD Payment Form - Add disclaimer
KOD-30465: Adding the Sort By filter to Product List pages
Regression Tests
Case 1
Product list views still work correctly.
Navigate to a product category page with results.
Click the list view icon to switch to list view.
Verify the page reloads in list view and the Sort by dropdown is still visible.
Click the grid/card view icon to switch back to grid view.
Verify the page reloads in grid view and the Sort by dropdown is still visible.
Case 2
Facet filtering works alongside sort.
Navigate to a product category page that has filter/facet options in the sidebar.
Select "Price: Low to High" from the Sort by dropdown.
Check a facet/attribute filter checkbox in the sidebar.
Verify the page reloads with filtered results still sorted by price low to high.
Click the filter chip to clear the applied filter.
Verify the full product list returns, still sorted by price low to high.
Tests
Case 1
Sort by dropdown is visible and functional on product list pages.
Navigate to a product category page that displays a list of products (e.g. browse a category from the main menu).
Verify the "Sort by:" dropdown is visible in the header area above the product results.
Select "Price: Low to High" from the Sort by dropdown.
Verify the page reloads and products are reordered by price from lowest to highest.
Select "Price: High to Low" from the Sort by dropdown.
Verify the page reloads and products are reordered by price from highest to lowest.
Select "Relevance" from the Sort by dropdown.
Verify the page reloads and products return to relevance-based ordering.
Make sure that the sort selection persists with pagination.
Note: make sure to test on catalogs as well.
KOD-30468: Description 3 Field Mapping and Length Adjustment
Regression Tests
Case 1
Verify that the Descrip 1 and Descrip 2 fields are displayed correctly in the Custom Fields tab.
Verify that edits to Descrip 1 and Descrip 2 are saved correctly.
Make sure that if a setting has the type integerValue, and we enter a value such as “123test” in the custom fields, the setting will not be saved with that value; instead, the value will be 0.
Tests
Case 1
Verify that if a setting has the textValue type and a value length greater than 255 characters, the value is displayed in full in the Custom Fields tab.
Verify that when the value of a setting with the textValue type is changed, the textValue type does not change to mediumValue.
Verify that if a setting has the integerValue or smallValue type, the value is displayed correctly in the Custom Fields tab and does not change to mediumValue when edited.
KOD-30476: Add county field to leadsquotes list and search endpoints
Regression Tests
Case 1
Check whether new field: county return on POST endpoints:
KOD-30477: Restrict Country Selection on Shipping Address
KOD-30483: Google Tag Update
Regression Tests
Case 1
Check that pages still load fine on the website.
KOD-30484: QuickSight
KOD-30485: Promo Tag Update
Regression Tests
Case 1
Click "Shop by Category" dropdown and verify:
Dropdown opens and shows categories.
Subcategories expand properly on hover.
All category links are clickable.
No visual glitches or overlapping.
Tests
Case 1
Open the website homepage.
Click on the "Shop by Category" dropdown.
Scroll through all categories in the menu.
Test the same behavior on mobile view.
Expected Result:
"Clearance" category is NOT visible in the category menu.
Other categories displayed correctly.
Case 2
Go to the Product List page.
Find any product with a Clearance tag.
Verify it shows "Clearance" (not "Winter Clearance" or other variation).
Check Clearance tag styling in Grid view.
Switch to List view and check styling.
Switch to Mobile view and check styling.
Open Product Details page of this Clearance product.
Check Clearance tag styling on the Product Details page.
Add this product to cart.
Go to the Cart page.
Check Clearance tag styling in cart items.
View 4+ different products to populate Recently Viewed slider.
Go to the Product Details page, scroll to the "Recently Viewed Products" slider.
Check Clearance tag styling in Recently Viewed slider.
Find any product that has Related Products slider with Clearance products.
Check Clearance tag styling in Related Products slider.
Expected Result (for every page and slider)
Clearance tag displays with:
Text color: Black
Background color: Yellow
KOD-30495: Addresses on outgoing emails from Kodaris
Tests
Case 1
Go to the Contact Us page and submit a form with any data, we should see that form submitted without any errors.
KOD-30503: Quote Process
KOD-30504: Implementation - Test Addons
KOD-30507: Add Footer Authenticated Menus similar to Header Authenticated Menus
Regression Tests
Case 1
Open the commerce site.
Certify you're not logged in.
Scroll to the footer:
It should display the expected public menu and its items.
It should not display the footer-authenticated menu and its items.
Tests
Case 1
Open the commerce site and log in as a customer.
Scroll to the footer:
It should not display the public menu and its items.
It should display the footer-authenticated menu and its items.
KOD-30508: Update so Requested Due Date can Only be Set in Future
Regression Tests
Case 1
Go to the customer portal as a logged in user.
Go to the Tickets screen, select a ticket, Details tab.
In the Requested Due Date field, make sure you can still select dates and it updates and saves correctly in the ticket.
Tests
Case 1
Go to the customer portal as a logged in user.
Go to the Tickets screen, select a ticket, Details tab.
In the Requested Due Date field, make sure you can only select future dates (one day from today’s date).
If a requested due date is already set in the past, that’s expected behavior.
KOD-30509: Kodaris - Checkbox not aligned in a row with the text.
Regression Tests
Case 1
Make sure checkboxes are still clickable, send the information to the form correctly, and the layout looks correct.
Tests
Case 1
Single checkbox - input box aligns with label text.
Navigate to the Gutenberg editor and open a content page with a form.
Add a Checkbox block with only one checkbox option.
Enter a short label (e.g., "I agree to the terms").
Verify the checkbox input box is vertically aligned with the first line of the label text.
Case 2
Single checkbox - long label wraps correctly.
Enter a long label on the checkbox you added that wraps to multiple lines (e.g., "By checking this box, I acknowledge that I have read and agree to the Terms of Service, Privacy Policy, and Cookie Policy of this website and its affiliated partners").
Verify the checkbox input box is aligned with the first line of the label, not centered vertically against all the wrapped lines.
Case 3
Multiple checkboxes - input boxes align with their labels.
Add another Checkbox input to your previous checkbox block.
Enter a short label for the first checkbox and a long multi-line label for the second checkbox.
Verify the title label appears correctly above the checkbox options.
Verify each checkbox input box is aligned with the first line of its respective label text.
Verify the spacing between the checkbox box and its label is consistent across all checkboxes.
KOD-30511: Fix filtering for dates with no time (requested due date)
Regression Tests
Case 1
Make sure filtering on non dates still works the same as before.
Case 2
When filtering on a date (i.e. created, last updated), if you just put the date (no time) in the filter box, the grid should be updated accordingly and you should see items with that date.
If you put in the full date and time in the filter box, it should filter down specifically where items meet that criteria.
Case 3
Now do the same but with != in front of the date.
Both with just the date and then with the date and time.
If only adding the date, then all the entries with that date will not show.
If filtering on date and time, the items specifically with that date and time should not show. Other items with the same date, but different time should still show.
Case 4
Make sure the other filters (less than, greater than, between, etc.) still are filtering properly for other date time columns.
Case 5
On the open invoices screen, make sure the due date and invoice date are still filtering properly.
Tests
Case 1
On the tickets screen, add in the requested due date column.
If you just copy the date and paste it into the filter bar, the items should filter properly (same as it was before) as well as if you put an = before the date, the items should filter the same.
If you put in != [date] into the filter bar, the items should filter that date out properly.
Case 2
Open the filter dropdown and choose equals → now select a date and click apply → the items should be filtered properly and you should see items with that date.
Case 3
Open the filter dropdown and choose not equals → now select a date and click apply → the items should be filtered properly and you should not see items with that date.
Case 4
Now choose a column that has a date and time (i.e. created/last updated) → Open the filter dropdown and choose equals → now select a date and click apply → the items should be filtered properly and you should see items with that date.
If you copy in a time with the date, then it should filter down specifically on that date and time.
Case 5
Now choose a column that has a date and time (i.e. created/last updated) → Open the filter dropdown and choose not equals → now select a date and click apply → the items should be filtered properly and you should not see items with that date.
If you copy in a time with the date, then it should filter out specifically that date and time.
Case 6
Make sure the other filters on the filter dropdown filter/work properly for requested due date (less than, greater than, between, etc.).
Case 7
Filter on requested due date and some other columns as well → now save the view → reload the page and navigate to that view → make sure the columns are still filtering the same as they were when you saved the column.
KOD-30512: Implementation - PIM
KOD-30514: PIM - Product page updates
Regression Tests
Case 1
Existing product attributes still display correctly with or without BRAND or UPC CODE attributes on the product details page.
Tests
Case 1
UPC Code displays on the product detail page.
Navigate to any product detail page.
Scroll to the product attributes section (where Brand and Supplier Part # are shown).
Verify a "UPC CODE" label is displayed below "SUPPLIER PART #".
Verify the UPC Code value matches the product's UPC code, or displays "---" if no UPC code exists.
Case 2
Label changed from "SUPPLIER" to "BRAND".
Navigate to any product detail page.
Scroll to the product attributes section.
Verify the label reads "BRAND" (not "SUPPLIER") next to the manufacturer code value.
KOD-30518: Hide 1 in Company Code on Website
Regression Tests
Case 1
Open the website without logging in.
Verify:
Home page loads properly.
Cart page loads properly.
Log in as a customer.
Verify:
Home page loads properly.
Cart page loads properly.
Company switcher works correctly.
Address switcher works correctly.
Account switcher in the customer portal works correctly.
No console errors related to company code display.
Tests
Case 1
Log in as a customer.
At the header bar open the company switcher dropdown.
Verify:
All company codes in dropdown display without underscore and any characters after it.
Open address switcher dropdown.
Verify:
Autocomplete suggestions show shipto without underscore suffix.
Make sure to check the mobile version as well.
Case 2
Add item to Cart.
Go to Location tab - Shipping address.
Verify:
Shipto code displays without underscore and any characters after it.
Case 3
Navigate to the customer portal.
Open company switcher dropdown.
Verify:
Company code should not be followed by an underscore.
Format is "12345" not "12345_1" or "12345_234" etc.
KOD-30521: Investigate and Fix Slow Performance on Employee Portal Configuration Endpoint
Regression Tests
Case 1
Go to the operations portal.
Go to settings.
Search by a setting with code “enableLeads”.
If it does not exist, create it. Set the value to 1 like in the screenshot:
Go to the Opportunities tab.
Add an opportunity.
Go to the details of the opportunity that you just created.
Click in the “Sales Rep” input.
Expected:
You should be able to see all the active Administrators (active employees) of the website listed there. This guarantees that we didn’t break the admin listing in the configuration endpoint.
Case 2
Follow the same steps 1-6 of the test case 1. You can use the same opportunity that you already created.
Go to the opportunity details.
Go to the warehouse dropdown.
Expected:
All active warehouses that does not have a developer field with code “web” and value = “1” should be in the dropdown. You can confirm all the warehouses in the “Locations” tab.
Case 3
Follow the same steps 1-6 of the test case 1. You can use the same opportunity that you already created.
Go to the locations tab.
Pick a random location (warehouse). Go to details → developer field.
Create a developer field with code = ‘web’ and mediumValue = “1” as shown in the image below:
Go to the opportunity details.
Go to the warehouse dropdown.
Expected:
The warehouse that you created the developer field should disappear from the dropdown. All other actives warehouse that does not have a developer field with code “web” and value = “1” should be in the dropdown.
Case 4
Go to the operations portal.
Go to the companies tab.
Start a new order for a company.
Go to the delivery address form.
Select a country. You should be able to see all countries.
Select the United States.
Select a state.
Expected:
You should be able to see all countries in the country selected. Also you should be able to see all the states from the united states in the states selected.
KOD-30522: Associate payment record to ERP order number when order is pushed to ERP
KOD-30523: Implementation - Order / Invoice Documents
KOD-30524: Update mappings to remove note restrictions
KOD-30527: Enable jobProcessUnprocessedTerminalTransactions setting by default
Tests
Case 1
Confirm that setting jobProcessUnprocessedTerminalTransactions is enabled by default on your system (if it was not changed before).
KOD-30528: Platform Document Automation - Support Processing JSON files
KOD-30529: UX Document Automation Studio - Support JSON Adapters
Regression Tests
Case 1
Verify that PDF Order adapters are created and function as expected.
Verify that PDF Invoice adapters are created and function as expected.
Verify that Analysis Methods are displayed for PDF adapters.
Verify that PDF file uploads and previews work correctly.
Tests
Case 1
Verify that the JSON option appears in the File Type dropdown when creating an adapter.
Verify that the Analysis Methods section is hidden when JSON is selected.
Verify that the JSON adapter is created with an empty analysisMethods array and the correct default code.
Verify that a JSON file can be uploaded on the Details and Configure pages and that it is displayed in the correct format.
Verify that the JSON adapter can be run on the Configure page.
Verify that JSON preview uses Monaco editor on Details and Configure pages.
KOD-30530: Need UX for Payments
Tests
Case 1
Open Customer Portal → Company Payment Methods.
Verify bankPaymentSystem configuration.
Check the value returned in bankPaymentSystem.
Verify form
Set bankPaymentSystem (e.g., via response override).
Verify the form displays the following fields:
Transit Number
Institution Number
Verify form for ACH.
Set bankPaymentSystem to ACH.
Verify the form does NOT display Transit Number and Institution Number fields.
Repeat for each case.
Test all scenarios
Ensure the correct form is displayed for each configuration.
Case 2
Open Operation Portal → Companies -> Company -> Payment Methods.
Verify paymentSystembankAccount field in the selected company.
Verify form
Set paymentSystembankAccount (e.g., via response override).
Verify the form displays the following fields:
Transit Number
Institution Number
Verify form for ACH.
Set paymentSystembankAccount to ACH.
Verify the form does NOT display Transit Number and Institution Number fields.
Repeat for each case.
Test all scenarios
Ensure the correct form is displayed for each configuration.
KOD-30532: Update Terms of EFT Service
Tests
Case 1
Check if the updated EFT terms are shown when vaulting an EFT payment method.
KOD-30533: New Section - FAQ
Regression Tests
Case 1
Open the website.
Navigate through different pages.
Open multiple pages across the site.
Verify each page loads correctly.
Verify styles and assets.
Ensure all styles are applied correctly.
Verify there are no missing or broken UI elements.
Verify overall page rendering.
Ensure pages render as before without visual or functional issues.
Setup yourself as an order approver directly. For this, go to your customer account and assign orderApprover role.
NOTE: do not use group roles, this should be feature test.
(requires setup to trigger this flow) On the checkout for separate customer on the same company, as approver, request approval for the order. Use next steps to enable the flow: