The client I'm developing the module for doesn't need this, but it would still be great for UC Auction to have. It raises some implementation issues, however.

  • The sell price of an item is increased when a user makes a successful bid. When someone adds an item to their cart as a "buy it now" item, how do we change its price for that user, but still allow the item and its price to behave normally to other users who are bidding on it and may still be able to buy it if the "buy it now" user never checks out? Possibly create a duplicate "shadow" product node…?
  • When a user has bid upon an item, but someone later buys it now, what will that auction look like in the user's personal auction lists in their profile?
  • Should anything weird happen if an auction is bid above the "buy it now" price?

Comments

coloryan’s picture

Could it be listed as "buy it now" for the minimum price? Once the auction price passes the buy it now, the "buy it now" link drops as a choice?

- Or -

the product is either/or: an 'auction item' or a 'buy it now'?

Garrett Albright’s picture

Once the auction price passes the buy it now, the "buy it now" link drops as a choice?

This makes sense, but

the product is either/or: an 'auction item' or a 'buy it now'?

this doesn't - if it's only something which can be "bought now," then it should just be a normal product, not handled by the Auction module at all, right?

coloryan’s picture

the product is either/or: an 'auction item' or a 'buy it now'? <--- yes, just a normal product, blended into the list of items for sale/auction. Probably reading, "buy it now" instead of the auction button or something?

Garrett Albright’s picture

I'm going to spend some time today and see if it's practical to refractor the code so that it no longer stores the current high bid as the product's standard Ubercart sell price. This was always a bit of a hack anyway, and I suspect that doing away with it will make adding "buy now" functionality fairly trivial.

fossie’s picture

Hello,

This is in my opinion a good idea, also for autobidding. Did you already got some results with storing the price on another table?

Thx,
Fossie

Garrett Albright’s picture

I've had some success. I'm not storing the high bid price in another table so much as determining the high bid price by finding out what the highest stored bid on a product is - I can't recall why I didn't just do it this way before.

This will be included in the next CVS update I do; unfortunately that may be a ways off, as I'm sidetracked by other pressing projects at the moment.

Garrett Albright’s picture

I just pushed a CVS update which has a working implementation of Buy Now functionality - working, but extremely broken, the biggest problem being that auctions don't end when an item is purchased. The code is there but it's not working. However, since it looks like I'm going to have to push this project aside for a while again, I'd get the code out there for people to play with.

The schema has changed again, so please reinstall. I've also added a new API hook.

fossie’s picture

Thx, I'll play with it this Saturday.

Fossie

Garrett Albright’s picture

Okay, the newest dev release fixes all known brokenness with the Buy Now module. It should work just fine at this point.

Just a note on the implementation: when someone purchases an item using the Buy Now feature, a final high bid equal to the Buy Now price (which is the sell price for standard, non-auctioned products) is inserted into the bids table and the expiry time for the auction is moved to now, causing the auction to immediately expire so that no further bids may be accepted. There are no checks to make sure that the Buy Now price is higher than the current bid value…

Something that needs a little attention, both here and in other parts of UC Auction, is to make sure the buyer can't buy more than one of the item they've won (or are Buy Now-ing) from an auction.

Garrett Albright’s picture

Status: Active » Fixed

Status: Fixed » Closed (fixed)

Automatically closed -- issue fixed for 2 weeks with no activity.