Some of our libraries want to allow their patrons to renew items when they have hit their max fine limit. Other libraries want to block those renewals. This is currently a global setting; we'd like it to be configurable at the org unit level.
Here's my proposal. Currently, when a patron hits the max fine limit, a standing penalty is applied to their account. By default, that penalty (PATRON_EXCEEDS_FINES) is configured to block renewals. If the patron subsequently attempts to renew items, there is a database function (action.item_user_circ_test) that checks the patron's standing penalties to see if any of them should block the renewal. I'd like to modify this database function so that, if the patron has the PATRON_EXCEEDS_FINES penalty, it looks up a new org setting ("circ.max_fine.allow_renew"?) to decide whether to override the block and permit the renewal.
Alternative approaches:
1. Mentioned by Thomas Berezansky: Add another "result" field in the circ matrix for ignoring penalty blocks. Then you wouldn't be limited to just "by org unit" but could mix in other details like patron type.
2. Mentioned by Mike Rylander: Add a "penalty event map." Each org could map an event to a penalty, including custom ones. Default to the current hard-coded ones if no penalty is mapped.