The Customer Portal now allows customers to directly accept Cash Quotes from within the customer portal. When a customer views a Cash Quote with "Quote Pending" status in the Portal, they can approve it via a new "Accept Quote" option in the details page. Upon approval, the system automatically transfers all quoted items to the Shopping Cart in the Commerce site with the quoted pricing, ready for checkout.
This streamlined process simplifies the purchasing workflow for customers and is a seamless transition from quote review to purchase completion.
This feature is available now for all users after enabling the "enableCustomerToAcceptCashQuote" setting in the Operations Portal. For a detailed walkthrough of the setup and approval process, please refer to our instructional video.
https://youtu.be/Q2qjzbv31t8
Operations Portal
Split View File Previewer in the Vendor Files Interface
The Operations Portal now includes a split view file preview function in the Vendor Files view. This enhancement allows users to preview files directly within the interface without needing to download or open them in separate applications. Users can view XML, PDF, JPG, CSV, TXT, and other file types by selecting the “Open in Split View” button from the Internal Files tab of any vendor invoice.
The split view previewer includes practical tools such as zoom controls and file navigation via a convenient dropdown menu. Users can easily switch between multiple files, adjust the viewing panel size by dragging it to preferred dimensions, and download files when needed. This streamlined approach keeps all vendor documentation accessible in one place while maintaining your workflow efficiency.
The split view file preview feature is now available to all Operations Portal users. For a detailed walkthrough of this functionality, please refer to our demonstration video.
https://youtu.be/Hm-yHTQ5VUA
Tickets
KOD-12248: Customer side Opt Out
Tests
Case 1
Test OptOut token generation using endpoint.
POST /api/system/emailOptOut/optOutToken
Case 2
Test Email OptOut flow using public opt-out token endpoint (unsubscribe option).
Case 3
Test Email OptOut flow using public opt-out token endpoint (email OptOut ALL type).
Case 4
Test Email OptOut flow using public opt-out token endpoint (email OptOut SubscriptionList code).
KOD-23445: View Vendor Invoice and Order Internal Files on Detail Screens - Fix display
Regression Tests
Case 1
Navigate to the operations portal. Go to Vendor Invoices → Internal files. Check if the page displayed fine.
Case 2
Check if internal files displayed fine.
Case 3
Go through each entity and test opening of (Vendor Invoices, Opportunities, Quotes, Cash Quotes, Orders, External Orders) and test opening of each document type in Internal Files in the full view.
Tests
Preconditions
Navigate to the operations portal. Go to Vendor Invoices → Internal files. There should be some pdf file, jpg/png file, some csv with long lines, csv with lots of rows and small csv, samples are provided in comments.
Case 1
Check if JPG and PNG (and other photo extensions like .tiff, .gif, .ico if they are enabled through settings) files are loaded when you click the ‘Open in Split-view’ button.
Case 2
Check if PDF files are loaded when you click the ‘Open in Split-view’ button.
Case 3
Check if CSV files are loaded when you click the ‘Open in Split-view’ button.
Case 4
Check if JSON and NDJSON files are formatted fine and displayed.
Case 5
Check if TXT files are loaded when you click ‘Open in Split-view’ button.
Case 6
On top over the previewed file there is a dropdown with the opened file’s name. Check if it’s displayed correctly without any over layers.
Case 7
Try to choose another file in that dropdown. Expected side preview to be updated, new file displayed and name for new opened file is set.
Case 8
Try to change the width of the preview, it’s possible when you click and hold on the border and drag, please set width wherever you like. Expected to resize without issues, and remain resizable after opening other files via dropdown or opening from table.
Case 9
Try the same cases that were mentioned above on the Internal files table of Opportunities, Quotes, Cash Quotes, Orders, External Orders.
KOD-24292: Pricing Methodology for Public Pricing
KOD-25198: Update consumer registration form for more data
KOD-25844: Rollout per-system
KOD-26589: Fraud - Update email template for quote requests
Regression Tests
Case 1
Verify order fraud tab displays with risk status badge correctly.
Case 2
Confirm fraud detail page shows "Order" label and links to correct order page.
Tests
Case 1
Verify Frauds tab appears between Comments and Emails tabs with a risk status badge .
Case 2
Confirm fraud detail shows Quote Request label and links to quote request page.
Case 3
Verify deprecated checkout block options (COD Payment and Customer Login) are removed.
Case 4
Test accessing quote request fraud details from main fraud listing page.
Case 5
Test quote requests without fraud data.
Case 6
For this case, you will need to trigger the fraud detection by posting a quote.
Retrieved email should now respect the quote and have appropriate strings for a quote.
The text on the quote email should indicate that is a quote.
Make sure that the email correctly indicates that it is a quote, not an order.
KOD-26769: Updating Order Confirmation Template
Regression Tests
Case 1
The template is displayed without layout or style issues.
All fields are visible and correctly aligned.
No broken or missing elements are present.
Check that orders not in Ordered/Entered show Shipped/Backordered columns, and Subtotal + Amount Net calculate correctly.
Tests
Case 1
Open the Operations Portal.
Navigate to the Order screen and select an order with status Entered.
Click on Email Order and test: orderPDF, orderEmail, quote… templates
Verify that:
Invoice Date has been updated to the Entered Date.
For Orders (status: Entered/Ordered):
For orders in entered/ordered status, acknowledgements should show only the ordered quantity.
Extended amounts should be calculated based on ordered quantity × unit price , not shipped quantity.
For Quotes:
For quotes, extended amounts should be shown as ordered quantity × unit price .
Shipped and backordered columns should be hidden since they are irrelevant for quotes.
Check with display pricing.
KOD-26889: Invoices have freight as line item Created From Ticket 29245
KOD-26980: Check Price Differences
KOD-27000: Modify Order Insert v4 to use Payment Type 99
KOD-27220: Shipping Methods / Shipvias
KOD-27300: Update fields for surfacing shipping dates on Order and Order Item in the operations portal
Tests
Case 1
Added sample files in ticket comments.
Access the operations portal → Scripts… and find this one: mapping-basicOrderUpload.
Update content to the sample mapping-basicOrderUpload.
Also, check the value of "postProcessingScript" .
Next, open this script or create if needed: mappingscript-post-sxOrder.
Update content to the sample mappingscript-post-sxOrder.
Then, go to Orders screen → data and Import a CSV with order data.
This CSV should have an order line with promisedt and a valid value for it, example: “2025-08-21" (to create a new order).
Then, run FiveMinuteBulkJobsJob.
You should receive an email about the import.
Go to the order screen and find the new order, go to Customer Fields. Ensure you have fields with code promisedt and promiseDate with the value you provided in CSV.
KOD-27301: Pricing for Catalog Products
KOD-27328: Check on Guest Pricing by Region
KOD-27394: Price difference between CSD and Kodaris
KOD-27421: Proposed consumer returns updates
KOD-27424: Kodaris Developer Examples
KOD-27434: Payment Configuration Card at Checkout
KOD-27436: Check Default Warehouse not Being Set on Orders
KOD-27478: Add Quotes to OpenSearch and a Pattern for Deletes
KOD-27561: Rounding role not applying
KOD-27618: Enable editing user address contact info in the customer portal
Regression Tests
Case 1
Make sure that the “Locations“ screen in the customer portal works without any errors.
Tests
Case 1
If setting “ enableEditingContactInformationOnCompanyAddresses “ is enabled - users should be able to edit phone1, phone2, email1 and email2 on location details screen, else - those fields should be disabled.
KOD-27626: Feature request - Alert message bar
KOD-27634: Update from CSD to Kodaris PIM
KOD-27635: Error When Placing Order via the API
KOD-27639: Cart Step 2: Make 'Company' field optional for Guest users Created From Ticket 32406
Regression Tests
Case 1
Confirm that the checkout tabs work correctly, we can switch between them and they load properly.
Tests
Case 1
Confirm that for guests the company field in the second tab will be optional, but for logged-in customers it will be required.
Case 2
Confirm that we can place an order and in operations we won’t have a company if the user didn’t enter it.
KOD-27673: Attachments import
KOD-27674: AddOns Configuration
KOD-27702: New Purchase History Tab on Product Pages
Regression Tests
Case 1
For guest users, Purchase History tab shouldn’t be available.
Tests
Case 1
If the user is logged in, there should be a new tab on the product detail page called "Purchase History".
When the user opens it, they should see a table with the Last Ordered History .
Case 2
After login, go to a product page with no Purchase History, and click the Purchase History tab.
It should show the message: “You have no purchase history for this product yet."
KOD-27703: Setup for email sending
KOD-27711: UX to add a build on demand kit product to the cart
KOD-27734: My Warehouse functionality Created From Ticket 32331
Regression Tests
Case 1
Confirm that the header looks correct for both guests and logged-in users.
Case 2
Confirm that if the enableShopByStore setting is enabled under the customer host, the Shop by Store button is visible on the site.
Case 3
Confirm that the Select Company button is displayed correctly next to the Shop by Store button.
Сase 4
Navigate to the customer portal. Search for '*'. Check if the product list displayed as expected.
Tests
Case 1
Confirm that clicking this button opens a left-side where the user can select a warehouse, search for it using a filter, or sort by location.
Case 2
Confirm that after selecting a warehouse, closing or refreshing the page shows the selected warehouse name instead of Shop by Store .
Case 3
Confirm that when a link is added to a warehouse, a See Store Details link appears, which redirects to that link.
Сase 4
Confirm that on the search page there will be an Availability filter where we can either:
Show all products that have inventory > 0 in the warehouse selected in Shop by Store , or
show products that are in stock across all warehouses.
Case 5
When you click from one option to another, previous checks out, and the new one is checked. In other words, only one can be selected.
Case 6
Confirm that in the Shop by Store panel we only see the warehouses from the list entered on the host page.
KOD-27735: Update Created From Ticket 32249
KOD-27743: Update OpenSearch queries to avoid pulling quotes and other orders
KOD-27751: Automation - Created From Ticket 34854
KOD-27760: In stock filtering for group/customer catalog
Regression Tests
Case 1
Validate group/customer catalogs continue working as always.
Go to the customer portal and click on Catalogs.
Navigate through customer/groups catalogs and products must be listed as always.
Tests
Case 1
Validate group catalogs now support filters inStock and warehouseCode
Go to the customer portal and click on Catalogs.
Select a group catalog.
From the URL try different combinations of filters inStock and warehouseCode.
The product list must change accordingly.
Case 2
Validate customer catalogs now support filters inStock and warehouseCode.
Go to the customer portal and click on Catalogs.
Select a group catalog.
From the URL try different combinations of filter inStock and warehouseCode.
The product list must change accordingly.
KOD-27775: Make configuration update for catalog products
KOD-27777: Promo Pricing Issue Created From Ticket 35039
KOD-27779: Mapping for Vendor
KOD-27784: Order Status
KOD-27797: Invoice Incorrect SKU Created From Ticket 35166
KOD-27798: Non-Stock Item Created From Ticket 35167
KOD-27803: Add an export API for customer assigned company addresses
Tests
Case 1
New endpoint was added:
/api/system/company/address/customer/export
For export test:
exportDirectly should be true.
Change exportAsNdjson value.
If false → csv file should be generated.
If true → Ndjson file should be generated.
Change column separator for csv export.
Test filtering for different:
companyAddress - using companyAddressFilterFields . For this, use the name of fields in companyAddress’ entity, for example: address1 .
customers - using customerFilterFields . For this, use the name of fields in the customer's entity, for example: email1 .
companies - using companyFilterFields . For this, use the name of fields in
company’s entity, for example: companyName .
Test selecting different values from different values:
for companyAddress use companyAddressfieldsToReturn . For this, use the name of fields in the companyAddress’ entity, for example: address1 .
for customer use customerFieldsToReturn . For this, use the name of fields in the customer's entity, for example: email1 .
for company use companyFieldsToReturn . For this, use the name of fields in company’s entity, for example: companyName .
Note: changing column separator while exportAsNdjson = true should not have any effect, since it is not used with Ndjson file format.
Case 2
Use the same endpoint, as was used in Case 1.
exportDirectly should be true.
You can use this sample to test with. Change it as you need for testing.
Take a close look to this line, since it receives exported rows:
"callback": function (row) {
app.log("EmailID: " + row.customerEmail1);
}
Case 3
Using the same endpoint from cause 1, you should be able to set exportDirectly to false.
This should work in the same way, as was described in case 1. It will not be displayed to the user.
Test case 1 and case 2 with exportDirectly set to false and confirm files are saved.
KOD-27833: Parser update from Ticket 35399
KOD-27827: Turn local repo for Shop off, so we can make edits to interceptors directly on site
KOD-27823: UX - Display total addon amount on vendor invoice screen + show updated totals
KOD-27821: Punchout error during setting it up on customer side
KOD-27805: Pricing tolerances issue
KOD-27834: Check on Signature for Pickup not in Kodaris Templates
KOD-27835: Push orders to ERP
KOD-27841: Model Lookup - implementation
KOD-27844: Show Sync/Linked Terminals only for virtual type
KOD-27845: Automation Error Created From Ticket 35588
KOD-27847: Add UX for FiAccount Import and Export - Consumer Accounts and Gift Cards
Tests
Case 1
Open Financial Accounts.
Navigate to the Operations Portal → Financial Accounts screen.
Export to CSV format.
Click on File → Export → Select CSV format.
Expected result: A CSV file is downloaded successfully.
Expected result: The file content is in correct CSV format and matches the displayed Financial Accounts data.
Export to NDJSON format
Click on File → Export → Select NDJSON format.
Expected result: An NDJSON file is downloaded successfully.
Expected result: The file content is in correct NDJSON format and matches the displayed Financial Accounts data.
KOD-27846: Import Gift Cards UX needed
Regression Tests
Case 1
On the operations portal navigate to the Financial Accounts.
Confirm page is loaded properly.
Apply some filters, sorts and use search.
Confirm data displayed as expected.
Add some columns.
Confirm columns are added.
Tests
Case 1
On the operations portal navigate to the Financial Accounts screen.
Add the “Card Number” column to the grid.
Edit some values.
Confirm values are edited.
Refresh grid and page.
Confirm changes are saved.
Try to input 2 same values for different records.
Confirm the error message shows up.
Refresh grid and page.
Confirm changes are not saved.
Case 2
On the operations portal navigate to the Financial Accounts screen.
Click “File” > “Import”.
Confirm there are import options, ordered by name ascending (from A-Z).
Navigate to the Importers screen.
Filter Importers by Entity column with value “FiAccount” (optionally sorted by Name column).
Confirm the same list displayed on step 2.
KOD-27849: SX_SyncInsertOrder updates for icsc products
Tests
Case 1
Validate when sync an order to SX the those items whose product type is Catalog are sent as Nonstock.
Find/Create an order with at least an Item with product type Catalog.
Make sure setting erpLogicEngine is set to Trend or is empty.
From order click on Release to ERP button.
Go to System Events and look for SX_SyncInsertOrder.
In the listItems those items whose productType is Catalog must have a field specialNonStockType set to N.
KOD-27852: ACH payment receipt template
KOD-27854: Image Sync Created From Ticket 35713
KOD-27856: Automation - Vendor Created From Ticket 35746
KOD-27863: Small module CSS change
KOD-27866: Assistance with File Import
KOD-27870: Approval Process - UX
Regression Tests
Case 1
Go to the Orders/Cash Quotes screen in the customer portal.
Both that and the details screen should work without issues.
Case 2
With this setting enableCustomerToAcceptCashQuote turned off, you should never see an ‘Accept Quote’ button on the order/cash quote details > More dropdown.
Tests
Case 1
Go to a cash quote in the customer portal that has the status ‘Quote Pending’.
The setting must be turned on as well.
There should be an accept quote option in the More dropdown.
Case 2
If you click the Accept Quote option, there should be no errors and the system should put that quote into your cart and you should be redirected to the /spcu/cart screen.
KOD-27874: Connection Created From Ticket 35757
KOD-27873: Not For Sale products - How to mark and control display Created From Ticket 32366
Regression Tests
Case 1
Confirm that the Quick Order page and the Quick Order panel load without errors, and that we can add products to the cart and use this functionality without any changes or issues.
Case 2
Confirm that the Product page and the Product Search page load without errors.
Tests
Case 1
Confirm that if a product has the extra3 field with the value(for example) Coming Soon , then:
On the Product page , instead of the Add to Cart button, there will be a disabled button with the text Coming Soon .
On the Product List page , instead of Add to Cart , there will be a View Product button that redirects to the Product page.
Case 2
On the Quick Order page or in the Quick Order panel , if we try to add a product with the extra3 field, we will get an error, no products will be added to the cart, and we will see an error listing the product codes that are invalid.
KOD-27879: New Vendor for AP Automation
KOD-27875: KIT# concatenating parts abbreviation
KOD-27880: Kit builder wire length price and cart add as wire quantity
KOD-27881: Implement Exception Handling for Invoice Parsing in Kodaris Created From Ticket 32924
KOD-27882: Freight as line item Created From Ticket 35803
KOD-27890: Commerce as a logged in user
KOD-27887: Website Branding & Auth Flows
KOD-27897: Customer App on android
KOD-27904: Add delete index endpoint to Open Search
KOD-27906: Change "We're sorry, we couldn't find any results." message
Regression Tests
Case 1
Check that both category and search pages work as expected.
Case 2
Search on a term that pulls up no results. The messaging should display correctly and remain the same as before.
Tests
Case 1
Go to a category without any in stock products.
It should display this messaging:
It looks like nothing is in stock right now. Remove the 'In Stock = Yes' filter to browse out of stock items and add them to your cart to submit a quote request.
KOD-27911: Update shipto field in "/api/system/integration/infor/product/productPrice" endpoint
KOD-27912: Disabled part can be added to quick add tool
Regression Tests
Case 1
Check that the Quick Order layout looks correct.
Check that there are no errors in the console when interacting with the QuickOrder search and adding an item to the cart.
Tests
Case 1
If display = No for a product, check that it is not listed in the header search or in Quick Order.
If display = No for a product, check that it cannot be added to cart and display a notification about this.
If display = Yes, ensure that the product appears in search results and can be added to cart.
KOD-27924: Cart Counter Display Issues Created From Ticket 36082
Regression Tests
Case 1
Сonfirm that if the cart is empty, the number next to the cart icon shows 0 .
Tests
Case 1
When adding an item to the cart, an icon appears next to it showing the quantity of that item in the cart. After refreshing the page, this number remains.
This number never contains any decimal values.
Case 2
Confirm that when adding an item to the cart, the number in the header reflects the total quantity of items , not the number of product lines.
KOD-27927: Allow passing dates for price engine query
KOD-27928: Hiding items from retail/guest customers and logged in users
Regression Tests
Case 1
Test that category screen/product pages still works fine.
Tests
Case 1
Basically, we have fg_restrictions_guests under Filter Categories / fg_restrictions in the operations portal.
We’ll need to take several products from attribute fg_restrictions_guests and go to the front part. You should not login as a customer and search for a product from attribute fg_restrictions_guests . There will be no results for guests. But if you are login as you should see this product.
KOD-27930: Add " enableEditingContactInformationOnCompanyAddresses" setting to configuration endpoint (customer portal)
Tests
Case 1
Go to the Operations Portal, Settings, and activate this setting: enableEditingContactInformationOnCompanyAddresses.
Then go to swagger and call this endpoint: /api/account/customer/configuration.
Just ensure you can find the enableEditingContactInformationOnCompanyAddresses setting.
KOD-27947: Add a Returns link to the Website Header
Tests
Case 1
Please test that we have the Returns link available on the header after Orders link when returnsLinkDisplayedOnHeader setting is enabled for both guest and logged in users.
Case 2
Please test that we do not have the Returns link available on the header after Orders link when returnsLinkDisplayedOnHeader setting is disabled for both guest and logged in users.
KOD-27950: Strip 'C-' from products
KOD-27963: Warehouse list - Availability
Regression Tests
Case 1
Test that category page is still working fine both for guest and logged in user.
Case 2
Test that product details page is still working fine both for guest and logged in user.
Case 3
Test that product inventory still showing on category and product details page both for guest and logged in user.
Tests
Case 1
Test on categories screen inventory shows in code orders not in alphabetical order both for guest and logged in user.
Case 2
Test on product details screen inventory shows in code orders not in alphabetical order both for guest and logged in user.
Case 3
Test that inventory shows real availability not in-hand.
KOD-27964: Employee App > Quick Order > iPhone > clicking in qty box on add to cart brings up the number keyboard but is missing the decimal point button Created From Ticket 36433
KOD-27965: Shipping Address Autocomplete Update
Regression Tests
Case 1
On the operations portal navigate to the Companies screen.
Select any company and move to its detail page.
Locate “Customers” tabs and select it.
From the list on the “Customers” tab navigate to any customer’s detail page.
Go to “Assigned Addresses Tab”.
Confirm page is loaded properly.
Click on “+ Assign address”.
Confirm options displayed properly.
Select any option.
Confirm option is added to the table above.
Refresh grid/page.
Confirm assignment is saved.
Click on “+ Assign address”.
Type something there.
Confirm suggested options contains typed text.
Repeat these steps for Customers screen > Customer > Assigned Addresses.
KOD-27967: Updates to SX insert order class
KOD-27974: Clearance Centre Tag update
KOD-27978: Add Storeroom fields to Cash Quotes in the Operations Portal
Regression Tests
Case 1
Validate that requesting a quote continues working as expected with the current flow.
Go to the customer portal.
Follow the checkout process and in the last step select Request Quote (for that you need this setting enableCustomerQuoteRequestInCart enabled).