Hello all -
If Magento was a commercial solution, then the questions I’m about to pose here would likely be considered ‘pre-sales’ questions. Since it’s Open Source, I’m just looking for some early guidance for a bigger project I’m about to take on.
Let me preface most of this by saying that I consider myself a fairly experience PHP developer and I’ve been doing [PHP/Web] programming for the better part of 10 years now. I’m familiar with MVC, use CodeIgniter for most of my projects but have also work with Zend Framework on occasion. The programming experience aside, I haven’t done a whole lot with regards to bigger e-commerce development. A few shopping carts, yes. CreditCard gateways of various kinds yes. But pretty much all hand coded. Could never warm up to Open Source solutions out there… especially not after working with the MVC pattern.
Therefore, when tasked with creating a multi-phased/tiered e-commerce solution for a client, I was delighted to come across Magento which presents a fresh approach at implementing e-commerce in PHP and - no less - is built on top of Zend Framework. Lots to look forward to and definitely has the feel of something that I can grow with and support for my clients.
I’ve installed Magento on my development machine and minus the Error parsing body - doesnât seem to be a chunked message error for which I found a fix here all went smooth. I’ve been browsing the docs, forums and wiki for a while now as well and believe that the only way I will agree to doing this project is using Magento.
With all that said - here’s my scenario. If you could, I’d appreciate comments and pointers to help me determine whether Magento is the right solution for me.
Phase One - Establish online ordering for Retailers
My client is a manufacturer. I the first phase, they want a ‘private’ storefront that will enable their retailers to order product online. This is envisioned to be functioning like a form to email type system. Wouldn’t really need to consider Magento for this, but the future phases certainly would.
The idea for this phase is to take the online orders and process them through the manufacturers internal systems the same way as if they were ordered via phone or other conventional means. Payment remains via traditional means. Basically just a web-driven frontend to augment the existing order processes.
- Must be able to update products and price breaks remotely
- Price breaks have a default but may vary per client
- Client should be able to review their entire order history (not just online orders)
- The latter therefore also requires to update/add conventional orders remotely
Phase Two - Create Online webstores for Retailers
Initially about 100 stores ramping up to 200 over the first twelve months and probably peaking at about 500-600. The idea is that many of the smaller retailers really have no clue about e-commerce - or rather - how to get it started for their business. They don’t have the resources and expertise to hire programmers to create a quality online experience. What they do have is requests / pressure from their clientele to offer online ordering capabilities. As this is in the interest of the manufacturer, they want to provide a service to their retailers to provide fully-branded and managed web-stores to kickstart their e-commerce experience.
These [consumer facing] stores would be full-blown with credit-card processing and all that connected with that. Here’s where Magento comes in. I’m not certain whether I should/would deploy these stores as independent Magento sites or via the multi-store management feature of magento. Part of the decision would depend on performance/data separation concerns and also how fine-grained access to the backend can be set up. I’d imagine that at least some stores would want to have the ability to manage their products directly. Quite possibly there will be different requirements across stores, so some would be fully managed (using Magento Multiple Store manager) and some would be more independent.
The stores in this phase would only offer products available through the manufacturer, essentially feeding the order management system built in Phase One transparently for the retailer. The manufacturer would handle all the credit-card processing and basically repay the markup to their retailers on a regular basis.
The manufacturer wants the store backend interface to be such that a retailer could pick and choose which products they’d want to resell and at which price. I could already see in the product management interface that products can be enabled/disabled so this won’t be an issue. However, the manufacturer products should be ‘locked’, so that the store owner would not be able to delete them completely or modify the ‘cost’ of the product. Also - I currently only see one ‘cost’ field, rather than price breaks for the cost. I’d like the retailer to be able to ‘see’ their breaks, but not be able to edit them. I assume this could be done by treating the templates accordingly?
- Must be able to update products and price breaks remotely (for manufacturer products)
- Must be able to ‘lock’ manufacturer products so they can’t be deleted.
- Orders for manufacturers products directly placed with manufacturer, order status visible to retailer in the order sytems, order status visible to consumer in the webstore
Phase Three - Allow Retail online-stores to sell 3rd party products
An expansion of Phase II. This would probably require that retailers handle their own credit-card processing. The manufacturers products could still be ordered immediately but 3rd party products ordering/backordering would need to be handled at the retailer level. Given this scenario I’d assume it would be more appropriate to have each store run as a separate Magento app?
In all of the above, when I talk about remote updatability, I’m thinking about a semi-realtime approach. As shouldn’t come as a surprise to the experienced reader here, the manufacturers internal IT processes are heavily guarded and they don’t care to open holes that would e.g. allow the webstore to ‘poll’ data realtime.
So what I’m envisioning is to provide them with a ‘pull/push’ API that allows them to provide/request data from the Magento database at their leisure. At the most basic level, I’d envision using the Dataflow tool - setting up policies for file exchange letting the upload change files and then processing them immediately to Dataflow. But that’s really only useful for batches.
To get closer to an event-based workflow on their end, I’m envisioning providing SOAP services which would enable them to ‘push’ on any given event in their internal systems and calling on the Magento internal API’s to fullfil the requests on the public side. I haven’t been able to look much into the access and/or documentation for these APIs so I’d appreciate some feedback on how possible this is with the current version of Magento. On DataFlow I’ve read that SOAP could be a driver for it, but in the current download there only seems to be local and ftp filesystem based support for batches. Is the SOAP thing something that’s still in development?
My deadline for Phase I would be Feb’09 with about 200 storefronts to be completed by 2010. Do you think that in general the Phase I goal is feasible? Establish 200 storefronts in through 2009 would measure up to almost a store a day. Just from the store perspective - is that feasible? I’ll allocate resources if I need them, but if anyone has good experience on setting something like this up, perhaps you could share your wisdom.
Thanks for staying with me on this first, long post. I hope you’ll have some advice to share to help me get started with this endeavor. It most certainly has me very excited.