CE will have the abilty to override both Stock and MOD Unit Prices in the Active Cart. When a price is overridden, they must supply an override code.
Flow:
- The CE Rep will first enter the price override code (from SYSTBL) in the CE Drawer (by line item) of the Active Cart
- Once the price override has been entered, the price field for the line item will be activated by the UI. CE will enter the Unit Price for the item.
- The shopping cart save RPC will:
- Update SHOPPINGCART.USR with the overridden price, reason code, and operator (both stock and MOD)
- For MOD items only - the quote price will be updated by placing the difference between the original price and the new price into the MISC$ field, then recalculating unit price as well as all price breaks
- For Stock Items - the Create Stock Order program will check the shopping cart for an overridden price and will use it if found. If not found, it will continue to use the price list price
4. Once ce makes the pricing change, anyone (including customer contact) can check the cart out. Convert Quote will use the overridden price that was already updated to the quote. For stock orders, the program will be changed to check for an overridden price in the cart first, and if not found, continue to use the price list logic already in place.
Create new Named Param (timeline 53-2):
- OVERRIDE.CD
Modify RPC$SHOPPINGCARTITEM_SAVE, RPC$MODITEM_CREATE, WEB.MODITEM.GETPRICE (timeline 53-2):
- Input Params: UNIT.PRICE, PRICE.OR.RSN, OPERATOR
- If UNIT.PRICE # "", write to SHOPPINGCART.USR<7>
- If OVERRIDE.CD # "", write to SHOPPINGCART.USR<8>
- If updated either <7> or <8>, write OPERATOR to SHOPPINGCART.USR<9>
- If this is a MOD Item price override, do additional logic:
- Calculate Misc$ for configurator as: New Unit Price (UNIT.PRICE) - Old Unit Price (QUDET<5> using quote# in SHOPPINGCART.USR<6>)
- Call RPC$MODITEM_CREATE and execute STATUS= 3 code (quote change logic). This should update the quote fields related to price/price extensions (see below). It should also create a new revision of the configuration with the Misc$ updated as well as the new pricing info. This program s/b executing WEB.MODITEM.GETPRICE already (SEE BELOW) to get the new price based on the new info (ie, Misc$):
- QUDET<5> (Domestic Unit Price)
- QUDET<14> (Domestic Extended Price)
- QUDET<61> (Currency Unit Price)
- QUDET<73> (Currency Extended Price)
- QUHDR<31> (Domestic Merch$)
- QUHDR<35> (Domestic Taxable$)
- QUHDR<36> (Domestic Total$)
- QUHDR<120> (Currency Merch$)
- QUHDR<124> (Currency Taxable$)
- QUHDR<126> (Currency Total$)
- Call WEB.MODITEM.GETPRICE - Quote# s/b available *** THERE MAY BE SOME ISSUES WITH EXISTING CODE IN THIS PROGRAM. I BELIEVE WE WANT STATUS = 3 (NOT =2 AS THE PROGRAM NOW READS). YOU ALSO SHOULD HAVE THE QUOTE# AVAILABLE VIA PARAMS - LOOKS LIKE THE PGM IS READING THE MOST RECENT QUOTE# FROM CONTACT.ITEM.XRF.USR. WE SHOULD BE WORKING ON THE SPECIFIC QUOTE THEY ARE CHANGING, NOT THE MOST RECENT QUOTE. THERE CAN BE MORE THAN ONE OPEN QUOTE. *** NOTE: STATUS=3 is supposed to be using original resin prices used to calc the original quote price (from CFORDER file). It should not be getting current resin prices from a table ****
- Set the Misc$, then run through all pricing calculations (including price breaks) and create a new revision for the configuration with the Misc$/new price info/new price break info
Modify RPC$CONVERT_QUOTE (timeline 53-3):
- Update SODET<37> = 1 (price o/r flag) if a price was overridden *** this may already be set because of rounding issues when bring price back to MD2
- Update SOHDR.USR<4> w/price override code if price was overridden
- **** Currently there is no field for the operator who overrode the price ... do we want to store this ????
Modify RPC$CREATE_STOCKORDER (timeline 53-4):
Check SHOPPINGCART.USR<7> for an overridden price for stock items. If found, use it when creating the order. If not found, continue to do the price list logic already in place. When using an overriding price, also update:
- SOHDR.USR<4> (price override code)
- SODET<37> = 1 (price override flag)
- **** Currently there is no field for the operator who overrode the price ... do we want to store this ????