I am just integrating the signup_ecommerce module in a site for swimming workshops to create a booking system and realized that it has the basics, but if I was a programmer I would add some functionality. I would really appreciate your feedback whether that would be possible/worth to integrate in the existing module that's available at drupal.org/signup_ecommerce (maybe a version 2?), or maybe should I make my own fork/variation, based on my needs?

As far as i understand the way the module works now is by signing up a user when they submit their order* (see comment below). If this fails (booking closed/already signed up etc.) the user is still redirected to the payment gateway (eg. paypal). This has a few flaws. In order to fix them I would take the following approach:

1 More flexibility for integration as booking system
1a More flexible fields in the signup-form, and separate fields for transaction_id and personal info.
1b Add a required checkbox to the signup/booking form for 'I accept terms and conditions'.
1c Possibility to rename Signup to 'Book your place' or 'Make booking' or 'Submit'
(if you pay for signing up for an event it's called booking in English I think :-)

2 `A 'hook'(?) to catch signup submissions before they booking is finalized.
2a Check if the user is already signed up, if so display appropriate error message.
2b Check if already in cart, if not add to cart.
2c Only allow signup(_ec) module to add a booking to cart, disable /cart/add/nid for booking nodes
2d (If at all possible, kinda important) have a max quantity of 1 for a booking in the cart.

3 `Failure anticipation for order placement:
> IF signup is still open -> signup/book + only then place order.
> IF signup is closed -> give warning to user: "The following booking(s) cannot be finalized: ..."
And then three options to continue:

  1. remove (relevant) booking(s) from cart & continue checkout
  2. try again with same booking(s)
  3. empty cart and start again

NOTE: For my particular situation, (I understand there is another frequent scenario where people need to be able to buy seats in quantities) it's good if every user can only make one booking (and anonymous can only make one booking at a time. Also Signup is an attendance module, not a ticketing module. To allow users to sign up more than once (independent of how many seats they would book) is quite a radical change in the functionality of the module. I'd like to use Signup as it is, without changing the way it works and just integrate it more robustly with ecommerce.

* I realize there is also the option to only signup users when the payment is received, but this is not serving my needs and I can't imagine yet why anyone would need this option?! It seems to go against basic business principles not to reserve a place in a booking when the customer already placed an order, what if it's booked out by the time the cheque is cleared? You'd need to refund a grumpy customer...
In short, bad choice especially if you want to give customers the option to pay through cash/cheque/traditional bank transaction) Also bad choice in case something went wrong with the customers browser while they are paying at a gateway. Sometimes transactions fail and the customer is left in the dark. You still want to get their booking through and you can always fix payment later (you have to if the browser crashes in the first page of paypal...). The fact that they signed a booking in the first place means they are willing to pay.

It's different of course for file downloads, where you don't want to have anything to do with the customer except receiving their money, but even with with shippable products you want to give the customer alternative options if their first transaction didn't come through...
That said I'm not against "Pay before you exist for me" just can't see how this could work with a robust booking system, which I think is what this module could be!

ALSO: There seems to be an issue that hasn't been fixed yet with "signup when payment received"(independent from what happens if the attempt to signup fails by then) that the module seems to process the signup twice: http://drupal.org/node/280423
I don't exactly understand the consequences of this yet, but would for now just like the "signup when order complete" to work properly before fixing the other more complicated scenario of what to do with failed paypal transactions if set to "signup when payment received".

I hope this post was not too long to digest,
High Regards, Michael

Comments

tizzo’s picture

Status: Active » Closed (fixed)

I spoke to LindenLion and have learned that he has migrated his site to Ubercart. Some of these ideas would be helpful to add to this module but I have moved most of my sites to Ubercart as well and do not have a use for these features.

Unless a user wishes to sponsor development or submit a patch I do not intend to add any new features, only to fix bugs. Please feel free to reopen this issue if that is the case.