So like most of us, I have a marketing department who thinks everything is a simple matter of "point and click" and that changes can be made in under 30 seconds because OF COURSE it's all done in Photoshop Obviously I'm trying to train (or would it be "educate"?) them to the reality of it all, but it's a slow process.
I'm interested in - conceptually - what some of you have seen in terms of best practices for accommodating complex e-commerce requirements.
For example, let's say I have a "product". This week the marketing department wants to run a special that says this product is 15% cheaper if another specific product is also in the user's cart. Next week they want to change it to be $10 off if the user also buys a special "plan" (from a different model). Week 3 they want to require the purchase of a different product to be with said product - you get the idea.
At any given time, I have AT MOST twelve hours notice on said changes. So far I've basically been telling them to piss off, but I really want to accommodate them if at all possible.
The first (and current) iteration of this e-commerce project, I focused on what I called a "centralized purchasing paradigm", where the user started at any point in a non-linear process, added a product or a "plan" to their "cart", and all kinds of calculations and conditional logic made its way into the view due to deadlines enforced by (the commonly clueless) "management". This obviously is bad design, but unfortunately due to the way I had it all tied in together and the various "requirements", I didn't really have much of a choice in the matter.
Now I'm looking at a re-work on this codebase, from scratch, and thinking that maybe it's best to separate products/sales by type, and force a pseudo-linear process, segmenting things out, because I don't know how to accommodate the strange scenarios above without writing fresh code logic each and every time. At least this way, I'm able to make changes to one type of product without affecting the others (separating them into multiple controllers and adding methods only on specific models).
This would theoretically result in controllers/routes like phones/ blackberry/buy/1 or phones/samsung/view/3 or plans/traditional/buy/4 and with the combination of plan 4 the customer MUST have feature ID 3 in their cart at an additional price, but if the plan is ID 2 they don't have to have it, if the plan ID is 5 they *can't* have it, etc.
What's the best (most modular/OOP) way to go about this? I really want to give our marketing department the agility that they're asking for, but I just don't know any good design patterns to accomplish this for a one-person (me) design, development, and web management "team" with multiple projects.
Does anyone have any input on better e-commerce design patterns, or can you point me to some trusted/realistic (theoretical, but with concrete examples) on the matter?
Thank you very much.