All Releases
December 25, 2025 December 18, 2025 December 11, 2025 December 4, 2025 November 27, 2025 November 20, 2025 November 13, 2025 November 6, 2025 October 30, 2025 October 23, 2025 October 16, 2025 October 9, 2025 October 2, 2025 September 25, 2025 September 18, 2025 September 11, 2025 September 4, 2025 August 28, 2025 August 21, 2025 August 14, 2025 August 7, 2025 July 31, 2025 July 24, 2025 July 17, 2025 July 10, 2025 July 3, 2025 June 26, 2025 June 19, 2025 June 12, 2025 June 5, 2025 May 29, 2025 May 22, 2025 May 15, 2025 May 8, 2025 May 1, 2025 April 24, 2025 April 17, 2025 April 10, 2025 April 3, 2025 March 27, 2025 March 20, 2025 March 13, 2025 March 6, 2025 February 27, 2025 February 20, 2025 February 13, 2025 February 6, 2025 January 30, 2025 January 23, 2025 January 16, 2025 January 9, 2025 January 2, 2025 December 26, 2024 December 19, 2024 December 12, 2024 November 28, 2024 November 21, 2024 November 14, 2024 November 7, 2024 October 31, 2024 October 24, 2024 October 17, 2024 October 10, 2024 October 3, 2024 September 26, 2024 September 19, 2024 September 12, 2024 September 5, 2024 August 29, 2024 August 22, 2024 August 15, 2024 August 8, 2024 August 1, 2024 July 25, 2024 July 18, 2024 July 11, 2024 June 27, 2024 June 20, 2024 June 13, 2024 June 6, 2024 May 30, 2024 May 23, 2024 May 16, 2024 May 9, 2024 May 2, 2024 April 25, 2024 April 18, 2024 April 11, 2024 April 4, 2024 March 28, 2024 March 21, 2024 March 14, 2024 March 7, 2024 February 29, 2024 February 22, 2024 February 15, 2024 February 8, 2024 February 1, 2024 January 25, 2024 January 18, 2024 January 11, 2024 January 4, 2024 December 21, 2023 December 14, 2023 December 7, 2023 November 30, 2023 November 16, 2023 November 9, 2023 November 2, 2023 October 26, 2023 October 19, 2023 October 12, 2023 October 5, 2023 September 28, 2023 September 21, 2023 September 14, 2023 September 7, 2023 August 31, 2023 August 24, 2023 August 17, 2023 August 10, 2023 August 3, 2023 July 27, 2023 July 20, 2023 July 13, 2023 July 6, 2023 June 29, 2023 June 22, 2023 June 15, 2023 June 8, 2023 June 1, 2023 May 25, 2023 May 18, 2023 May 11, 2023 May 4, 2023 April 27, 2023 April 20, 2023 April 13, 2023 April 6, 2023 March 30, 2023 March 23, 2023 March 16, 2023 March 9, 2023 March 2, 2023 February 23, 2023 February 16, 2023 February 9, 2023 February 2, 2023 January, 2023 December, 2022 November, 2022 October, 2022 September, 2022 August, 2022 July, 2022 June, 2022 May, 2022 April, 2022 March, 2022 February, 2022 January, 2022 December, 2021 November, 2021 October, 2021 September, 2021 August, 2021 July, 2021 June, 2021 May, 2021 April, 2021 March, 2021 February, 2021 January, 2021 December, 2020
View all releases

December 4, 2025 release notes

Highlights

Customer Portal

Download paid invoices in CSV format directly from the Payment History Details screen

Users can now export paid invoice data as CSV files from within the Customer Portal's Payment History section. When viewing payment details that include paid invoices, a new Download button appears below the Paid Invoices section, allowing you to save the invoice data to your preferred location on your device.

The exported CSV file contains the same invoice information displayed on screen, including Invoice # and Amount columns. For invoices with applicable discounts, an additional "Discount" column is automatically included in the export. This functionality works for both card and ACH payment types, providing a consistent export experience across payment methods.

This feature is now live in the Customer Portal for all users. For a step-by-step walkthrough, refer to the demonstration video linked below.

https://youtu.be/E2_f9g_BNrM

Operations Portal

Expandable Budget Item Hierarchy

The Operations Portal now supports parent budget items with expandable child rows in the budget items grid. This enhancement allows users to view detailed budget hierarchies directly within the interface.

When reviewing budget items in the Companies screen, QuoteCode budgets now display an arrow (>) icon that expands to reveal child items positioned directly below the parent row. Child items include key details such as Company Budget ID, Name, and Parent Budget ID, with visual differentiation through distinct background coloring. Users can expand and collapse multiple QuoteCode budgets simultaneously as needed.

This drill-down functionality provides better visibility into budget structure and relationships without requiring navigation to separate screens. The feature specifically applies to QuoteCode budgets, while non-QuoteCode budgets continue to display in the standard format.

This feature is now available in the Operations Portal through Companies > Addresses > Budgets > Items tab.

For a complete walkthrough of this functionality, watch the demonstration video.

https://youtu.be/qwf2OUYj3Jc

Generate sitemaps for individual hosts directly from the Operations Portal

The new sitemap generation feature allows you to generate a sitemap for a specific host in your multi-site system. Access the functionality through the SEO screen in the Operations Portal, where you can select from your configured hosts using a convenient dropdown menu or generate a sitemap for your current host by leaving the selection blank.

The streamlined process includes customizable fields with pre-set default values, making sitemap creation quick and efficient. Once generated, you'll receive immediate confirmation that your sitemap has been created successfully.

This feature is now live in the Operations Portal. Watch the complete walkthrough in our demonstration video for step-by-step guidance on implementing host-specific sitemap generation.

https://youtu.be/pwSCIvigCYw

New Vendor Product Imports Now Available

Three new vendor-specific import options have been added to the Operations Portal for Delta, Moen, and Nibco products.

The enhanced import functionality is accessible through the Products screen under the Data tab. Users can now select from three new "Create and Update" import options specifically designed for Delta, Moen, and Nibco vendors. The process follows the standard file import workflow, allowing users to upload vendor-specific product files directly into the system.

The import process provides real-time progress updates and confirmation messages, ensuring users can track the status of their uploads. Once completed, imported products appear immediately in the product grid with their assigned vendor prefixes.

This feature is now live in the Operations Portal. For a complete demonstration of the import process, refer to the instructional video.

https://youtu.be/qocwa_rL6N8

Users can now restore previous versions of CMS pages directly from the Operations Portal

The revision restore capability is accessible through the History tab within any page's details screen. The feature displays a comprehensive grid showing all page revisions, including revision author, date, and related details. Users can browse through the revision history and restore any previous version with a single click using the Restore Revision button.

This functionality works for both individual field changes and full page content modifications. Whether you need to revert a title update or restore complex page content to an earlier state, the system handles the restoration seamlessly. The feature provides content managers with greater flexibility and confidence when making page updates, knowing they can quickly return to any previous version if needed.

The CMS revision restore feature is now live in the Operations Portal. For a complete walkthrough of this functionality, watch the demonstration video.

https://youtu.be/M2wUnAgAhik

Tickets

  1. KOD-23380: Add possibility to restore CMS revisions
    • Regression Tests
    • Case 1
      • As for the regression tests, lets make sure that we can update this page as expected, no new errors or something like that. We can click and update any field.
    • Tests
    • Case 1
      • Navigate to the Content Pages section.
      • Open any content page.
      • Click on the "History" tab.
      • Expected Result:
      • The table displays all revisions for the content page.
      • Each revision shows: Restore Revision button.
    • Case 2
      • Preconditions:
      • The content page has at least 2 revisions.
      • The user is viewing the Detail tab with current content.
      • Steps:
      • Note current values in Detail tab (e.g., name, description, code)
      • Switch to the History tab.
      • Find an older revision with different field values.
      • Click the "Restore" button on that revision.
      • Observe the Detail tab after navigation.
      • Expected Result:
      • The user is redirected to the Detail tab automatically.
      • All form fields update to show restored revision values.
  2. KOD-26593: Redirect to ticket when creating from Opportunity
    • Regression Tests
    • Case 1
      • Go to the Opportunities page.
      • Select the opportunity with type “Quote”.
      • Check that in the page breadcrumbs we have breadcrumbs content with the next pattern: Opportunities / Quote {{order.orderNumber}}.
      • Go back to the opportunities page. Select opportunity with type “Lead”.
      • Check that in the page breadcrumbs we have breadcrumbs content with the next pattern: Opportunities / Lead {{order.orderNumber}}.
      • Go to the opportunity tickets tab. Then go to the specific ticket page.
      • Check that the breadcrumbs pattern is the next one:
      • Opportunities / Lead {{order.orderNumber/ Tickets/ ticketID}}.
    • Tests
    • Case 1
      • Go to CRM → Opportunities.
      • Filter opportunities by type “Lead”. Select a random lead item.
      • Open “More” dropdown. Select “create ticket” in it.
      • In the modal create ticket title for test.
      • Try to create a ticket without a template selected.
      • See that you were redirected to the new ticket page.
    • Case 2
      • Go to CRM → Opportunities.
      • Filter opportunities by type “Lead”. Select a random lead item.
      • Open “More” dropdown. Select “create ticket” in it.
      • In the modal create ticket title for test.
      • Select ticket template and try to create ticket with template selected.
      • See that you were redirected to the new ticket page.
  3. KOD-27075: Kodaris - Adjust Terminals screen with new ‘CSD Payments Only' role
    • Regression Tests
    • Case 1
      • Login to the user account with “accountant” permission.
      • Try to go to Account Receivable → Terminals.
      • Check that you’re receiving an error that you don’t have enough access.
      • Check in the network console that you don’t have any related requests with the terminals data.
    • Case 2
      • Login to the user account with “terminalView” permission.
      • Try to go to Account Receivable → Terminals.
      • Check that when you try to edit any field you receive the server error that you don’t have enough permissions for editing.
      • Go to the specific terminal page. Try to edit any field in the details tab. Check that you’re receiving an appropriate error that says that you don’t have enough permissions to edit anything.
    • Case 3
      • Login to the user account with “terminalView” and “terminalEdit” permissions.
      • Try to go to Account Receivable → Terminals.
      • Check that you can edit fields in the table and everything saves properly.
      • Go to the specific terminal page. Try to edit any field in the details tab. Check that you don’t have any savings errors there.
      • Try to go to the “Linked Terminals” tab and check that you don’t have issues with it.
      • Check that the “Sync Terminals” button works without any errors.
  4. KOD-27480: API Connector - PIM Connector
  5. KOD-27995: Add UX for Customer side Opt Out
  6. KOD-28258: Implement New Order/Invoice Automation Analysis Pattern
  7. KOD-28276: Write 3 import scripts for 3 vendors
  8. KOD-28437: CSV Download Option for Payment History
    • Regression Tests
    • Case 1
      • Go to the payment history screen in the customer portal → click into one of the payments and make sure it is still loading properly.
    • Tests
    • Case 1
      • Go to a payment that has paid invoices (doesn’t matter if it is a card or ACH payment) → you will now see a download button → click the button → a csv file will be downloaded with the invoice #s and amounts (if there are discounts associated with the invoices, then you will also see a column labeled Discount).
      • For a test with a discount.
      • Clicking download on that button, downloads the file below.
      • Paid Invoices for Payment #1111033.csv
    • Case 2
      • If a payment does not have any paid invoices, you won’t see the paid invoices section and therefore will not see the download button.
  9. KOD-28443: AP: Invoice Date Recognition Issue
  10. KOD-28449: UX - Google crawling, allow UX to provide host for generation
    • Tests
    • Case 1
      • Open /seo page on the operations portal.
      • Click on the Generate Sitemap button.
      • In the modal window choose any hostCode and try to generate a sitemap.
      • Make sure that the request went through correctly and we sent the required hostCode.
  11. KOD-28509: BOD and Pre-Built kits showing all components
    • Regression Tests
    • Case 1
      • Create an order in the ecommerce site with the following requirement:
      • Add a product to the cart which has a related product with relatedType = KIT.
      • Make sure the related products are generated automatically to the cart.
      • (Also, validate this setting doesn’t exist disableAutoAddingKitChildItems or it is 0).
      • Validate the cart contains those items included and you are able to continue during the check out process.
    • Tests
    • Case 1
      • Setting disableAutoAddingKitChildItems should not exist or marked as disabled (0).
      • New setting that could be a comma separated list of relatedTypes that needs to be excluded from the Order when adding the product.
      • productRelatedTypesToDeactivateFromTheOrder
      • Populate this setting with the value ‘KIT’.
      • Replicate the same scenario as the regression test but this time make sure the CHILD products with relatedType KIT are not visible in the cart but those exist in the order as INACTIVE (You can complete the order to see it during the operations portal).
      • Also, if the erpLogicEngine is ‘InforCSD’ (This customer should have it), a ‘CORE’ product should be included in the cart as well only if the parent product has:
      • productType = 'R' and setting impliedcoreprod with another product code value or the setting corecharge with a value bigger than 0.
      • For instance, see the parent item I used during my tests:
      • that will end up adding a new CORE product (KCoreCharge)
      • Validate:
      • The final order price doesn’t include the KIT child items on it and the CORE products are visible and active along with the parent products.
      • KIT products should be marked as inactive.
  12. KOD-28577: Set Route on Ship Via when inserting orders
    • Regression Tests
    • Case 1
      • Check that orders still go through to the ERP without issues when placing them on checkout.
    • Tests
    • Case 1
      • Place an order and select Delivery as the shipping option.
      • When you push it to the ERP, check that the shipVia in the payloads is set to the value from the Default Ship Via field on the company.
    • Case 2
      • If the Default Ship Via is blank, DEL should be sent in as the shipVia on the order to the ERP if the order shipping method was selected as Delivery.
      • Can check system events payloads for this.
  13. KOD-28606: Mapping Products to ICSW - Add buttons to push the SKU to the ERP
    • Regression Tests
    • Case 1
      • Open the Operations Portal.
      • Go to the Products page.
      • Select a product.
      • Click on More → “Add To ERP” button.
      • Expected result:
      • Only one request is sent to the /api/system/product/{productID}/addProductToErp endpoint.
      • Verify “Update In ERP”.
      • Return to the same product and modify any field.
      • Click on More → Update in ERP.
      • Expected result: Only one request is sent to the /api/system/product/{productID}/updateProductInErp endpoint.
    • Case 2:
      • Open the Operations Portal.
      • Go to Products page
      • Select a product.
      • Click on More → “Save To ERP” button.
      • Expected result:
      • Only one request is sent to the /api/system/productPrice/{pricingID}/syncProductPriceToErp}} endpoint.
    • Tests
    • Case 1
      • Open the Operations Portal.
      • Go to the Products page.
      • Select a product.
      • Navigate to Skus.
      • Create or select a Sku not in ERP.
      • Click on More → “Add To ERP” button.
      • Expected result:
      • Only one request is sent to the /api/system/sku/{skuID}/addSkuToErp endpoint.
      • Verify “Update In ERP”.
      • Return to the same Sku and modify any field.
      • Click on More → Update in ERP.
      • Expected result: Only one request is sent to the /api/system/sku/{skuID}/updateSkuInErp endpoint.
  14. KOD-28686: Orders not pushed to ERP Created From Ticket 41409
  15. KOD-28695: Multilingual for the parent blog page and breadcrumbs
    • Regression Tests
    • Case 1
      • Confirm that the pages with the following templates:
        • blog
        • blog post
        • careers
        • career
        • page medium
        • page small
      • are displayed correctly (we can see the breadcrumbs, the page content, and we can edit that content)
    • Case 2
      • Confirm that for the blog and careers templates we can see their child elements, and we can delete or add them through Gutenberg.
      • Also confirm that for those child elements we can see their title, image, or the content itself.
      • Make sure that on these pages the order of child elements does not change.
      • On the blog page, we display the child blog posts according to the order field of the child pages.
    • Tests
    • Case 1
      • Confirm that both breadcrumbs and child list pages are translated - meaning: if we switch the language to another one and a translation for that page exists, we display the translated values; if the translation does not exist or a field is empty, we display the default (English) values.
  16. KOD-28707: Internal Quote Form Update
    • Regression Tests
    • Case 1
      • Check that regular templates are still working fine, on customer portal, email and pdf.
    • Tests
    • Case 1
      • When the order has Order Type Details as Cash Quote, on templates we’ll show the Quote label and Expiration Date.
  17. KOD-28736: Kodaris Dev Examples: List Filters
  18. KOD-28776: Enhance product filtering: Default to in-stock items and maintain filter access with empty results
    • Regression Tests
    • Case 1
      • Open the website.
      • Open any product category.
      • Verify that all filters work correctly.
      • Filters apply without errors.
      • Results update correctly.
    • Tests
    • Case 1
      • Open the website.
      • Open any product category.
      • Verify that the “In Stock” checkbox is selected by default.
      • If there are no products available under “In Stock,” verify that:
      • The filter panel is still visible.
      • The user can uncheck the “In Stock” checkbox.
      • The user does NOT see ONLY the message “We're sorry, we couldn't find any results.”
      • Verify the same behavior across all views:
        • Grid view
        • List view
        • Catalog view
        • Mobile view
  19. KOD-28789: Display the error message correctly
    • Regression Tests]
    • Case 1
      • Go to the Orders page.
      • Add a "Payment Received" column to the orders table.
      • Select any order where Payment Received = No.
      • Go to the order details page.
      • In the top bar menu , click the Pay Order icon.
      • Fill all required fields with valid payment data.
      • Click Pay.
      • Confirm payment was successfully processed.
    • Tests
    • Case 1
      • Repeat steps 1–5 from the positive payment test.
      • Fill all required fields but set Payment Amount < 0.
      • Click Pay.
      • Confirm error message appears:
      • "Error paying order: Payment Amount should be greater than 0".
    • Case 2
      • Open the same order details page (where payment has not been received) in two different browser tabs.
      • In one tab , make a successful payment with correct data.
      • In the second tab , try to make another payment for the same order.
      • Сonfirm error message appears:
      • "Error paying order: A Payment was already recorded for this order".
  20. KOD-28800: Excel to csv formula issues for parsers
  21. KOD-28808: Replatform - Order confirmation email Created From Ticket 32412
  22. KOD-28815: Set access for customer on live repo
  23. KOD-28838: CMS Block Visibility Based on Login Status
    • Regression Tests
    • Case 1
      • Check that Home Slider and Home Content Tiles still work fine in customizer.
      • You should login in the operations portal and find the menus. After this you will see a customizer in which you can check if Home Slider and Home Content Tiles are still working.
    • Case 2
      • Check that welcome page for logged in and guest users works with no issues.
    • Tests
    • Case 1
      • Navigate to customizer: you should login in the operations portal and find the menus.
      • Make sure you can see 2 new widgets:
      • Home Slider for Authenticated Users.
      • Home Content Tiles for Authenticated Users.
      • Click through each of them. Make sure their functionality replicates functionality for existing widgets.
      • Set some values for each of them.
      • Log in as a customer on this website.
  24. KOD-28839: Updates to Order Confirmation template - Platform
    • Regression Tests
    • Case 1
      • Please check that order templates are still loaded fine in the customer portal.
      • Also, check in the operations portal that emails/pdf still loads fine for order.
    • Tests
    • Case 1
      • We’ll need to check next on order templates:
      • Core charge are loads in totals when order is released to ERP
      • Web Line always starts with 1.
  25. KOD-28842: Update UX for mass editing quote items
    • Regression Tests
    • Case 1
      • Make sure in the operations portal when you navigate to Quotes → click into a quote → Items, that the page loads fine.
    • Case 2
      • Click the toggle notes button → add a note → it should still use the new updateItem endpoint, as well as when you reload the grid/page, the note should still be there.
    • Tests
    • Case 1
      • Update a value on the quote items screen → it should now be using the new bulkUpdateItem endpoint, as well when you reload the grid/page, the value should still be there.
  26. KOD-28856: Kodaris Dev Examples: email sending with attachment
  27. KOD-28880: Insertion of New Importers on each platform for Nibco, Moen, and Delta Vendors
  28. KOD-28891: Checkout Pay with Card Error
  29. KOD-28892: Issue with attaching customer files in email notifications when the isEmailSendingFromJob setting is enabled
    • Regression Tests
    • Case 1
      • Validate the sent emails and continue working properly.
      • Steps:
      • Go to the Emails screen.
      • Select one of the email records created as part of the tests.
      • Click on the Resend Email button.
      • Click on the Resend in the confirmation popup.
      • You must receive the email correctly.
    • Tests
    • Case 1
      • Validate that when sent a payment disregarding if isEmailSendingFromJob is enabled or not if pass customer files id these must be attached to it when pass the bodyHtml.
      • Pre-requirements:
      • The id of payment which has at least one customer file.
      • Steps:
      • From the operations platform make sure setting isEmailSendingFromJob is enabled.
      • Go to the script created in Case 1.
      • Set variable INCLUDE_BODY_HTML to true.
      • Click on Save and then on Run buttons.
      • You must receive emails with correct attachments and no body in it.
      • NOTE: Repeat the same test but this time with setting isEmailSendingFromJob disabled, the behavior must be the same.
    • Case 2
      • Validate that when sent a payment disregarding if isEmailSendingFromJob is enabled or not if pass customer files id these must be attached to it even when not pass the bodyHtml.
      • From the operations platform make sure setting isEmailSendingFromJob is enabled.
      • Go to the script created in Case 1.
      • Set variable INCLUDE_BODY_HTML to false.
      • Click on Save and then on Run buttons.
      • You must receive emails with correct attachments and no body in it.
      • NOTE: Repeat the same test but this time with setting isEmailSendingFromJob disabled, the behavior must be the same.
  30. KOD-28893: Add Configurator Variant functionality to the website
    • Regression Tests
    • Case 1
      • Open the website.
      • Navigate to any category OR use the search bar.
      • Verify product display in Grid, List, and Catalog views:
      • Add to Cart button is visible and functional.
      • View Details button is visible and functional.
      • Product information (image, name, price) displays correctly.
      • Check the same views on the mobile version and verify layout and buttons display correctly.
    • Tests
    • Case 1
      • The website contains at least one product with a configurator (color/size variants).
      • Open the website
      • Find a product that has a configurator.
      • Test the configurator:
      • Change color/size options.
      • Verify all displayed information (About this item) updates correctly according to the selected variant.
      • Add the configured product to the cart.
      • Verify that the product in the cart reflects the correct selected variant (color, size, etc.)
  31. KOD-28911: Company Score Card Convert User Script
  32. KOD-28920: Replace Header Phone Number With "Call Us" Link
    • Tests
    • Case 1
      • Open the website.
      • Click on the “Call Us” link and verify you are redirected to the Call Us page.
      • Verify that the phone numbers and all page content match the customer’s mockup.
      • Verify page for a mobile and tablet version as well.
  33. KOD-28922: Look at "shipreqfl" Flag for Required Return Shipto - UX
    • Regression Tests
    • Case 1
      • When you start a return in the customer portal, you can still add a location and be able to start the return.
    • Tests
    • Case 1
      • Make sure a shipto is not required on the company you are testing with (for inforcsd/trend the shipreqfl on the company settings is set to no/false).
      • You should be able to start a return with no location set.
      • You should also be able to start a return with a location as well.
      • Wording on popup should state that the location is optional and they can choose to select one or leave blank.
    • Case 2
      • Make sure the shipreqfl on the company settings is set to yes/true.
      • Try starting a return with no location set → you should not be able to start the return.
      • Now add a location and the return should start.
      • Wording on the popup should tell the user to select a location.
  34. KOD-28932: UX - Add Budgets tree implementation to Operations portal
    • Regression Tests
    • Case 1
      • Go to the operations portal.
      • Navigate to a budget with quote code items.
      • Test grid features (sort, filter, etc).
      • Verify it works properly.
      • Navigate to features that have action column.
      • Verify they look good.
    • Tests
    • Case 1
      • Go to the operations portal.
      • Navigate to a budget with quote code items.
      • Verify QuoteCode budgets show a ">" icon.
      • Verify non-QuoteCode budgets do not show the expand/collapse button.
      • Click the ">" icon on a QuoteCode budget.
      • Verify the icon changes rotation to "v".
      • Wait for children to load.
      • Verify child items appear directly below the parent QuoteCode row, have different background color and same columns as parent rows.
      • Click the "v" icon to collapse.
      • Verify icon changes to ">".
      • Wait for the collapse to complete.
      • Verify child items are hidden.
      • Only the parent QuoteCode row remains visible.
      • Verify multiple QuoteCode budgets can expand and collapse simultaneously.
      • Verify each shows its children correctly.
  35. KOD-28935: Add a searchString limit on the front end of 100 characters to match
    • Regression Tests
    • Case 1
      • Navigate to our platform page and confirm that the search input works correctly.
    • Tests
    • Case 1
      • Make sure that you cannot enter more than 100 characters in the search field.
      • To test this easily, you can:
      • Open DevTools and go to the Console tab.
      • Clear all data.
      • Copy the text you entered in the search field.
      • In the console, type:
      • console.log('
      • {your string}
      • '.length);
  36. KOD-28938: Guest Checkout orders
    • Regression Tests
    • Case 1
      • Check that all three steps of checkout still work fine both for guest and logged in users.
    • Tests
    • Case 1
      • Check that fields First Name/Last Name/Address 1 on Billing Address and Shipping Address are required for guest users.
  37. KOD-28941: More price discrepancies
  38. KOD-28951: Add PO Character Limit Restriction in Checkout
    • Regression Tests
    • Case 1
      • If PO is optional to checkout and we leave it blank - the validation code will still run, but the empty PO box should not trigger the error. We need to try to place an order with a card for example and there should be no PO box length validation error.
    • Case 2
      • We also need to make sure that our new validation does not interfere with the PO required one. Set PO required to yes on your company and try placing an order with an empty PO box. You should get a message saying that you need to fill out this field.
    • Tests
    • Case 1
      • Every PO box should be limited to 22 characters. The validation will happen when the order is placed. The error message should also be translatable.
  39. KOD-28955: Kodaris Dev Examples: Shared Drive
  40. KOD-28959: Add support for translating the homepage into other languages
    • Regression Tests
    • Case 1
      • Confirm that upon the initial launch, the page is displayed in English, and all content, as well as the Categories Menu links, is also in English. Also confirm that we can see the CMS dynamic blocks (Top Brands Top Categories) on the page.
    • Case 2
      • Confirm that the English page, when viewed in devtools, must have an element with SEO information, and this information is the same as we defined on the Gutenberg page.
    • Tests
    • Case 1
      • Confirm that when we change the language to French, the page is displayed in French, and all content, as well as the Categories Menu links, is also in French. Also confirm that we can see the CMS dynamic block (Top Categories) on the page.
    • Case 2
      • Confirm that when opening the page in any other language in devtools, there will be an SEO element showing either the SEO content of the French page, or the content of the English page if those fields are not filled in for the French version.
  41. KOD-28968: Master Order / budget - Add company budget calculation from Job
    • Tests
    • Case 1
      • Enable jobRecalculateCompanyBudgets setting.
      • Use an existing budget or create a new one for your company without a parent budget ID.
      • Confirm it has a proper start date and end date.
      • Confirm it has Budget Restriction Type set to the type of the order you’ll be testing with.
      • Confirm you have an order with order status set to the status mentioned in Budget Restriction Type on the budget.
      • Confirm you have Unit Sell or Unit Stock values on order items on your order.
      • Confirm you have extra3 value on order be in between start date and end date of the budget.
      • Update any field on Order details tab.
      • Confirm, you do not have any budgets already generated for the order you’ll be testing this ticket on. If there are, then remove them.
      • Go to Swagger and execute GET /api/system/scheduler endpoint.
    • Case 2
      • Complete case 1.
      • Update price on your order item for order you’ve calculated prices on case 1.
      • Recalculate price on the order.
      • Perform steps 10-12 from case 1.
      • Go to your budgets and confirm the price was updated on the budget for the order item and the main budget.
  42. KOD-28969: Add search to catalogs on commerce website
  43. KOD-28981: Add Host & Configure Branding
  44. KOD-28982: Kodaris Dev Examples: ERP Settings Entity
  45. KOD-28997: Allow Unit Sell to be Empty for Web Only Unit
    • Regression Tests
    • Case 1
      • Make sure pricing works on any site with a unit conversion.
  46. KOD-29006: Warranty Products Management
    • Regression Tests
    • Case 1
      • For this regression test, make sure the product details page and the cart page don’t break for products with an assigned warranty type in their extra2 field and for products that don’t have it assigned.
    • Tests
    • Case 1
    • For this test, we need to find a product that has a warranty type assigned in its extra2 field.
      • If the warranty type in the extra2 field of the product matches a message’s code in the Messages table (after appending “product-warranty” to the code), the message should be displayed in the product details page and in the cart.
    • Case 2
      • For this test, we will change the extra2 field of a product to add a warranty type that doesn’t match to a message in the Messages table.
      • When we do that, we should not see the warranty block being displayed in the product details screen or in the cart screen.
  47. KOD-29007: Append Delivery Date and Time in Order Notes
  48. KOD-29014: New Sync
  49. KOD-29018: Shared Drive: upload endpoints must display folderID in response
  50. KOD-29022: Add FreeShipping option to the RewardType drop-down in Discounts screen
    • Regression Tests
    • Case 1
      • Please make sure that the RewardType dropdown works correctly. You can still select any value and the selected values are saved.
    • Case 2
      • Check the Discounts screen. It should load and work without any error.
      • Try to add/edit any data and column and make sure that changes are saved and performed correctly.
    • Tests
    • Case 1
      • Check that: FreeShipping option is visible in the RewardType select
      • FreeShipping option can be selected and displayed.
      • FreeShipping value persists after reload.
  51. KOD-29030: Promo Tag update
  52. KOD-29049: Implementation - Addons
  53. KOD-29051: Implementation - Skus
  54. KOD-29059: Catalogs/Order Templates Updates
  55. KOD-29063: Duplicated Lines on Statement
    • Regression Tests
    • Case 1
      • Check that the statement pdf still looks good.
    • Tests
    • Case 1
      • Check that statement pdf doesn't have duplicate records.
  56. KOD-29068: Credit Card entry field not visible to customer
  57. KOD-29071: Add cookie policy popup to all customer websites
  58. KOD-29075: Search Rules Optimization
  59. KOD-29080: Priceid code field added to company records
    • Regression Tests
    • Case 1
      • Open any company detail page:
      • Verify page loads without errors.
      • Test updating an existing field (e.g., Company Name).
      • Confirm changes are saved properly.
    • Tests
    • Case 1
      • Navigate to Company Info section on the Company Details screen:
      • Verify "Price ID Code" field is visible.
      • Enter a number (e.g., "123") in the Price ID Code field.
      • Refresh the page and confirm the number is still there.
      • Also, try typing letters in the Price ID Code field and make sure only numbers are allowed.
  60. KOD-29081: Remove Accountant and PaymentsView / PaymentsEdit Roles
  61. KOD-29082: Add internalPageStatuses setting available by default
    • Regression Tests
    • Case 1
      • Validate that the setting internalPageStatuses was not affected for those environments who have this setting already defined.
    • Tests
    • Case 1
      • Validate setting internalPageStatuses was properly created and that status defined there is properly loaded in the Intranet Pages screen.
      • Steps:
      • From the Operations portal go to the Settings screen and look for internalPageStatuses.
      • Set some test values there.
      • Go to Intranet > Pages screen and make the status column visible.
      • Click on the status column of any record.
      • You must see a drop down with the list of statuses as defined in the setting.