Immer Wieder was Neues!
Happy Birthday Hunie
Gräzer Walzer
Friederike Reitzenstein
Irene's Waltz
Sei mir Gegruesst
Joyful Waltz
Brent Lucanus
Horst Ludwig Reitzenstein
Christine Reitzenstein

Lieder


Die Forelle
Kennst du das land
An Mignon


Karl Fitzgerald
Nyamburas Gesang
Neroli Duffy



Deutsche Taenze


Sechzehn Deutsche Tänze und Zwei Eccosaisen
Zwölf Deutsche Tänze
Laendler
Irene's Ecossaise


Eternal Soul
Improvisations
Interchange
Genealogy

Walzer

Anselm Huettenbrenner
Amy's Waltz
Autumn Waltz
Birthday Waltz
Cindy's Waltz
Cristina's Waltz
Cristina's Song
Jane's Waltz
Festive Waltz
Geburtstags Walzer
Kuan Yin's Song
Liebes Walzer
Litany
Maureen's Waltz
Margarets Waltz
Melancholy Waltz
New Year's Waltz
Nyambura's Waltz
Prayer for Kenya
Regal Menuet
Valentines Waltz
Viennese Dance
Viennese Waltz

Deutsche Tänze

Feierlicher Tanz
Geburtstags Deutsche
Hafez al Assad
I Love You Hunie
Tanz Des Sommers
Nostalgischer Tanz
My Dancing Shoes

Mass in G
Kyrie
Gloria

Sonata Form
Benjamin Fulford
Karen Hudes

Past Lives
Friends of Franz Schubert
...music by Frank Reitzenstein Copyright 2011

Interchange Shopping Cart Australia

Summary

Online Shipping Calculations in real time can be done on a pc instead of using LWP::UserAgent live. All the combinations ever required can be queried in one hour and a suitable table created. The result is surprisingly efficient, fast, reliable and pretested for potential conflicts.

Preamble

I was finally forced to upgrade from Interchange 5.2 to 5.6 because some of my customers' browsers were being seen as search engine spiders. When they clicked "Buy Now", nothing happened.

I thought everything went pretty well, but realized LWP::UserAgent, which I was using for Australia Post Delivery Rate Calculations in real time using http get with Australia Post had broken. Gert kindly offered some suggestions regarding testing LWP::UserAgent on the command line, but with regard to it's use in Interchange, so far no explanation has been found. I have to run a whole store now and I made the decision to create a solution.

Solution

Upgrading country.txt

The latest country.txt from the standard store looks like this. We wish to upgrade every column except "selector". This is because Australia Post has different shipping modes from Fedex and UPS.

country.txt

code sorder region selector shipmodes name iso isonum tax no_state
AF 9 Asia AF AIR SEA Afghanistan AFG 004  
AX 9 Europe AX AIR SEA Aland Islands ALA 248  

I wrote (Strawberry Perl) software in notepad which recovers the old data from 7 years back. The ECONOMY mode is no longer valid and so a few lines of code were used to tidy it up.

Software to assist in managing Australia Post country.txt during upgrades.

Copy country.txt from the standard shopping cart products directory and rename it country-standard.txt The country-aussievitamin.txt was likewise copied from my current installation. The output country.txt is ready to copy to the products directory of your store.

Type the commands:

Fedora>rm -f /var/lib/interchange/mystore/products/*.sql
Fedora>service interchange restart

..or as appropriate on your platform.

I also copied state.txt from the latest standard shopping cart products folder to replace the current one.

LWP::UserAgent Work Around

Australia Post DRC Example URL

When you copy this url, containing the required parameters into your browser, Australia Post return the shipping cost, ETA and an error flag.

http://drc.edeliver.com.au/rateCalc.asp?Height=100&Length=100&Weight=250&Width=100& Pickup_Postcode=6076&Destination_Postcode=01532&Country=AF&Service_Type=AIR&Quantity=1

Sample Australia Post DRC lookup.

All of our parcels are assumed to be 10cm x 10cm x 10cm. We use a US postcode as the destination as it works for all overseas countries.

Because LWP::UserAgent, when used from my own usertag produced neither error messages nor content I decided to use it on my pc instead. This software exhaustively queries the Australia Post DRC in one hour and produces a data file ready to replace LWP::UserAgent.

Query every combination of Country, Mode and Weight interval in one hour!

There are two outputs. shippingcharge.txt creates a file with a searchable key ready to use in an interchange mysql database. When the drc returns an error, these records are filtered out and dumped in log.tx instead.

As every (as many as we need) combinations of Country, Shipping Mode and Weight are queried, country, MODE and weight are also fused into a searchable key (with one space separator).

The result looks like this:

Country/Mode/Weight in grams, Shipping Charge, Delivery time in days.

AF AIR 10002810
AF AIR 200052.610
AF AIR 300067.510
AF AIR 400082.410
AF AIR 500097.310
AF AIR 6000112.210
AF AIR 7000127.110
AF AIR 800014210
AF AIR 9000156.910
AF AIR 10000171.810
AF AIR 11000186.710
AF AIR 12000201.610
AF AIR 13000216.510
AF AIR 14000231.410
AF AIR 15000246.310
AF AIR 16000261.210
AF AIR 17000276.110
AF AIR 1800029110
AF AIR 19000305.910
AF AIR 20000320.810
AF SEA 2507.0565
AF SEA 50011.265
AF SEA 100019.565
AF SEA 200036.165
AF SEA 300044.565
AF SEA 400052.965
AF SEA 500061.365
AF SEA 600069.765
AF SEA 700078.165
AF SEA 800086.565
AF SEA 900094.965
AF SEA 10000103.365
AF SEA 11000111.765
AF SEA 12000120.165
AF SEA 13000128.565
AF SEA 14000136.965
AF SEA 15000145.365
AF SEA 16000153.765
AF SEA 17000162.165
AF SEA 18000170.565
AF SEA 19000178.965
AF SEA 20000187.365
AL AIR 25011.3510
AL AIR 50019.310
AL AIR 100035.210

The first three columns are separated by one space and comprise a unique searchable key. The other columns are tab delimited as separate fields. The actual file has even more fields, the DRC URL, returned content and error codes.

shippingcharge.txt & shippingcharge.mysql

Copy shippingcharge.mysql to the /var/lib/interchange/mystore/dbconf/mysql/ folder.

Set permissions. I do:

chown mystore:mystore /var/lib/interchange/mystore/dbconf/mysql/*
chmod ug+rwx /var/lib/interchange/mystore/dbconf/mysql/*

Copy shippingcharge.txt to your products directory:

chown mystore:mystore /var/lib/interchange/products/*
chmod ug+rwx /var/lib/interchange/mystore/products/*
rm -f /var/lib/interchange/mystore/products/*.sql service interchange restart

The new table should appear in Admin Interface.

NOTE: The above database excludes countries which Australia Post does not service and also Australian destinations. The reason is because I am on an Australia Post contract which already looks up shipping charges based on weight and zones (from postcodes).

Australia Post Contract Rates for Australian Destinations

Six more files will get the Australia Post Contract rates working for Australian Destinations:

Copy parcels.txt to your products folder.
Copy zones.txt to your products folder.
Copy parcels.mysql to your dbconf/mysql folder.
Copy zones.mysql to your dbconf/mysql folder.
Copy shipping.asc to your products folder.
Copy australia_post_aussie.tag to your /usr/lib/interchange/code/UserTag/ folder.

Follow the above steps to set permissions and restart Interchange. You can rerun drc.pl yearly to update the CPI increase in shipping rates. Your checkout process will experience a new crispness, as looking up tables is much faster than LWP::UserAgent. Also there will be no problems when DRC is offline.

...painting by Frank Reitzenstein Copyright 2011
Powered by Interchange

Portions copyright 2002-2017 Interchange Development Group, freely redistributable under GPL