There is an extensive discount system. Discounts can be provided at the customer, patient, and product level. You can also give a discount at payment time, and disable discounts entirely.
Discount Types
The Administrator defines the various Discount Types using Administration|Types|Discount. For each (eg Staff Discount, Valued Customer, ...) they define the type (percentage or fixed or at-cost), the rate, and whether the discount applies to the fixed component of the product price as well as the unit component.
One or more discount types can be included in a Discount Type Group (see Administration|Types|Discount Group) in which a start & end date can be specified for each Discount Type.
Customers and Patients
For each customer and each patient you can define what discount types and/or discount type groups they have, and their start/end dates.
Products
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 (see Administration|Types|Product Type), it is normal to set the discounts at the type level rather than for each individual product. If there are discounts on both the product and type, then they will be merged. If a discount appears on both a product and its type, it will only be applied once.
Calculation
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 At-cost discounts, then the one with the lowest rate is selected, as that gives the greatest discount. If there are other discounts as well, these will also be applied.
If the discount resulting from all the applicable discounts exceeds the maximum discount set for the product, then the maximum discount is used. If you want to use At-cost discounts for your staff (say 5%), you must be careful to set the product's maximum discount to allow this. The formula
D = (M-R)/(100+M)
gives the discount percentage D where M is the Markup percentage and R the At-Cost discount percentage. Hence for M=100 and R=5, then D=47.5.
Hence setting the product's maximum discount to less than this, say 30% will result in the staff paying more than cost+5%. For them to pay cost+5%, you need to set the maximum discount to 47.5% or more.
If the calculated discount is such as to reduce the price below the cost price, then unless:
a) there is both a fixed and unit price, and both have a 100% maximum discount
or b) there is only a fixed or unit price, and it has a 100% maximum discount
the following warning will be displayed:
Clicking Yes will set the discount amount to 0.
Note that all the above logic simply calculates and displays the applicable discount. The user creating the invoice/charge can override the calculated discount.
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.
Payment Discounts
You can give a discount at payment time. When the payment is being entered, select a payment type of 'Discount' and enter the discount amount. Thus if the customer is paying $1234, this can be 'paid' by a $1000 cheque and a $234 discount. The Till Balance report will show these discount payments and their total.
Discounts can be disabled by selecting the Disable Discounts flag on the Practice Location.