Track Products Missing Required Attributes in Categories
The Operations Portal Categories screen now includes a new "Products Missing Required Attributes" column in both Search and Data tabs.
The new column displays the count of products within each category that lack required attribute data. Located in the column selector (disabled by default), users can enable this column to view missing attribute counts directly in the category grid. The column supports both sorting and filtering capabilities, making it easy to identify categories that need attention.
Users can click through to category detail pages and access the "Required Attribute Assignment" tab to verify the exact products flagged with missing attributes. This streamlined workflow helps data managers quickly locate and prioritize categories requiring attribute completion, improving overall data quality management across product catalogs.
https://youtu.be/X_FvR0mpLok
Tickets
KOD-19272: Leveraging AI with multilingual translation - Products
KOD-26937: Add Shipping Date to the Cart screen
Tests
Case 1
Enter the Operations Portal, and open the Settings page.
Search for checkoutOrderItemDeliveryDateEnabled, then open it and set its value to 1.
Click Save.
Enter the to the commerce site, and log in as a customer.
Add two different products to the cart, then open the cart page.
It should display a Delivery Date input for each product in the cart, under the Quantity field.
The Delivery Date input should have the same style as the Quantity input both in desktop and mobile versions.
Select a Delivery Date for a product, then select a different date for the other product.
It should not accept past dates.
Try to set a past date: it should display a validation popup with the message “Select a date greater than today”.
Reload the page: the valid selected dates should be displayed in the fields after reloading.
Case 2
Enter the Operations Portal, and open the Settings page.
Search for checkoutOrderItemDeliveryDateEnabled , then open it and set its value to 0.
Click Save.
Enter the to the commerce site, and log in as a customer.
Add two different products to the cart, then open the cart page.
It should not display a Delivery Date input for each product in the cart, under the Quantity field.
KOD-27113: Add deposit option to lockbox setup screen
Regression Tests
Case 1
Navigate to the Lockbox Configuration page (`/lockbox/configuration`).
Check if it is displayed as expected.
Modify the "Routing Number" field to a new value.
Click outside the field to blur and trigger save.
Refresh the page and verify the "Routing Number" value persisted correctly.
Tests
Case 1
Navigate to the Lockbox Configuration page ( /lockbox/configuration).
Ensure "Batch Out Method" is set to a non-API method (e.g., "JSON" or "EDI820") and "Enable Batch Out per Host" is set to "No".
Scroll down to the "Transaction Types" field below the "Routing Number" field.
Verify the "Transaction Types" field displays a note: "Web Account Payment" transactions are always included.
Click on the "Transaction Types" multi-select dropdown.
Confirm there is no option to deselect "Web Account Payment" (it is not listed as a selectable option since it is always included).
Select the "Deposit on Account" option.
Click outside the dropdown to blur and trigger save.
Verify the setting saves without error.
Refresh the page and verify "Deposit on Account" is still selected in the "Transaction Types" dropdown.
Navigate to the Settings page (`/settings`) and search for "lockboxExtraTransactionTypes".
Verify the setting value contains "97" and "99" (97 = Deposit on Account, 99 = Web Account Payment).
Case 2
Navigate to the Lockbox Configuration page ( /lockbox/configuration).
Ensure "Batch Out Method" is set to a non-API method and "Enable Batch Out per Host" is set to "No".
Open the "Transaction Types" multi-select dropdown.
Deselect "Deposit on Account" if it is currently selected (so no extra types are checked).
Click outside the dropdown to blur and trigger save.
Refresh the page and verify the "Transaction Types" dropdown shows no selections.
Navigate to the Settings page (`/settings`) and search for "lockboxExtraTransactionTypes.
Verify the setting value is "99" only (Web Account Payment is always included, no extra types).
KOD-27465: Add UX for new streaming AI Chat endpoint functionality
Regression Tests
Case 1
Open AI Chat page.
Check browser console for errors.
Type "Test message" in the input field.
Click the Send button.
Wait for an AI response.
Expected Result:
No JavaScript errors in browser console.
The input field accepts text normally.
The Send button responds to clicks.
Messages from AI displays correctly.
Tests
Case 1
Go to `/ai-chat` page.
Type for example "Hello AI" in the input field and click the Send button.
Expected Result:
Message "Hello AI" appears on the right with the user avatar.
The input field is cleared.
"Kodaris AI is typing..." indicator appears.
The send button becomes disabled.
Case 2
After sending a message, wait for an AI response.
Expected Result:
"Reasoning" section appears with expand/collapse toggle.
Main AI response displays below reasoning section.
"typing..." indicator disappears.
Send button becomes enabled.
Case 3
Send several messages, then click the "New Conversation" button.
Expected Result:
All messages disappear.
Welcome message "Welcome! How can I assist you today?" appears.
"New Conversation" button is hidden.
Case 4
Handle Connection Error.
Disconnect the internet and try to send a message.
Expected Result:
A red message appears: "Sorry, there was an error connecting to the server."
KOD-28222: Adding Card to CSD Created From Ticket 38172
KOD-28550: Microsoft Outlook Integration - Implement Integration pattern
KOD-28762: Under tendering orders
KOD-28843: Payment Processing and infor/datalake API Methods
KOD-28964: Checklist Required by for SSO and Integration
KOD-29270: Create App Listing
KOD-29282: Check Caching on Price Types not Updating from Imports
KOD-29343: Update rule utils
KOD-29378: Re: Invoice Form Change
KOD-29413: Your Order Details
KOD-29487: Non-Stock Items Exception Handling for Quote Lookup
KOD-29488: CSD Payments: invoice number on a refund transaction
KOD-29492: Redesign "Save to ERP" flow to follow standard patterns
Regression Tests
Case 1
Open up logs.
Test with an address that has NO "trendCompiledSettings" and NO "lastSyncedToErp".
Expected: Should call adding company address to ERP internally and succeed.
Test with address that HAS "trendCompiledSettings" setting.
Expected: Should call updating company address in ERP internally and succeed.
Test with an address that has "lastSyncedToErp" but NO "trendCompiledSettings".
Expected: Should call updateCompanyAddressInErp internally (lastSyncedToErp indicates it was previously added).
Case 2
Purpose: Verify background job still functions correctly with new pattern.
Precondition: Have job setting enabled: jobSyncCompanyAddressesToErp
Create or update a company address to trigger sync (set syncedErpStatus if applicable).
Wait for FiveMinuteBulkJob to run (or manually trigger in the scheduler).
Check logs for " [JS] Looking for companyID {}, companyAddressID {}".
Expected: Job processes company addresses using the new add/update logic.
Case 3
Open Swagger: POST /api/system/integration/infor/syncCompanyAddress.
Provide companyID and companyAddressID as query parameters.
Execute the endpoint.
Expected: Should work correctly using the refactored sync logic.
Tests
Case 1
Precondition: Find or create a company address that has NOT been synced to ERP (no "trendCompiledSettings" setting and no "lastSyncedToErp" value).
Open Swagger: /api/system/company/address/{companyID}/{companyAddressID}/addCompanyAddressToErp
Enter valid companyID and companyAddressID.
Execute the endpoint.
Expected: Response shows success=true, address is added to ERP.
Case 2
Precondition : Use a company address that has "shipto" setting (required - endpoint validates this)
Open Swagger: /api/system/company/address/{companyID}/{companyAddressID}/updateCompanyAddressInErp
Enter valid companyID and companyAddressID.
Execute the endpoint.
Expected: Response shows success=true, address is updated in ERP.
Case 3
Precondition: Find or create a company address WITHOUT "shipto" setting
Open Swagger: /api/system/company/address/{companyID}/{companyAddressID}/updateCompanyAddressInErp
Enter the companyID and companyAddressID without shipto setting.
Execute the endpoint.
Expected: Returns 400 Bad Request with message "Missing CompanyAddress shipto setting".
Case 4
Open Swagger for either new endpoint.
Enter valid companyID but non-existent companyAddressID.
Execute the endpoint.
Expected: Returns 404 Not Found error.
Enter non-existent companyID with any companyAddressID.
Execute the endpoint.
Expected: Returns 404 Not Found error.
Login as user WITHOUT administrator, superuser, or companyEdit roles.
Attempt to call the new endpoints.
Expected: 403 Forbidden error.
Log out of the system.
Attempt to call the new endpoints directly via Swagger/API.
Expected: 401 Unauthorized error.
Case 5
Test new server side endpoints within user scripts:
Look under QA tests for code sample with ready requests.
Open up logs.
Change null values to your actual data on the website.
Run the script and look at the logs.
KOD-29513: Make Name Sortable for Related Products - UX
Regression Tests
Case 1
Make sure the products → Related products table still loads properly.
Make sure the name column still loads correctly as well as if you go to add more columns and uncheck the name and recheck it so that it shows up fine.
Tests
Case 1
On the Name column, notice you can now sort on it → click the arrow and the names will be in ascending order, click again, and the names will be in descending order, click a third time and there will be no more sorting.
Case 2
Repeat that test above for the data screen and category assignment screen.
Products → Data → click into a product → related products.
Products → Category Assignment → click into a product → related products.
KOD-29528: Budgets - Company budget error when calculating
Regression Tests
Case 1
Validate company address budget calculation is still working as expected when click on the calculate button from Company → Address → Budgets → Budget screen.
Pre-requirements:
To have at least one order whose status matches the company address Budget Restriction Type field value.
This order(s) must have properly configured the shipto setting to this company address.
Steps:
From Kodaris operations platform go to the Company Address screen and enter the details of the Company Address you’ll use (you can create a new one if needed).
Click on the Add Budget button adjust fields and then click on add.
Go to the company of this Company Address.
Go to tab Addresses and select the Company Address.
Select the Company Address and then go to its budgets and select the budget.
Click on calculate Button.
If you go to tab items now you will see a list with the line budgets created and if you go the Company budgets screen you must see that the Parent Budget’s Current Spend Amount field is equals to the total of your order (or the total of all you’re implied order together) and the in the line items, this line items will be the total by product, total in taxes and total discounts.
Case 2
Validate company address budget calculation is still working as expected when DailyIntervalJob runs and the setting jobRecalculateCompanyAddressBudgets is enabled.
Pre-requirements:
To have at least one order whose status matches the company address Budget Restriction Type field value.
This order(s) must have properly configured the shipto setting to this company address.
Setting jobRecalculateCompanyAddressBudgets must be enabled.
Steps:
Execute the first 5 steps defined in the previous test.
In the other browser tab go to the Scheduler screen and manually execute the DailyIntervalJob scheduler.
Wait a moment (this could take a little while according to the environment).
Go back to the previous browser tab.
If you go to tab items now you will see a list with the line budgets created and if you go the Company budgets screen you must see that the Parent Budget’s Current Spend Amount field is equals to the total of your order (or the total of all you’re implied order together) and the in the line items, this line items will be the total by product, total in taxes and total discounts.
Tests
Case 1
Validate that when create/update a CompanyBudget with type “Total Spend” for a company who already has a budget of this type an error is displayed and the budget is not created.
Pre-requirements:
A company budget with type with total spend and no company address id set – If you don’t have one, just follow the steps 1 to 3 to create it
Steps:
From the operations portal go to Company Budgets screen.
Click on the Show/Hide Columns button and select the Budget Type column.
Add a new Company Budget row with budget type “Total Spend”.
A red banner with message Another budget with type Total Spend already exists for Company with ID <your companyID> must appear.
Case 2
Validate that when create/update a CompanyAddressBudget with type “Total Spend” for a company address who already has a budget of this type an error is displayed and the budget is not created.
Pre-requirements:
A company budget with type with total spend and company address id set – If you don’t have one, just follow the steps 1 to 3 to create it
Steps:
From the operations portal go to Companies > company > Addresses > Address > Budgets screen.
Click on the Show/Hide Columns button and select the Budget Type column.
Add a new Company Address Budget row with budget type “Total Spend”.
A red banner with message Another budget with type Total Spend already exists for CompanyAddress with ID <your companyAddressID> must appear.
Case 3
Validate that when create/update a Company Budget with customer and type “Total Spend” for a company who already has a budget of this type an error is displayed and the budget is not created.
Pre-requirements:
A company budget with type with total spend and no company address id set – If you don’t have one, you can create it just following steps 1 to 3 from Case 1.
A customerID of a customer whose company is the company which has the pre-existing budget
Steps:
From swagger, look for the endpoint /api/system/companyBudget/customer/{customerID} under the Company Budget API section.
In the customerID param pass the ID of the customer you want to create the budget for.
In the body pass the a simple payload with budgetType field set to Total Spend – like one below
Click on the execute button.
A 400 response with message Another budget with type Total Spend already exists for Company with ID <your companyID> must be retrieved.
{
"code" : "MY_BUDGET_WITH_CUSTOMER" ,
"name" : "My Budget with Customer" ,
"active" : true ,
"budgetType" : "Total Spend"
}
Case 4
Validate that when creating a Company Address Budget from the customer side with “Total Spend” for a company address who already has a budget of this type an error is displayed and the budget is not created.
Pre-requirements:
A company budget with type with total spend and company address id set – If you don’t have one, you can create it just following steps 1 to 3 from Case 1
A customerID of a customer whose company is the company which has the pre-existing budget
Steps:
From swagger, look for endpoint /api/account/companyAddressBudget/{companyAddressID}
under the Customer Company Address Budget API section.
In the companyAddressID param pass the ID of the companyAddress you want to create the budget for
In the body pass a simple payload like one below – no need to pass since this flow creates only Total Spend budgets.
Click on the execute button.
A 400 response with message Another budget with type Total Spend already exists for CompanyAddress with ID <your CompanyAddressID> must be retrieved.
{
"code": "MY_CUST_COMP_ADDRESS_BUDGET",
"name": "MY_CUST_COMP_ADDRESS_BUDGET",
"active": true
}
KOD-29541: Quick Order from Import File Placement
KOD-29648: Search metrics or reports
Regression Tests
Case 1
Search for a term that returns many results.
Make sure that there are no error messages.
Switch between pages, make sure that pagination works (the next portion of products is shown) and there are no error messages.
Case 2
Search for a term that returns no results.
Make sure that there are no error messages.
Case 3
Add a product to cart.
Make sure that there are no error messages appear and the products are added to cart.
Ensure that the user script (BatchReportGenerator) generates a CSV file with transactions for the specified date and MID.
Verify that the file contains the following columns: Payment_ID, Date_Time, Order_Number, Transaction_Type, Card_Type, Original_Amount, Display_Amount, Status, Confirmation_Code, Last_4, Host_Code.
Ensure that transactions of type WebRefund, Return (98), Credit Memo (6), Misc Credit (5) are displayed with negative amounts in the Display_Amount column.
Verify that regular payments (WebCreditCard, Invoice, Scheduled Pay) remain positive.
Verify that the Total Batch Amount (sum of all Display_Amount) is calculated correctly.
Check that the Total Sales calculation is correct (positive transactions only).
Check that the Total Returns calculation is correct (negative transactions only).
Check that the totals by card type (Visa, American Express, etc.) are calculated correctly.
Make sure that the email with the CSV file attachment is sent to the specified address.
KOD-29700: Job Id added to checkout and acknowledgments
Regression Tests
Case 1
Check that order creation is working correctly.
Check that the layout in step 3 of the checkout looks correct.
Check that the Thank You page templates and the email after order creation look correct.
Check that there are no errors in the console.
Tests
Case 1
Verify that the field "Job Name" appears in step 3 of the checkout process.
Verify that the field is optional.
Verify that when entering data in this field, it is displayed on the Thank You page, as well as in the email after creating the order.
KOD-29709: AP: Invoice Email Failure
KOD-29710: AP: PO Number Not Found (Invoice Format Update)
KOD-29719: Missing French Text - Part 2
Regression Tests
Case 1
Navigate to /spcu/form-sign-up page.
Verify that this page still loads fine for English and French languages.
Case 2
Navigate to /spcu/form-special-order.
Verify that this page still loads fine for English and French languages.
Case 3
Add some items to the cart and navigate to the cart.
Navigate to the third step of checkout.
Choose a card as a payment method.
Verify text looks good for card payment.
Case 4
Navigate to /spcu/form-ice-melt-order.
Verify that this page still loads fine for English and French languages.
Case 5
Verify that order templates still load fine.
Case 6
Login as a customer.
Navigate to the customer portal → Orders screen.
Choose order 2038 and verify that everything looks good.
Case 7
Clean cookies before testing.
Log in as a customer.
Language of site should be English.
Add some items to the cart and place an order.
You should see popup.
Make sure it’s showing in English
Case 8
Verify that public tracking page still loads fine.
Case 9
Login as a customer.
Navigate to the customer portal → orders.
Choose order that older than 6 month and in status Shipped/Invoice(e.g. 1508).
Navigate to Tracking.
Make sure page still looks good.
Case 10
Login as a customer.
Navigate to the customer portal → orders.
Choose order that is direct order(e.g. 1238).
Navigate to Tracking.
Make sure page still looks good.
Case 11
Login as a customer.
Navigate to the customer portal → orders.
Choose any order. As example order 5470.
Navigate to Tracking.
Make sure page still looks good.
Tests
Case 1
Navigate to /spcu/form-sign-up page.
Switch languages to French..
Verify that text under the Sign Up for a New Account form is now translated to French.
Verify that checkbox below the Sign Up for a New Account form is now translated to French.
Case 2
Navigate to /spcu/form-special-order.
Switch languages to French.
Verify that checkboxes are translated to French.
Case 3
Change language to French.
Add some items to the cart and navigate to the cart.
Navigate to the third step of checkout.
Choose card as payment method.
Verify that text To pay with credit card, enter your card details below click place order are translatable to French.
Case 4
Login as a customer.
Switch languages to French.
Navigate to /spcu/form-ice-melt-order.
Near Account # you see information icon
Verify that text for this icon is translatable now.
Case 5
Login as a customer.
Switch languages to French.
Navigate to the customer portal → orders → choose any order with Handling Fee discount.
Make sure that discount name is translatable.
Case 6
Login as a customer.
Change language to French.
Navigate to the customer portal → Orders screen.
Choose order 2038 and verify that text To view associated orders, please click the Associated Orders button above or click this link is translated now.
Case 7
Clean cookies before testing.
Log in as a customer.
Change language in header to French.
Add some items to the cart and place an order.
You should see popup.
Make sure it’s showing in French.
Case 8
Check on public tracking URL that text is translatable to French.
Case 9
Login as a customer.
Change language to French.
Navigate to the customer portal → orders.
Choose order that older than 6 month and in status Shipped/Invoice.
Navigate to Tracking.
Make sure that text is translatable.
Case 10
Login as a customer.
Navigate to the customer portal → orders.
Choose order that is direct order.
Navigate to Tracking.
Make sure that text is translatable.
Case 11
Login as a customer.
Navigate to the customer portal → orders.
Choose any order.
Navigate to Tracking.
Make sure that text is translatable.
KOD-29720: Footer Links Edits
Regression Tests
Case 1
Check that footer still loads fine for English language.
Case 2
Check that footer still loads fine for French language.
Tests
Case 1
Check that there are new sections in footer:
Terms and Conditions
Return Policy
FAQs
and they are going to corresponding pages.
Also, check that for French language, translation is working.
KOD-29763: Configurable products double image
Regression Tests
Case 1
Open a regular (non-configurator) product page.
Check the image carousel.
Verify all product images are displayed.
Expected Result:
All images array are displayed in the carousel.
No duplicate images.
Carousel navigation works correctly.
Case 2
Open configurator product page.
Select a variant that has Product Files.
Check the image carousel.
Expected Result:
All images from Product Files are displayed.
mediumImage is also displayed (added once at the end).
No duplicates.
Tests
Case 1
Preconditions:
Product has productDisplayType === "Configurator".
Product variant has Public Files with multiple images.
Steps:
Open configurator product page.
Select any product variant from the option dropdowns.
Check the image carousel.
Expected Result:
Each image in the carousel appears only once.
Case 2
Steps:
Open configurator product page.
Select any product variant from the option dropdowns.
Check the image carousel.
Expected Result:
Each image in the carousel appears only once.
KOD-29764: UX for merging guest cart with user cart
KOD-29784: Display Unapplied Cash In the Customer Portal-AR Lockbox Update
KOD-29787: Add dataEntityCreatedEvent for Business Events
Regression Tests
Case 1
Verify that deleting and updating one of the watched entities (order, product, administrator) still performs as expected. (Audit log is created if rule and event are turned on, and the entities look correct in the operations portal).
Case 2
Verify that creating a watched entity (Order, Product, Administrator) still completes successfully and the entity is persisted to the database.
Create new Order, Product, and Administrator and verify that they all appear as expected in the Operations Portal.
Expected Results:
All entities are created successfully without errors.
Entities are visible in the UI after creation.
No exceptions or errors in application logs.
KOD-29795: User registration process
KOD-29824: COD Payment Form - Add amount validation
KOD-29832: Add Missing Server Side Endpoints
KOD-29840: Configure Public Pricing
KOD-29843: Process ACH Auth and Capture
KOD-29847: Add UX for the bulk adding of products to a catalog
Regression Tests
Case 1
Make sure you can still load a category page and everything looks the same.
Case 2
On a company/customer catalog, make sure you still see the Print Catalog button and can print a catalog.
You should not see any print catalog button on the catalog page.
Tests
Case 1
If you have companyAdmin or companyCatalogEdit role, you should now see a Create Catalog primary action button on the category pages.
Click the button and a pop up will appear → Enter in a catalog name (if you don’t enter in a name, you won’t be able to create the catalog and it will tell you to add the name) and click Create → a success screen should appear saying the catalog creation is in progress and it will take a few minutes to complete → you can either close the dialog or click Go to Catalogs.
If you click go to catalogs it will take you to the catalogs screen.
After the 5 min interval job runs, navigate to the catalogs page and you should see the new catalog created from that category → click into that catalog and you should see the same amount of products are in that catalog as are in the category.
Case 2
If you do not have companyAdmin or companyCatalogEdit role, you should not see the Create Catalog button and therefore cannot create a catalog.
Case 3
When creating a catalog, if you type in a name that has already been used before (the code of the catalog is the same), it will give you an error and the modal will stay open.
Case 4
When creating a catalog, if you type in a name that is > 200 characters, it will give you an error and the modal will stay open.
Case 5
When creating a catalog, if you type in a name that has special characters, it will give you an error and the modal will stay open.
Case 6
When creating a catalog, if you click the Create button and get a success message, if you try clicking the create button again, it won’t do anything.
If you close the modal (after success) and reopen it, the create button should be clickable again
KOD-29851: Add UX for country code searching on tax rate tables
Regression Tests
Case 1
Check that Tax Rates screen still loads fine.
Tests
Case 1
Check that on Tax Rates screen, Country Code field is filterable and sortable.
Add an item to the cart and go thru checkout but before submitting the order, open up your dev tools → submit the order → now on the console type in window.dataLayer and click enter → notice the purchase event in there with the appropriate data (If the customer has access to view pricing, you should see those values for total, tax, and shipping, and unitPrice in the orderItems. However, if you don’t have access to view pricing, then you will see undefined for total, tax, and shipping, and unitPrice in the orderItems will not be present)
Now reload the page → do the same thing (type in window.dataLayer in the console) → notice this time the purchase event is not there, which is what we want (only want it to fire once).
KOD-29883: New webform, new submission destination
KOD-29884: Not reading Product No. column from invoice
KOD-29886: Invoice Parser
KOD-29896: Automating Account Process Tweaks
Regression Tests
Case 1
Ensure that the company is successfully created when submitting the spcu/register-new-customer form.
Ensure that the company is successfully saved in the ERP without any errors.
Tests
Case 1
Ensure that when importing the file into the postal codes table, the taxJurisdiction2 field becomes a number.
Case 2
When saving the company in ERP, check the fields and their values on the system events screen.
Case 3
Check that the values are recorded in the ERP on the events screen.
KOD-29902: Kodaris - UI fixes
Regression Tests
Case 1
Confirm sidebar title is visible and displayed correctly.
Case 2
Сonfirm that the title in the table component is visible and displayed correctly.
Confirm table header is visible, header labels are correct, and the columns still resizes correctly.
Tests
Case 1
Confirm that for a long title the full text is visible and there is no text truncation, overlap, or UI breaking.
Case 2
Inspect the table title via DevTools and confirm the font size is 20px.
Confirm there is no resize indicator on the last column, try to resize the last column, and confirm it still resizes correctly.
KOD-29919: Non-stock Items in Kodaris (Kodaris only non-stock products)
KOD-29921: AHRI - Link to AHRI Certificate
Regression Tests
Case 1
AHRI numbers display in product attributes.
Navigate to a product that has AHRI related products.
Verify the "AHRI #" label still appears in the attributes section.
Verify each AHRI number is displayed and separated by “ - ” when there are multiple.
Verify the layout and spacing of the attributes section is not broken.
Case 2
AHRI slider displays correctly.
On the same product page, scroll to the "Related AHRI Products" slider.
Verify each slide still shows the AHRI number with the "AHRI #" label.
Verify slide navigation (prev/next arrows) still works.
Verify slide content (image, part code, name, "VIEW DETAILS" button) is unaffected.
Case 3
Product without AHRI numbers.
Navigate to a product that has no AHRI related products.
Verify the "AHRI #" row does not appear in the attributes section.
Verify the AHRI slider section does not appear.
Verify the rest of the product page renders normally.
Tests
Case 1
Attribute links redirect to correct AHRI page.
Navigate to a product with AHRI numbers.
Click an AHRI number link in the attributes section.
Verify a new tab opens (does not navigate away from the product page).
Verify the URL where {ahriNumber} matches the number clicked.
Verify the AHRI directory page loads and shows the correct certificate.
If there are multiple AHRI numbers, repeat for each one.
Case 2
Slider links redirect to correct AHRI page.
Scroll to the AHRI slider section.
Click an AHRI number link on a slide.
Verify a new tab opens.
Verify the AHRI directory page loads correctly.
KOD-29927: Header language dropdown menu - Widget
Regression Tests
Case 1
Go to Pages.
At the top, click Add Page.
Choose Gutenberg.
Close the initial dialog.
Confirm that the Gutenberg page loads without issues.
Add any content.
Confirm that the content can be added without errors.
Click Preview.
Confirm the added content appears on the preview page successfully.
Tests
Case 1
Go to Pages.
At the top, click Add Page.
Choose Gutenberg.
Close the initial dialog.
Type /language selector.
Confirm the language selector appears on the page.
Since it works with server data, this selector will not work on click in Gutenberg.
Click Save Preview.
Confirm the language selector appears on the preview page.
Click the selector.
Confirm the list of available languages is displayed.
Select any option.
Confirm the language is successfully updated.
KOD-29929: CRM Custom Fields Needed
KOD-29930: AHRI - Create Documentation for AHRI Product Importer
KOD-29931: Export for Quote Non-Stock Items - Next Steps
Regression Tests
Case 1
Go to the automation app.
Go to the workflow page.
Expected:
The page loads successfully, showing the current workflows.
Case 2
Go to the automation app.
Go to the workflow page.
Try to search rules by code or name.
Expected:
The search must work, showing the workflows according to the text.
Case 3
Go to the automation app.
Go to the workflow page.
Click in the “edit” button of a previous existent workflow.
Expected:
The page loads successfully, showing the information about the workflow.
Case 4
Go to the automation app.
Go to the workflow page.
Click in the “Add workflow” button.
Fill the information.
Expected:
The workflow is created successfully with the information filled before.
Case 5
Go to the automation app.
Go to the workflow page.
Click in the “edit” button of a previous existent workflow.
Edit information.
Click in the “save” button.
Expected:
The workflow information must be edited successfully with the information filled before.
Case 6
Go to the automation app.
Go to the workflow page.
Click in the “edit” button of a previous existent workflow.
Click the “Actions” button.
Click in “delete workflow” button.
Expected:
The workflow is deleted successfully.
KOD-29936: Add Zoom Info Script
Tests
Case 1
Verify ZoomInfo tracking script loads only on public pages:
Navigate to the home page.
Open Browser DevTools (F12).
Go to the Console tab.
KOD-29941: Company Group Catalog Price Book UX
Regression Tests
Case 1
Navigate to a company catalog page as a customer that has no price book templates configured.
Click the "Actions" dropdown and select "Export Price List".
Verify the modal opens and immediately shows "Exporting the price list is currently in progress. We'll send you an email once it is ready to download." without briefly flashing a template dropdown.
Close the modal.
Case 2
Navigate to a company catalog page with ?downloadPriceList=true appended to the URL.
Verify the "Download Price List" modal opens automatically with format selection (CSV/NDJSON) and file name input.
Select a format and click "Download".
Verify the file downloads successfully.
Case 3
Navigate to the catalogs page ( /spcu/catalogs ).
Verify that company catalogs that have a sourceGroupCatalogID (i.e., are derived from a group catalog) are not listed in the company catalogs table.
Verify that group catalogs still appear in their own section.
Case 4
Go to /spcu/catalogs.
Verify company catalogs are listed and linked copies from group catalogs are hidden (no duplicates).
Click on a group catalog that has products.
Verify the info banner "This is a shared catalog managed by your administrator. It cannot be edited." is displayed.
Verify the "Actions" dropdown only shows "Export Price List" and "Add all to Cart" (no edit/remove options).
Click "Export Price List", verify the export modal fires and confirm the export.
Clear the cart, then click "Add all to Cart", verify the button shows "ADDED" and both products appear in the cart.
Search for a specific product (e.g. "31 M"), verify filtered results appear correctly.
Clear the search, verify the "no results" empty state displays correctly for a non-matching search.
Verify filtering by facets works as expected.
Go to the operations portal, navigate to emails, and find the price book export email.
Copy the download link from the email and paste it into the browser (logged in as the customer).
Verify the "Download Price List" modal appears with format selection (CSV/NDJSON).
Download the CSV and open it, verify it contains the correct products, prices, company code, and catalog code.
Tests
Case 1
Navigate to a company catalog page ( /company-catalog?code=<catalog-code> ) that has products.
Click the "Actions" dropdown and select "Export Price List".
Verify the modal opens and displays a "Template" dropdown with "None" and any available templates.
Select a template from the dropdown.
Click "Confirm".
Verify the modal shows the message "The price book is being generated and will be sent to your email shortly."
Close the modal, reopen it, and verify it resets back to the template selection step.
Case 2
Navigate to a company catalog page ( /company-catalog?code=<catalog-code> ) that has products.
Click the "Actions" dropdown and select "Export Price List".
Verify the modal opens with the "Template" dropdown.
Leave the selection on "None" and click "Confirm".
Verify the modal shows the message "Exporting the price list is currently in progress. We'll send you an email once it is ready to download."
Case 3
Navigate to a customer group catalog page ( /customer-group-catalog?code=<catalog-code> ) that has products.
Click the "Actions" dropdown and select "Export Price List".
Verify the modal opens and displays a "Template" dropdown with "None" and any available templates.
Select a template from the dropdown and click "Confirm".
Verify the modal shows the message "The price book is being generated and will be sent to your email shortly."
Case 4
Go to /spcu/catalogs.
Verify company catalogs are listed correctly.
Click "Add Catalog", create a new company catalog with a name and description.
Verify the new catalog page opens.
Go to the shop and add products to the new catalog.
Navigate back to the catalog, verify the added products are listed.
Click "Edit", change the parent catalog and description, then save.
Verify changes persist after saving.
Delete a product from the catalog, verify it is removed.
Search for a product within the catalog, verify results are correct.
Verify the empty state displays correctly for non-matching searches.
Add another product from the shop to the catalog, verify it appears after refresh.
Clear the cart, then click "Add all to Cart", verify the correct products are added to the cart.
Click "Export Price List", confirm the export.
Go to the operations portal, find the export email, and copy the download link.
Paste the link in the browser (logged in as the customer), verify the download modal appears
Download the CSV, verify it contains the correct products and data.
Delete the catalog, verify it no longer appears on the catalogs list page.
KOD-29942: Fix issue when using Kodaris AI Chat
KOD-29944: Implementation - Order / Invoice Documents - Updates
KOD-29954: Update Mapping for Vendor
KOD-29956: Generate a Group Company with type 'ALL' and associate ALL companies in the system
KOD-29963: Implementation - ERP Configuration
KOD-29965: Implementation - Product Configurator
Regression Tests
Case 1
Navigate to the commerce site.
Search for any product.
Confirm search page looks good in each of views:
Grid
List
Catalog
Case 2
Add any product to the cart from each of the view:
Grid
List
Confirm cart badge displayed properly for the products.
Case 3
Locate any product that is not a configurator one.
Click “View Details”.
Confirm you are redirected to the configurator page.
Tests
Case 1
In the system populate setting configuratorBadge with any image path.
Navigate to the search page and look for configurator products.
Confirm icon is displayed on the views.
Grid
List
Confirm svg icon is displayed on catalog view.
Note: setting definition
KOD-29966: Implementation - Branding
KOD-29970: Company Catalog Print Catalog Fix
Regression Tests
Case 1
Make sure you can still print company and customer catalogs.
Tests
Case 1
Find a company group catalog → click the print catalog button → make sure the catalog now downloads properly and does not give an error.
KOD-29971: Implementation - -99 Invoice Documents
Regression Tests
Case 1
Go to Orders → Orders.
Select a random order.
Try to generate PDF invoice for this order using template FS - Wrapped Order PDF . Check, that related from what status of the order is, we have appropriate label for document. For status ‘Invoiced’ or ‘Paid’ it should show ‘Invoice’. Otherwise - ‘Order’.
Check that under summary section there’s no CREDIT - DO NOT PAY text.
Try to generate Email Invoice for this order using template FS - Wrapped Order Email . Check that generated Email invoice has appropriate label on it.
Tests
Case 1
Go to Orders → Returns.
Select a random Return.
Try to generate PDF/Email Invoices and check that the label for generated invoices is Invoice - Return Merchandise . Check that under summary section there’s CREDIT - DO NOT PAY note.
Case 2
Go to the customer portal account Returns page.
Find appropriate return item (for test you can use item with Web # 3899 on content). Open it.
Change in the URL path by replacing returns with orders.
Go to details page. Check that invoice rendered properly. Check that it has the right label CREDIT - DO NOT PAY note.
KOD-29977: SEO - Product Page
KOD-29978: Template Updates
KOD-29981: Update to customer invoice form
Regression Tests
Case 1
Select an order with a status other than Invoiced.
Ensure the order contains items, including items where statusType === "C".
Generate order template.
Click on Email Order.
Select the appropriate template.
Verify all items are displayed.
Ensure that ALL order items are displayed in the template,regardless of whether statusType === "C"
Verify this behavior for:
Email
PDF
HTML (on the customer portal).
Tests
Case 1
Open the Operations Portal.
Navigate to Orders.
Filter by status: Invoiced.
Select an order that contains canceled items.(Verify in Item → Developer Fields → trendCompiledSettings → statusType === "C")
Generate order template.
Click on Email Order.
Select the appropriate template.
Verify canceled items are excluded.
Ensure that order items with statusType === "C" are NOT displayed in the template.
Verify this behavior for:
Email
PDF
HTML (on the customer portal)
KOD-29982: Product Enrichment
KOD-29983: Templates update for the quote functionality
Regression Tests
Case 1
Verify that order template for order and quote for different statuses looks good in the customer portal. Also, you should check that generated pdf in customer portal and email in the operations portal still looks good.
Note:
Quotes in the customer portal is cash quotes in the operations portal.
Case 2
Verify when you change language to French, order templates still looks good.
Tests
Case 1
When order has status Saved, order templates (customer portal, pdf, email) should have next changes:
Draft Date/Draft No. in top table of template.
Created By in second table in template.
Saved order in the disclaimer text.
Case 2
When order has status Web Entered , order templates(customer portal, pdf, email) should have next changes:
New disclaimer text → All quotes are valid for 10 days from the date of issue. Applicable shipping charges will be recalculated at the time of order placement.
Quote Placed For in second table in template.
KOD-29985: Allow syncing older statements
KOD-29988: Add the ability to search OpenSearch across indexes with JSON
Regression Tests
Case 1
Log into Operations Portal with 'administrator' / 'superuser' role.
Go to Swagger.
Call POST /api/system/opensearch/orders/search with request body:
{"query": {"match_all": {}}, "size": 5}
Make sure it still returns results as before.
Case 2
Log into Operations Portal with 'administrator' / 'superuser' role.
Go to Swagger.
Call POST /api/system/opensearch/sql with request body:
{"query": "SELECT * FROM orders LIMIT 5", "format": "JSON"}
Make sure it returns JSON results (uppercase format should now work).
Tests
Case 1
Log into Operations Portal with 'administrator' / 'superuser' role.
Go to Swagger.
Call POST /api/system/opensearch/search with indexes = “orders“ and request body:
{"query": {"match_all": {}}, "size": 5}
Make sure it returns orders from OpenSearch.
Case 2
Log into Operations Portal with 'administrator' / 'superuser' role.
Go to Swagger.
Call POST /api/system/opensearch/search with indexes = “orders,orderitems“ and request body:
{"query": {"match_all": {}}, "size": 5}
Make sure it returns results. Each hit should have an _index field indicating which index it came from.
Case 3
Log into Operations Portal with 'administrator' / 'superuser' role.
Go to Swagger.
Call POST /api/system/opensearch/search with indexes = “fakeindex“ and request body:
{"query": {"match_all": {}}, "size": 5}
Make sure it returns a 400 error with a message listing the invalid index name.
Case 4
Log into Operations Portal with 'administrator' / 'superuser' role.
Go to Swagger.
Call POST /api/system/opensearch/search with indexes = “ “ (just a few spaces) and request body:
{"query": {"match_all": {}}, "size": 5}
Make sure it returns a 400 error.
Case 5
Log into Operations Portal with 'administrator' / 'superuser' role.
Go to Swagger.
Call POST /api/system/opensearch/search with indexes = “orders“ and request body:
Then call again with "from": 2. Make sure the second call returns different results.
KOD-29990: Privacy Policy Link Update
Regression Tests
Case 1
Ensure that the layout on the registration page (existing customer) looks correct and the terms checkbox displays correctly.
Ensure that the layout on the registration page (new customer) looks correct and the terms checkbox displays correctly.
Ensure that the layout on the checkout page looks correct and the terms checkbox displays correctly.
Ensure that the layout on the password reset page looks correct and the terms checkbox displays correctly.
Ensure that the layout on the account password setup page looks correct and the terms checkbox displays correctly.
Ensure that the console displays no errors on all the listed pages.
KOD-29991: Configure regions to use DDA V3.
KOD-29992: Product Numbers on Catalog Displaying Incorrectly
Regression Tests
Case 1
Make sure you can still download a catalog.
Tests
Case 1
On the downloaded catalog, notice we now display the product code instead of the product id, as well as, notice the images aren’t stretched out like before.
KOD-30003: Addresses on outgoing emails from Kodaris
KOD-30004: Ignore "shipreqfl" setting when releasing an order with "needsShiptoAddressInTrend" setting to CSD
Regression Tests
Case 1
Test releasing order to CSD.
Tests
Case 1
Problem : When there's a delay between pushing an ARSC (Account Record Creation) and releasing an order, the order cannot be released for those companies
Now, when company has shipreqfl=yes setting and order has needsShiptoAddressInTrend=true setting, when this order is being released - it should not only be checking the company’s shipreqfl , but also order’s needsShiptoAddressInTrend , and there should not be no validation errors, order should be released.
KOD-30005: Price Book - Additional Updates
KOD-30006: Be Able to Sent Price Books To Customers (Operations Portal)
Regression Tests
Case 1
Navigate to a Company Group detail page (e.g., /company-groups/<customerGroupID> ).
Click the "Catalog" tab.
Select a category row in the catalog table.
Verify there are no standalone Edit (pencil) or Delete (trash) icon buttons.
Click the "Actions" dropdown button.
Click "Edit Category", verify the edit category dialog opens and functions as before.
Close the dialog, click "Actions" again, and click "Remove Category", verify the remove confirmation appears and functions as before.
Case 2
Navigate to a Company detail page (e.g., /companies/<companyID>).
Click the "Catalog" tab.
Select a category row in the catalog table.
Click the "Actions" dropdown button.
Verify the menu shows "Generate Price Book", "Download Price List", "Edit Category", and "Remove Category".
Click "Download Price List", verify the download dialog opens as before.
Click "Edit Category", verify the edit dialog opens as before.
Tests
Case 1
Navigate to a Company Group detail page (e.g., /company-groups/<customerGroupID> ).
Click the "Catalog" tab.
Click the "Actions" dropdown button.
Click "Generate Price Book".
Verify a dialog opens with "Generate Price Book" title, Template dropdown, Company autocomplete, and Email chip input.
Select a template from the Template dropdown.
Search for and select a company in the Company autocomplete (verify only companies assigned to this group appear).
Enter an email address in the Email field and press Enter, verify it becomes a chip.
Click "Generate" and verify a snackbar appears with "Price book is being generated. You will receive an email when it is ready."
Verify you received the email with the price book.
Case 2
Navigate to a Company detail page (e.g., /companies/<companyID> ).
Click the "Catalog" tab.
Click the "Actions" dropdown button.
Click "Generate Price Book".
Verify a dialog opens with "Generate Price Book" title, Template dropdown, and Email chip input, the Company field should NOT be visible.
Select a template from the Template dropdown.
Click "Generate" and verify a snackbar appears with "Price book is being generated. You will receive an email when it is ready."
Verify you received the email with the price book.
Case 3
Navigate to a Company Group detail page, go to the Catalog tab, select a category, and open the "Generate Price Book" dialog via the Actions dropdown.
Type an email address in the Email field and press Space, verify it becomes a chip,
Type another email address and press Comma, verify it becomes a chip.
Type another email address and press Semicolon, verify it becomes a chip.
Type another email address and click outside the Email field, verify it becomes a chip on blur.
Click the cancel (X) icon on one of the chips, verify the chip is removed.
Verify the hint text below the field reads "Email addresses to send the pricing email to. Leave blank to send to yourself."
KOD-30010: Time Report page: /api/system/ticket/list endpoint does not support filtering by startDateTime
KOD-30013: Message below Recipient Phone during Checkout
Regression Tests
Case 1
Test that the second step of checkout still looks good for guest and logged in users. Also, check that this page looks good for French and English languages.
Tests
Case 1
On the second step of checkout, near the “Recipient Phone” field you can see new info icon with next text → We’ll contact you at this number when your order is out for delivery.
Also, test that this message is translatable.
KOD-30014: Add Ticket Detail page to Services app
Tests
Case 1
Navigate to a ticket page (e.g., /operations/app/services/tickets/36 )
Verify that the ticket title, status, description, comments, files, linked tickets, and sidebar fields are all populated with correct data.
Verify that the breadcrumb shows Services > Tickets >{ticket code}.
Case 2
Change the title and click outside (blur).
Verify that a PATCH request is sent with the updated title.
Click on the title again, make no changes, blur.
Verify that no PATCH request is sent.
Case 3
Type a comment in the editor and click "Save".
Verify that the comment appears in the list.
Hover over the comment, click the edit (pencil) button, modify text, click "Save".
Verify that the comment is updated.
Hover over the comment, click the delete (trash) button.
Verify that the comment is removed.
Case 4
Click "Upload" in the Files section, select a file.
Verify that the file appears in the list.
Click on the file name and verify the preview opens correctly.
Hover over the file, click the delete button.
Verify that the file is removed.
Case 5
Click "Link" in the Linked Tickets section header.
Search for a ticket, select it, optionally choose a link type, click "Link".
Verify that the linked ticket appears in the list.
Click on the linked ticket code.
Verify that the page reloads with the new ticket data (no full page refresh).
Navigate back, hover over the linked ticket, click the delete (X) button.
Verify that the link is removed.
Case 6
Click "Add assignee", search for an employee, select one.
Verify that the assignee appears in the list with correct name and initials.
Hover over the assignee, click the delete (X) button.
Verify that the assignee is removed.
Case 7
Click "Actions" > "Log Time".
Verify that the ticket field is pre-filled and disabled.
Enter hours/minutes, a description, and click "Log".
Verify that the dialog closes and no error is shown.
Case 8
Hover over a field in the sidebar (e.g., Priority), click the pin icon.
Verify that the field moves to the "Pinned" section at the top of the sidebar.
Refresh the page.
Verify that the field is still pinned (persisted in localStorage).
Unpin the field, verify it returns to its original section.
Case 9
Change a select field (e.g., Priority). Verify PATCH is sent immediately.
Change a text field (e.g., External ID) and blur. Verify PATCH is sent on blur.
Change a date field (e.g., Due Date). Verify PATCH is sent immediately.
Search and select a Billable Company. Verify PATCH is sent with the company code.
KOD-30015: Add Mandatory Check Box for Account Sign Up Form
Regression Tests
Case 1
Test that this page still looks fine for English and French languages.
Tests
Case 1
Test that for this page, there is new checkbox for form Sign Up for a New Account and it’s translatable.
KOD-30019: Price on catalog-print issue
Tests
Case 1
Log in to the website.
Navigate to Catalogs.
Verify for Customer/Company Catalogs.
Test with different product quantities.
Verify catalog generation with 1 product.
Verify catalog generation with more than 6 products.
Validate generated file content.
Confirm the file is generated correctly.
Ensure the following elements are present:
Catalog name
Product images
Product name (optional for some products)
Product ID
Product price
Page numbering on every page
KOD-30020: Google Tag Manager issue
KOD-30021: Add unitConversion server side endpoints to SUnitConversion controller
KOD-30022: Implementation Updates
KOD-30023: Sales customer web form submissions
KOD-30024: Youtube Embed Widget
Tests
Case 1
Check that the “CM: YouTube Embed” block appears in the Gutenberg block list.
Check that clicking the “Embed” button adds the video.
Verify that the “Autoplay” toggle adds autoplay=1 to the URL.
Verify that the “Mute” toggle adds mute=1 to the URL.
Verify that the “Loop” toggle adds loop=1 playlist=VIDEO_ID to the URL.
Verify that the “Show Controls” toggle is off - adds controls=0 to the URL
Verify that the “Show Related Videos” toggle is off - adds rel=0 to the URL
Verify that “Start At” with a value of 30 adds start=30 to the URL
Check that “End At” with a value of 60 adds end=60 to the URL
Check that “Start At” and “End At” with a value of 0 do not add parameters to the URL
Check that when the “Enable JS API” toggle is turned on, enablejsapi=1 appears in the URL
Ensure that in the Advanced section, there is an “Additional Parameters” field where you can add additional parameters.
KOD-30026: Featured Products
Tests
Case 1
Open the website.
Verify Featured Products slider presence.
Check that the Featured Products slider is displayed on the page.
If the slider is not displayed:
Open the Operations Portal.
Verify that the category "featured_products" exists.
Ensure that the category contains more than 4 products.
Verify slider navigation desktop/mobile.
Test slider navigation controls (arrows, swipe).
Ensure the slider scrolls correctly without layout issues.
Verify product click behavior.
Click on any product inside the slider.
Verify that the user is redirected to the Product Detail page.
Verify multiple products.
Click several different products.
Ensure each redirects to the correct corresponding Product Detail page.
KOD-30030: Update Attribute Names
KOD-30032: New Customer Portal Registration Email Layout
Regression Tests
Case 1
Make sure submitting the Registration Form still creates and send an email correctly.
Tests
Case 1
For this test, you need to go to the Registration Form, fill out the form and Submit it.
Go to the Emails screen in the operations portal and preview the email.
It should look more similar to the example provided.
KOD-30034: UX for Reviewing Products Missing Required Attributes
Regression Tests
Case 1
Go to PIM → Categories → Data tab.
Check that everything looks good, the UI rendering properly.
Try to add some columns to show through the dropdown. Check that it works well.
Case 2
On the PIM → Categories → Data tab page open Show/Hide Columns dropdown.
Check that items rendering properly. Check that the new option wraps in multiline and doesn’t have any issues.
Go to the different page. For example, PIM → Products → Data tab. Check Show/Hide Columns dropdown. Check that there’s no any issues with it.
Tests
Case 1
Open Show/Hide Columns dropdown. Find new Products Missing Required Attributes column, enable it.
Check that it’s rendering properly, the column shows the right data.
Check that filtering/sorting in this column works well.
KOD-30038: Questions About Adding a New Supplier
KOD-30039: Add Instagram to footer
Regression Tests
Case 1
For the regression test, make sure opening the Themer and changing the value of the storeInstagramURL setting doesn’t break the page.
Tests
Case 1
To test this ticket, you need to log into the operations portal.
Go to settings and make sure there is a storeInstagramURL setting created.
Still logged in, we will now go to the commerce site. Open the Themer component and scroll down to “Socials”. You should now see a field to enter an Instagram link.
Its value should always match the value of the setting after updating and reloading.
Now, if we scroll down to our page footer, you should see an Instagram icon next to the YouTube icon. Clicking it should redirect you to the link in the setting value.
When there’s no value in the setting, the Instagram icon should remain hidden.
Case 2
We will repeat the test cases of the previous test but now on a Blog Post page.
Ensure that the grid is displayed correctly on the Inventory Conversions screen.
Ensure that the detail page -> inventory conversion opens and all fields are displayed correctly.
Tests
Case 1
Ensure that the Cono field is editable in the grid.
Ensure that the Operinit field is not present in the grid, menu, or detail page.
Ensure that the Transproc field is not present in the grid, menu, or detail page.
KOD-30050: Remember main menu visibility state in operations portal
Regression Tests
Case 1
Navigate to the the Operations Portal.
Close the navigation menu.
Open the navigation menu.
Confirm that the menu works correctly (opens and closes as expected).
Tests
Case 1
Close the menu.
Refresh the page.
Confirm that the menu remains closed after refreshing.
Open the Operations Portal in a new tab.
Confirm that the menu is still closed in the new tab.
Case 2
Open the menu.
Refresh the page.
Confirm that the menu remains open after refreshing.
Open the Operations Portal in a new tab.
Confirm that the menu is still opened in the new tab.
KOD-30054: Update Document Automation & add dedicated APIs to controller for UX
KOD-30055: Document Automation Studio - Update UX to use new routing and new dedication APIs
KOD-30057: Customer Fields
KOD-30058: Employee Mobile App - Display all fields on the lead screen
Tests
Case 1
Ensure opportunity editing is working in the same way, they do for web UX. Ensure all editable fields are properly shown and editable on the UX, are shown and editable on the mobile.
KOD-30060: Kodaris - Update Pricing Page on Website
Tests
Case 1
Ensure that the text in the “Pricing Example” block in the second column has changed to “per thousand tokens” (it was “per token”).
KOD-30062: Parser Issue
KOD-30061: Enable searchID tracking
Regression Tests
Case 1
Make sure the search still works properly for both a logged in and logged out user.
Tests
Case 1
Test as both a logged in and logged out user → search for a product → in the URL notice there is an sid=xxx → now click into a product and notice that the sid is still in the URL with the same code → you can go back to the search and add a filter and notice the sid stays in the URL.
Case 2
Now click to either a category or the home page or some other page → notice the sid is no longer in the URL → search again and the sid should be back there but this time with a different code.
KOD-30066: Kodaris - UX for Company/Ticket Custom Fields on Data Grid
Regression Tests
Case 1
On the Company/Ticket Data screens, check that you can still add/edit/delete records.
Also try inserting rows from clipboard and that all the data is saved and everything works correctly without issues.
Case 2
On both screens above, also check that all the columns populate and data is rendered correctly as well.
Case 3
Check that both above cases pass whether the following settings are set or empty.
integrationIndexedCompanyFields
Sample Value:
[{
"settingCode": "companySize",
"settingName": "Company Size",
"isIndexed": false
},{
"settingCode": "erp",
"settingName": "ERP",
"isIndexed": false
}]
integrationIndexedTicketFields
Sample Value:
[{
"settingCode": "ticketpriority",
"settingName": "Ticket Priority",
"isIndexed": true,
"solrField": "custom_ticketpriority"
}]
Tests
Case 1
Setup the settings in regression case 3 to have some values.
On the Companies/Tickets > Data screen, check that the Custom Fields appear and you can add them to the Grids via the Column selector.
Note: all custom fields should be readonly for now on the data grid.
KOD-30075: Allow sending template and company in group catalog in System side
KOD-30076: Display warehouse on final checkout tab
Regression Tests
Case 1
Make sure that customers without warehouse selected (enableShopByStore not active) still see formatted shipping amounts as before (if the shipping option has an amount set up and it’s not the Pick Up option) or just the Cust Pick Up option with correct styling.
Case 2
Make sue the shippingOption selection works correctly.
Tests
Case 1
Go to the commerce site.
Customers with warehouse selection enabled ( enableShopByStore setting turned on) see the warehouse city/address on pickup shipping option ( shippingOption.type === p/u ).
Make sure the styling looks correct (equal-height rows, bold name, text sizing).
KOD-30085: Missing French Text - Translate credit card form
KOD-30087: Add Unit Stock & Unit Sell to Products Search Screen
Regression Tests
Case 1
For this test, you need to go to the Products - Search screen and make sure everything loads properly.
Tests
Case 1
For this test, you should go to the Products - Search screen.
Display the Unit Stock Unit Sell columns.
Make sure you are able to use the searching functionality with both columns, as well as sorting and dragging the columns.
KOD-30089: Add Unit Stock & Unit Sell to Products Search Screen - Platform
Tests
Setup:
Go to the Operations Portal → Products and create a new product with some random code and name.
Make columns “unitSell“ and “unitStock“ visible.
For created product, set unitSell value to “MLF“ and unitStock value to “PCS“.
Case 1
Go to Swagger and execute endpoint POST /api/system/product/search with the following body:
{
"page": 0,
"size": 10,
"queryFields": [
{
"name": "docId",
"value": "*",
"operation": "EXPRESSION"
}
]
}
Make sure the response is successful and each product in content includes unitSell and unitStock fields.
Make sure unitSell value is “MLF“ and unitStock value is “PCS“ for product you created before.
Case 2
Go to Swagger and execute endpoint POST /api/system/product/search with the following body:
{
"page": 0,
"size": 10,
"queryFields": [
{
"name": "docId",
"value": "*",
"operation": "EXPRESSION"
}
],
"fieldsToReturn": [
"docId",
"code",
"unitSell",
"unitStock"
]
Make sure only the specified fields (docId, code, unitSell, unitStock) have values in the response, and unitSell and unitStock have correct values for created product.
KOD-30092: Make Name Sortable for Related Products - Platform
Regression Tests
Setup:
Go to the Operations Portal → Products → create a new product with code “parent-product“ and name “Parent Product“.
Create a new products with codes “test-product1“, “test-product2“, “test-product3“ and names “Test 1“, “Test 2“, “Test 3“.
Open details of Parent Product → Related products → add test-product1, test-product2, test-product3
Case 1
Open details of Parent Product → Related products.
Make Related Product ID column visible and verify that sorting by that field works fine.
Don’t delete created products before next tests.
Tests
Case 1
Go to Swagger and execute POST /api/system/product/relatedProducts/listV2?parentProductCode={parentProductCode} using “parent-product“ as a parentProductCode and following body:
{
"page": 0,
"size": 25,
"sortBy": "productName",
"sortDirection": "ASC"
}
Verify the response is successful and the related products in content are sorted alphabetically by product name (Test 1, Test 2, Test 3).
Case 2
Go to Swagger and execute POST /api/system/product/relatedProducts/listV2?parentProductCode={parentProductCode}
using “parent-product“ as a parentProductCode and following body:
{
"page": 0,
"size": 25,
"sortBy": "productName",
"sortDirection": "DESC"
}
Verify the related products in content are sorted in reverse alphabetical order by product name (Test 3, Test 2, Test 1).
KOD-30094: Make setting: scheduleTriggered default active = true
Make sure that clicking on “Update in ERP” sends a POST request to /api/system/company/address/{companyID}/{companyAddressID}/updateCompanyAddressInErp.
Make sure that a successful response displays the snackbar “Saved to ERP.”
Make sure that an unsuccessful response (success: false) opens the dialog displaying the errors.
KOD-30116: Custom Fields inaccessible on some screens on Operations Portal
Regression Tests
Case 1
Navigate to Ticket Template details screen. Check if tabs are displayed correctly.
Tests
Case 1
Navigate to Ticket Template details screen. Click on Custom Fields tab. It is expected to be redirected to Custom Fields screen.
KOD-30118: Search update feedback
Regression Tests
Setup:
Go to Settings and make sure those settings are set to 1:
enableAiProductSearch
enableAiProductSearchForAllUsers
Go to Languages and add French (Canada) language with code fr-ca.
Go to Swagger (/services)-> ERP Setting API → Execute /api/system/erpSetting/list request.
Find setting with "codeval": "fr-ca" and copy its "code" value.
Go to /api/system/erpSetting/{erpSettingCode}.
Update ERP Setting and execute it using copied value as a erpSettingCode and this JSON as a Request body:
{
"trmgrlang": "1"
}
Go to the Operations Portal → Products and create a new product with code = 119120 and name “English name“.
Open details of created product → Switch to French language and set name to “French name“.
Go to the Operations Portal → Search → Tuning → Product Search Rules and create a new one using this data:
Rule Type : preProcessing
Query : \b [\w-]{1,6}\b
Language Code : en-us
Action Data : WILDCARD
Go to the Operations Portal → Search → Tuning → Product Search Rules and create a new one using this data:
Rule Type : preProcessing
Query : \b [\w-] {1,6}\b
Language Code : fr-ca
Action Data : WILDCARD
Case 1
Open Operations Portal → Logs in new tab.
Go to Customer Portal → Search for “119120 “.
Go to Logs and verify there is this log:
[JS] Getting vector for search string: 119120 English name
Tests
Case 1
Open the Operations Portal → Logs in new tab.
Go to Operations Portal → Settings → defaultLocale and set it to fr-ca. (or go to Customer Portal and switch to French language there if possible).
Go to Customer Portal → Search for “119120 “.
Go to Logs and verify there is this log:
[JS] Getting vector for search string: 119120 French name.
Case 2
Open the Operations Portal → Logs in new tab.
Go to Product Languages → Find created product and delete value for French name.
Go to Customer Portal → Search for “119120 “.
Go to Logs and verify there is this log:
[JS] Getting vector for search string: 119120 English name.
KOD-30120: Ability to Set Print Format on Price Books
KOD-30136: Sync all , increase limit
KOD-30139: Have CSV Template by default when generating price book
KOD-30142: Add `orderAssigneesV2Enabled` setting to the /configuration endpoint
Tests
Case 1
Open the developer tab and navigate to network.
Login or reload the operations portal.
Find request to /api/user/employee/configuration endpoint
In the response of this endpoint, you should see orderAssigneesV2Enabled setting within the scope.
Add the setting if it does not exists on your system and toggle the value to a different one. Reload the page and confirm it changes in the response of the endpoint.
KOD-30143: Implementation - Updates
KOD-30148: Unify Price Book Generation Flow (Operations Portal)