Pricing Locks

Concept

A Pricing Calculation Lock (or Pricing Lock for short) refers to the ability to lock an order from price changes associated with calculated changes in the base price. The following items will not be recalculated when pricing calculation lock is in affect:
  • Pre-Discount Price
  • Built In Discount
  • Base Price[1]
  • Default Discount
The system essentially treats these items as overridden and does not update their value. All other values are calculated normally.

The pricing lock is turned on or off for then entire order, though it may be temporarily disabled for any line item to permit changes to that line.

Lock States

If an order has a pricing lock, the initial state of every line item is Locked. For each line item on a locked order, you can right-click on the line item and change the lock to one of the following states[2] :
  • Temporarily Unlocked for Values Entry. Unlocking for values entry enables all data entry functions on the pricing form. All variables may be changed. However, pricing remains locked and no pricing changes are made - even when quantity is changed.
  • Temporarily Unlocked for Pricing Calculations Unlocking for pricing calculations allows the line item to recalculate the pricing based on changes in the pricing, part costs, etc.
  • Temporarily Unlocked for Both. Unlocking for both allows full edits on the line item as if no lock were applied to this line.
  • Locked. This option is enabled when the line is in one of the previous unlocked states.

Allowed Actions for Different Lock States

When the line item is Locked for Pricing Calculations the following changes are still permitted but do not change the price:
  • Changes in parts applied, estimated, or used on the line item.
  • Changes in part costs or multipliers.
  • Changes in the products pricing formulas.
  • Changes in the customer's pricing plan.
  • Changes in the orders pricing level.
  • Changes in modifier pricing formulas.

When the line item is Unlocked for Pricing Calculations the following changes are allowed:
  • Overriding the base or subtotal price.
  • Change the line item discount amount or rate.

When the line item is Unlocked for Values Entry, the following changes are allowed but will not affect price:
  • Changes in the quantity,[3] , height, width, or any other variable.
  • Changes in the modifiers applied.

The price lock does not prevent changes in pricing due to the following actions:
  • Changes in the taxes[4] .

Locking Rules

  1. A locked order is always thought of as entirely locked or entirely unlocked.
  2. You may temporarily unlock a line item.
  3. When a locked order or estimate is saved, all temporary locks are removed. (i.e., All line items revert to being locked on next edit.)
  4. You can unlock a line item or a child item. Unlocking a parent item does not unlock its children automatically.
  5. You can not lock or unlock variations. They follow the locking of the estimate as a whole.
  6. You can add new line items to a locked TransHeader (provided it is in edit mode).
  7. You can add new child items to a locked line item.
  8. You can promote or demote locked line items.
  9. You can delete a locked line item.
  10. You can add new line items to a locked TransHeader. Upon save, those items will also be locked.
  11. You can move locked line items up and down.
  12. You can clone a locked item. The new child item is not locked.
  13. You can Assign-To, Complete, and Change the station of a locked line item.
  14. You can manually add or override part information on locked line items.
  15. You can change all information on the advanced tab on locked line items.

Options

The following options are user defined under System Setup | Price Calculation Locks. (Default values are indicated below. An 'x' indicates it defaults to checked, blank indicates it defaults to unchecked.)

  • Estimate Pricing Calculation Locks
    • [ ] Automatically lock new estimates.
    • [X] Automatically lock estimates before converting them to Orders
  • Order Pricing Calculation Locks
    • [ ] Automatically lock new orders.
    • [X] Automatically lock orders when marked a Sale.
  • Service Ticket Pricing Calculation Locks
    • [ ] Automatically lock new service tickets.
    • [X] Automatically lock service tickets when marked a Sale.

The following option is available for each product. (Default values are indicated below. An 'x' indicates it defaults to checked, blank indicates it defaults to unchecked.)
    • [ ] Exempt from Pricing Locks.

Actions

The following actions were added to orders, service tickets, and estimates (security rights permitting):
  • Lock All Line Items. This sets the lock on the TransHeader.
  • Remove All Locks on All Line Items. This clears all locks on the TransHeader.

The following actions were added to locked line items (security rights permitting):
  • Re-Lock. This resets the lock on the line items.
  • Remove Locks. This clears all locks on the line items.
  • Remove Pricing Lock. This clears the Pricing lock on the line items.
  • Remove Data Entry Lock. This clears the Data Entry lock on the line items.
  • Remove All Locks on All Line Items. This clears all locks on the TransHeader.

Security Rights

The rights to set and release locks are automatically granted to users that can edit the order. There are no additional rights associated with locking and unlocking.

User Interface Changes

The icon on the items tree in the order or estimate will be changed to a "locked" or "unlocked" icon. Changing the locked/unlocked state can be set by clicking on the icon. Depending on the current lock state, the order may be immediately locked or an unlock menu will appear.

Order Level Locking

If the order is currently unlocked, clicking on any unlocked icon on the order level row locks the (entire) order.

If the order is already locked and the user clicks on the order level row, a menu appears with the "Remove All Locks on All Line Items" option.

Line Item Level Locking

If the order is currently unlocked, clicking on any unlocked icon on any line item locks the (entire) order.

If the order is already locked and the user clicks on a locked line item, a menu appears with the various options to remove locks.

If the order is already locked and the user clicks on a unlocked line item, a menu appear with the options to re-lock the line item and remove all locks.

Product Level Locking

At the product level :
  • Clicking an "Exempt Product from Price Locks" option will prevent this product's price from being locked when order level or line item level locks are set.

Other Changes

The following other changes are implemented in Control as part of this revision:
  • When an order is edited or cloned and a pricing change is detected, rather than overriding the price the user is given the option to "... Lock the Calculated Pricing". If they choose yes, the affected line items are all locked rather than the price being set to overridden.
  • When converting an estimate to an order, the user should be given a checkbox option to "[x] Lock the Estimate's Calculated Pricing before converting". If the estimate (as a whole) is already locked, this box should be checked and disabled. If the system option to "Automatically lock estimates before converting them to Orders" is set, then this box should be checked by default. If the system option to "Automatically lock estimates before converting them to Orders" is not set, then this box should be unchecked by default.

Import

All imported Orders and Estimates automatically default to locked.

CFL

The PriceLock property of the TrasnDetail and TransHeader is accessible inside of CFL, as in the following example:
IF (Transaction.IsPriceCalcLocked = True) THEN
 "Order/Estimate Locked Out!"
ELSEIF (IsPriceCalcLocked = True) THEN
 "Line Locked Out!"
ELSE
 "Free to Change!"
ENDIF

Reports

No reports are included or modified with this feature.

Database Changes

The following fields would be added to the database. (Each new field is represented as TableName.FieldName below.)
  • TransHeader.IsPriceLocked (bit) - This field indicates if the transheader is locked.
  • CustomerGoodsItem.IsPriceLockExempt(bit) - This field indicates if the product is exempt from price locks.

Technical Notes

Additional technical notes:
  • The IsPriceCalcLocked property shoud be a read-write published property on the Transaction_BR.
  • The IsPriceCalcLockedInherited property shoud be a read-only published property on the Transaction_BR.
  • The formula for IsPriceCalcLockedInherited := Parent.IsPriceCalcLocked;
  • The default formula for IsPriceCalcLocked = FIsPriceCalcLocked or IsPriceCalcLockInherited;


Source

Contributor: Team Cyrious
Date: May, 2010
Version: Control 5.0

See Also


  1. ^ The Base Price is just the Pre-Discount Price less the Built In Discount. Since those aren't recalculated, the value of the Base Price also can't change unless it is manually overridden.
        • >
  2. ^ There is an option in product setup to disallow that product from being locked. (This is most desirable for shipping and installation products where the final price is not known when the order is created.)For these products, the menu option will simply indicate that "Locking is not allowed due to this products settings."
  3. ^ The quantity may be changed, but the total price will remain the same. In effect, the unit cost can therefore change though the total price (pre-tax) remains the same.
        • >
  4. ^ Taxes are always recalculated on the save of an order or estimate and the then-current tax rates applied.
        • >