Hi,

I have found a bug with the Australia Post Shipping module and require help in fixing it. I believe that I know what needs to be done but I don't have an indepth knowledge of the ZenCart software or php.

In australia_post_module_3.02.zip file \catalog\includes\modules\shipping\auspostair.php line 120 states

Code:
$shipping_auspostair_cost = $charge;
where $charge is the value returned ifrom the Australia Post Shipping calculator called in line 80.

http://drc.edeliver.com.au

The value returned in $charge Is always in Australian Dollars AUD

Then, in line 112 we have;

Code:
$shipping_auspostair_cost = $charge;
and in line 115 we have

Code:
   $this->quotes = array('id' => $this->code,
                            'module' => MODULE_SHIPPING_AUSPOSTAIR_TEXT_TITLE,
                            'methods' => array(array('id' => $this->code,
                                                     'title' => $shipping_auspostair_method,
                                                     'cost' => ($shipping_auspostair_cost + MODULE_SHIPPING_AUSPOSTAIR_HANDLING) + $insurance)));

The bug is that MODULE_SHIPPING_AUSPOSTAIR_HANDLING and $insurance are in the Admin set default currency, not necessarly Australian dollars AUD.

In my case I have set the Default currency to USD$. With the code as it is, it is interpreting the value in $charge as USD$

That is; when the calculator returns $8.50 for a postage charge, the module is interpreting it as USD$8.50, not AUD$8.50

This results in the customer being over charged!

As I see it, the fix is extremely simple. the value $charge
returned by the Australia Post calculator needs to be divided by the AUD currency rate to convert it to the default currency. Something like;

replace line 112 with;

Code:
$shipping_auspostair_cost = $charge/ AUD_CURRENCY_RATE;

How do I replace AUD_CURRENCY_RATE with the AUD currency rate set under Admin->Localization->Curriencies?

Or is there a conversion routine I can call?

I tried;

Code:
$shipping_auspostair_cost = $charge/ currencies->value(AUD);

but it didn't work

I presume I need to also do some type conversion/formating as well


Can someone please help me? I'm desperate.


Thanks,

Peter