The Operations Portal now enables users to view and manage opportunities directly from company detail pages. This integration eliminates the need to navigate between different sections of the portal when working with company-related opportunities, streamlining workflow and reducing context switching.
Users can access this feature through the new Opportunities tab on any company details page. The tab displays all opportunities associated with the selected company in an organized grid view. Creating new opportunities is simple-click the More button in the top right corner and select "Add opportunity." After entering a name and clicking Add, the new opportunity appears immediately in the company's opportunity list.
This feature is available now to all Operations Portal users. For a visual walkthrough of this functionality, please refer to our tutorial video:
https://youtu.be/ZEi9cXVZLN0
Pay an order using a saved credit card
In this release, we've added the ability to select from a customer's previously saved credit cards when processing order payments. When paying for an order in the operations portal, simply navigate to the order details, click the "Pay Order" icon, and select the "Saved Credit Card" option. Choose the payment type (Sale or Auth Only), specify the amount, and select the appropriate card from the customer's saved payment methods.
This update streamlines the payment processing workflow by eliminating the need to request card information or manually enter card details for returning customers. For a detailed walkthrough of this feature, please refer to our demonstration video:
https://youtu.be/Z054aDp-qos
Tickets
KOD-17801: Commission Engine Next Steps
KOD-24388: App Price Check Not Honoring Quantity Break Pricing
Regression Tests
Case 1
Go to quick order → order → checkout.
Test changing of purchaseOrder and confirm it is saved correctly on submission of the order.
Case 2
Go to expanses → add expanse screen.
Test changing any value.
Tests
Case 1
When changing quantity, price breaks should be updated accordingly.
Case 2
The UI input elements should have updated UI.
Case 3
Search list on Product Code and Warehouse should be reversed and grow up, instead of down.
Case 4
Auto-scrolling should make pricing visible after search is finished.
Case 5
Auto-scrolling should make pricing visible after search is finished.
After changing quantity to another value, the search results should be updated.
KOD-24445: Add Ability to Override Product Restrictions on Company Level
KOD-24720: Check for Lot Number Data for Invoices
KOD-24780: Create App Listing
KOD-24849: Customer Mobile App
KOD-24851: Set up Order Templates
KOD-25003: Bring ICETL table table out the DataLake into Kodaris
KOD-25007: Invoice Status Update Issue
KOD-25021: 2Ship freight fees: compare CSD API call with Kodaris to figure out discrepancies
KOD-25056: Master order/budgets - Add ability to create a budget in customer portal
Regression Tests
Case 1
For this regression test, we will go to Locations - Select a location - Budget tab.
We are going to test the Budget Amount inline-edit field.
Make sure that it still works properly on Budgets created by an employee and now by a customer.
Tests
Case 1
For this case, we will go to Locations - Select a location - Budget tab.
If the current Location doesn’t have a Parent Budget created (you can check that in the operations portal), you should see a “Create budget” button.
Clicking that button should open a Modal, which will ask you to add a Budget Amount.
After you’ve entered a budget amount, you can click on “Create”.
Now, the Create budget button should have disappeared and you should see the budget grid, as well as the Total Spend and Budget Amount headers. You should also see a badge on the Budget tab with the current spend amount of that location budget.
The Budget Amount should display the value you entered in the dialog.
Case 2
If your parent budget doesn’t have any child elements, you should see a message in the grid that says:
Your budget has been created and is currently calculating your current spend.
Refresh in a few minutes to see the spend.
KOD-25101: Restricted products for guest users
Tests
Case 1
Check if for guest user there is “Add to Quote“ instead of “Add to cart“ for guest users.
Check If you can add a restricted product to the cart.
Check if you can request a quote if a restricted item is in the cart.
Check if you can place and order as a guest if there is no restricted product in the cart.
Check if payment methods are displayed correctly after removing items from the cart.
Case 2
Check for logged in users if it’s possible to request a quote and place an order.
Check if restricted products are available to add to cart for logged in users.
KOD-25143: Custom catalogues NOT working
KOD-25212: Quote Email Template & Confirmation are translatable
Regression Tests
Case 1
Check that the quote request is created correctly with English selected in the customer portal and in the language dropdown.
Check that the “Request quote“ page has the correct translation (English).
Check that the email with the quote data sent to the user's email looks correct and has the correct translation.
Tests
Case 1
Check that the quote request is created correctly with French selected in the customer portal and in the language dropdown.
Check that the “Request quote“ page has the correct translation (French).
Check that the email with the quote data sent to the user's email looks correct and has the correct translation.
KOD-25240: Add a saved quantity to products in a company catalog - UX
Regression Tests
Case 1
On the search, category, and product detail screens, check that everything works correctly and you can add items to catalogs fine without issues.
Case 2
Also check that the interval order qty, minimum order qty, and maximum order qty is still working as expected.
Case 3
Go to company, customer, and group catalogs. Check that everything is working as expected, you can update the quantity and add items to cart without issues.
Tests
Case 1
Go to a product on the search, category, and product details screens.
From each, update the qty input and then add the item to both a customer and company catalog,
View the catalog and the product.
The qty should be pre-populated in the qty input.
Case 2
On each catalog screen, update the qty input for a product and refresh the page.
The new qty that you just added should still be there.
Case 3
Add item to cart from both catalogs with the pre-populated qty. The item in the cart should have the correct qty.
KOD-25284: Set up Featured category
KOD-25306: Setup Home Page as CMS Page- Created From Ticket 21301
KOD-25354: Platform - Link Returns to the Delivery for Driver Delivery endpoints
KOD-25362: Add registration link to homepage for new customers
Regression Tests
Case 1
Check that the login page looks correct.
Check that there are no errors in the console.
KOD-25376: T&C and Privacy Policy
KOD-25382: Order confirmation email formatting update
Regression Tests
Case 1
Check that the order is created correctly and the mail with the order data is sent to the mailbox.
Check that the mail data is correct, the template looks correct.
Tests
Case 1
Create an order, leaving the Purchase Order field empty - make sure that an email has arrived to your mailbox, the email template is correct.
Create an order, filling in the Purchase Order field - make sure that an email has arrived to your mailbox, the email template is correct.
KOD-25424: Warehouse visibility Created From Ticket 21942
KOD-25466: Master order/budgets - Allow customers to edit budgets at the line item level
Regression Tests
Case 1
For this regression, you should go to the Locations screen- Select a Location - Budget tab.
Make sure that everything loads properly.
We will also test the inline-editor for the Budget Amount.
Make sure the information is updated successfully and that the Total Spend badges change colors accordingly.
Tests
Case 1
For this test, you should go to the Locations screen- Select a Location - Budget tab.
If that Location has items, go to the Budget Amount tab and locate the new field that was added to that column.
We are going to test the editing of that field. Make changes to that field and make sure the data is saved correctly.
You can check that in the operations portal to make sure.
Also make a change in the operations portal and expect it to be reflected on the customer portal.
This should not change any of the other values on the screen at the moment, the Total Spend, or the Budget Amount.
KOD-25505: Encourage Login Following Add to Cart to Preserve Contents Past Timeout
Tests
Case 1
When the user is not logged in and adds an item to cart, a notification is shown saying the items in cart will be saved for 20 minutes. The notification will disappear automatically after 6 seconds, or when the link ‘Continue as guest’ is triggered.
When the link to ‘Register OR Sign in’ is triggered, it will open the ‘Sign in’ page.
When the user is logged in, adding an item to the cart should not show the notification.
KOD-25516: Make Billing Address not editable
Regression Tests
Case 1
Check that the order is created correctly.
Check that the Billing Address fields are pre-filled on the checkout page.
Check that when changing the company on the checkout page, the Billing Address fields change.
Check that there are no errors in the console.
Tests
Case 1
Check that the Billing Address fields are not editable on the checkout page.
KOD-25536: Order tracking endpoints do not support USPS 30 digit tracking numbers Created From Ticket 22046
KOD-25557: Pricebooks - Allow customer to generate pricing when downloading pricebook
Regression Tests
Case 1
Employee side generation email should continue working.
Generate priceBook for employee side and make sure the employee received the email.
For this we have to go to a Company in the operation portals, and go to the catalogs.
In there you can find 2 buttons for generating the prices and download them
For this test we have to make sure that the update current pricing send the email, so go ahead and click on it and then wait until fiveMinuteBulkJob runs.
After that, you should receive the email about the pricing update.
Since you are already in the screen you can click and download pricing and verify it works and the pricing fields are populated although it is not part of this regression.
Customers will hit the endpoint for updating pricing for one specific catalog, and the event will be created to be processed later in a Job.
After the FiveMinuteBulkJob runs and updates the event in queue, it will send an email notifying about the updates and a link to redirect to the company catalog page
{url}/company-catalog?code={catalogCode}
Then, the user should be able to understand that he can click the download button and the prices are up to date.
Since it is a new endpoint, it should be hit from swagger for now. But after the 5minuteBulkJob runs you should be able to download prices as it was created in this ticket time ago.
KOD-25558: Check Rounding on Quote Templates
Regression Tests
Case 1
Create Account Quote.
Set priceEngine setting value to InforCSDV5.
Add several items to your Account Quote.
Generate order email and Order PDF.
Make sure for items with any other unit sell fields other than “LF“ in the Column “Unit Price“ 2 digits after comma are shown.
Case 2
Check the same column Unit Price in order email and order PDF on regular order:
Make sure 2 digits after comma are shown.
Case 3
With the same setup from feature Case 1 (shown below): update priceEngine value to any other priceEngine value other than InforCSDV5. You can use InforCSDV1, 2, 3, 4.
Generate order email and order PDF. Make sure for items with “LF“ Unit Sell only 2 digits after comma are shown.
Tests
Case 1
Following updates should be taking place only when priceEngine setting equals to InforCSDV5 and order item unitSell equals to “LF“ and you are generating orderEmail/orderPDF, etc. for an Account Quote.
Add items to your account quote. For some items set “LF“ unit sell.
Generate order email and order PDF.
Check generated email/PDF.
Make sure for order items with “LF“ unit sell field: you are able to see 3 digits after comma without rounding. If the number after the comma has less than 3 digits, “0” should be added.
Example:
12.45 → 12.450
12.458 → 12.458 (not 12.46).
KOD-25559: Registration field addition Created From Ticket 22573
KOD-25570: Be Able to Add an Image to a Filter Category (Backend)
KOD-25572: Prevent Adding Inactive Items to Order
KOD-25583: Automatically send employee notifications for automated orders sitting in Kodaris
Tests
Case 1
First of all, activate this setting: sendAlertsForAutomatedOrdersInException.
There is a condition also, to only execute it on working hours (9 AM-6 PM).
Add your email here: sendAlertsForAutomatedOrdersToEmails.
You need at least one order with employeeStatus = 'Automation Exception' and completed = anytime YESTERDAY.
Execute the HourlyIntervalJob, then check the email: Automated Orders in Exception Alert.
KOD-25586: Setting up Production API account
KOD-25588: Add support for translating the keywords
Regression Tests
Case 1
Test product language screen in the operations portal working as expected.
Tests
Case 1
Test newly added fields to ProductLanguage.
KOD-25587: Automatically insert web customer cross references into CSD
KOD-25591: Shipping Methods / Shipvias Created From Ticket 17220
KOD-25593: Customer Email Tickets: Default to Customer View "Yes" Created From Ticket 22717
KOD-25594: Ship Today Message on Checkout update
KOD-25599: Create generic system to system connector
KOD-25609: Add new order item field "customerUnit" to order item grid view
Tests
Case 1
Should render the Customer Unit column correctly.
KOD-25608: Show Whole Order Discounts on Invoices
KOD-25611: Order Automation - Collect customer unit in parsers and store on order item
KOD-25612: Change Build Date to Follow up Date in Opportunity Filters
Tests
Case 1
Should render Follow up Date instead of Build Date in Opportunity filters when leadDetailScreen is equal to generic.
KOD-25617: Customers with multiple Shipto's
Regression Tests
Case 1
Please test that Select Shipto Location popup works as usual even when shipto is not populated.
Tests
Case 1
Please test that on Select Shipto Location popup we can see shipto after location address in parentheses.
KOD-25616: Add create campaign action to demo site ux
Regression Tests
Case 1
As a logged in employee, make sure you can still load a category page and the search page.
Case 2
On the category page, make sure when you click actions, you can still click manage category and do the things you were able to do before.
Case 3
If you are not logged into the operations portal, then you shouldn’t see the buttons on the category and search pages
Tests
Case 1
Navigate to the category page → click on actions → create campaign → a modal should popup → add a name and description and click save → upon success, you should see a new campaign being created with the code, name, link, and description where you can click on the code and it takes you to the campaign in the operations portal or you can click on the link and it takes you to that URL you just created a campaign for.
Case 2
This time go search for a product and click the create campaign button → do the same steps as above and upon success you should see the code, name, link, and description.
KOD-25618: Implementation - Branding
KOD-25619: Implementation - Branding
KOD-25620: Customer Parser Set up Created From Ticket 22512
KOD-25622: Shipping Rate Tables - Next steps
KOD-25624: AP Auto- Email Processing Failed Error Created From Ticket 22892
KOD-25626: Add campaign items crud UX
Regression Tests
Case 1
Open the Operations Portal.
Navigate to the Campaigns screen and select any available campaign.
Click on the Items tab.
Click on the Details tab.
Switch back and forth between the Items and Details tabs.
Expected Result:
The user can switch between the Items and Details tabs without any errors or UI issues.
The content of each tab loads correctly upon selection.
Tests
Case 1
Open the Operations Portal.
Navigate to the Campaigns screen and select any available campaign.
Click on the Items tab.
Verify the column display functionality:
Check that the user can toggle column visibility (show/hide columns).
Verify CRUD operations:
Read: Confirm that all existing items are displayed correctly as per the API response.
Create: Create a new item and verify it appears in the list and in the API.
Update: Modify an existing item and confirm that changes are reflected in the UI and API.
Delete: Delete an existing item and verify it is removed from both the UI and API.
KOD-25625: Add campaign link field to campaigns screen
Regression Tests
Open the operations portal.
Navigate to the Campaigns screen.
Verify that the user can hide and show the Link field using the show/hide functionality.
Tests
Case 1
Open the operations portal.
Navigate to the Campaigns screen.
Verify that the Link field is displayed.
Verify that the Link field is displayed on a detailed page.
KOD-25641: Delayed order acknowledgement email template
KOD-25642: Note to Invoices and Statements
Regression Tests
Case 1
Check that the order details, order email and order pdf still work as expected.
Tests
Case 1
Check that on the order templates, there is now the message from the ticket description on the bottom left of the order totals section.
KOD-25653: Cart pricing display - Multiple instances of same product
Regression Tests
Case 1
Make sure you can still add multiple different items to the cart and the prices still show (if there is a price).
Case 2
If you click on an item that says request a quote and no price, you still shouldn’t see a price in the cart.
Tests
Case 1
Add the same item multiple times to the cart and notice the price shows up on all the items.
KOD-25657: Add delete orphans functionality for Products
KOD-25669: Remove brand name as a filter
KOD-25670: Update warehouse endpoint to pull all warehouses
KOD-25673: Make product type field editable on the product development tab
Regression Tests
Case 1
In the Operations Portal:
On Product open Development Tab.
Make sure it is loaded with no issues.
Make sure you are able to update editable fields.
Make sure you are not able to update read only fields.
Tests
Case 1
In the Operations Portal:
On Product open Development Tab.
Find productType field.
Make sure it is editable.
Update value in this field. Refresh the page.
Make sure the product type field value was successfully updated.
KOD-25675: Employee View-Teams Tab Currently Not Searchable Created From Ticket 23154
Regression Tests
Case 1
On the operations screen navigate to the Tickets screen.
Confirm page is loaded properly.
Navigate to the tickets screen under the company detail page.
Confirm page is loaded properly.
Repeat the same steps (except 3 and 4) for the Employees screen.
Case 2
On the operations portal navigate to any Ticket's search screen.
Add and remove some columns.
Confirm columns are properly removed.
Use filter, sort and search.
Confirm all actions are proceeding as expected.
Repeat the same steps for the Employees screen.
Tests
Case 1
On the Ticket’s search tab add the “Team” column.
Sort by the column.
Confirm sort has been applied.
Apply filtering by “Team” column.
Confirm filter is applied to the table.
Repeat the same steps for the Employees screen.
KOD-25677: Show company saved payment methods on pay order popup to pay with saved card
Regression Tests
Case 1
In the operations portal, click into an order that has not been paid yet → make sure you can still submit a payment by new card and terminal.
Tests
Case 1
Click into an order that has not been paid yet → click pay order → notice the new option to select ‘Saved Credit Card’ → if the company has saved credit cards, the option will be enabled, if the company does not have saved credit cards, the option will be disabled.
Case 2
Make sure you are on an order that has a saved credit card → go to pay that order → click the option ‘Saved Credit Card’ → you should see type, payment amount and payment method → you should be able to select either SALE or AUTHONLY → you can input an amount or leave blank → you should be able to select one of the saved payment methods → click pay and then upon success, you should see the icon turn green.
KOD-25681: Commissions - UX updates and fixes
Tests
Case 1
Navigate to the Commissions screen in the operational portal.
Create a new Commission and select the date from the calendar for Begin Date.
Edit the newly created Commission and modify the Begin Date.
Expected Result: The Begin Date is created and updated successfully without any errors.
Case 2
Navigate to the Commissions screen in the operational portal.
Create a new Commission by adding Company Code and Product Code using the autocomplete feature.
Edit the newly created Commission and modify the Company Code and Product Code again using the autocomplete feature.
Expected Result: The fields are created and updated successfully without any errors, and autocomplete works as expected.
Case 3
Navigate to the Commissions screen in the operational portal.
Observe the order of columns in the data grid.
Verify that the following columns appear in this exact order:
Amount
Product Code
Company Code
Customer Code
Begin Date
End Date
Percentage
Check that “Commission ID” is not displayed in the default view of the data grid.
Verify that “Commission ID” can still be added manually by the user if needed.
Case 4
Navigate to the Commissions screen in the operations portal.
Сheck filter in the following columns:
Company Code
Product Code
Product Group Code
Begin Date
End Date
Verify that the data grid updates according to the applied filters.
Clear the filters and confirm the grid returns to the unfiltered view.
KOD-25683: Commissions - Add server side import export function to screen
KOD-25690: Operations Portal configuration tweaks
Regression Tests
Case 1
On the operations portal navigate to the ‘Products’ screen.
Move to the ‘Data’ Tab.
Confirm Tab is displayed properly and data is loaded as expected.
Case 2
On the operations portal → Products → Data apply:
Filters
Search
Sorts
Adding columns
Removing columns
Confirm all actions performed as intended.
Case 3
Navigate to the product detail page.
Confirm page is loaded properly.
Change any value and refresh the page.
Confirm the changes were applied and saved.
Look for the “Primary Category” field.
Change this value and refresh the page.
Confirm the field displayed properly and displays right value.
Case 4
On the operations portal navigate to the ‘Data’ tab under ‘Products’ screen.
Select any product and navigate to it’s detail page.
Move to the “Related Product Tabs”.
Confirm page is loaded properly and data is displayed as expected.
Add product as the related one.
Confirm a new product has been added.
Tests
Case 1
On the operations portal navigate to the ‘Products’ → ‘Data’.
Add “Product Type” column.
Double click on the that’s column cell.
Confirm there is dropdown with the following values:
None
Configurator
ConfiguratorVariant
ProductLine
Select any of these (except “None”) values.
Confirm values are set up properly.
Refresh the page and confirm changes were applied.
Confirm after changing the value to “None” the cell vipes out.
Case 2
On the operations portal navigate to the ‘Products’ → ‘Data’ and select any product.
Navigate to its details page.
Confirm on the top level there is “Product Type” field.
Click on this field and confirm that the fields contains one of the following options:
None
Configurator
ConfiguratorVariant
ProductLine
Select any value (except None), refresh the page and confirm value was set properly.
When setting Value to “None” confirm fields get viped out.
Case 3
From the Product detail page navigate to the “Related Products” tab.
Double click on the cell under the “Type” column.
Confirm that the value ConfiguratorVariant is displayed.
Navigate to the settings screen.
Search for ‘relatedProductTypes’ setting.
Confirm values from that dropdown also displayed from the dropdown.
KOD-25691: Ensure all configurator options are filled in before adding to cart
Regression Tests
Case 1
Confirm that the search, category, and product pages load without issues.
Case 2
Confirm that products with a configurator have a "View Details" link that leads to the product page, and otherwise display an "Add to Cart" button that adds the item directly to the cart.
Case 3
Confirm that if you open a product without a configurator, the "Add to Cart" button works as expected.
Case 4
Confirm that if you open a product with a configurator and click "Add to Cart", you are redirected to the login page.
Tests
Case 1
Confirm that if you open a product with a configurator while logged in and click "Add to Cart", a native browser alert appears prompting you to select configurator options, and only then will the "Add to Cart" function work.
KOD-25696: Main Ticket View-Indication of Attachment Created From Ticket 23162
Regression Tests
Case 1
For this test, we should go to the Tickets screen.
Make sure that everything loads properly when the ticket has and doesn’t have Customer and Internal Files.
Tests
Case 1
For this test, we should go to the Tickets screen.
Now, when we see the Customer Files and Internal Files tabs, we should see a badge with the number of files of each type.
Try attaching Customer and Internal Files. The values should update accordingly when you add or delete file items.
KOD-25699: Pull item unit
KOD-25706: Add slice option to sku and order list and payment list endpoints
KOD-25709: Ticket Response in Email Issues Created From Ticket 23064
KOD-25710: Display Price Breaks on PDP
Regression Tests
Navigate to the website.
Open any product that does not have priceBreaks.
Verify that no price breaks list is shown on the product page.
Tests
Case 1
Navigate to the website.
Open any product that has non-empty priceBreaks.
Verify that the price breaks list is displayed correctly.
Verify that the price breaks list is still displayed properly across all screen sizes.
KOD-25717: Ticket #166 - Created From Ticket 23331
KOD-25719: Ticket #165 - Created From Ticket 23379
KOD-25736: Ticket #175 - Google Tag Manager/Microsoft Clarity/Google Analytics
You need to access swagger and PATCH to /api/account/companyProductCategory/{companyProductCategoryID}/product/byCode/{productCode}
Also, you can send savedQuantityToOrder as the json parameter. After executing, check if the parameter you patched was returned with the value you sent.
KOD-25778: Implementation - Spin up system
KOD-25779: Implementation - Spin up system
KOD-25787: Add a medium length field to the product entity called productDisplayType
KOD-25789: Implementation - Install Applications
KOD-25796: Implementation - Install applications
KOD-25807: Fix reset password checks for expiration
Regression Tests
Case 1
If the user is locked out, when trying to log in, it should not be able until the field lockedoutUntil is lower than the current date.
For replicating this scenario we need to lock an employee out and try to log in after that.
No matter how many times we hit the login button the result should be the same.
Case 2
If the administrator user password has already expired, you should not be able to log in.
Tests
Case 1
If the administrator user is locked out, we should be able to reset the password no matter when the user will be unlocked.
So, for creating this scenario just lock out the administrator user by failing the password a few times and then reset the password.
You should be able to reset it and log in again.
Case 2
When resetting a password, it doesn’t matter that your user has a password expiration date, you should be able to reset your password.
However, this should not apply when logging in (see regression test).
The password will expire in passwordExpirationInDays days (setting).