The following information has been gleaned from working with release 1.5.


The OpenVPMS discount system is quite extensive.

a) you can define different discount types. For each type (eg Staff Discount, Valued Customer, ...) you define  the type: Percentage or fixed amount (ie $10 off), and you can put one or more discount types in a Discount Type Group in which you can specify a start & end date for each Discount Type. 

The DiscountType settings are as follows:

  • Type = Fixed or Percentage
  • Percentage = for percentage, the percentage; for fixed, the $ amount of the discount. Can be negative in order to impose a charge rather than a discount.
  • Include Fixed=yes/no - if the product price has a fixed component  (as well as a per unit component), ie a flag fall charge, then if yes, the discount is also applied to the fixed component
  • Active=yes/no - enable/disable the discount

b) for each customer and each patient you can define what discount types and/or discount type groups they have, and their start/end dates.

For each product you can define what discount types apply to the product and their start/end dates.  However, since you can specify discounts for each product type, it is normal to set the discounts at the type level rather than for each individual product.

c) when the charge is calculated, the only discounts that apply are those that are common to both product and customer/patient.

Hence if the customer has a staff discount, but the product they are buying has no staff discount, then they don't get the discount.

If the same discount has been set for both the customer and the patient, then the discount is only applied once.

However, if there are different discounts set (eg Valued Client for the customer, and Blood Donor for the patient) then both apply (provided that the product has both set).


If there are multiple applicable discounts (ie staff + valued customer) then both are applied.  However, you cannot reduce the charge below the max discount set for the product - ie if staff is 20% and valued is 30%, but the maximum product discount is 35% then you don't get 20+30=50% but only 35%.


NOTE: all the above simply calculates the applicable discount.  The person creating the invoice/charge can override the calculated discount.


d) quantity breaks - these are not currently supported by the system. There is a proposed design for them, but it's not a currently funded project.

Syndicate content