-
Notifications
You must be signed in to change notification settings - Fork 119
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rebuild shipping framework #14
Comments
Some planning started here: |
Ideas Fixed - define a set of priced shipping options, choose the name of each type of shipping, which might be a place name, service provider, length of time, or a combination. Customer chooses which option they want, and merchant just notifies the customer if they can't ship there. This could also benefit from some system that allows admins to make adjustments to an order, after negotiating a new price with the customer. see #66 Dynamic - expanding on the fixed system by changing options/pricing based on shipping zone, type of products, weight, etc etc. |
Yippie! sounds good man! |
The shop needs to allow varying degrees of granularity. That is, shops may be set up that cater for:
In a more advanced setting, a shop may have multiple physical locations. |
I've fleshed out some of these ideas in a sub-module: |
Just found this: https://github.com/Shopify/active_shipping ...looks like a useful place to start for figuring out a comprehensive shipping solution. |
Just found this https://github.com/patbolo/nzpost_ratefinder |
shot jam On Sat, Oct 13, 2012 at 8:07 AM, nimeso notifications@github.com wrote:
kind regards, AUS Office Like Us http://www.facebook.com/Onefatsheep NZ Office PO Box 36618 |
@nimeso yep, very useful thanks! |
I have made significant progress rebuilding the shipping framework, as you can see here: https://github.com/burnbright/silverstripe-shop-shippingframework I'm currently focusing on the TableShippingOption, which allows you to set rates for ranges. Range values can be weight, volume, value, and/or quantity. You can also restrict a rate to a region. This approach will provide great flexibility for merchants to customise their shipping calculations. My current problem to solve is storing null values for table rate ranges. With the default SilverStripe db field types, you can't store NULL for a numeric field...but I possibly need to distinguish between 0 and NULL. Eg a weight range might be from 0 - 10, but the other range types (volume, value, quantity) will store their ranges as 0 - 0. |
Hey ya J, Nice work man! I'm crazy nutz busy and will have a good look asap... I'm Maybe things to help with your NULL issue If you don't figure it out by the end of the day, I'll have a crack at it Cheers On Tue, Oct 16, 2012 at 12:59 PM, Jeremy Shipman
|
Thanks for the link to NullInt db field. I was considering that approach, but I've now solved the problem without using NULLs. Using the appropriate combination of ORs and ANDs I ignore a restriction if it's max value = 0. Here's some pesudo SQL to explain my solution, where 'value' is the current value we are checking, eg weight of a package.
... do this again for quantity, volume etc, and concatenate with ORs. Sort by lowest value. I'll push code shortly. |
Nice :) On Tue, Oct 16, 2012 at 2:30 PM, Jeremy Shipman notifications@github.comwrote:
|
here we go: silvershop/silvershop-shipping@dfe82b7 ...last things to do are: get regioned rates working, and integrating shipping estimates with checkout process. |
Regioned rates working. silvershop/silvershop-shipping@1b6088b |
I now need to provide shipping options at the checkout step, and it has made me realise I will need to make some significant architectural changes. Currently the checkout page consists of a single OrderForm, which I've managed to keep free from javascript up until now. Because the grand total relies on a shipping total, and that shipping total relies on an Address. This will require either updating the grand total via ajax, or splitting the ordering process into multiple steps. I'm going to try and do both. The checkout framework should be flexible enough that it can be displayed in parts: perhaps different controller actions, or worked through via ajax requests. |
I'm part-way through rearranging the checkout process to incorporate setting address before choosing shipping option. I've just looked at this diagram: http://www.databaseanswers.org/data_models/e_commerce/index.htm |
This has been built in a separate module, but is likely to be integrated into core later on. https://github.com/burnbright/silverstripe-shop-shippingframework |
Shipping is a complex part of an online shopping system. The shop module uses modifiers, with specific calculators that only really do a good job for basic 1-tier delivery rates. An effort is needed to provide regionalised/zoned shipping options.
Related: #11 #39
The text was updated successfully, but these errors were encountered: