Contract Maintenance

The Contract Maintenance form (ALT-C) maintains information about special pricing for specific accounts and jobs. Contracts are saved by item individually rather than as a group and override ALL other pricing that may apply at Point of Sale. Contract pricing is applied even when a lower price would normally be available to the customer (contract prices override volume discounts, sale prices, unit of measure pricing, etc.).

Each item may have different contract parameters and contract pricing is considered and applied on an item-by-item basis, not as a group. Each item's start date, expiration date, and quantity limits can vary or they can be the same for all items. When using the same dates for all or most items, it's easiest to set the default dates before adding items to the grid. Menu marker options do allow you to set all dates to match the defaults later as well.

Beyond manually just assigning a set dollar price to items, contract prices can be either

(1) calculated using levels, markup, margin, discounts, or U/M prices (these are just used to calculate a "set" price, and are not perpetually linked to the contract price) -- or --

(2) use a "floating" price option so that the contract price varies based on changes to the item's retail price or one of three costs: last receipt, market, and weighted average. You can also use the Reprice (F6) function to calculate a price using many of the same reprice functions available from Point of Sale transactions.

New contracts are assigned a default start date (effective date) and a default expiration (ending) date. Both dates are used as the defaults for new items as they are added in the grid. Date defaults can be changed at any point during entry to save time. Menu marker options allow you to update all item's expiration or start dates to match the current selections.

The Global option (available in release 12.16) provides the ability to import global contract updates and additions to large number of customer/job contracts at once via spreadsheet data. Once a user has created/edited a spreadsheet, they can import the details by pressing the F2 Import option and selecting the desired file. The fields listed Closedhere must be included in the spreadsheet to ensure a successful import.

Spreadsheet must be formatted with the following columns:

  • Account: Limit of 10 alpha-numeric characters. Must be a valid customer account.

  • Job: Integer. Must be a valid job for the customer.

  • Item: Limit of 16 alpha-numeric characters. Must be a valid item. If the item starts with 5 tildes the remaining characters into a group and section. For example, ~~~~~8500185099 would include group 85 sections 1 to 255. When a group-section range is indicated, all items in that group section range are processed.

  • Quantity: Zero is assumed if not provided. Zero is only valid if there's a valid DiscountType provided.

  • Price: Decimal value representing the price.

  • PriceUM: 4-character code corresponding to one of the item's defined units of measure.

  • Discount Type: Only used if the price is zero. If so, determines the level price to set the price using for the contract. Valid values are L0, L1, L2, L3, L4, L5, L6, L7.

When using the global option, if an update that has price changes is pulled in, but has the start and end dates (along with account and job), the system will update the prices. Click Closedhere to view the logic the application follows.

  • If the account and job do not match an existing contract, always generate a new contract

  • If the account, job, and both dates match an existing contract, always assume the contract should be updated

    • Update any items already on the contract

    • Add new lines for any items not already on the contract

  • If the account and job match and the contract start date matches but the contract expiration date does not match, update the existing contract as in (2) but also update the expiration dates

  • If the account and job match but neither of the dates match, always assume a new (future) contract is being generated

Understanding the Contract Pricing Options

Over time, we have added contract shortcuts that allow you to manage unit pricing for materials your customers need. When you find a group of products with pricing strategies that you want to apply to more than one contract, you can now do that using the Customer Class and Global settings in the Contract Maintenance form. Some of our customers keep track of this pricing on spreadsheets, which they can import and apply to contracts in the Contract Maintenance form. We have expanded that capability as shown in the instructions, Applying_Contract_Pricing_to_Multiple_Accounts.

For example, in the Contract Maintenance form, you can set the unit price for a particular item as a percentage of market value or a discount percentage rather than a specific amount.

Contract Maintenance > Unit Price Options Displaying

Those percentages can be based on:

  • L0, L1, L2, L3, L4, L5, L6: A price level you set for a particular kind of business or contractor type

  • C: Customer Price

  • S: Suggested Retail (List)

  • [Valid Unit of measure for the item]: Unit of Measure Price

  • D: Discount % off Level 0 Price

  • G: Margin % above the weighted average cost (WAVG)

  • M: Markup % above the weighted average cost (WAVG)

  • B: Margin % above the higher of Market or the weighted average cost (WAVG)

  • X: Markup % above higher of Market or the weighted average cost (WAVG)

  • FD: Floating Discount %

  • FL: Floating Markup % Last

  • FM: Floating Markup % Market

  • FW: Floating Markup % Weighted Average Cost

  • FB: Floating Margin % Higher of Market or Weighted Average Cost

  • FX: Floating Markup % Higher of Market or Weighted Average Cost

For example, in the Contract Maintenance form, rather than setting a price for a particular product, you can enter M23 (Markup by 23%) to indicate the price of this product for the assigned contracts should be marked up 23%. Enter D18 to discount the price by 18% and so on.

Contract Maintenance with New Unit Price Entry

You can set this item price strategy for a group of contracts rather than just one account using the Customer Class and Global radio buttons on the Contract Maintenance form. If you keep track of these pricing strategies in a spreadsheet, you can import these items, price settings, and date ranges into the Contract Maintenance using the standard Import process.

Entering Quantities

If a quantity is entered for a contract item (optional), a quantity-based expiration is assumed. This means that the customer will only be allowed the contract price until the quantity entered is met or exceeded during sale. Expiration date is considered as well, so it's a "whichever comes first" arrangement.

Note: Quantities sold at the contract price can potentially exceed the contract amount in some cases. If the contract is specified for 99, but the customer purchases 101 all at the same time, the contract file won't have been updated yet, so the account will receive all 101 at the same price.

When no quantity is entered (zero), no quantity limit is enforced on the contract, so a customer may purchase that item as much as they please for the contract price (until the expiration date).

Specifying Alternative Pricing

Beyond a set dollar contract price, users can specify that the price be set using a number of options. Letter codes are used to designate these. Click on the drop down next to the U/P (unit price) cell to select or view the valid codes. In some cases, it's necessary to enter a number (such as a discount percentage) after the letter code. Only the "floating" codes are saved with the contract items. All other codes are only used to quickly calculate the item's set price, and are not retained after a price is calculated.

Discount percentages should be entered as whole numbers (not decimals) unless entering less than 1% (0.5 results in 1/2%, not 50%). If entering a decimal discount (or margin/markup) that is less than 1 percent, it's necessary to add a zero prior to the decimal. For discounts above 1% (5.5%, for example), this does not have to be done.

Floating Margins

As a specific example, to specify a 22% floating markup using WAVG (weighted average), the user should enter FW22 in the Unit Price column. Floating contract pricing will be displayed with a light blue background in the cell to distinguish it from a set price.

Changing the Unit of Measure

If you want to enter pricing using a different unit of measure, you can; however, it's best to choose the U/M first and enter the desired price second (prices are automatically converted when you choose another U/M unless you clear the "convert" check box on the U/M drop down).

It is important to note that you cannot use this to provide different contract prices on the same item (for different units of measure). For example, you cannot define one PC price and a different CASE price for the same item. The contract price is not given based upon a quantity threshold being sold. This is true no matter what Unit of Measure you choose when entering pricing.

Checking Margins

We have added a "GM%" style to the grid which can be used to display the current cost and gross margin (based on the contract price) for any items in the grid. This read-only style is accessed from the Style (F3) function. Costs and margins can be restricted by user security settings, so only users with permission to view costs and margins be able to view this option.

Taxable

If the current user has permission to change items' tax statuses at Point of Sale, they can designate the tax status for the item along with the contract. This doesn't update the item's tax status permanently and is only considered while the contract is in effect. Once the contract items quantity or date period expires, the normal tax status of the item replaces any taxable status from the contract. It is your company's responsibility to ensure that tax is charged where required by law.

Reset Sold Quantities

In some cases, you may have an open or expired contract that you want to reset, extend, or re-use. The top-most menu marker's context menu provides a "reset sold quantities" option. While a contract is in effect, quantities are retained when items are sold using the contract price. The quantities sold are retained both for analysis and for determining quantity expiration on contract items. Use this option to clear the quantities sold for the selected contract(s) listed in the data grid. This will return the sold quantities to zero. Any previously sold quantities won't be available after you do this.

Use security must be enabled to allow access to this option. Permission is granted by modifying the user's Application Security setting for "Allow Reset of Contracts Sold Qty."

Importing Group/Section Items into a Contract

This feature gives you a way to import each item in a specified inventory group or group/section into the selected global contracts.
Note: You can import these items using the Unit Prices options described in the last release and with the floating price levels described in this one.

When you select the Global option in Contract Maintenance, you can now import all the items in particular group and/or all items in a particular Group/Section from an Excel spreadsheet. This process assumes you have put these group and section settings (as well as the other required columns) in the spreadsheet correctly before you start the process below. The spreadsheet needs to include the following fields at a minimum (column headings are required):

  • Account

  • Item

  • Quantity

  • Unit Price

  • Unit of Measure

  • Start Date

  • End Date

To import group/section records into a group of contracts:

1. From the Main Menu, choose Point of Sale > Database > Contracts to display the Contract Maintenance form.

2. Choose the Global button.

3. Choose Import (F2) to display the context menu and choose Batch.

Follow the prompts to import the spreadsheet you want to import and choose OK.
The application tries to import the spreadsheet entries and reports on the status when this process is complete.

Contract Maintenance Before Imported Entries Display

Note: If not all of the items are imported, the application reports the errors. If items were disabled when you tried to import them, the application reports the number of items that were disabled.

4. Click OK to close the message.

5. Choose Cancel (F9).

6. From the Account list, choose the account you imported from the spreadsheet to display the new entries.

Contract Maintenance with Imported Entries

If you entered floating price entries in the Unit Price column, you can review that calculation by placing your cursor in the Unit Price column and choosing the down arrow.

Contract Maintenance with Unit Price Calculation Method Displaying

Clearing an Accounts Contracts Before Importing New Entries

B-108583 – Before you add new contract items and pricing to an account, you might want to remove the existing contract entries from that account. This allows you to start with a clean slate. You clear the existing contract from an account by adding a new entry to the spreadsheet you are importing for that account.

Spreadsheet with Clear Entry

In the first row of the spreadsheet, type the account ID, the Job number, and in the Item field, type *CLEAR*. Leave the rest of the fields blank. If you enter a StartDate and an EndDate entry, the application will clear the contract for the specified account as of the selected date.

Using Contract Functions

You can use a number of functions to make contract pricing entry easier.

Import (F2)

There are four (4) Import (F2) options that providing a few different ways to populate the contract form's data grid with items: inventory, customer quote, document, and wizard. You need to import a minimum of 10 items (rows, records) for the import process to work correctly.

Style (F3)

Three styles are provided for the data grid: item entry (default), report sequence, and GM%. The default style is the only style that allows editing. The other two (2) styles are read-only, but are useful for reference (you can also choose the "Sort By" context menu option on the data grid to sort by other fields and then reselect the "Item Entry" style to retain the sort order). For example, you could use "GM%" and then "Sort By" the column GM%. When you then choose Style (F3) and Item Entry, the sort order is retained. For more information about the style function, click here.

Template (F5)

This function allows you to copy the pricing options from an existing contract. There are two (2) contract template options:

  • The "account" template option copies the contract price settings from consolidated contracts (where one contract covers all the jobs). Contracts may or may not be linked to a job, even if jobs exist for the account. The account template option copies the job 0 contracts, if there is no consolidated contract on the account.

  • The "job" template option only functions differently from the "account" option if job-specific contracts exist for the selected account. In this case, the application displays a second dialog box so you can choose the job you want to copy contract price settings from.

Reprice (F6)

The Reprice (F6) function found in various Point of Sale transactions can be used to update the pricing of items in the data grid based upon a number of factors. The reprice may be used multiple times and applied to all products or just certain products. Some reprice options (types) may not be available in all cases. When an option is not available, the radio button is disabled and the label for the option is displayed in gray text.

Reprice_F6_Point_of_Sale

Selection

Selection determines which item or items the reprice will be applied to. There are currently four (4) options for selection: All Stocked Items Entered, Highlighted Items Only, Stocked Items in Product Group, and By Item. Each option is explained in more detail below:

All Stocked Items Entered

This selection applies the selected reprice function to all stocked items entered in the transaction's grid area. Repricing is only applied to the items currently entered and is not automatically applied to any new items added after using the function (you must do another reprice in this case).

Highlighted Items Only

This option only applies the selected reprice function to stocked item rows that are currently selected in the transaction's grid area. When a row is selected, its background color is changed to blue. There are a few different ways to select multiple rows. The far left-hand side column is used for row selection. The square "buttons" found in this column are used to select one or more rows. You can click on a starting row and drag your mouse up or down to select multiple rows that are in sequence. Using your keyboard with or without mouse selection is also useful, you can press SHIFT and use the mouse or down arrow key to select multiple rows. Use the CTRL key while clicking on row headers (selection box) to select rows in random locations.

Grid_Detail_SelectedRows

Stocked Items In Product Group

When this option is selected, a drop down control is provided allowing you to choose either a specific product group or specific section within a group.

By Item

This option provides a drop down that allows you to select a specific item to reprice. This control allows selection of any item and is not limited to just the items within your transaction. As with item selection in other areas, the alternate menu (usually a right-click) offers additional options that may be used for selection.

Reprice_Options_ByItem

*Why aren't non-stocked items included? Non-stocked items usually have no preset pricing or price structure and often don't represent any specific item until ordered. In the majority of cases, non-stocked items are assigned a specific price, description, etc. when ordered. We assume that in this case, the pricing entered by the user creating the order matches what the customer should pay. It is a common practice not to offer special pricing or discounts on custom (special) orders.

Type

The type panel is where you choose the method to be used for the reprice.

Price Level

The price level selection reprices the selected item(s) based on a price level you select from the provided drop down. A company may define up to seven (7) price levels to use with items; however, a company may decide to use fewer than all seven. The names (descriptions) are set by your company, so they will likely vary from our example.

Reprice_Options_PriceLevel

GM%

The GM% (gross margin percentage) option is used when you want to calculate a new price for the selected items based upon a desired margin percentage. Margin is the percentage difference between the price and the cost. The margin you specify can be calculated based on any of three (3) costs associated with items: weighted average (WAVG), last receipt (Last), and current market (Market). The (weighted) average cost is used for updating financial records and totals. Last receipt is the most recent purchase cost. Market is a manually set reference cost (it may be set automatically by some EDI processing, however).

Subtotal Amount

This allows you to enter a subtotal for the selected items and then adjust the pricing of those items (based on their extended amounts) so that the resulting extended total matches the subtotal amount specified. In cases where a zero extended amount would result for the item, the subtotal won't reprice those items (this would happen if either the price or quantity were zero).

List Discount

A "list" discount refers to a percentage discount using the item's suggested list price. Suggested List is not a price level; although, price levels may be calculated based on the list price. Suggested list is a reference price that is manually set in most cases; however, EDI processing may update suggested list in some cases.

Cost Markup %

This is similar to the GM% (gross margin) option except that the percentage entered represents a "markup" rather than a margin type calculation. Markup takes the selected cost and increases it by the percentage you specify. This does not result in a price with the same "margin" as the percentage you entered. For example, if an item costs $1.00 and you "markup" the cost by 25%, the resulting price will be $1.25; however, the margin on a price of $1.25 and cost of $1.00 is 20%, not 25%. Please see the GM% description (above) for more information about the cost selections available.

Account Reset

When applicable, this allows you to reprice the selected items to the default pricing the current customer would receive during a Point of Sale transaction. This can function as an undo or reset for the current custom.

Apply Item Rounding

Reprice functions often need to use all 4 decimal places to match a particular subtotal or calculation, so they don't necessarily or usually result in a rounded price. Either all or selected items can be repriced based on their price rounding settings by using this option. Rounding usually results in changes to item prices and extended amounts.

New Price

This option is only enabled when using the "by item" selection option (see above). When enabled, a text area is provided where you can enter a new price for the selected item. If the selected item is included more than once, all occurrences of the item will be updated with the new price.

The standard Cancel (F9), Exit (F10), and Process (F12) functions are provided. To save an existing contract or changes made to an existing contract, you must choose Process (F12) prior to closing the form.

Deleting a Contract

The top-most menu marker icon offers a context menu that provides the ability to delete the current (selected) contract or all expired contracts. Once deleted, the contracts are permanently removed from the database, so please use caution.

Delete Contract

This option deletes the currently selected contract only. If a valid contract is selected (meaning at least one item on a contract is shown in the data grid), a confirmation prompt "Delete contract?" is provided. If the user chooses yes, the contracts for any items appearing in the data grid will be removed. The contracts removed are not based on date selections in the upper area of the form. All contracts listed in the data grid will be removed.

Delete Expired

This option is only available before account and job selection in the form; otherwise, it is disabled. The "delete expired" option removes all expired contracts up to a date provided by the user. To prevent accidental deletions, the application does not allow the current date or any future date. In addition, a warning is provided if a date within the last 30-days is selected. Contracts that have not expired are never removed. Please use caution when selecting a date.

Once the deletion is processed, a dialog reports the number of contracts that were deleted.

Applying Contract Pricing to Multiple Accounts

To update multiple accounts with new contract pricing settings:

1. From the Main Menu, choose Point of Sale > Database > Contracts to display the Contract Maintenance form.

2. Choose the Customer Class or Global option, depending upon the measurement/price changes you want to add to your customers’ contracts.

  • If you selected Customer Class, select the Class type from the Customer Class list.

3. In the date fields (Start Date and Default Expiration), enter the date range that you want these contract prices to be in effect.

4. Depending upon how you decided to keep track of the pricing strategy (by spreadsheet or by SKU template) do one of the following:

  • Choose Import (F2) > Wizard to import the spreadsheet of items you have prepared into the data grid. Set the appropriate grid mapping to import the data into the data grid and click Process. The Import Wizard instructions are covered in detail in the Help System.

  • To add the contract pricing established for a specific account or job to other contracts, choose Template (F5),Account or Job to display the Default using as Template list. Choose the account or job contract from the list and choose Accept.



    Contract Maintenance > Default using as Template List

  • Add the SKUs you developed to the data grid manually until each of the SKUs that you want to apply to the selected contracts display in the grid.

Each of these approaches populate the data grid with the data you have prepared for this purpose. You can use a combination of these methods to collect information from different sources and remove the items you do not want to apply.

Contract Maintenance with Entries (Unit Price Detail Displays)

5. Click in the Unit Price entry columns to make sure the short cut displays as you expect for each item you are applying.

6. When you are ready to apply these item prices to the selected contracts choose Process (F12).

Managing Multicurrency in Contracts

When you create an account/job contract with a customer that uses a foreign currency, the application saves the contract amounts in the customer’s currency rather than your local currency by default. When a cashier adds those contract items to a customer’s data grid, the application applies the contract pricing to those items. You can use the new Point of Sale options to display the prices in local currency at any time. Contract Reports show the customer’s currency code when the report includes the customer’s foreign currency account.

In the Contract Maintenance form, we have added a Currency section above the data grid that displays when the contract you are adding is for a customer using a foreign currency. The local currency displays on the left and the customer’s currency displays on the right. In the example below, the prices that display are in Japanese Yen, which you can tell is the foreign currency because the background of the Unit Price, U/M, GST (Tax), and Price fields is yellow.

Contract Maintenance Form Showing Foreign Currency

To review the same entries in local currency, click the local currency button (in this case AUD) to update the values in the Contract Maintenance data grid.

Contract Maintenance Form Showing Local Currency Values

When you complete your contract entries and click Process (F12), a confirmation message displays.

Contract Pricing Confirmation Message

Do one of the following:

  • Click Yes to confirm that you want to save contract pricing in the foreign currency, or

  • Click No to save the contract pricing in your local currency instead.

When you save contract pricing in local currency the current exchange rate stays in effect, even if the exchange rate changes. So, when you add contract items to the data grid in Point of Sale, the contract price will be in effect. If you change the display options in the Point of Sale data grid to local currency, the contract price will convert to local currency using the exchange rate in effect at the time of the initial contract.

Note: The Currency setting (Local or Foreign) in place at the time that you process the contract is the currency setting that is saved with the contract. If you save the contract with the local currency set, the confirmation message does not display. The exchange rate change rules remain the same.

Applying Contract Pricing to Multiple Accounts

To update multiple accounts with new contract pricing settings:

1. From the Main Menu, choose Point of Sale > Database > Contracts to display the Contract Maintenance form.

2. Choose the Customer Class or Global option, depending upon the measurement/price changes you want to add to your customers’ contracts.

  • If you selected Customer Class, select the Class type from the Customer Class list.

3. In the date fields (Start Date and Default Expiration), enter the date range that you want these contract prices to be in effect.

4. Depending upon how you decided to keep track of the pricing strategy (by spreadsheet or by SKU template) do one of the following:

  • Choose Import (F2) > Wizard to import the spreadsheet of items you have prepared into the data grid. Set the appropriate grid mapping to import the data into the data grid and click Process. The Import Wizard instructions are covered in detail in the Help System.

  • To add the contract pricing established for a specific account or job to other contracts, choose Template (F5),Account or Job to display the Default using as Template list. Choose the account or job contract from the list and choose Accept.



    Contract Maintenance > Default using as Template List

  • Add the SKUs you developed to the data grid manually until each of the SKUs that you want to apply to the selected contracts display in the grid.

Each of these approaches populate the data grid with the data you have prepared for this purpose. You can use a combination of these methods to collect information from different sources and remove the items you do not want to apply.

Contract Maintenance with Entries (Unit Price Detail Displays)

5. Click in the Unit Price entry columns to make sure the short cut displays as you expect for each item you are applying.

6. When you are ready to apply these item prices to the selected contracts choose Process (F12).