[checkout] Complimentary postage - suggestion

davidwwatts

Joined: 2007-12-06
Posts: 35
Posted: Wed, 2009-05-06 07:42

I'm using 0.4.3 of the Checkout module. I have configured a discount code that includes free postage (checking the "Compl. Postage" checkbox). However, I notice that during the checkout process, Gallery prompts the user as follows:

1. User adds photos to cart
2. User clicks link to view the cart and checkout
3. User enters quantities, the discount code, and clicks Continue to Checkout
4. User is prompted "Your order requires postage. Please confirm your selection.". A shipping charge is shown ($5)
5. User clicks Continue to Checkout a 2nd time
6. User now sees discount plus $0 shipping

Step 4 is unexpected - since the discount code in step 3 has free shipping, I would expect that steps 4 and 5 would be automatically bypassed.

Can this be added to the next version of Checkout please?

Thanks.
David.


Gallery version = 2.2.6 core 1.2.0.8
PHP version = 5.2.9 cgi
Webserver = Apache/2.0.63 (Unix) mod_ssl/2.0.63 OpenSSL/0.9.8k mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 DAV/2
Database = mysqli 5.0.77-log, lock.system=flock
Toolkits = Exif, ImageMagick, NetPBM, Gd, ArchiveUpload
Acceleration = none, none
Operating system = FreeBSD rs15.whbdns.com 6.2-RELEASE-p12 FreeBSD 6.2-RELEASE-p12 #0: Sat Sep 6 01:30:14 GMT 2008

:/usr/obj/usr/src/sys/SMP-RS amd64
Default theme = zam
gettext = enabled
Locale = en_US
Browser = Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 (.NET CLR 3.5.30729)
Rows in GalleryAccessMap table = 52
Rows in GalleryAccessSubscriberMap table = 5462
Rows in GalleryUser table = 2
Rows in GalleryItem table = 5461
Rows in GalleryAlbumItem table = 71
Rows in GalleryCacheMap table = 0

 
alecmyers

Joined: 2006-08-01
Posts: 4338
Posted: Wed, 2009-05-06 08:28
Quote:
Step 4 is unexpected - since the discount code in step 3 has free shipping, I would expect that steps 4 and 5 would be automatically bypassed.

It may be free of charge, but the purchaser still needs to make a choice of eg. carrier, service, packaging etc.

The discount just sets the cost of the shipping to zero, it doesn't choose the service on the customer's behalf.

Quote:
A shipping charge is shown ($5)

The shipping charge isn't shown - it's shown as "from $5", as an indicator. The final charge isn't displayed until the second page when it's (correctly) given as $0.

The awkwardness in your case is that you have only one postage service, so there's nothing to choose. Also you don't have an initial quantity set, so the first time the page is displayed there are no products which require postage so the "choice" (of the one postage rate) isn't shown which is why you have to go back to the page after you've set one of the quantities to non-zero.

I will see if it's possible to do this: If postage is required, but there's only one postage option, assume it, and proceed.

In the short term, set an initial quantity for your most popular size. That way when the cart page is shown the postage will already be there and your customers won't have to revisit the page. Alternatively, you could do a code hack always to show the (one) postage option.

The problem is caused by trying to be all things to all people. Imagine a situation where you sell downloads - you don't want the postage options to appear on the screen at all, until someone chooses something that needs a delivery charge.

 
alecmyers

Joined: 2006-08-01
Posts: 4338
Posted: Wed, 2009-05-06 09:14
Quote:
I will see if it's possible to do this: If postage is required, but there's only one postage option, assume it, and proceed.

Here's what you need to add (to file Confirm.inc, at line 288):

    	    /* If postage needed and only one post option exists, assume it */
    	    if ($postageBand && count($posts) == 1) {
	    	$items['postage'] = 0;
    	    }
 
davidwwatts

Joined: 2007-12-06
Posts: 35
Posted: Wed, 2009-05-06 13:47

Thanks Alec. I'll try that out.

Yes I see your point - the system has to be flexible enough to allow all variations of products.