Location-specific product pricing

Donate to this project

Development Project Status: Completed

Total cost estimate (ex-Tax): 
Due date for completion of this stage: 
Current Percentage Funded: 
Project description: 

There is no simple facility for having separate prices for products at different practice locations.

This makes it difficult support practice locations where a premium is charged for service, e.g. a practice location that does house calls.

The only approach at the moment is to duplicate products and give the surcharged products a name to indicate as much, e.g "Acepromazine - House Calls" vs "Acepromazine".

A better approach would be to support different prices for the same product, at different locations.

This would be done by introducing a new classification, "Pricing Location". This classification would be used by:

  • Practice Locations, to select the prices that the location sees

A Practice Location would have zero or one Pricing Location. If it has:

  • zero - only prices with no Pricing Location will be selected
  • one - only prices that have matching Pricing Locations, or no Pricing Location, will be selected
  • Product Prices, to identify the locations that a price applies to.

A Product Price may have zero or multiple Pricing Locations. If it has:

  • none - it applies to all practice locations.
  • one or more - it applies to all Practice Locations that have matching Pricing Locations

Product Display

When displayed in a table, Products will display the fixed and unit prices active for the current location.

When displayed via Products|Information, Products will display all fixed and unit prices for the current location. If the user has administrative privileges, all prices for all locations will be displayed.

When edited via Products|Information, Products will display all fixed and unit prices, for all locations.

Pricing Templates

Pricing Templates may be used to share fixed prices amongst multiple products. Products 'link' Pricing Templates to access the fixed prices.

When Pricing Templates are used in conjunction with Pricing Locations, only those fixed prices visible to the Practice Location will be visible.

Price Export/Import

The Price Export/Import support will be updated to include a new column in the CSV, "Pricing Locations".

This column will list the Pricing Location classification codes (space separated). Additions and/or deletions from this column may be used to add/delete locations for a particular price.

The Export query will be updated to export prices for a specific Pricing Location, or all locations.

Auto Price Update

If a product/supplier relationship has Auto Price Update selected, then all unit prices for all Price Locations will be updated. The unit prices must be active at the current time.


The following reports need versions that include the Pricing Location. The existing reports should be maintained for practices that don't use Pricing Locations.

  • Product List Report
    • should include a Pricing Location column
    • should provide a parameter to filter on Pricing Location, defaulting to "%"
  • Product Price List Report
    • should include a Pricing Location column
    • should provide a parameter to filter on Pricing Location, defaulting to "%"
  • Stock Valuation Report
    • needs to determine the Pricing Location of the associated Practice Location, in order to determine product cost prices

The following new reports should be developed:

  • Missing Prices Report
    • lists products that have no prices for a Pricing Location.
    • needs to take into account pricing templates

Not Supported

Location specific markups are not supported by this project. This functionality can be achieved by:

  • using Pricing Templates
  • exporting prices, applying a factor, then re-importing them




Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Re: Practice location product markups

Step 1 implies (to me) that one can have only one markup defined for a practice location - and indeed this design follows the off-forum discussion I have had with Tim A.  However, on further consideration I can see that one really wants to be able to have, for the one practice location, more that one markup amount - eg 35% for Consults, 25% for Pet Food.

The required code is only a little more complex.

Regards, Tim G


Re: Practice location product markups

Arguably the same could be said for linked product templates that they should be linked based on location.  

I would argue that markup shouldn't vary that much, however in the example given above the actual premium is for a service (not the product) and the best way to charge for service is fixed fee or a linked product template...


Dispensing Fee (in clinic) 20.00 (linked to inclinic location)

Dispensing Fee (house call) 30.00 (linked to housecall location)

etc or whatever

But then I have always been about making charging transparent if ever questioned about it.  I don't use a lot of markup with the exception of over the counter stock.  I do use a lot of fixed fees that reflect the complexity in providing that service, NOT the cost price of a product.
I fail to see how we rationalize making $100.00 on sending a "complete body function" to the lab, yet only make 15.00 when you send in urine or some low cost lab test.... it doesn't make a bit of sense,
End Rant (sorry)

Re: Practice location product markups

Ben - looking at the HC- tagged products in my son's business, the vast majority are pet foods/prescription diets.  The House Call uplift occurs because the price includes home delivery (and the volume is large enough to need a staff member dedicated to deliveries and patient pickup).

Hence I would argue that:
a) one needs a markup mechanism that minimises the work required to change the uplift - and the 'markup defined by product type and practice location' approach does this

b) a markup mechanisn that can be applied to any variety (service, medication, merchandise) of product

However, although I have been thinking about this a simple price markup - its actually more complex.  Because OPV splits the price into fixed and unit, it would probably be sensible to have the markup also split into that applying to the fixed component and that applying to the unit component.

Your concept of linking the Product Price Template to the practice location is interesting and would provide a mechanism to relate the fixed price component to the location.  The question is, is this needed in addition to the markup mechanism.

Regards, Tim G 

Re: Practice location product markups

Wasnt Tim A looking at options to add per invoice charges like Freight or postage and handling as well as Discounts.  I cant remember what exactly he called it, but its sounds like what I delivery service needs. 


I will be honest in saying I dont understand how you use % markup to charge for what is essentially a freighting service.   BUT it isnt my business and its in a different country. 


I have 3 service fees I charge for house calls depending on how far I travel.  I can bring product with me but its charged at the same rate if they bought it over teh counter.  They are already paying me to drive out there so...whats a bag of dog food really.  Mind you we dont do product delivery alone.

I am really wary of over complicating the pricing systems with so many different methods.  Its important to keep the simplicity we have right now while adding in the variations everyone thinks are required.

I think the initial concept of linking markup to location is probably the most sensible in the long run and its quite simple from a user end and makes sense.  You could potentially add a location link to price templates as well.  Or maybe Price templates could also affect markup...as they currently do to fixed fees.


So I have a template I call Injections..its adds a 20$ injection fee and puts the markup to 100%.  On all products I link it too. and the template can be location based

If I want to affect just markup I just set the fixed fee at 0$ and set the markup I require.

Or I could just use it without markup and it just adds a fixed fee...as it does right now.


Re: Practice location product markups

I've started documenting invoice level allowances and charges here: http://www.openvpms.org/project/add-support-invoice-allowances-and-charges

-Tim A

Re: Practice location product markups

Hi Everyone,

Maybe we should be introducing the concept of a service factor.  These could be set by Practice Location and Product Type (i.e a new entityRelationship between Practice Location and Product Type) and allow you to nominate whether it effects the fixed, unit or both prices ?

Cheers Tony

Re: Practice location product markups

Hello All,

I own a multi-location practice in the U.S. and have been doing a "deep dive" into OpenVPMS to determine whether it would work for our practice.

I think there is a lot of great thought and energy into OpenVPMS and it has a lot of cool features that other systems have yet to implement.

However, it will come down to this muli-location pricing and how/when this is implemented whether we can use it. We have practices in excellent demographic areas (e.g. higher pricing on both services and products) as well as in low demographic areas (e.g. lower pricing on services and lower markup levels on products).  In addition, markups can't be applied equally as prescription diet dog food, for example, is not marked up as much as say, a narcotic.

I did see a pricing update project was funded but have not seen any more about multi-location pricing...is this getting any traction?



Re: Practice location product markups

Judging by the comments so far, concensus hasn't been reached on how it should be implemented.

Once concensus is reached, it can be costed and funding sought.


Re: Practice location product markups

Based on comments so far and (selfishly) our own needs a multi-site owner:


- Each stock location (since there is only 1 allowed per location) can have Markup Groups attached to it that are applied to Product Classifications COST (e.g. Food can be tagged with "RxDiet" or "RtlDiet")

- In this example, RxDiet is marked up 25% for the particular stock location (over COST) and RtlDiet is marked up 40%


- Each stock location can have Markup Groups attached to it that are applied to FIXED PRICE.  Example we would classify as consult as a "Shoppable" with a 5% markup against FIXED PRICE and a surgery as a "NonShoppable" with a 20% markup for some of our better locations.

Once the Markup Groups are setup, annual price increases can be applied to the Services list and the Markup Groups logic takes over.

On the invoice, only the final price should be shown.

If we could solve this problem (and we would be willing to potentially fund it), then OpenVPMS would work for our group and possibly many other multi-site groups.



Re: Practice location product markups

I was assuming that the % markup would be applied to the fixed and unit prices after their own markup had been incorporated.

At present OpenVPMS stores prices tax-inclusive. The fixed/unit price is calculated as:

 cost * (1 + markup/100) * (1 + tax/100) 

where the cost and markup comes from the fixed/unit price and the tax is linked to the practice.

The Practice Location-Product Type markup would be applied to this price, not the cost price.

In your case, you would set the fixed/unit price markup to 0 and specify it on a per location basis.

Re: Practice location product markups

If markups are already set for each product/merchandise, then an additional markup applied to the fixed and unit price would work fine.  I understand your formula better now!

However, I don't think using the Product Type would work because since only 1 Product Type can be selected per Product/Service, and this Product Type is linked to the taxes, then there would be issues in cases where a product is taxable AND there needs to be a markup.

Example:  Certain diets are Taxable in the U.S., so we would apply a Product Type "TX-Taxable" to those products and other products would not have a Product Type that are non-taxable.  Now we need to manage the markup, so we would have to have a Markup Group applied to the Stock Location, NOT the Product Type, because it's the Location Product we are after.

Is there a way to speak to one of the developers at OpenVPMS about this?  I can be reached at bthomas[at]vitalpet[dot]com.  We are in need to make a decision company-wide soon.



Re: Practice location product markups

A product may be linked to multiple stock locations, so the markup could be added to the Product Stock Location relationship. It could be done several ways:

  1. add fixedPriceMarkup and unitPriceMarkup fields to the entityRelationship.productStockLocation archetype
  2. create a new Product Markup (entity.productMarkupType) that contains the markup fields; the entity.productMarkupType would be linked to the entityRelationship.productStockLocation via a new "markup" field.

Option 1. is the simpler of the two to implement, but means that if you want to change the markup for a group of products, you need to update every affected Product Stock Location relationship.

Option 2. means that you define as many Product Markups as you need and link them to the Product Stock Location relationships. E.g. you might define a "Product Markup 10%" and a "Product Markup 75%".

If you want to change a single markup for a group of products, you just need to update the one Product Markup.


Re: Location-specific product pricing

I've updated the project to incorporate off-forum discussions.

Previously, it was about implementing location specific pricing through product markups. This is problematic from a reporting perspective, and for determining historical prices.

The new version avoid these issues by having separate prices per pricing location.


Re: Location-specific product pricing

Tim A - I understand why the switch from location based markups to location based pricing.

In our case (with goods being ordered into to the central store [and thus price updates potentially occuring there] with some of these being sold via the housecall business and thus needing higher prices), I need to understand that resetting the housecall prices from the 'central' ones is easy to do.

I think that this is covered by doing the following:

  1. export prices for central location (prehaps selecting by product type)
  2. in Excel markup prices as required and set Pricing Location column to 'housecall'
  3. import prices

If this is correct, then I am happy.

Regards, Tim G 

Re: Location-specific product pricing

Thats pretty much what you would do except that there would be a step to clear out the fixed and unit price identifiers so that new prices are created for the housecall location.

If you just changed the Pricing Location column from "central" to "housecall", this would apply a markup but move the prices from one location to the other.

The steps would be:

  1. export prices for "central" using whatever criteria you want.
  2. follow the instructions for Creating new Fixed Prices and Creating new Unit Prices
  3. change the Pricing Location column from "central" to "housecall"
  4. import prices

-Tim A

Syndicate content