Obsolete Item Replacement
When obsolete items are added to the cart, they are flagged as obsolete. This prompts a new window to show in the shopping cart which allows the user to select a related item. Checkout is not allowed while an obsolete item exists in the shopping cart. The user must first resolve the invalid item by either selecting the replacement item or removing the obsolete item without accepting its substitute.
What makes an Item Obsolete?
During the add to cart process, items are checked for various known statuses, one of which is “Obsolete” This is determined by the following query:
select IBSTKT from F4102 where IBLITM = [Added Item] AND LTRIM(IBMCU) = [Current Branch Plant]
When the returned F4102.IBSTKT (ItemBranchFile.StockingType) is equal to “O”, the item is considered obsolete.
How is an Item Marked as Obsolete?
During the add to cart process, if any items are considered obsolete, the process then looks in the database for the appropriate saved message to display for this cart flag. This is done with the following query:
select Flag, Tooltip from EC_ShoppingCart_Flags where Flag = 'Obsolete'
The returned ToolTip value is saved to the shopping cart table for the item. Here is an example of the ToolTip value that could be saved in the database for the obsolete flag:
The Shopping Cart has the following columns which save this information:
What Happens On the Shopping Cart Page with Obsolete Items?
Obsolete items are flagged in the shopping cart as Obsolete. This is visible to the user and marks the cart as invalid.
If the item has a replacement item, the user can choose to replace the invalid item with the replacement item. If there is no replacement, the user can only remove the invalid item.
Invalid carts cannot progress any further to checkout. If the user does attempt to checkout, an error message will be returned:
How are Replacement Items Found?
When the shopping cart page loads, it checks for any obsolete items (EC_ShoppingCart.Flag=’Obsolete’). If any are found, it runs the following query for each item:
select IVCITM from F4104 where IVLITM = [Obsolete Item] AND IVXRT = 'R'