3.28 KB
Newer Older
bgm's avatar
bgm committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
CiviDiscount Extension


CiviDiscount now allows you to specify your own criteria for who should get automatic discounts. This is a powerful feature
but does require some technical skill and thorough testing is recommended. Use the api explorer (on your site
at the url civicrm/api/explorer) to help you discover the api options you could pass.

You need to specify an API Entity that you want to query and a query string. If you specify contact then the logged in contact id
will be passed in as 'id'. For all other api it will be passed in as 'contact_id'

In this image you can see that contacts with a value of 1 in custom id field 65 (which happens to be 'are you retired' in this case)
will get an automatic discount if they meet other criteria above  - ie a minimum age of 65)

<img src=''>

19 20 21 22 23

View the [CiviDiscount documentation]( on

bgm's avatar
bgm committed
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

* Enhance UI with an "apply discount" button that updates displayed prices on any forms
  + basically you want to emulate having the discount code sent in via the URL and let the person know if discount code is
  + it would be nice to do this with ajax but isn't worth much effort.

* Create some user documentation
  + Two types of discounts: automatic membership and code-based.
  + Supports discounted memberships, events, pricesets
  + Describe automatic member discounts (use random code never given to public)
  + Show tracking interface


* Give some control over the placement of the discount code text field on the form.


* Fix/check cividiscount_civicrm_buildAmount() for both online and offline forms/cases (event registration):
  + check multi-participant case well (currently this needs to be enabled in code)
* Fix/check cividiscount_civicrm_buildForm() for both online, offline and renewal forms/cases (memberships):
  + check multi-step form case well
* Check all transaction amounts match amount displayed on forms.
* Fix or remove CDM_BAO_Item::copy(). Currently it's just a copy of CDM_BAO_Item::delete().
* Adapt for 4.2 priceset structure.
* Create menu link for CiviDiscount extension under Administer
* Fix cividiscount_civicrm_pre():
  + When a contact is deleted, we should also delete their tracking info/usage.
  + When removing participant (and additional) from events, also delete their tracking info/usage.
  + When deleting membership record, also delete their tracking info/usage
* Fix/check cividiscount_civicrm_postProcess() tracking for all forms/cases:
  + check we have correct participantID, membershipID, contributionID when it's needed for tracking
  + check generic generic contribution cases well (discount is not available for this)
* Fix/check discount tracking tabs.
* Generally clean up the code and logic.
* Carefully review discount verification and applicability:
  + fix _get_discounted_event_ids(), _get_discounted_priceset_ids(), _get_discounted_membership_ids() to return events/pricesets/memberships only for active code
* Enhance UI to show which discount code has been applied.
* Fix membership discounts not working from civicrm/contact/view [Submit Credit Card Membership] - CRM-11028.