Hi all, Currently discounts, tax and shipping are all dealt with in their own separate handlers, and handled slightly differently from one another. I'd like to unify these into a more flexible system of "cart processors", objects which provide methods to modify the entire cart and each line item. Whenever the cart is modified, the line items and cart totals are recalculated by calling each of the cart processors in sequence. Think of it like middleware for shopping carts.
A new setting would be introduced to define the list of processors that should be run. The main point of this is to make it easier to define your own discount systems - cases like "free shipping for orders over $50" or "buy any two of this group of products and get a third free" or "registered users get 10% off" can't be implemented using the current discount system, and defining your own is pretty messy. If tax and shipping can be implemented under a system like this, it should simplify Cartridge's code in a few places as well. django-shop implements this as "cart modifiers" – check out the API at https://github.com/divio/django-shop/blob/master/shop/cart/cart_modifiers_base.py . Looking for general feedback, use cases, and any concerns or issues anyone can see with a system like this. Cheers, Alex -- You received this message because you are subscribed to the Google Groups "Mezzanine Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to mezzanine-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.