All Releases
View all releases

October 12, 2023 release notes

Highlights

Developer

Kodaris Customer API Documentation

Kodaris offers a robust set of APIs your customers can use to do anything that can be visually done on both the commerce website and in their customer account portal. To learn more about this capability and how to utilize it, please visit https://www.kodaris.com/s/content/product-documentation-integration-hub-kodaris-customer-account-api.

Payment

Configure card convenience fees per company

Your Kodaris platform includes the ability for your customers to pay open invoices online via either ACH or credit card. In a previous release, the ability to set a convenience fee for those who opt to use a credit card at the global level was added. In this release, you now have the option to set a convenience fee for individual company accounts as well.

To enable this setting, go to the Customers section of your Operations Portal and select the company that you would like to adjust, turn off, or update the convenience fee on. Go to the Custom Fields tab and add your preferred convenience fee setting - percentageCreditCardFee or dollarCreditCardFee - and input the needed value. The fee is now enabled, and customers on that company will see the convenience fee amount appear if they choose to use a credit card when making payments.

Percentage card fee settings

Dollar amount card fee setting

Note: Any convenience fee enabled at the company level will override the global setting for that company.

567_company_dollar_convenience_fee.png
567_company_percentage_convenience_fee.png
567_convenience_fee_configured.png

Tickets

  1. KOD-13925: Operations Portal Shows Green Successful Push When Items Errored
    • Regression Tests
    • Case 1:
      • Go to admin page and place an order
      • Then in the order page, release this order to ERP
      • When order is released, please check that it released successful
    • Tests
    • Case 1:
      • Log in as admin
      • You should index order you just set up and check that {{"releaseStatus": "Released"}}
    • Case 2:
      • Use same order as for Case 1, but now change {{trendSyncMessages}} setting value to {{"Read timed out"}}
      • Log in as admin
      • You should index order you just setup and check that {{"releaseStatus": "Error"}}
    • Case 3:
      • Use same order as for Case 1, but now change {{trendSyncMessages}} setting value to {{"warning, please check your item price"}}
      • Log in as admin
      • You should index order you just setup and check that {{"releaseStatus": "Warning"}}
  2. KOD-14618: Add Schema Markup to Product Page
    • ld+json schema code should be present on product detail page
    • Check product with and without inventory and make sure that availability property shows correct value InStock/OutOfStock
  3. KOD-15322: Payments Screen - User Unable to Tick/Untick Payment Period Checkbox Again Unless Return Page
    • Regression Tests
      • No regressions
    • Tests
    • Case 1:
      • Login to customer app
      • Click on “Payments” button
      • Tick and untick “1-30 Days” option; it should always tick or untick when user presses checkbox
  4. KOD-15325: Product Details / Listing Template Updates
  5. KOD-15379: Digital Credit App Validation Fixes
  6. KOD-15658: Confirmation Email Not Using Multi-site Branding
    • Regression Tests
    • Case 1:
      • Go to user login page and try to login with user you are logging in every day; log in should be as usual.
    • Tests
    • Case 1:
      • Try to login as a user that has not been logged in for more days than the “{{confirmEmailPeriodInDaysSinceLastLogin}}" setting.
      • You should get a alert saying go to your email and verify your email address.
      • Go to email, the email should be there ? go through the flow ? everything should look fine.
      • After confirming you should get another email saying that you confirmed.
      • You should be able to login successfully after that.
  7. KOD-15920: Restrict Traffic to IP Address Range
    • New settings:
      • {{restrictCustomerRequestByIP}}
      • {{restrictEmployeeRequestByIP}}
      • {{whiteListIpAddresses}}
    • Test Steps #1:
      • Add one or more IP addresses, that won’t match your IP to {{whiteListIpAddresses}}. (*On this step you should be careful as enabling restriction will allow traffic to come only from specified IPs*). To make it easier - you can whitelist someone else’s team member IP, so this person could disable setting once testing is done.
      • Verify that both {{restrictCustomerRequestByIP}} and {{restrictEmployeeRequestByIP}} settings disabled and you can navigate to any page at both Operations and Customer Portals.
      • Enable {{restrictCustomerRequestByIP}}. Verify that Customer Portal is not accessible, but Operations Portal is accessible.
      • Enable {{restrictEmployeeRequestByIP}}. Verify that now both Operations and Customer Portals can’t be accessed.
    • Test Steps #2:
      • Disable both {{restrictCustomerRequestByIP}} and {{restrictEmployeeRequestByIP}}.
      • Update value of {{whiteListIpAddresses}} by adding your IP address.
      • Enable either {{restrictCustomerRequestByIP}} or {{restrictEmployeeRequestByIP}} or both. Verify that Portals can be accessed, because IP is whitelisted.
  8. KOD-16059: Customer Payment Made and Employee Payment Made Template Updates
  9. KOD-16220: Captcha Error
    • Tests
    • Case 1:
      • Go to a product page ? click the last item in the yellow info box.
      • There should be a popup ? make sure there is no error in the recaptcha box in the lower right part of the screen.
  10. KOD-16325: Customer App - Upgrade to Latest Version
  11. KOD-16330: PriorityPayments - Automate Generation of priorityPaymentsCustomerId
    • Regression Tests
    • Case 1:
      • Adding, updating and deleting company payment methods with existing and non-existing priority customer ID.
    • Tests
    • Case 1:
      • Adding new payment method without existing priority customer ID (it should be auto-generated) and making payment.
  12. KOD-16396: Add Tab to Order Details Screen for Parcel Tracking Information
    • Regression Tests
    • Case 1:
      • Login to Customer Portal
      • Go to Orders ? Order Details
      • Make sure page layout is correctly displayed
      • Click on *Items* tab
      • Make sure page layout is correctly displayed
      • Click on *Files* tab
      • Make sure page layout is correctly displayed
    • Tests
    • Preconditions:
      • Go to Operations Portal ? System ? Settings
      • Make sure *shippingEngine* has "2SHIP" value
      • Make sure *customerOrderTrackingEnabled* has "1" value
    • Case 1:
      • Login to Customer Portal
      • Find order with linked Order Shipment
      • Go to Orders ? Order Details ? Tracking
      • Make sure tracking information displayed correctly
    • Preconditions:
      • Go to Operations Portal ? System ? Settings
      • Make sure *shippingEngine* has "2SHIP" value
      • Make sure *customerOrderTrackingEnabled* has "1" value
    • Case 2:
      • Login to Customer Portal
      • Find order without linked Order Shipment
      • Go to Orders ? Order Details ? Tracking
      • Make sure you see “This order has no shipments“ message
    • Preconditions:
      • Go to Operations Portal ? System ? Settings
      • Make sure *shippingEngine* has "RATETABLES" value
    • Case 3:
      • Login to Customer Portal
      • Go to Orders ? Order Details ? Tracking
      • Make sure you see “This order has no tracking information“ message
    • Preconditions:
      • Go to Operations Portal ? System ? Settings
      • Make sure *customerOrderTrackingEnabled* has "0" value
    • Case 3:
      • Login to Customer Portal
      • Go to Orders ? Order Details
      • Make sure Tracking tab is not presented
  13. KOD-16642: Configure Register Page - For Users Without an Account
    • Regression Tests
    • Case 1:
      • Go through the login flow on the ‘spcu/login’ screen. Make sure everything looks good.
    • Tests
    • Case 1:
      • Go to the ‘spcu/login’ screen.
      • Check that the register form is no longer there.
    • Case 2:
      • Go to the ‘spcu/register’ page.
      • Go through the flow and make sure everything is working correctly, validation, “Shipping same as billing”, etc.
    • Case 3:
      • Make sure you get the email from the previous step with all the info from the submitted form + “fromName” = “Register Form”.
      • Note: the fromName should be near the top of the email.
    • Case 4:
      • Make sure all the fields from the form on the old site are on the new site.
  14. KOD-16655: Customer App Showing Other Host Inventory
    • Regression Tests
    • Case 1:
      • Search for a product. Click on a product from the result to bring up the product detail screen. Product inventory should match the inventory of the same product in the web app.
    • Tests
    • Case 1:
      • Search for a product. Click on a product from the result to bring up the product detail screen. Product inventory should match the inventory of the same product in the web app.
  15. KOD-16686: Add Featured Products Row to Homepage
    • Regression Tests
    • Case 1:
      • Go to front site
      • Check if items on the home page are loading good:
        • Banners
        • Categories
        • Slider with Top Categories
    • Tests
    • Case 1:
      • Go to front site
      • Scroll down to bottom
      • Check if you can see “Featured Products”
  16. KOD-16713: Unit Price and Total Not Shown in Order Items Grid - Customer Portal
  17. KOD-16716: When You Write a Request That Cannot Be Found on Category Page, There Should Be Written "no products available"
    • Regression Tests
      • No regressions found for other parts of the app.
    • Tests
    • Case 1:
      • Log in to the app
      • Press search bar on the top
      • Enter some text
      • Press search icon on your keyboard
      • Get results
    • Case 2:
      • Log in to the app
      • Press search bar on the top
      • Enter some text
      • Press search icon an your keyboard
      • Get result
      • Press on search bar
      • Search should not begin
    • Case 3:
      • Log in to the app
      • Press search bar on the top
      • Enter some text
      • Press search icon on your keyboard
      • Get result
      • Delete all text from search bar
      • Search should not begin
    • Case 4:
      • Log in to the app
      • Press search bar on the top
      • Enter some text
      • Press search icon on your keyboard
      • Get result
      • Enter space after your search request
      • Search should not begin
      • Enter letter after space
      • Search should begin
      • Get results
    • Case 5:
      • Log in to the app
      • Press search bar on the top
      • Enter some text
      • Press search icon on your keyboard
      • Get result
      • Enter impossible to find text without spaces
      • “No products found” should display in the center of screen
    • Case 6:
      • Log in to the app
      • Press search bar on the top
      • Enter some text
      • Press search icon on your keyboard
      • Get result
      • Enter impossible to find text without spaces
      • “No products found” should display in the center of screen
      • Enter space and search string from case 1
      • Results should contain only results that was shown on Case 1 search; space should work like OR condition
    • Case 7:
      • Log in to the app
      • Press on any category button under “Shop By Category” text
      • Results should be found for this category
    • Case 8:
      • Log in to the app
      • Press on any category button under “Shop By Category” text
      • Results should be found for this category
      • Press on search field
      • Search should not begin
    • Case 9:
      • Log in to the app
      • Press on any category button under “Shop By Category” text
      • Results should be found for this category
      • Enter some text to search
      • Results should be shown
      • Test Case 4, 5, 6 for this search field (should work the same)
    • Case 10:
      • Log in to the app
      • Press on any category button under “Shop By Category” text
      • Results should be found for this category
      • Enter some search request
      • Let it load
      • Delete all text from search bar
      • Search should begin
      • Get same results as in Case 7
  18. KOD-16717: WebUI / CSD API Write Back Synchronization
    • Regression Tests
    • Case 1:
      • Create or update a product
    • Case 2:
      • Create or update a product price
    • Tests
    • Case 1:
      • Turn on new setting:
        • Go to setting menu
        • Look for settings {{enableSyncProductPriceToERP}} and {{enableSyncProductToERP}}; set value = 1 to both of them
    • Case 2:
      • Update product and review logs to see that interceptors was called to update ERP
    • Case 3:
      • Update product price and review logs to see that interceptors was called to update ERP
  19. KOD-16739: Configure Registration Form Email
    • Regression Tests
    • Case 1:
      • Go to Operations Portal ? Settings ? {{contactFormEmailTo}}
      • Add email
  20. KOD-16751: Adding Importer Capability for Discounts Screen
    • Tests
    • Case 1:
      • Swagger ? Endpoint:
      • {{/api/system/discount/export}}
      • Use this searchParams ?
      • {noformat}{
      • "facetFields": [],
      • "fieldsToReturn": ["code", "name", "description"],
      • "filterFields": [],
      • "page": 0,
      • "queryFields": [],
      • "size": 1000,
      • "sorts": []
      • }{noformat}
    • Case 2:
      • *Update action*
      • Swagger ? Endpoint:
      • {{/api/system/mapped/any/file/{mappingCode}/{importType}/{fileType}}}
      • Use {{updateExistRecord.csv}} {{updateNonExistRecord.csv}} files or create your own to perform update action
    • Case 3:
      • *Create & Update action*
      • Swagger ? Endpoint:
      • {{/api/system/mapped/any/file/{mappingCode}/{importType}/{fileType}}}
      • Use {{createAndUpdateExistRecord.csv}} {{createAndUpdateNonExistRecord.csv}} {{createAndUpdateNonExistRecordWithException.csv}} files or create your own to perform update action
    • Case 4:
      • *Create action*
      • Swagger ? Endpoint:
      • {{/api/system/mapped/any/file/{mappingCode}/{importType}/{fileType}}}
      • Use {{createExistRecord.csv}} {{createNonExistRecord.csv}} {{createNonExistRecordWithException.csv}} files or create your own to perform update action
  21. KOD-16763: Live Chat Setup for Site and Mobile App
    • Tests
    • Case 1:
      • Go to Operations Portal
      • Go to Setting page
      • Check if setting websiteHeadCode exists
      • Go to front side of site
      • Inspect the page
      • Go to source tab
      • Please check if this script is available
  22. KOD-16792: PurchaseOrder InternalFile - UX
    • Tests
    • Case 1:
      • Go to Purchase Orders > Details page, then select Internal Files tab.
      • Add a column 'deleted' and remove the filter.
      • Try to sort or filter the table if there is any data.
    • Case 2:
      • Try to attach a new customer file, view it, download and delete.
  23. KOD-16810: Enable Guest Pricing
  24. KOD-16853: Review DQTech Data to Ensure It's Flowing Correctly
  25. KOD-16854: Remove White Spaces From Home Page Tiles When No Title is Provided
    • Tests
    • Case 1:
      • White gap below each tile in the Home Page disappears when the title and the additional text is not provided
  26. KOD-16857: Create and Send API Documentation For Integration
  27. KOD-16860: Links Not Picking Up Site Color on CMS Page
    • Tests
    • Case 1:
      • Check CMS pages for links; they should be in primary color of the website.
  28. KOD-16906: Purchase Order - Details Screen Fixes
    • Regression Tests
    • Case 1:
      • On Purchase Orders Details screen, check that data in Remit to & Tracking section is displayed correctly.
    • Case 2:
      • On Purchase Orders Details screen, check that data in Summary section is displayed correctly.
    • Tests
    • Case 3:
      • On Purchase Orders Details screen, check Column 2 in Remit to & Tracking Section.
      • There should be 3 rows:
        • {{Purchase Order #}} with the actual purchase order
        • {{Customer Tracking #}}
        • {{Reference}}
    • Case 4:
      • On Purchase Orders Details screen, check Summary section.
      • Check that {{Vendor Code}} and {{Vendor Name}} are links that lead to the corresponding *vendor* details page.
      • *Web # row* has purchase order number.
      • *ERP # row* if it has ERP # data should display ERP #. Otherwise, if purchase order doesn’t have ERP #, this line won’t be shown below the Web #.
    • Case 5:
      • On Settings screen search for {{erpInUse}} setting. Set it to 1.
      • On Purchase Orders Details screen, check Summary section.
      • Check that {{Status}} selection is disabled. If you has already defined status, it should be shown as selected option.
    • Case 6:
      • On Settings screen search for {{erpInUse}} setting. Set it to 0.
      • On Purchase Orders Details screen, check Summary section.
      • Check that {{Status}} selection is *not* disabled. You should be able to select, choose and set any status from the list.
  29. KOD-16910: Update API Request Upload Internal File for Employee
    • Tests
    • Case 1:
      • Go to User Scripts and run script
      • Modify script regarding to instructions
      • Run script and go to Employees page, check employee you uploaded image to, go to Internal files and check if file is uploaded
  30. KOD-16922: Fixing the Timestamp for Customer Document Files
  31. KOD-16924: Footer not Full-Width
  32. KOD-16926: Allow Convenience Fee for Card Payments on Account to be Managed by Company
    • Regression Tests
    • Case 1:
      • Make sure that global settings {{enableShortPayments}}, {{openInvoicePaymentsEnabled}}, {{paymentOnAccount}} are turned ON, and either global/company-level {{percentageCreditCardFee}} and {{dollarCreditCardFee}} are not set.
      • Verify the payment at all was successful.
    • Case 2:
      • Set {{percentageCreditCardFee}} some value.
    • Case 3:
      • Set {{dollarCreditCardFee}} some value, {{percentageCreditCardFee}} to null.
    • Tests
    • Case 1:
      • Leave {{dollarCreditCardFee}} setting at any value. Add the same setting at company level, with different value.
      • Make sure that fee is equal to value from company-level setting.
    • Case 2:
      • Set some value for global setting {{percentageCreditCardFee}}. Set different value at company level.
      • Make sure the fee is calculated using company level value.
    • Case 3:
      • Test endpoints to verify that these settings can be updated and read:
        • /api/system/company/readDetails/{companyID}
        • /api/system/company/{companyID}
  33. KOD-16938: Add Interceptor to Specify Shipping Engine
    • Regression tests
    • Case 1:
      • Name was not changed in interceptor, value is taken from global setting.
    • Case 2:
      • Guest users who have a delivery address in a freight free zone should get free shipping.
      • Go to the cart with products.
      • Enter a delivery postal code that is in a freight free zone.
      • Go to the third tab, ensure that the shipping says Free.
      • Also do the same with a freight charged shipping zone and “Charges may apply” should show.
    • Case 3:
      • Log in customer
      • Go to the Operations Portal and ensure the company your customer is under has a blank trendCompiledSettings.frttermscd setting.
      • In cart, choose a delivery address that does not have a trendCompiledSettings.frttermscd setting and also has a freight free postal code.
      • Go to the third tab, ensure that the shipping says Free.
    • Case 4:
      • Log in as customer whose delivery address is not in a freight free zone, should get not free shipping.
      • Go to the Operations Portal and ensure the company your customer is under has a blank trendCompiledSettings.frttermscd setting.
      • Choose a delivery address that does not have a trendCompiledSettings.frttermscd setting and also does not have a freight free postal code.
      • Go to the third tab, ensure that the shipping says "Charges may apply".
    • Case 5:
      • Log in as customer whose company has trendCompiledSettings.frttermscd setting should always get free shipping even if they choose a delivery address that is not in a freight free zone as long as the items in their cart have a sku status of O, S, or X.
      • Go to the Operations Portal and ensure the company your customer is under has a trendCompiledSettings.frttermscd setting populated.
      • As a logged in customer user:
      • Navigate to the commerce site.
      • Add a product to your cart that has a sku status of O, S, or X.
      • Go to the cart and choose a delivery address that does not have a trendCompiledSettings.frttermscd setting and also does not have a freight free postal code.
      • Go to the third tab, ensure that the shipping says Free.
    • Case 6:
      • Log in as customer whose company does not have trendCompiledSettings.frttermscd setting but whose delivery address has a trendCompiledSettings.frttermscd should always get free shipping even if they choose a delivery address that is not in a freight free zone as long as the items in their cart have a sku status of O, S, or X.
      • Go to the Operations Portal and ensure the company your customer is under has a blank trendCompiledSettings.frttermscd setting.
      • As a logged in customer user:
      • Navigate to the commerce site.
      • Add a product to your cart that has a sku status of O, S, or X.
      • Go to the cart, and choose a delivery address that has a trendCompiledSettings.frttermscd setting and also does not have a freight free postal code.
      • Go to the third tab, ensure that the shipping says Free.
    • Case 7:
      • Log in as customer whose company does not have trendCompiledSettings.frttermscd setting but whose delivery address has a trendCompiledSettings.frttermscd should not get free shipping if any items in the cart are not O, S, or X.
      • Go to the Operations Portal and ensure the company your customer is under has a blank trendCompiledSettings.frttermscd setting.
      • As a logged in customer user:
      • Navigate to the commerce site.
      • Add a product to your cart that does not have a sku status of O, S, or X.
      • Go to the cart and choose a delivery address that has a trendCompiledSettings.frttermscd setting and also does not have a freight free postal code.
      • Go to the third tab, ensure that the shipping says "Charges may apply".
    • Tests
    • Case 1:
      • Name was not changed in interceptor, value is taken from global setting.
    • Case 2:
      • Change name in interceptor to engine, that has no tracking implemented.
    • Case 3:
      • Global setting has value of not implemented engine, changing it via interceptor.
  34. KOD-16943: CMS Draft - Add Missing /Draft Endpoints
    • Regression Tests
    • Case 1:
      • Swagger ? Endpoint:
      • {{/api/system/contentPage/page-editor}}
      • Add a new role {{contentDraftEdit}}; the behavior has to be the same as before.
      • *Important!* It has to work with the following roles:
        • {{administrator}} {{superuser}} {{contentEdit}} {{contentDraftEdit}}
    • Case 2:
      • Swagger ? Endpoint:
      • {{/api/system/contentPage/{contentPageID}/file/list}}
      • The behavior has to be the same as before.
      • We expect if {{contentPageID}} exists and {{content page}} is true then we have to find record in other cases to throw an exception.
    • Case 3:
      • Swagger ? Endpoint:
      • {{/api/system/contentPage/{contentPageCode}/file/list/byCode}}
      • The behavior has to be the same as before.
      • We expect if {{contentPageCode}} exists and {{content page}} is true then we have to find record in other cases to throw an exception.
    • Case 4:
      • Endpoint:
      • {{/api/system/contentPage/{contentPageID}/file/list}}
      • Script:
      • {noformat}var searchObject = {
      • filterFields: [],
      • sorts: [],
      • page: 0,
      • size: 10
      • };
      • var result = scriptServiceUtils.runAPIMethod('POST', '/api/system/contentPage/{contentPageID}/file/list', {contentPageID: 245}, null, searchObject);
      • print("result: " + app.toJson(result));{noformat}
      • The behaviour has to be the same as before.
      • We expect if {{contentPageID}} is exist and {{content page}} is true then we have to find record in other cases throw an exception.
    • Tests
    • Case 1:
      • Swagger ? Endpoint:
      • {{/api/system/contentPage/draft/readDetails/{contentPageID}}}
      • We expect that the content page will be retrieved or throw an exception in case no record found by {{contentPageID}}
      • *Important!* It has to work with the following roles:
      • {{administrator}} {{superuser}} {{contentView}} {{contentEdit}} {{contentDraftView}} {{contentDraftEdit}}
    • Case 2:
      • Swagger ? Endpoint:
      • {{/api/system/contentPage/draft/{contentPageID}/file/list}}
      • We expect that the content page will be retrieved or throw an exception in case no record found by {{contentPageID}}
      • *Important!* It has to work with the following roles:
      • {{administrator}} {{superuser}} {{contentView}} {{contentEdit}} {{contentDraftView}} {{contentDraftEdit}}
    • Case 3:
      • Swagger ? Endpoint:
      • {{/api/system/contentPage/draft/{contentPageID}/file/{customerFileID}}}
      • We expect that the content page will be retrieved or throw an exception in case no record found by {{contentPageID}} or {{customerFileID}}
      • *Important!* It has to work with the following roles:
      • {{administrator}} {{superuser}} {{contentEdit}} {{contentDraftEdit}}
    • Case 4:
      • Swagger ? Endpoint:
      • {{/api/system/contentPage/draft/search/{contentPageID}}}
      • We expect that the content page will be retrieved or throw an exception in case no record found by {{contentPageID}}
      • *Important!* It has to work with the following roles:
      • {{administrator}} {{superuser}} {{contentEdit}} {{contentDraftEdit}}
    • Case 5:
      • Swagger ? Endpoint:
      • *GET* {{/api/system/contentPage/draft/{contentPageID}/setting/{code}}}
      • We expect that the content page will be retrieved or throw an exception in case no record found by {{contentPageID}} or {{code}}
      • *Important!* It has to work with the following roles:
      • {{administrator}} {{superuser}} {{contentSettingView}} {{contentSettingEdit}} {{contentDraftSettingView}} {{contentDraftSettingEdit}}
    • Case 6:
      • Swagger ? Endpoint:
      • *PATCH* {{/api/system/contentPage/draft/{contentPageID}/setting/{code}}}
      • We expect that the content page will be retrieved or throw an exception in case no record found by {{contentPageID}} or {{code}}
      • *Important!* It has to work with the following roles:
      • {{administrator}} {{superuser}} {{contentSettingEdit}} {{contentDraftSettingEdit}}
    • Case 7:
      • Swagger ? Endpoint:
      • *DELETE* {{/api/system/contentPage/draft/{contentPageID}/setting/{code}}}
      • We expect that the content page will be retrieved or throw an exception in case no record found by {{contentPageID}} or {{code}}
      • *Important!* It has to work with the following roles:
      • {{administrator}} {{superuser}} {{contentSettingEdit}} {{contentDraftSettingEdit}}
    • Case 8:
      • Swagger ? Endpoint:
      • {{/api/system/contentPage/draft/{contentPageID}/setting}}}
      • We expect that the content page will be retrieved or throw an exception in case no record found by {{contentPageID}}
      • *Important!* It has to work with the following roles:
      • {{administrator}} {{superuser}} {{contentSettingEdit}} {{contentDraftSettingEdit}}
    • Case 9:
      • Swagger ? Endpoint:
      • {{/api/system/contentPage/draft/{contentPageID}/saveFile}}
      • We expect that the content page will be retrieved or throw an exception in case no record found by {{contentPageID}}
      • *Important!* It has to work with the following roles:
      • {{administrator}} {{superuser}} {{contentEdit}} {{contentDraftEdit}}
    • Case 10:
      • Swagger ? Endpoint:
      • *GET*
      • {{/api/system/contentPage/draft/{contentPageID}/settings}}
      • We expect that the content page will be retrieved or throw an exception in case no record found by {{contentPageID}}
      • *Important!* It has to work with the following roles:
      • {{administrator}} {{superuser}} {{contentSettingView}} {{contentSettingEdit}} {{contentDraftSettingView}} {{contentDraftSettingEdit}}
    • Case 11:
      • Swagger ? Endpoint:
      • *POST*
      • {{/api/system/contentPage/draft/{contentPageID}/settings}}
      • We expect that the content page will be retrieved or throw an exception in case no record found by {{contentPageID}}
      • *Important!* It has to work with the following roles:
      • {{administrator}} {{superuser}} {{contentSettingView}} {{contentSettingEdit}} {{contentDraftSettingView}} {{contentDraftSettingEdit}}
  35. KOD-16944: OrderShipment List API for Customer Portal
  36. KOD-16952: Purchase Order Customer Files fix
    • Tests
    • Case 1:
      • Go to Purchase Orders ? Customer Files tab, check if the padding is alright
      • Also try to attach a new customer file, it should be shown without reloading a page
  37. KOD-16958: Create "terms-and-conditions" Content Page
    • Regression Tests
    • Case 1:
      • Pre-conditions: have a new user or delete _agreeToTermsTimestamp_ from Operations Portal ? Customer ? Customs Fields.
      • Checkbox appears for new users at the checkout page.
    • Case 2:
      • When resetting password, user should see “Agree to Terms and Conditions” in the form.
    • Tests|
    • Case 1:
      • Check terms and conditions page exists and is displayed correctly.
    • Case 2:
      • Scroll down to the site’s footer, click TERMS ? it should link to terms and conditions content page.
  38. KOD-16959: Remove Shipto Option
  39. KOD-16961: Add CMS Templates by Multi-Site
    • Regression Tests
    • Case 1:
      • Go to Operations Portal? CMS ? click on Menus.
      • Add and edit the “Menus” and make sure it works properly.
      • Also try editing the slider and make sure that works correctly.
    • Case 2:
      • Also on the French version, check multilingual and make sure it is working.
    • Tests
    • Case 1:
      • Try to add new menus for different host ? check if menus are displayed in the customizer, try to reload the page, and check if menus are display.
    • Case 2:
      • Check if menus are displayed on website.
  40. KOD-16962: Update Lockbox Numbering
  41. KOD-16963: Scheduled Payment Email Template - Add Convenience Fee, Account Type, Card/Bank Type and Number in Scope
    • Regression Tests
    • Case 1:
      • Test if scheduled payment email still being sent when customer scheduled payment.
    • Tests
    • Case 1:
      • Test if convenience fee, account type, card/bank type and number in email scope.
  42. KOD-16966: Mobile App - Disable Guest Checkout
    • Regression Tests
    • Case 1:
      • Login to the app as a customer
      • Go to “Channel letter“ category
      • Press “Add to Cart” button on “Kodaris Test Product”
      • Product should be added to the cart
    • Case 2:
      • Login to the app as a customer
      • Go to a category
      • Press on a product
      • Press “ADD TO CART” on the product info page
      • Product should be added to the cart
    • Case 3:
      • Login to the app as a customer
      • Go to a category
      • Press on a product
      • Press on the amount field
      • Enter number
      • Press on the checkmark on your keyboard (*DON’T* press “ADD TO CART“ button)
      • Products should be added to the cart
    • Case 4:
      • Login to the app as a customer
      • Go to the “Cart”
      • Press “+ CUSTOM ITEM”
      • Enter test values and press “SAVE” button
      • Product should be added to cart
    • Tests
    • Case 1:
      • Login to app as a guest (press “SKIP” button on login screen)
      • Go to a category
      • Press “Add to Cart” button on a product
      • User should be redirected to login screen
      • Item should not be added to the cart
    • Case 2:
      • Login to app as a guest (press “SKIP” button on login screen)
      • Go to category
      • Press on a product
      • Press “ADD TO CART” on the product info page
      • User should be redirected to login screen
      • Item should not be added to the cart
    • Case 3:
      • Login to app as a guest (press “SKIP” button on login screen)
      • Go to “Channel letter“ category
      • Press on a product
      • Press on the amount field
      • Enter number
      • Press on the checkmark on your keyboard (*DON’T* press “ADD TO CART“ button)
      • User should be redirected to login screen
      • Item should not be added to the cart
    • Case 4:
      • Login to app as a guest (press “SKIP” button on login screen)
      • Go to the “Cart”
      • Press “+ CUSTOM ITEM”
      • User should be redirected to login screen
      • Item should not be added to the cart
  43. KOD-16968: Mobile App - Remove Custom Item
    • Regression Tests
      • Login to app
      • Go to cart
      • Button “+ Custom item“ should be shown
    • Tests
    • Case 1:
      • Login to mobile app
      • Go to cart
      • Button “+ Custom item“ should *NOT* be shown
  44. KOD-16969: Mobile App - Add Borders to Products' Images
  45. KOD-17000: Dont Pre parse Payloads for Batch Import
  46. KOD-17015: Add Setting customerOrderTrackingEnabled
    • Regression Tests
    • Case 1:
      • Login as customer and go to the Customer Portal
      • Make sure Customer Portal loads
    • Tests
    • Case 1:
      • Go to Operations Portal ? Settings and check customerOrderTrackingEnabled setting
      • Value should be 0 by default
      • Then using Swagger use {{/api/account/customer/configuration}} endpoint and find {{customerOrderTrackingEnabled}} field - value should be {{false}}
    • Case 2:
      • Repeat steps in Case 2 but change customerOrderTrackingEnabled global setting value to 1
      • Then use {{/api/account/customer/configuration}} endpoint, {{customerOrderTrackingEnabled}} field - value should be {{true}}