Delivery Charge Based on Distance - Options?


I’ve been playing around with Samba and have almost everything working. I have already successfully implemented postcode search which is perfect and have linked it to a Google Maps Widget screen as detailed in Emre’s tutorial. I’m hoping for suggestions/workarounds on implementing delivery charges though.

My workflow is based on using ticket tags of “dine in / delivery”:

CURRENT: Customer orders delivery -> Select customer -> enter postcode and address -> open ticket -> tag ticket as “delivery” -> Make order & close ticket -> Open google maps widget and note distance -> close google maps and re-open ticket -> add service charge -> inform customer.

As you can imagine this isn’t very fluid, ideally I would like to view the distance before closing the ticket - at least this way I can inform the customer of the delivery charge straight away as sometimes they won’t carry on with the order if it’s a high delivery charge.

I have 3 current ideas of how to get around this:

  1. “The Ideal Situation” - Have Samba able “read” the distance after entering the postcode and automatically add it to the ticket. However I realise this may not be possible.

  2. “By postcode” - After having read Emre’s tutorial on custom delivery package, I noticed it had a close enough system where he would add service fees based on “region”.

In the UK, each city is split into many different postcodes with the Format M## #XX e.g. M19 2LH - The first letter indicates the town, the first two numbers indicate the sub-area and the last three are more or less random. Based on this there can be a large variety of postcodes just for one town. I was thinking of maybe setting e.g. all M19 to £2, all M20 to £3 etc. Would this work based on the custom delivery package system?

Ideally this solution would also need some way of over-riding it, as postcodes can be large areas which can cover many miles. So a a button maybe to make the delivery free if it’s a big order or nearby.

  1. “Manual Method” - In this method, the google map widget would need to be able to be used before closing ticket and even starting the order. Not sure how to go about this one though

Any suggestions would be more than welcome and I’d be very grateful for any advice. At the moment i’m leaning towards option number 2.


This has actually been done already in v5 Beta. So you can look forward to that. It uses Google Distance and Scripting. There is a quick thread and somewhat of a tutorial in the beta forums so when V5 is released you will have access to those threads.