No matter what you do you should probably be moving to a real ecommerce solution rather than using webform module. I think both Ubercart and Ecommerce allow you to charge for an event registration with the appropriate add on modules.
To achieve all the little specifics you're looking for, you'll probably have to do some customization, but in the end, something like Ubercart will save you alot of hacking and gerry-rigging and it's really the right way to handle this.
You may also want to look at CiviEvent, an event management module that is part of the open source constituent relationship management platform, CiviCRM. CiviCRM has both a standalone version but also a version that operates as a Drupal module... Could be worth a look as might have more out-of-the-box support for events than eCommerce or Übercart.
(There is also an Übercart-CiviCRM integration module if you think you need *both*... which I have ported to Drupal 6 and which is currently in testing in that environment...)
Not sure if it is just me, or what I am doing is outside of the norm that there isn't a out of the box approach that looks good. Both Ubercart ( with webform associate and webform productize) came the closest, but it does not seem ready for use on a production site. Civievent works great out of the box, and if I had more time to invest in getting it setup I could have gotten it to look clean. The problem with Civievent I ran into was my registration form is so complex. See http://snipurl.com/98izf (This is slightly simplified over the paper version of the form.
Being I have already spent to much time on this, I created a web form to gather the information to get it in the hands of our events coordinator, and use ubercart to collect payment. It's not the best solution, but it works, and looks halfway decent. The backend is ugly and requires a little more work on putting pieces together, but I think this is more cost effective due to the number of events that require a deposit, and the number of participants.
I would have thought CiviEvent could handle your form. Did you try creating and then including a "civi profile" to handle the extra form fields? (go to Administer CiviCRM and then click on CiviCRM Profile). It's been a while since I've worked with CiviCRM so you're probably right.
As for Ubercart you might checkout the new book "Using Drupal". It includes a chapter on Ubercart. I've always used a separate 3rd party shopping cart but hope to test out Ubercart whenever I get the chance.
Thanks for the help, I'm gonna stick with the patched together solution, if you can call it that, for now. I think I pretty much have everything for our events done for this physical year. If we get refunded for year four of our grant I plan on having a better setup, but for now I have already put in way more hours then I get paid for, and I have many other projects that I have to get done.
So, I don't post here too often... maybe I should hang around a bit more. ;)
Basically, wanted to give you the heads up that when you get to Drupal 6, you should look into my UC Node Checkout module. It was originally developed for use by Lullabot on their Do It With Drupal seminar website. It's in use by various other companies for registering users for conferences as well.
The idea behind it is when a user chooses to add a specific product to the cart, they are redirected to a node add form for a node type of your choosing. They fill out the node info (i.e. whatever fields you define via CCK) and choose any product options on that page and then get redirected to the cart. The original product gets added to the cart along w/ any of the selected options, and the node remains associated w/ the product. These nodes will hang around post-checkout for you to use, and you'll probably need some sort of custom module to log updates to the nodes (like a "Paid" field). New in Drupal 6 are the attribute/options features and the ability to associate a single node type with multiple products through Views.
How does this help? Well, my new company Commerce Guys will be using this to sell seats at training events. We can list multiple training products with a set number of seats. We can then make a View that lists out any available training product nodes. This View will be associated with a "Registration" node type, so when someone comes to the site, they can just go to node/add/registration and choose the training they want to attend from a select list. The selected product will be the one that gets added to the cart once the registration form is completed.
All these registration nodes can be listed in a View post-checkout for simple administration. I like that, even if conceptually registrations aren't necessarily content on the site. I think the node-as-content concept is getting looser and looser, though, so I'm not too worried about that long term. I like to add a textfield to the registration nodes that I populate w/ a link to the order in the admin interface to make cruising around the admin area a little easier. The node checkout module lets you hide fields from customers, so they'll never even know such a field exists. :)
I think it's a solid system overall and might be a perfect fit for you when you start over on D6. I hope to post some tutorials on its use up in the future... no promises, though, as the schedule just gets busier and busier.
Ryan,
That sounds like a great solution, but i have a couple of questions. I am transitioning a church site to Drupal 6.
First, do you think it would become an issue having nodes created for each registration on high traffic sites? We would be using this for a church that has several events monthly (not all paid). Secondly, our church will also have an Ubercart store selling books, cd, mp3, etc. We would not want the bookstore admin have to deal with registrations or have them appear on their reports. I am sure filtering could clean that up a little.
I'm still in the discovery phase. So far Civicrm looks like a possible solution, but it seems heavy. I also have not seen where I can integrate it with webform for general contact form CRM. The sugarcrm to webfrom module seems to work well for that, yet lacks the event capabilities. But, that's getting off topic.
Phill,
We are using Ryan's excellent Node Checkout module to sell SaaS products that require additional information. It is low overhead and works well. We do have to filter the registration forms since they are node types but it isn't a big deal. As far as CRM goes, we are working on that. Expect us to release a module that grabs the user info out of Drupal to populate the new version of vTiger (5.1.0) with it's shiny new web services API. We are looking at two way communication for user information at first with the possibility of incorporating Ubercart's inventory (stock) information as well. I can see how this could be useful in managing membership for your site.
I need to adjust the way I register people to attend events. The old system is just uses the webform module to gather. Usually their names, age, and meal preference (if applicable) for both partisanships, along with a address, phone number, email address, names, ages, gender of any children if we offer child care at the event. We have started charging a refundable deposit to register for our events. One the class or event has been completed their deposit is returned. I have been presented with adding this function to our website with the addition of charging a $1.00 non-refundable processing fee to cover the costs of PayPal.
I am currently running Drupal 5 ( Drupal 6 is in the works but is not ready to go live yet )
both sites are set up to use Date/CCK/Views to list the events, webform to register for events. Our registration form is pretty consistent from event to event about the only thing that ever changes is if the event offers free child care or not, and if we offer a meal with a preference. Moving the data from Drupal 5 to Drupal 6 is not a big problem as long as I can tell who all has registered and paid using the online system before we take it off line, we can always just cut these people a check. I am starting from scratch with Drupal 6, so having an upgrade path from 5 to 6 isn't important.
Is there any suggestions for a way I can get this up and working quickly on Drupal 5, a solution for Drupal 6. Ideally this will have the ability to email a list of the people that have registered along with if they have paid or not to the person taking the registrations, and our bookkeeper.