Newbie here.
I'm working on setting up a site where managers can book their employees/minions onto courses.
Some "simple" requirements:
1) Courses can be held several times, each with a limited capacity.
2) Managers pay for those courses (via ProtX, which is currently only available for Drupal 5.x).
3) Managers can book different people onto different courses in a single transaction: "I'll send Al and Bob on the French course, and Bob and Chris on German..."
4) Managers can see a usage history of the minions("Oh wait, Al's already taken French...")
5) Minions don't need Drupal logins, but do need contact details (name, address, etc) taken.
6) Managers need to be Drupal users.
I've got about five days to do this whole site from scratch, so I'm leery of rolling my own, hence turning to Drupal.
I've been searching for something like this manager/minion system, searching for "booking", "affiliate", "partner", etc, but not seen anything that looks likely to be usable for this out of the box.
Can anyone suggest modules that might help build it?
From point 1 ("Courses can be held several times, each with a limited capacity"), I'm thinking that course dates would be product variations, IF product variations can be limited on a per-variation basis?
From point 2 ("protX payment system") - how much work does a payment plugin for ecommerce take to write? Less than for Ubercart, I hear?
Viewing their employees' course histories is the biggie, though, I think. Any suggestions towards that one would be helpful, as I have no idea even where to even start.
Is it feasible for me to get this done in a week?
Comments
Comment #1
gordon commentede-Commerce 6.x-4.x has a built in availability feature which allows you to restrict the number of sames. This can be added to any product type.
The building of payment gateways is very simple. The method of building payment gateways has changed so that you concentrate on talking to the gateway provider and not having to know to much about e-Commerce to build it.
The only real development work that you need to do it being able to capture the persons names, but this is not too hard.
Comment #2
Dewi Morgan commentedLooks like every individual instance of a course needs to be a new product, in order to use the product availability thing with individual course dates.
There are no subproducts or product variations or product attributes or product groups, etc. Or if they do exist, they are very, very well hidden.
Fair enough, I can create a new product type, "course_date" with a CCK date field.
Then I can use 'Node Hierarchy' to associate each "course_date" node with its parent "course" node.
Then set that product type to be always a product. (typos in one of the strings there: "Indicate the products types that wil be available on the current type of node." should be more like "Indicate the product types that will be available on the current type of node.")
Now I need to remove some steps from the checkout. admin/ecsettings/checkout claims some of the pages will be shown "if required", but doesn't say how to tell it what I require. Another problem for another time, I guess... might need a plugin module to disable them, or of there are no hooks, then just hack them out by butchering the code.
Now I need to add a step to the checkout, where they select their users. There doesn't seem to be a way to add this step through the GUI, as a node or view, so I'm gonna assume I'll need to write a plugin module for it.
The availability feature, when turned on, doesn't add anything to the product properties that lets me set the availability through PHP, it's just a fixed value - fair enough, though, I can work with that by writing directly to the DB from my back-end code.
There seems no GUI way to change strings like "buy now" to "book now", and "out of stock" to "fully booked", but that'll probably not be too hard to hack in the code. Maybe there's even a nice hook for it.
So far, this is not looking very simple. Am I at least going in the right direction?
Comment #3
lipcpro commentedHave a look at this project http://drupal.org/project/stringoverrides
HTH
Comment #4
gordon commentedWell actually it can all be done in core with localization. This is how you would change all the string in all of Drupal.