Secure Confidential File Upload in Customer Portal
The Customer Portal now supports confidential file uploads, providing a secure way to share sensitive documents directly through your account.
The new confidential file upload feature integrates seamlessly into the existing document management system. Users can access this functionality through the "Documents" section in their account, where a new "Attach Confidential File" option appears alongside the standard file attachment feature. Once uploaded, these files are clearly marked as "Confidential" and remain accessible for preview and download through the portal.
This enhancement streamlines the process of sharing sensitive information while maintaining proper security protocols. Confidential files uploaded through the Customer Portal are automatically visible to the operations team with appropriate designation, ensuring transparency and efficient communication. The feature maintains the same user-friendly interface as standard file uploads while adding the necessary security classification.
The confidential file upload feature is now available in the Customer Portal. For a complete walkthrough of the upload process, refer to the demonstration video that covers the step-by-step procedure from login to file verification in the Operations Portal.
The Operations Portal now allows users to add, modify, and delete additional charges directly within the Vendor Invoice screen. Users can access the "Addl Charges" section on the right side of the invoice details page to manage supplementary costs such as freight, handling fees, or other vendor-specific charges.
The feature provides intuitive charge management through a streamlined interface. Users can select from predefined additional charges via a dropdown menu, with amounts automatically populated based on the charge type. Once added, charges can be edited by clicking directly on them to modify either the charge type or amount. The system automatically updates invoice totals in real-time as changes are made.
This feature is now available in the Operations Portal Vendor Invoice screen. View the complete walkthrough in the accompanying instructional video.
https://youtu.be/si2tMTnFJ3Y
Tickets
KOD-25041: AI PIM project
KOD-27573: Sync all records
KOD-27698: Customer Account Creation for Guest Users
KOD-27780: Manual Lockbox File Issue
KOD-27929: Add bulk import users based on username
When we have a setting: erpLogicEngine with another value, ex: 'Trend', not ‘InforCSD’ → it returns cross reference records only with type = web_customer which is related to the company.
When setting: erpLogicEngine = InforCSD but not pass param: companyAddressCode → it returns cross reference records with type = web_customer and type = C which related to company.
When the setting: erpLogicEngine = InforCSD but pass param: companyAddressCode → it returns cross reference records with three types: ‘ web_customer’, ‘C' which related to company and type = H which related to companyAddressCode
You can add cross reference records with field: companyAddressCode by POST endpoint: api/system/productCrossReference because the UI side doesn't support new field: companyAddressCode.
KOD-28714: Add ability to change additional charge discount
Regression Tests
Case 1
Navigate to the Vendor Invoices page.
Choose any item and open the details page.
On the sidebar, go to the Add’l Charges tab.
Add new charge using + Add Charge form.
Confirm a new item was added and displayed values that match the data.
Confirm that the Add'l Charges and Total in the totals section were updated according to our changes.
Case 3
Verify you cannot add the same charge again if it already exists.
Tests
Case 1
Go to the Vendor Invoices page.
Choose any item and open the details page.
Find Add’l Charges in the sidebar.
Click on any item in the Add’l Charges list (either on the name or on the amount).
Confirm that a dialog window appears with the amount and charge fields pre-selected using the values of the selected charge and that the dialog title displays “Edit Additional Charge:
Clear the charge name field.
Verify that the dropdown menu appears with the same values as in the Additional Charge menu.
Type some characters to confirm that the autocomplete works correctly.
Choose a discount that is not yet in our list.
Confirm that all fields in the dialog were updated with the selected item’s data.
Click Change.
During saving:
The dialog window should stay open.
The Change button should change to Changing…
After the process finishes:
The charge should be updated with the selected values.
The dialog window must close automatically.
Add’l Charges and Totals sections must be successfully updated according to the changes.
Case 2
Open the dialog.
Choose the same item that is already selected.
Click Change.
Confirm:
The dialog window was closed automatically.
Case 3
If your Add’l Charges list has two items, proceed.
If not , add one more charge.
Click one of them to open its dialog.
Select an item that already exists in the list (but is not the one you clicked ).
Click Change.
Confirm:
If the selected discount already exists, it must not be added again
Confirm:
The dialog closed.
No data was changed.
Case 5
Open the dialog for any discount.
Change the amount .
Change
Confirm:
The amount for the current item was updated
Totals were updated.
Case 6
Open the dialog.
Choose another discount from the menu that already exists in the list, but is not the clicked one.
Change the amount .
Change
Confirm:
The amount was successfully updated for the newly selected item
The originally clicked item remained unchanged.
Case 7
Open the dialog window.
Click Change without selecting any charge.
Confirm:
The dialog closed.
No data was changed.
Case 8
Open the dialog window.
Enter invalid data into the fields or clear any of them.
Confirm that invalid data is not applied to any field.
The error message text may differ between the video and the site due to recent changes.
KOD-28763: Add dropdownOption to Custom Ticket Indexed Fields
Regression Tests
Case 1
Check if the company Custom Fields is rendered properly with and without the dropdown.
You can use a test dropdown such as
{
"settingCode": "testDropdown",
"settingName": "Test Dropdown",
"solrField": "custom_testDropdown",
"isIndexed":false,
"fieldType": "dropdown",
"options": ["Option A", "Option B", "Option C"]
}
By going into Settings / integrationIndexedCompanyFields and adding it to the array of objects, be mindful of the commas.
Test the Custom Fields with and without the dropdown setting added to ensure it is rendered properly. With and then without the dropdown try editing other fields to make sure they all work properly.
Tests
Case 1
On Settings / integrationIndexedCompanyFields add a dropdown configuration, it could be the one specified on the regression test 1.
{
"settingCode": "testDropdown",
"settingName": "Test Dropdown",
"solrField": "custom_testDropdown",
"isIndexed":false,
"fieldType": "dropdown",
"options": ["Option A", "Option B", "Option C"]
}
Save it and check on a Company Custom Fields tab. The dropdown should be rendered.
Try renaming it or rendering it (moving it within the array) and it should reflect the updated name and position.
Case 2
Test if the selected option is saved. With the dropdown fields added on the settings either select or change the option and refresh the page.
Also change the option and navigate between company Details and Custom Fields to ensure it is persisted on refresh and navigation.
KOD-29032: REST API Documentation for Pulling / Pushing Documents to IDM
KOD-29093: View Customer Statement from dashboard
KOD-29148: Excel to CSV formula issues for parsers
KOD-29166: Automated Invoice Delivery Not Sending to Automated Invoice Delivery Section emails
Regression Tests
Case 1
Confirm that when we call “Send Invoice by ID”, we see a success message indicating that the script completed successfully.
Tests
Case 1
Сonfirm that when we call “Send Invoice by ID”, the email will be sent as follows:
It will be sent to the Company Address email1 if it is present and the Invoice Delivery field is not empty.
It will be sent to the Invoice Delivery Emails field on the company screen if it is not empty and the Company Address email1 is empty.
If all other fields are empty, it will be sent to the Contact Info email1 on the company.
KOD-29212: Shop pricing calls to individual sub sites
KOD-29217: CNH - Order Flow
Tests
Case 1
Ensure that the user script (generateCNHCheckoutCartFile) is working correctly, namely that a CSV file is generated as shown in the example.
Verify that the file is created on the orders screen, in the customer files tab.
Ensure that the file is successfully sent to the email address.
KOD-29369: Check on Assigning an Attribute to Multiple Filter Categories
Tests
Case 1
Import attributes with duplicate codes using Create Update.
Steps (via Operations portal):
Go to Products > Filter Categories.
Create FacetGroups
Go to PIM > Attributes > Import > Create Update.
Upload attached and run import.
Go to Events, wait for event processing and verify no errors occurred.
Go to PIM > Attributes and verify that all ten attributes were imported successfully.
Case 2
Ensure Case 1 was completed.
Go to PIM > Attributes > Import > Create Update.
Upload the same test_attributes_with_duplicates.csv and run import again.
Go to Events, wait for event processing and verify no errors occurred.
Go to PIM > Attributes and verify:
No duplicate records created.
All existing records updated (not created new).
Case 3:
Delete some 3 attributes created before.
Go to PIM > Attributes > Import > Create Only.
Upload attached test_attributes_with_duplicates.csv and run import.
Go to Events, wait for event processing and verify that 3 records were created and 7 records were skipped.
Go to PIM > Attributes and verify that those three attributes were created successfully.
Case 4
Again delete some 3 attributes created before.
Go to PIM > Attributes > Import > Update Only.
Upload attached test_attributes_with_duplicates.csv and run import.
Go to Events, wait for event processing and verify 7 records were updated and 3 were skipped.
Go to PIM > Attributes and verify that those three attributes were not created.
KOD-29454: Option to merge guest cart with logged in cart when logging in
Regression Tests
Case 1
Create an order.
Set the status as “Waiting For Approval”.
Go to the customers portal.
Click in the Order.
You should be able to see the “Edit button”.
Hit the edit button.
KOD-29459: Statement showing incorrect amount due in email body
KOD-29462: Order Changed
KOD-29499: Allow customers to upload confidential files to their customer account docs
Tests
Case 1
New endpoint to upload Confidential CustomerFile (customer side):
POST api/account/customer/confidential/documents/upload
Navigate to the operations portal > your customer > customer files screen, check that you can now view and download uploaded confidential customer file(required employee role is - customerConfidentialCustomerFileView ).
Case 2
New endpoint to upload Confidential CustomerFile (employee side) - required employee role customerConfidentialCustomerFileEdit :
POST api/system/customer/{customerID}/confidential/customerFile/upload.
Navigate to the operations portal > your customer (customerID in endpoint path above) > customer files screen, check that you can now view and download uploaded confidential customer files (required employee role is - customerConfidentialCustomerFileView ).
KOD-29532: Enable Product Configurator
Regression Tests
Case 1
Open product list.
Find a regular (non-configurable) product.
Confirm the “Add to Cart / Add to quote” button is displayed.
If the product contains a price: the price is displayed normally.
If the user is not logged in, the “Login for Pricing” string is displayed instead of the price.
Case 2
Confirming that our list looks good in list view , grid view , and catalog view .
Case 3
Navigate to the product page and confirm the page layout displays correctly.
Case 4
Click Add to Cart.
Go to cart
Confirm product is added.
Confirm description is correct and properly displayed.
Tests
Case 1
Open product list.
Find a product with a configurator.
Confirm “View Details” button is displayed instead of “Add to Cart/Add to quote”.
Click View Details.
Confirm you are redirected to the product details page.
Confirm 'Login for Pricing' is not displayed for configurable products.
If product contains price: confirm price is displayed.
Case 2
Confirming that our list looks good in list view , grid view , and catalog view.
Confirm selected options match what was chosen in configurator.
Case 4
Select a valid combination.
Confirm invalid options are light gray.
Select an invalid combination.
Confirm invalid selection is auto-adjusted to a valid one.
Case 5
Open the dropdown.
Click outside.
Confirm the dropdown closes.
Open the dropdown again.
Navigate using Arrow Up/Arrow Down.
Press Enter to select the value.
Confirm value is changed (selected).
Open dropdown again.
Navigate with arrows but do not select any option > click Add to Cart.
Confirm value stays unchanged.
Case 6
Open product with configurator.
Confirm that at least one selection field already has its first default value.
If for any reason the product does not have default selected variants (can happen if product variants were added incorrectly to the configurator) > click Add to Cart and confirm product is not added to cart.
Case 7
Navigate to the product page with the configurator.
Select a specific configuration (e.g., color "Red", size Small)
Add the product to cart.
Navigate to the cart page.
Click on the added product in the cart.
Confirm the configurator automatically has the same option selected that was added to cart (color "Red", Size Small).
KOD-29537: Implementation - Report issues and fixes
KOD-29565: Customer is not able to choose Alternate store from MyStore selection
KOD-29566: Update cart warehouse titles to pull from full warehouse list if multiTenantModeDisplayAllWarehouses is on
Tests
Case 1
Search for a product.
Add the product to the cart.
Go to the cart page.
Verify the "Pickup" section header shows the full warehouse name
Verify all active warehouses are displayed in the warehouse selection, not just host-specific ones.
KOD-29567: Show customer's selected warehouse for pickup option on delivery items
Production Status
Case 1
Navigate to the product list page.
Search for any product.
Verify the Pickup option shows "Ship to [customer's selected warehouse city] "
Click on the product to go to product details page
Verify the Pickup option shows "Ship to [customer's selected warehouse city] "
Tests
Case 1
Search for any regular product (non drop-ship).
Select the Delivery option.
Add the product to the cart.
Navigate to the cart page.
Verify the Pickup option displays the customer's selected warehouse city.
Switch the item from Delivery to Pickup.
Verify the item is now set to the customer's selected warehouse.
Case 2
Search for a drop ship product.
Select the Delivery option.
Add the product to the cart.
Navigate to the cart page.
Verify the Pickup option displays the customer's selected warehouse city.
Switch the item from Delivery to Pickup.
Verify the item is now set to the customer's selected warehouse.
Case 3
Search for any product.
Select the Pickup option.
Add the product to the cart.
Navigate to the cart page.
Click on the warehouse city link in the pickup option.
Verify the warehouse selection panel opens.
Select a different warehouse from the list.
Verify the item's warehouse is updated to the newly selected warehouse.
Verify the pickup option displays the new warehouse city.
Case 4
Change the customer's selected warehouse (via header dropdown).
Search for any product.
Click on the warehouse city link to open the panel.
Select a different warehouse (not the customer's selected warehouse).
Add the product to the cart with a pickup option.
Navigate to the cart page.
Verify the item's warehouse is the one selected in step 4 (not the customer's selected warehouse).
Find an existing order or create a new one for testing.
Configure order shipping settings.
Set Shipping Method to (“Truck Run”).
Ensure that the company associated with the order has
defaultShipViaCode configured
Generate order message.
Select the wrappedOrderEmail template.
Verify that the Ship Via code is displayed.
Ensure the code is taken from defaultShipViaCode.
Verify behavior for quotes.
Navigate to Quotes.
Repeat the same steps for a quote.
Verify Commerce PDF output.
Open the Commerce PDF for the created orders and quotes.
Verify that the Ship Via code is displayed correctly.
Verify Order confirmation on the commerce site.
KOD-29606: Kodaris - Port Form Script
KOD-29624: Add Statement Button to header and footer
Regression Tests
Case 1
Navigate to the platform and confirm the header looks correct in the desktop view.
Open the mobile menu and confirm it is displayed correctly and functions without any issues.
Tests
Case 1
While not logged in.
Confirm no changes are present in the header in the desktop view.
Open the mobile menu > My Account and confirm nothing has changed there as well.
Case 2
Log in to the platform.
In the header (desktop view) :
Confirm a new link “View Statement” is displayed between “Order History Status” and “Invoices”.
Case 3
Switch to mobile view.
Open Menu > My Account.
Confirm the “View Statement” link is present there as well.
KOD-29633: Template Update
KOD-29637: Emails created from ticket do not appear in ticket emails list
Regression Tests
Case 1
Check whether created Emails from tickets appear in the ticket emails list.
Before sending, please check whether setting: isEmailSendingFromJob is turn on.
Then go to some ticket page and select the button: “ compose Email “.
fill the email and send →
the email should appear on the ticket email list page: operations/tickets/7310/emails after sending.
KOD-29649: Move Tender on Orders Phase 1
Tests
Case 1
Move Payment to Order Existing in Kodaris.
Prerequisites:
Open up logs.
Have an existing payment record that has been synced from CSD.
Have an existing order in Kodaris with a known extra5 value (CSD order number).
Note the payment's current externalOrderNumber and any linked OrderPayments.
Steps:
Open Swagger at /api/system/inforCSD/payment/moveToOrder.
Login as a user with "administrator" or "inforCSDEdit" role.
Enter the paymentID of the existing payment.
Enter the erpOrderNumber matching the extra5 of the target order (e.g., "1234-0").
Execute the endpoint.
Expected Results:
Response status: 200 OK.
Payment is being synced to ERP by logs.
Response body contains PaymentView with updated externalOrderNumber.
If payment had jsonPaymentDetails populated, verify externalOrderNumber is updated in all entries.
Verify on Account Receivables screen that payment got updated to a new external order number.
Open this payment on Account Receivables, check it Internal Comment, that this payment was moved.
Verify on the Order Payments screen that the order got linked to this payment.
Case 2
Move Payment to Order NOT Existing in Kodaris (CSD-only order).
Prerequisites:
Have an existing payment record with linked OrderPayments.
Have a CSD order number that does NOT exist in Kodaris (no order has this extra5 value).
Open Swagger at /api/system/inforCSD/payment/moveToOrder.
Login as a user with a "superuser" role.
Enter the paymentID of the existing payment.
Enter an erpOrderNumber that does NOT exist in Kodaris (e.g., "9999-9")
Execute the endpoint.
Expected Results:
Response status: 200 OK.
Response body contains PaymentViewDto with externalOrderNumber = "9999-9".
If payment had jsonPaymentDetails populated, verify externalOrderNumber is updated in all entries.
Verify on Account Receivables screen that payment got updated to a new external order number.
Open this payment on Account Receivables, check it Internal Comment, that this payment was moved.
Case 3
Open Swagger at /api/system/inforCSD/payment/moveToOrder
Login with appropriate role.
Enter a paymentID that does not exist (e.g., 999999999).
Enter any valid erpOrderNumber format.
Execute the endpoint.
Expected Results:
Response status: 404 Not Found.
Error message indicates Payment not found.
Case 4
Error - Moving Payment to Same Order
Prerequisites:
Have a payment with externalOrderNumber = "1234-0".
Steps:
Open Swagger at /api/system/inforCSD/payment/moveToOrder
Login with appropriate role.
Enter the paymentID of the payment.
Enter erpOrderNumber = "1234-0" (same as current).
Execute the endpoint.
Expected Results:
Response status: 400 Bad Request.
Error message: "Payment is already associated with order 1234-00".
KOD-29655: Implementation - Countries / States
KOD-29658: Required Field on Contact Us Page
Regression Tests
Case 1
Make sure the form is displayed and the data is submitted when the form is submitted.
Tests
Case 1
Make sure the form is not submitted if no checkboxes are selected.
KOD-29659: Ticket 260 - Privacy Policy Edits
KOD-29666: Implementation - Branding
KOD-29667: parse issue
KOD-29669: Shop Pricing Updates
KOD-29673: Order / Invoice Documents - Changes
Regression Tests
Case 1
Check that the order templates still generate without issues.
Tests
Case 1
Check that the dates in the templates are now in the format: mm/dd/yy instead of yyyy-mm-dd.
Case 2
The $ should be removed from all prices.
Case 3
Quantities and discounts should be displayed with two decimal places.
Case 4
In the template headers, the website and email should now link out appropriately.
Case 5
The item description box in the items section should now be bigger, approx. 40% of the row length.
Case 6
The general spacing, font size, and padding of the templates should more match the customer example invoices now.
The font-size was reduced to 7pt, the font was already Arial, and we reduced the cell padding and general spacing throughout the templates.
Case 7
The order notes should now be displaying line breaks and how they are on the example invoices.
KOD-29679: Add Statements Link to Header
Regression Tests
Case 1
Make sure the header still loads on the website as well as the hamburger menu also still loads fine when the page is small enough.
Tests
Case 1
Notice on the header there is now a button for Statements → click that button → if you are logged in, it will take you to the documents page in the customer portal → if you are not logged in, it will route you to log in and then redirect you back to the documents page in the customer portal.
Case 2
Make sure you are logged in → when the page is small enough to have the hamburger menu, click to open in → notice the Statements option under My Account → click the link → it should redirect you to the documents page in the customer portal.
KOD-29682: CSD Order Number No Longer Displays on Payment Confirmations
Regression Tests
Case 1
Make payments on the deposits screen as a customer. You will receive message about successful payment. In the operations portal on email screen you can see new email created with title “Payment made by …” and verify that this email still looks good.
Case 2
Make payments on an open invoices screen as a customer. You will receive a message about successful payment. In the operations portal on the email screen you can see a new email created with the title “Payment made by …” and verify that this email still looks good.
Case 3
Make payments on COD link for order. In the operations portal on the email screen you can see a new email created with the title “Payment made by …” and verify that this email still looks good and the order number is still shown.
KOD-29688: CSD Credit/Refund Not Found Error
KOD-29689: Verifying routing of form submissions
KOD-29691: Tweak to proprietary products logic
KOD-29698: Add assignees endpoints to intranet page and intranet page drafts
Tests
Case 1
Check new endpoints:
intranetPage =>
GET /api/system/intranetPage/{intranetPageID}/employeeAssignment/{employeeAssignmentID} - Read Employee Assignment.
POST /api/system/intranetPage/{intranetPageID}/employeeAssignment - Create Employee Assignment
PUT /api/system/intranetPage/{intranetPageID}/employeeAssignment/{employeeAssignmentID} - Update Employee Assignment
POST /api/system/intranetPage/draft/{intranetPageID}/employeeAssignment/list - List Draft Employee Assignments
KOD-29704: Products Still Displaying Even When Set to "No"
Tests
Case 1
Update or create a product with field Display = No.
Add product to customer Warehouse.
Go to My Products view and verify that the product is not present.
Case 2
Repeat case 1 but product should have field isActive = No
KOD-29706: Kodaris ERP-UX Update to Serverside Export Method
Tests
Case 1
Go into Inventory Conversions on the operations portal.
On the table click File and Export, before clicking Save right click and inspect element and check the network tab, leave the network tab to check the API call and then click save.
Open the saved filed to verify the data and validate that the network tab has an API call to icss export
KOD-29713: Payment Update - Choose Payment Flow Specific Terminal
KOD-29718: Skip "pcat" in Product Import
Regression Tests
Case 1
Go to Products → Products → Data.
Import products from test document by using File → Imports → - Create Partial Update.
Wait 5 minutes until products are imported.
Go to the products table, check imported products. Go to the developer fields of each product and check that there’s no prodcat field created.
KOD-29735: Homepage Carousel Button Tweaks
Regression Tests
Case 1
Ensure that the homepage carousel slider is functioning correctly.
Tests
Case 1
Ensure that the options have been added for the “CM: Section: Slider 2” slider to select whether links open in a new tab or in the current tab.