Using the CMS, you can point-and-click manage many marketing and informational widgets throughout your dynamic commerce website. Kodaris commerce provides many default widgets out of the box but you can also customize these and add more widgets if you'd like.
All of these widgets can be easily managed from the customizer but you can also find the raw data for these widgets under Operations > CMS > Widgets. In this release, we've added the ability to import and export these widgets. This is handy if you want to export the widgets into a sheet for bulk editing in Google Sheets or Microsoft Excel, or simply migrate widgets between different systems.
Check out the video on how to import/export!
https://youtu.be/7SzmZLM796g?feature=shared
Commerce
Fedex Integration
On your Kodaris commerce website, you have many different options around shipping at checkout. You can maintain static shipping methods and rates, customize shipping methods/rates down to the customer level, product level, etc, prompt the user to fill in further details based on shipping method selection... however you'd like to manage shipping.
In this release, we've added a Fedex integration which you can use to display shipping methods and rates from Fedex at checkout. Watch the video below to see how to enable the Fedex integration and how it works on the checkout. Please note that the default Fedex integration does expect your product weights to be populated in order to fetch accurate shipping rates from Fedex. You can also customize how the Fedex shipping methods are displayed, which ones are displayed, adjust the rates in realtime, or whatever else you'd like to do before the rates are shown to the customer checking out. Reach out if you interested and more videos will be coming soon on how to customize the Fedex shipping methods to you and your customers.
https://youtu.be/-TEhJCEdq7U?feature=shared
Operations Portal
Import/Export URL Rewrites
If you are moving pages around on your website, or you remove a page and include the relevant content else where on your website, you may want to redirect users to the new location if they try to access the old url.
In your Kodaris system you can accomplish this by adding URL Rewrites. View the video below for a quick demonstration and also how to export and import rewrites which was added in this latest release! Import/export is often handy if you are migrating to Kodaris and have a list of urls from your old system that users commonly access. And you'd like to redirect them to the new urls on Kodaris.
https://youtu.be/cIa4-B8_tYU?feature=shared
Assign a company to a parent from the child companies tab
In your Kodaris system, you can link companies together in a hierarchical tree. Users set up on the parent company can view and manage all child companies. Users set up under a child company can only view and manage the child company. You can use this for your customers who have multiple ERP accounts and you need them to be able to access several ERP accounts with one login. This is at the Customer level and then you can also have unlimited shiptos on each Customer account as well.
Watch the first video below if you'd like an overview on how to setup hierarchical customer accounts! In the second video, we cover a new enhancment we just added where you can assign child customer accounts to a parent directly from the parent's Child Companies tab.
https://youtu.be/giXeAr0dJJs?feature=shared
https://youtu.be/KC4E0iwD9l4?feature=shared
PIM
Multisite - Separate product catalogs
Need more than one site using the same product data, content, search rules or more? Kodaris offers full multisite capabilities on the same Kodaris system, including different URLs, SSL Certs, Catalogs, and customer experiences. Multisite is designed to leverage your operations to serve multiple markets and brands.
In this release, we've added the ability to set up entirely separate product catalogs for your different websites from the operations portal. You can choose to set up a separate product catalog for one website, another product catalog for your other website, etc. All products are maintained in your one central Kodaris PIM and you can assign certain products to multiple website catalogs if you sell certain product lines on multiple websites in your multisite setup. Watch the video below on how to configure separate product catalogs!
https://youtu.be/FpJrJNED1l4?feature=shared
View products under a category
In this release, we've added the ability to view all the products assigned to a category directly from the category detail screen. This is a helpful addition to the Category Assignment screen where you can bulk maintain multiple category assignments across multiple products at once.
The first video below is a full overview on how you can manage and maintain category assignments in the Kodaris PIM, and the second video covers viewing products under a category which was just released!
https://youtu.be/iRmAcd00rVo?feature=shared
https://youtu.be/10o5BLnekXE?feature=shared
Translate filter categories point and click in the operations portal
In today's global world of commerce and regulated environments, it is important to serve customers in the language required. Kodaris not only offers multilingual commerce, but robust and easy to use visual translator tools. You can translate while looking at the page the user would see. This reduces cost, time, and effort in the translation process. Page, Product, Search, SEO, and Content all one hundred percent supported.
As part of translating your products, you'll also want to provide translations for your filter categories which (along with attributes) allow users to refine their category and search results.
In this release, we've enhanced the process of providing filter category translations so it is very similar to the translation process for products, attributes, and so on. Watch the video below to learn more! The full multilingual playlist is also included here: https://youtube.com/playlist?list=PLuNwwww8WypP4x2ENDzHxWYgEdY4kLe0p&feature=shared
https://youtu.be/oyDoVkfVie0?feature=shared
Filter products by category or attribute and export
Under PIM > Products > Category Assignment, you can view all your products in an embedded spreadsheet along with all the categories each product is in. In the sheet you have all the product columns (such as name, description, etc) and you also have 20 columns (Category 1 - Category 20) which contain the category the product is in.
You can also use the category search box at the top of the sheet to filter for all products that are in a specific category.
Start searching for a category in this box
A dropdown will appear that lists the available categories in the system
Select the one you are looking for
The sheet will update to only show the products which are within that category
The PIM > Products > Attribute Assignment tab works very similarly. You have a spreadsheet with your products and 20 columns that list out all the attributes each product is assigned to. As well as a filter box where you can narrow your products down to only those assigned to a particular attribute.
In this release, we've also added the ability to export only products assigned to a particular category or attribute. See the first two videos for an overview of these assignment screens and the second video for how to export based on category/attribute assignment!
KOD-18571: Fixing filter issue in directShipped column
Tests
Case 1
Navigate to the Locations page and test the sorting and filtering functionalities by "Local" and "Direct Shipped".
KOD-18631: UX for Minimum Order Feature
Regression Tests
Case 1
Review the product pages, category product lists (both grid and list views), and the functionality of the cart number input.
Focus on products where intervalOrderQuantity, minimumOrderQuantity, and maximumOrderQuantity have not been configured.
Tests
Case 1
Test the number input functionality and appearance in both the grid and list views of the category product list.
Case 2
Verify the number input functionality and appearance on the cart page.
Case 3
Ensure the number input functionality and appearance on the product page for items with intervals and maximumOrderQuantity settings are functioning correctly.
Case 4
Set up product with only intervalOrderQuantity and check number input functionality and look. Tooltip for maximum order quantity shouldn’t be shown.
Case 5
At cart, product and category list pages try typing test values into the number input or values less than 0. Those values shouldn’t be saved, they should be automatically updated to minimumOrderQuantity or the interval (if they are defined) or to 1 (for those products without minimumOrderQuantity or interval)
Case 6
In the operations portal, examine the search and data grids in the products section, as well as the product detail page.
Add the following columns to the grids: Interval Order Quantity, Minimum and Maximum Order Quantity.
Proceed to the details section and attempt to edit data in the respective fields.
KOD-18691: Customer Commerce - More Like This in Solr
Regression Tests
Case 1
We need to verify that the common product search functionality is still operating as intended. This involves accessing the same URL without specifying 'moreLikeThis' in the type parameter. Here's the URL format: /api/user/search/product/text?searchString={anyStringThatMatchesWithAProduct}
Tests
Case 1
Hit endpoint from UI: /api/user/search/product/text?searchString={productCode}&type=moreLikeThis&useAISearch=false where {productCode} is any valid product code in the database.
Confirm that you receive 'related' products in the response.
KOD-18697: Edit PIM Products Within a Category
Regression Tests
Case 1
Navigate to the Products screen on the operations portal.
Open the Category assignment tab.
Verify that everything is working properly.
Case 2
Navigate to the Categories screen on the operations portal.
Open specific category details page.
Verify that everything is working properly.
Tests
Case 1
Navigate to the Products screen on the operations portal.
Open the Category assignment tab.
Navigate to the specific product detail page.
Edit some data.
Confirm that the changes are saved successfully.
Case 2
On the operations portal, navigate to the Categories screen.
Open the specific category details page.
Go to the Products tab.
Navigate to the specific product details page.
Edit some data.
Confirm that the changes are saved successfully.
KOD-18713: Phase 2 - Syncing Images from Kodaris to Infor Document Storage Module
KOD-18717: Add restrictions to products
KOD-18748: Insights Article Covering AI Order Automation Feature
KOD-18756: Add COD payments to base payment portal
Regression Tests
Case 1
Generate an order email and verify that it functions as intended.
Tests
Case 1
Go through COD payment flow, make sure everything works as expected.
KOD-18785: Test Releasing Orders to ERP
KOD-18850: Make enablePublicPricing setting multi-site compatible
KOD-18859: Add global setting to disable billing address edit in cart
Regression Tests
Case 1
Verify that updating the billing address functions as expected when the setting is turned off.
Tests
Case 1
Verify that the setting "disableEditBillingAddressInCart" is functioning properly and that contact info is editable.
KOD-18900: Register form issues
Regression Tests
Case 1
Attempt to request an account.
Verify that the account request functions correctly.
Ensure that an email is generated and sent. If the email is not received, please ask someone to confirm if the email was generated.
Case 2
Try to request account from the web
Request account should work correctly.
Email should be generated and sent. If email was not retrieved, then ask someone to check if email was generated.
Tests
Case 1
Confirm, that /ser-scripts/contactFormEmailAlert.js was updated to bypass captcha for requests from mobile.
Try to request account
Request account should work correctly.
Email should be generated and sent. If email was not retrieved, then ask someone to check if email was generated
KOD-18902: Update to Product List not Saving from List Details Page
Regression Tests
Case 1
On the customer portal navigate to the company lists screen.
Ensure that everything works properly.
Tests
Case 1
On the customer portal navigate to the company lists screen.
Navigate to the company list.
Press “edit” button and update “Name“ and “Description“.
After saving reopen this edit dialog and confirm that values was changed.
KOD-18952: Child products can be added to cart
Regression Tests
Case 1
Login as customer.
Go to some category.
Go to Grid/List view.
Try to add new product into shopping cart.
Make sure product successfully added into cart.
Case 2
Login as customer.
Got o some product.
Go to Grid/List view.
Try to add new product into shopping cart.
Make sure product successfully added into cart.
Tests
Case 1
Login as customer.
Go to some category.
Go to Catalog view.
Fill the quantity of products that you want to be added into cart.
Click Add to cart button.
Make sure all products successfully added into cart.
KOD-18960: Hold Web Order if it Includes Direct Ship Items
Tests
Case 1
Place and order.
Check that If some item in the order has the attribute directShipped=true then the order has to has the setting trendHold = 1
Note: there is other logic that put this setting to true, like when we have the systemSetting_ holdAllGuestOrders=1
KOD-18975: Substitution Product - UX
KOD-18993: Create linkedOrders endpoint for customer portal
Tests
Case 1:
check new endpoint: /api/account/order/{orderID}/linkedOrders.
before testing need to populate company setting: erpLogicEngine = inforCSD
Select the three orders with empty column: ERP , remember IDs of selected order and than go to details page on operations side for each selected orders, go to development tab → populate field: extra5.
Then go to swagger side and use new endpoint: /api/account/order/{orderID}/linkedOrders
The result, for example if you put orderID: 5850 => should return linked orders by field: extra5
orderID: 5851 => 9999999999-02
orderID: 5852 => 9999999999-03
KOD-19039: Test releasing order to ERP
KOD-19061: Make defaultPricingWarehouse multi-site compatible
Tests
Case 1
Test defaultHostWarehouse global setting pricing correct.
Case 2
Test defaultHostWarehouse host setting pricing correct.
KOD-19097: Add Card Type Selector to Mobile
Regression Tests
Case 1
Login to the app.
Go to “…” → payment methods.
Confirm, that cards are creatable for account payment methods.
Confirm, that cards are creatable for company payment methods.
Case 2
Login to the app.
Go to “…” → payment methods.
Confirm, that cards are editable for account payment methods.
Confirm, that cards and bank accounts are editable for company payment methods.
Case 3
Go to home screen.
Press on Payments.
Select open invoice.
Press Calculate totals.
Use card with card type set.
Pay invoice.
Invoice should be payed successfully.
Case 4
Login to the app.
Go to “…” → locations.
Open any location.
Confirm, that states are changeable.
Change country (if only one country is shown, then choose this country in the modal form).
Confirm, that states are still changeable.
Save this location with different data from select. Return to this location after saving. Confirm, that is saved correctly.
Tests
Case 1
Go to more → payment methods.
Press create card.
Fill in all data without card type.
You should not be able to save without card type.
Choose card type from two options, Credit or Debit.
Save card.
Confirm on the web, that this card was successfully saved with required card type.
Case 2
Go to more → payment methods.
Press on any card.
Fill in card number.
You should not be able to save without card type (do this if your card has no card type).
Change card type to another one or select any if it was not set before
Save card.
Confirm on the web operations portal, that card type was changed successfully.
Case 3
Go to home screen.
Press on Payments.
Select open invoice.
Press Calculate totals.
Use card without card type set.
Enter CVV.
Confirm, that is impossible to pay invoice without selection of card type.
Select card type.
Pay invoice.
Invoice should be payed successfully.
Confirm on the web’s operational portal, that card type was set for this payment method.
Case 4
Go to more → locations.
Select any location.
You should see the name of the state instead of it’s code, when it is selected (you should see the name you selected)
You might not see changes to the country.
Case 5
When you choose debit card to pay invoices you should not see convenience fee shown to the user for either schedule or regular payment
KOD-19100: Setting enableGuestQuoteRequestInCart throws exception when use under host
Tests
Case 1
Check if Quote Request In Cart is enabled for guest when host setting used.
Case 2
Test Place Order With Credit Card works as before for Customer and guest.
KOD-19107: Fix issue with broken images
Regression Tests
Case 1
The website should load properly, and the featured product images should now be displayed correctly.
KOD-19132: Add multilingual to filter categories screen in operations portal
Regression Tests
Case 1
The following pages should load and edit fine:
Filter Categories
Filter Category Attributes
Case 2
Make sure that Products > Filter Categories > Details works as expected.
Tests
Case 1
On Filter Category Detail page, you should be able to load and edit info fine.
Case 2
In default language, you should be able to edit name field fine and the correct name should appear on the website.
Case 3
Change the language in the header and edit the filter category name.
Original filter category name shouldn’t have changed.
A message for that language should have been created.
Case 4
Try creating/updating name with different languages. Messages should be created/updated correctly.
KOD-19154: Start date not populating when shiptos created
KOD-19160: Make a video how restrictions is working
KOD-19188: Fix Credit App on Demo Site
Regression Tests
Case 1
Go through the credit app flow and make sure everything looks/works as expected.
Tests
Case 1
Make sure that if you log out in the middle of filling out the credit application, when you login, you are redirected back to the form.
Also, if you refresh the page while filling out the form, your data should remain.
KOD-19200: Automatically Tag Payment Methods for Converge Using API Call
Regression Tests
Case 1
Global setting (or customer/company setting): paymentSystemcardAccount is set to CONVERGE.
At customer portal make sure Payment Methods pages for company and customer work correctly, displays all payment methods, new methods might be added
Tests
Case 1
Global setting (or customer/company setting) paymentSystemcardAccount is set to CONVERGE.
At customer portal go to Payment Methods pages for company and customer, add new cards, make sure cardType is set.
KOD-19203: Update new customer activation template
Regression Tests
Case 1
Go through the lost password flow and make sure that still works fine.
Check that the emails are worded correctly for lost password.
Case 2
Add customer with the new flow, they should get a account activation email.
Go through the flow and make sure everything looks good.
I didn’t get an activation email.
KOD-19205: Export doesn't support category filter
Regression Tests
Case 1
On the operations portal navigate to the products screen.
Open “Category Assignment” tab and export data to the file.
Verify that the API call is functioning correctly.
Repeat steps 2 and 3 for “Attribute Assignment“ tab.
Case 1 (Platform)
Navigate to Products page, Category Assignment tab. Make sure data is loaded correctly, filtering is working.
Tests
Case 1
On the operations portal navigate to the products screen.
For the “Category Assignment“ and “Attribute Assignment“ tabs do following steps:
Set category/attribute code
Export to the file.
Verify that the API call is functioning correctly.
Check is data in the exported file equals to the data on the grid.
Case 1 (Platform)
Export the products and ensure that the category filter is applied correctly.
KOD-19218: Rename labels on orders templates
Regression Tests
Case 1
Go to customer portal → Orders screen.
Choose one of available orders.
Check if details page looks good.
Click on button "print".
Check if pdf file looks good.
KOD-19219: Inventory
Case 1
Verify that everything functions correctly for logged-in users, including:
Inventory on the product list page.
Inventory on product page.
Tests
Case 1
Check that everything works fine for guest user:
Inventory on the product list page.
Inventory on product page.
You should see in/out of stock.
Case 2
Do this case as a guest.
*Add some items to the cart.
Go to the cart.
Check if you don’t see button request custom items.
Click on button clear cart.
Check if you don’t see button request custom items.
Case 3
Do this case as a log in user.
Add some items to the cart.
Go to the cart.
Check if you don’t see button request custom items.
Click on button clear cart.
Check if you don’t see button request custom items.
KOD-19221: Commerce - Credit card checkout block
Regression Tests
Case 1
Make sure cart payments screen still loads and appears as normal.
Case 2
Make sure the checkout with card option still shows if your item totals are greater than 0.
Case 3
In the mobile app make sure the checkout with card option still shows if your item totals are greater than 0.
Tests
Case 1
Add an item to you cart with a total of 0.
Go to the last checkout tab, make sure that checkout with card is not allowed.
Case 2
Add an item to you cart with a total of 0.
Go to the last checkout tab, make sure that checkout.
Go to Swagger, be sure to authenticate swagger with the user that was creating the order. Then, keeping that session open test the next endpoint:
[GET] /api/user/cart/getPaymentMethodOptions
payment method = credit card (CC) should not be in the result list.
[POST] /api/user/cart/placeOrderWithCreditCard
Fill some data to pay with credit card and check that we get a forbidden error.
Case 3
In the mobile app make sure the checkout with card option is not showed if you have at least 1 item with total equal to 0.
Validate you can still create/edit Products without updating the new fields.
In operation portal, create new product without adding the new fields. Response should be success and expected value for additionalShippingCost should be null or 0 and mapPrice in false.
Case 2
Update existing product from operation portal for values different from mapPrice and additionalShippingCost .Validate that the response is success.
Case 3
Update any existing Order Item changing values different from additionalShippingCost.
Tests
Case 1
Add products to the cart or to an Order an check the order Item is created with the new field additionalShippingCost. You could use endpoints like /api/system/order/{orderID}/orderItem/{orderItemID} to see orderItem fields
or go to operations portal -> orders ->
Click in 'Orders'.
Select the order which has the orderItems.
Verify the orderItem fields in development screen.
Case 2
Check the new fields are returned when searching for products in any endpoint in swagger which return DTO. Example: /api/system/product/{productID}
Case 4
Log in as an employee on the operations portal.
Set some products with new property mapPrice in true and others in false.
Hit endpoint /api/user/product/pricesByCode
Validate that the following fields in the response for each product which has mapPrice in true must be null or empty:
wholeUnitPrice
calculatedPrice
unitPrice
altPrice
priceBreaks
Case 5
Log in as a customer on the customer portal.
Set some products with new property mapPrice in true and others in false.
Hit endpoint /api/user/product/pricesByCode.
Validate that the following fields in the response for each product have correct values (not null unless it is null in database):
wholeUnitPrice
calculatedPrice
unitPrice
altPrice
priceBreaks
KOD-19224: Fix auto adding host storeLogo setting
Regression Tests
Case 1
Make sure storeLogo and storeLogoLight in themer panel still work
Tests
Open the themer panel and try updating the storeLogo and storeLogoLight. It should work fine.
Note: make sure the host setting doesn’t exist first.
KOD-19230: AP Textract Automated Flow
Regression Tests
Case 1
Hit /api/system/email endpoint and make a PUT/PATCH operation editing some fields but also any of the related entities fields (companyID, customerID, orderID, templateID)
Verify that those IDs are not being updated. Those values should be taken from current saved email in database
KOD-19232: Convert serverside Event API to SAPI
Regression Tests
Case 1
POST endpoints
Case 2
GET endpoints
Case 3
PUT endpoint
Case 4
DELETE endpoints
KOD-19234: Add customer mobile app configuration endpoint
Tests
Case 1
Account API definition in swagger, Customer API tab.
Use swagger and hit: /api/account/companyProductCategory/{companyProductCategoryID}/listProducts endpoint and check sort is working for lastPurchaseDate.
Case 2
Use swagger and hit: /api/account/companyProductCategory/{companyProductCategoryID}/listProducts endpoint and check you can filter by lastPurchaseDate using different expression options like
BETWEEN or GREATER_THAN_EQUAL.
KOD-19243: Add Translations for Actions in Customer Portal
Regression Tests
Case 1
Make sure your default language is English.
Log in to Customer Portal.
Click On Orders.
Click on Actions.
Everything in dropdown should still be in English.
Case 2
Make sure your default language is English.
Log in to Customer Portal.
Click On Quotes.
Click on Actions.
Everything in dropdown should still be in English.
Tests
Case 1
Go to Operations Portal and add in everything that needs to be translated.
Download all as csv file
Download selection as pdf files
Download selection as sage files
Request conditional final lien release
Request unconditional final lien release
Request conditional progress lien release
Request unconditional progress lien release
Log in to Customer Portal.
Make sure default language is set to whatever language you used to add translations above.
Click On Orders.
Click on Actions.
Everything in dropdown should be translated accordingly.
Case 2
Same initial set up as above.
Log in to Customer Portal.
Make sure default language is set to whatever language you used to add translations above.
Click On Quotes.
Click on Actions.
Everything in dropdown should be translated accordingly.
KOD-19244: Change image position - CMS page
Regression Tests
Case 1
Check that the below blocks still look the same in both the page editor and on the page: (on pre-existing pages).
CM: Section: Full Width with 1 image
CM: Section: Split With 1 image
Note: for the Full Width block, make sure the editor doesn’t say anything about block recovery.
Case 2
Check that you can also edit those blocks fine.
Tests
Case 1
Using the Attributes → Reverse function, make sure that you can change the position of the image in the block.
For: CM: Section: Full Width with 1 image.
Case 2
Check that the image upload section looks normal and the image isn’t huge.
For: CM: Section: Split With 1 image.
KOD-19249: Change category code column field label on attributes grid
Regression Tests
Case 1
Go to operations portal → Attribute Languages.
Check if page looks good.
Case 2
Go to operations portal → Attribute Languages.
Check if you can add Attribute Languages without any problems.
Case 3
Go to operations portal → Attribute Languages.
Check if you can update Attribute Languages without any problems.
Case 4
Go to operations portal → Attribute Languages.
Check if you can delete Attribute Languages without any problems.
Tests
Case 1
Go to operations portal → Attribute Languages.
Check if you see Attribute Code, Attribute ID, Attribute Language ID, Attribute Title instead of Category Code, Category Language ID, Category ID, Page Title.
KOD-19250: Fix server side export/import for customizer widgets - next step
Regression Tests
Case 1
Check that the widgets screen loads as normal with no errors.
Tests
Case 1
Check that you can export widgets fine with no errors.
Case 2
Check that you can import widgets using the new widgets imports.
KOD-19251: Insert enableShopByStore setting
KOD-19253: Scoping for next steps - FedEx Integration via Rest API
KOD-19261: Scoping on the Direct Shipped Facet
Regression Tests
Case 1
Create or update a product should index it correctly when:
IntegrationIndexedProductFields is blank and filter category for fg_directShipped exist.
IntegrationIndexedProductFields is blank and filter category for fg_directShipped not exist.
With integrationIndexedProductFields = blank we can add a product manually to filter category fg_directShipped.
Tests
Case 1
Setup integrationIndexedProductFields with next value: