#547 - Prevent retrieval of the same offer more than once by different offer codes
#195 and #493 - Respect offer max uses per customer as well as max uses per offer code. This version is not 3.0.x compatible as it adds a new column to OfferAudit but this represents work in progress
#195 - Replace reflection-based hashcode and equals builders to build on specific fields based on how slow using reflection can be
#550 - Add a static string reference to the default transaction manager to avoid typos in @Transactional annotations
#195 - Wrap the OfferAuditDao in a service to explicitly control transaction boundaries
#195 - Utilize the offer audit service rather than the dao directly in verifying max offer usage
#195 - Add a rollback handler for recording offer usage in the checkout workflow
#195 - Remove the the offerCodeId property on OfferAuditImpl and throw an UnsupportedOperation on the getters and setters. This also includes some documentation on how you can fix it in your own Broadleaf site and warnings whenever someone attempts to use it, and introduces a new entity with the intention of weaving it into OfferAuditImpl and getting the fixed functionality of max uses per offer code
#550 - Deprecate the AnnotationsCopyClassTransformer as it should not be used
#195 - Be a bit more explicit with max uses checks on offers
Merge pull request #195 from BroadleafCommerce/code-max-uses-fix

OfferCode provides a field for max uses.  However, that field is never honored.