Post by bronts » Tue Sep 11, 2012 10:00 am

That worked great. Thank you.
Sorry for the late reply.

User avatar
Active Member

Posts

Joined
Sat Jul 14, 2012 12:56 pm
Location - QLD Australia

Post by philbydevil » Tue Sep 11, 2012 10:36 am

Cool. A bit of lateral thinking!

I Image cmd-f, cmd-c, cmd-v, cmd-z + vQmod.
My favourite page...
v1.5.4.1


User avatar
Active Member

Posts

Joined
Fri Dec 03, 2010 5:20 am
Location - Sunshine Coast, Australia

Post by bronts » Tue Sep 11, 2012 11:16 am

Are there any other options we can edit?
As my pre-printed gift vouchers are DL enveloper size and throughout Oz they are a std stamp (60 cents each)
and to the rest of the world they are $1.65 for Asia Pacific and $2.35 for the rest of the world.

User avatar
Active Member

Posts

Joined
Sat Jul 14, 2012 12:56 pm
Location - QLD Australia

Post by philbydevil » Tue Sep 11, 2012 12:50 pm

Why post gift vouchers when there are electronic ones built into OC?

I Image cmd-f, cmd-c, cmd-v, cmd-z + vQmod.
My favourite page...
v1.5.4.1


User avatar
Active Member

Posts

Joined
Fri Dec 03, 2010 5:20 am
Location - Sunshine Coast, Australia

Post by bronts » Tue Sep 11, 2012 1:05 pm

we already havethem pre-printed and have been using them for ages and still have hundreds left :)

User avatar
Active Member

Posts

Joined
Sat Jul 14, 2012 12:56 pm
Location - QLD Australia

Post by philbydevil » Tue Sep 11, 2012 1:13 pm

You could make a lighter "satchel" for the domestic postage, not sure how the international will go in your commercial mod.

I Image cmd-f, cmd-c, cmd-v, cmd-z + vQmod.
My favourite page...
v1.5.4.1


User avatar
Active Member

Posts

Joined
Fri Dec 03, 2010 5:20 am
Location - Sunshine Coast, Australia

Post by bronts » Tue Sep 11, 2012 1:21 pm

Thanks, lighter will do.

As for international - I'm having to use the commercial extension for all International postage (so items will be shipped a little higher) until I get an edit for it.
I spoke to Johnathan Shaw from ClearThinking (he couldn't help) and he put me on to a few places that were partnered with opencart in Oz (they were too busy) and I have posted in the forum here requesting help (no reply so far).

I guess the voucher would only be a gram or so in weight.

User avatar
Active Member

Posts

Joined
Sat Jul 14, 2012 12:56 pm
Location - QLD Australia

Post by philbydevil » Tue Sep 11, 2012 2:17 pm

Can you figure out how to do the lighter satchel yourself from the previous changes?

I Image cmd-f, cmd-c, cmd-v, cmd-z + vQmod.
My favourite page...
v1.5.4.1


User avatar
Active Member

Posts

Joined
Fri Dec 03, 2010 5:20 am
Location - Sunshine Coast, Australia

Post by bronts » Tue Sep 11, 2012 2:40 pm

I can give it a go :)

User avatar
Active Member

Posts

Joined
Sat Jul 14, 2012 12:56 pm
Location - QLD Australia

Post by dywilson » Wed Sep 12, 2012 4:58 am

tecktipsaaran wrote:
Yes splitting the items when the weight is over 20kg is working OK.
I need to be able to split the items into separate packages when the girth is >=140cm.
Should it work? Or is there extra code required?
I have the same issue too - with orders of some long items and some wide items.
Currently the customer cannot proceed with shipping because the girth is >=140cm.
I'd love to see a mod to split items when the girth exceeds 140cm

Newbie

Posts

Joined
Wed Sep 12, 2012 4:52 am

Post by bronts » Wed Sep 12, 2012 8:42 am

yup, (finally *lol*) worked it out and it's working great - thank you!

User avatar
Active Member

Posts

Joined
Sat Jul 14, 2012 12:56 pm
Location - QLD Australia

Post by tecktipsaaran » Wed Sep 12, 2012 12:17 pm

tecktipsaaran wrote:

tora0515 wrote:

Having problems with dimensions.

I have some large products that are often bought in multiples. When more than 2 products are added to the cart, the dimensions exceed auspost's values. My customers receive the error: The dimensions exceed the maximum girth of 140cm.

Is there a way to split this into 2 shipments? Maybe using length and cubic volume?

Thanks



I am having the same problem.
Does anyone have a solution for this?

Thanks

Aaran
Hey,

I have kind of got the multiple parcels working.
When you have multiple of one type of item it works OK.
But when you add a second type of item the sum of both items is not the result you get.
Say you have 5 of one item that cost $84.50 to ship.
Then you add another item that cost $9.40 to ship.
The result i get is $78.50 for all 6 items not $93.90
And if i add 2 of the second item i get $68.20


The code I added is

Code: Select all

if($qnty >= 2 && $parcels[$parcel_num]['weight'] + $product_weight  >= 20000) {
              if ($parcels[$parcel_num]['weight'] == 0){
              $item_placed = true;
              }else{
             $parcel_num++;
             if($parcel_num == count($parcels)){
             $parcels[$parcel_num]['weight'] = 0;
             $parcels[$parcel_num]['items'] = 0;
             $parcels[$parcel_num]['single_w'] = 0;
             $parcels[$parcel_num]['single_h'] = 0;
             $parcels[$parcel_num]['single_l'] = 0;
             $parcels[$parcel_num]['cubed'] = 0;
             $parcels[$parcel_num]['price'] = 0;
             $item_placed = true;
                                                        }
                                                        }
                                                        }
          elseif ($qnty >= 2 && $parcels[$parcel_num]['weight'] + $product_weight  <= 20000) {
              $parcel_num++;
              $parcels[$parcel_num]['weight'] = $product_weight;
              $parcels[$parcel_num]['items'] = $qnty;
              $parcels[$parcel_num]['price'] = $cartitem['price'];
              $parcels[$parcel_num]['cubed'] = ($item_width * $item_height * $item_length);
              $parcels[$parcel_num]['single_w'] = $item_width;
              $parcels[$parcel_num]['single_h'] = $item_height;
              $parcels[$parcel_num]['single_l'] = $item_length;
              $item_placed = true;
                                                }
Not sure if this is correct just trying to get something to work.
After the existing code

Code: Select all

//There is an offset by 1, so it's really if parcel_num is more than parcels
                                        if($parcel_num == count($parcels)) {
                                            $parcels[$parcel_num]['weight'] = 0;
                                            $parcels[$parcel_num]['items'] = 0;
                                            $parcels[$parcel_num]['single_w'] = 0;
                                            $parcels[$parcel_num]['single_h'] = 0;
                                            $parcels[$parcel_num]['single_l'] = 0;
                                            $parcels[$parcel_num]['cubed'] = 0;
                                            $parcels[$parcel_num]['price'] = 0;
               }
             }
            }
Also when a single item's weight is >9999g I get the "Please enter a valid Weight" error.

Any help would be appreciated.

Thanks

Aaran

Newbie

Posts

Joined
Tue Sep 04, 2012 6:18 am

Post by bronts » Thu Sep 13, 2012 5:12 am

@dywilson and @Aaron,
Sorry, I can not help with this issue, you may need the help of Phil and/or Superjiuce (who has been MIA for some time).

Bronte.

User avatar
Active Member

Posts

Joined
Sat Jul 14, 2012 12:56 pm
Location - QLD Australia

Post by tecktipsaaran » Thu Sep 13, 2012 8:11 am

OK I have fixed the weight issue.
Can now get correct result for multiple of 1 item with a weight range from 1g to 20000g.
But the second type of item is still wrong.
Here is my whole auspost.php file.

Code: Select all

<?php
/*
  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
  ---------------------------------------------------------------------

  SuperJuice (Sam) opencart@pixeldrift.net
  OpenCart 1.5.1.1 Australia Post Module 1.5.1.1u4
  If you're going to use the code, give me some credit.. it's simple

*/

class ModelShippingAuspost extends Model {
	public function getQuote($address) {
		$this->load->language('shipping/auspost');

		if ($this->config->get('auspost_status')) {
      		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "zone_to_geo_zone WHERE geo_zone_id = '" . (int)$this->config->get('auspost_geo_zone_id') . "' AND country_id = '" . (int)$address['country_id'] . "' AND (zone_id = '" . (int)$address['zone_id'] . "' OR zone_id = '0')");
		
      		if (!$this->config->get('auspost_geo_zone_id')) {
        		$status = TRUE;
      		} elseif ($query->num_rows) {
        		$status = TRUE;
      		} else {
        		$status = FALSE;
      		}
		} else {
			$status = FALSE;
		}


		if ($status && ($this->config->get('auspost_standard') || $this->config->get('auspost_registered') || $this->config->get('auspost_insured') || $this->config->get('auspost_express') || $this->config->get('auspost_sea') || $this->config->get('auspost_air') || $this->config->get('auspost_satchreg') || $this->config->get('auspost_satcheby') || $this->config->get('auspost_satchexp') || $this->config->get('auspost_satchpla'))) {

			//Query to find id of grams (g) as 1.5.1.1 removed the availability of the named unit
			$unit_query =  $this->db->query("SELECT weight_class_id FROM " . DB_PREFIX . "weight_class_description where LOWER(unit) = 'g'");

                        if ($unit_query->num_rows) {$unit_g = $unit_query->row['weight_class_id'];}
	
			$weight = intval($this->weight->convert($this->cart->getWeight(), $this->config->get('config_weight_class_id'), $unit_g));
			
			$this->load->model('localisation/country');
			
			$country_info = $this->model_localisation_country->getCountry($address['country_id']);
	
			//Initialise variables	
			$method_data = array();
			$quote_data = array();
			$error = FALSE;	
	
			//These errors will clobber each other, so only one error will be displayed at a time	
			if (intval($weight) == 0) { $error = 'The cart weight is 0g, unable to calculate shipping costs';}

			if ((intval($weight) > 20000) && !$this->config->get('auspost_multiple')) {
				$error = 'Your cart is too heavy to ship with Australia Post (20kg+)';
			} else {
				//Still need to check if there is a single item > 20kg
				foreach ($this->cart->getProducts() as $weightcheck) {
					if(($this->weight->convert($weightcheck['weight'], $weightcheck['weight_class_id'], $unit_g) / $weightcheck['quantity']) > 20000) {
						$error = 'There is a single item in your cart that is too heavy to ship with Australia Post (20kg)';
					}
				}
			}

			if($country_info['iso_code_2'] == 'AU') {
				if (!preg_match('/^[0-9]{4}$/', $address['postcode'])) { $error = 'Your post code is not valid in Australia';}

				$validmethods = array("standard","registered","insured","express");
			} else {
				$validmethods = array("sea","air");
			}


			//Break the items up in to multiple parcels ready to be sent off to the quote function
			if((@count($validmethods) > 0) && $error == FALSE) {

				//Query to find out if mm are configured in the database because OpenCart developers thought it wasn't needed in the API (no error condition if it doesn't exist) 
				$unit_query =  $this->db->query("SELECT length_class_id FROM " . DB_PREFIX . "length_class_description where LOWER(unit) = 'mm'");

				if ($unit_query->num_rows) {$unit_mm = $unit_query->row['length_class_id'];}

			 	//Set the total cubed amount to 0
				$cartcubed = 0;

				//Setup the parcel array to take the contents from the cart
				$parcels = array();
				$parcels[0]['weight'] = 0;
				$parcels[0]['items'] = 0;
				$parcels[0]['single_w'] = 0;
				$parcels[0]['single_h'] = 0;
				$parcels[0]['single_l'] = 0;
				$parcels[0]['cubed'] = 0;
				$parcels[0]['price'] = 0;

				foreach ($this->cart->getProducts() as $cartitem) {
				
					//Split everything into parcels for multiple parcel shipping (all items now use this method) 
				
					$product_weight = $this->weight->convert($cartitem['weight'], $cartitem['weight_class_id'], $unit_g) / $cartitem['quantity'];

					//TODO: Place heavy items before light ones for optimal distribution (sort cart item array by weight before placing in parcels)

					//Always try and fill at the first parcel, then move to the next				
					$parcel_num = 0;
                       			for ($qnty = 1; $qnty <= $cartitem['quantity']; $qnty++) {
//					echo $cartitem['quantity'] ;
//					echo $parcels['parcel_num']['weight'];
					$item_placed = false;
						while(!$item_placed) { 
							if(($product_weight) >20000) {
							if($parcels[$parcel_num]['weight'] == 0) {
									//The parcel is empty but can't fit 20kg in it.. this should never happen, but this is here just in case! (possible rounding error?)
									//This item will never fit in a parcel, tell the loop to exit gracefully
									$item_placed = true;
//									echo " 0g " ;
								} else {
									//This parcel can't fit the item, move to the next parcel
									$parcel_num++;
//									echo " 20kg " ;
									//There is an offset by 1, so it's really if parcel_num is more than parcels
									if($parcel_num == count($parcels)) {
										$parcels[$parcel_num]['weight'] = 0;
										$parcels[$parcel_num]['items'] = 0;
										$parcels[$parcel_num]['single_w'] = 0;
										$parcels[$parcel_num]['single_h'] = 0;
										$parcels[$parcel_num]['single_l'] = 0;
										$parcels[$parcel_num]['cubed'] = 0;
										$parcels[$parcel_num]['price'] = 0;
//										echo " also 20KG " ;
								}
							   }
							}
							else {
								//Check the length class, if it isn't mm we need to convert it
								//If the length value is 0 we use 100mm (10cm) as a fallback
                                                			if($cartitem['width'] != 0) {
                                                        			$item_width = $this->length->convert($cartitem['width'], $cartitem['length_class_id'], $unit_mm);
                                                			} else {
										$item_width = 100;
									}

                                                			if($cartitem['height'] != 0) {
                                                        			$item_height = $this->length->convert($cartitem['height'], $cartitem['length_class_id'], $unit_mm);
                                                			} else {
										$item_height = 100;
									}

                                                			if($cartitem['length'] != 0) {
                                                        			$item_length = $this->length->convert($cartitem['length'], $cartitem['length_class_id'], $unit_mm);
                                                			} else {
										$item_length = 100;
									}
								$parcels[$parcel_num]['weight'] = $product_weight;
								$parcels[$parcel_num]['items'] = $cartitem['quantity'];

								//Price is used only for insurance (per parcel)
								$parcels[$parcel_num]['price'] = $cartitem['price'];

								//Cubed is used if there is more than one item in this parcel
								$parcels[$parcel_num]['cubed'] = ($item_width * $item_height * $item_length);

								//Single values are clobbered everytime an item is put into this parcel, single values are only used if this parcel contains a single item
								$parcels[$parcel_num]['single_w'] = $item_width;
                                                                $parcels[$parcel_num]['single_h'] = $item_height;
                                                                $parcels[$parcel_num]['single_l'] = $item_length;

								//We have placed the item in a parcel
								$item_placed = true;
								$parcel_num++;
//								echo "else";
							}
						} 
					}
					
			 	}

			}
			foreach ($validmethods as $postmethod) {
				if($this->config->get('auspost_' . $postmethod) && $error == FALSE) {
				
					$combined_postcharge = 0;

					for($plp = 0; $plp < count($parcels); $plp++) {
						if($parcels[$plp]['items'] == 1) {
							$postcharge = $this->getAuspostQuote($address['postcode'], $postmethod, $parcels[$plp]['weight'], $country_info['iso_code_2'], $parcels[$plp]['single_w'], $parcels[$plp]['single_h'], $parcels[$plp]['single_l'] , $parcels[$plp]['price']);
//					echo "1 post";	
							} else {
//					echo "2 post";
							$postcharge = $this->getAuspostQuote($address['postcode'], $postmethod, $parcels[$plp]['weight'], $country_info['iso_code_2'], $parcels[$plp]['single_w'], $parcels[$plp]['single_h'], $parcels[$plp]['single_l'] , $parcels[$plp]['price']);
							//$postcharge = $this->getAuspostQuote($address['postcode'], $postmethod, $parcels[$plp]['weight'], $country_info['iso_code_2'], round(pow($parcels[$plp]['cubed'],1/3)), round(pow($parcels[$plp]['cubed'],1/3)), round(pow($parcels[$plp]['cubed'],1/3)), $parcels[$plp]['price']);
						}
						if($postcharge[0] < 0) {
							$error = $postcharge[1];
						} else {
							$combined_postcharge += $postcharge[0];
						}
					}

					if($error == FALSE) {
                                       		$quote_data['auspost_' . $postmethod] = array(
                                               	     	'code'           => 'auspost.auspost_' . $postmethod,
                                                     	'title'        => $this->language->get('text_' . $postmethod). $postcharge[1],
                                                     	'cost'         => $combined_postcharge,
                                                     	'tax_class_id' => $this->config->get('auspost_tax_class_id'),
                                                     	'text'         => '$' . sprintf('%.2f', ($this->tax->calculate($combined_postcharge, $this->config->get('auspost_tax_class_id'), $this->config->get('config_tax'))))
                                        	);
					}
                        	}
			}

			//Code for prepaid satchels
			//Satchels do not feedback any errors, they are just displayed if the weight fits in the criteria and the method is enabled
			if($country_info['iso_code_2'] == 'AU') {
				foreach (array("satchreg", "satcheby", "satchexp", "satchpla") as $postmethod) {
					if($this->config->get('auspost_' . $postmethod) && $error == FALSE) {
						$satcharge = $this->getAuspostSatchel($postmethod, $weight);

						if($satcharge > 0) {
                                        		$quote_data['auspost_' . $postmethod] = array(
                                                		'code'           => 'auspost.auspost_' . $postmethod,
                                                		'title'        => $this->language->get('text_' . $postmethod),
                                                		'cost'         => $satcharge,
                                                		'tax_class_id' => $this->config->get('auspost_tax_class_id'),
                                                		'text'         => '$' . sprintf('%.2f', ($this->tax->calculate($satcharge, $this->config->get('auspost_tax_class_id'), $this->config->get('config_tax'))))
                                        		);
						}	
					}		
				}
			}
		
			//If there are no postage quotes, we don't want to return an empty set (but we do want to make sure errors are displayed)
			if((count($quote_data) != 0) || ($error != FALSE && $this->config->get('auspost_errdisplay')))  {
				$method_data = array(
					'code'         => 'auspost',
					'title'      => $this->language->get('text_title'),
					'quote'      => $quote_data,
					'sort_order' => $this->config->get('auspost_sort_order'),
					'error'      => $error 
				);
			}

			return $method_data;
		} //End Auspost module is enabled
	} //End of getQuote function


	private function getAuspostQuote($dst_postcode, $service, $weight, $country, $width, $height, $length, $parcel_value) {
                $ch = curl_init();

		//Registered and Registered (Insured) are both the 'standard' shipping method with additional fees added
		if($service == "registered" || $service == "insured") {
			$req_service = "standard";	
		} else {
			$req_service = $service;
		}
                
		//Australia Post appear to have some undocumented minimum values for different dimensions, check that items passed aren't below the minimums
		if($width < 30) {$width = 30;}
		if($height < 50) {$height = 50;}
		if($length < 50) {$length = 50;}

		$request_url = 'http://drc.edeliver.com.au/ratecalc.asp?pickup_postcode=' . $this->config->get('auspost_postcode') . '&width=' . $width . '&height=' . $height . '&length=' . $length . '&country=' . $country . '&service_type=' . $req_service . '&quantity=1&weight=' . $weight;
                      

		if(strtolower($country) == "au") {
			$request_url .= '&destination_postcode=' . $dst_postcode;
		}
	
                curl_setopt($ch, CURLOPT_URL,$request_url);
                curl_setopt($ch, CURLOPT_HEADER, 0);
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

                $get_quote = curl_exec($ch);

                curl_close($ch);

		if (strstr($get_quote, 'err_msg=OK') == FALSE) {

			//This is going to be returned as an error, set the value to less than 0
                        $auspost_quote[0] = -1;

			//Check if the string is even remotely what we are looking for (if so, we know Auspost doesn't like the combo)
			if(strstr($get_quote, 'err_msg=') == FALSE) {
                                $auspost_quote[1] = 'Error interfacing with Australia Post (connection)';
			} else {
				 if(strstr($get_quote, 'Weight Outside Valid Range') != FALSE) {
					//Special case where destination country won't accept parcels over a certain weight, give the customer a better explanation
					$auspost_quote[1] = 'Cart is too heavy to ship to this destination';
				 } else {
					//If it's not a special case, feed back the Australia Post error directly
					$auspost_quote[1] = substr(strstr($get_quote,'err_msg='),8);
				 }
			}
		
		} else {
			$get_quote_charge = preg_match('/^charge=([0-9]{1,3}\.?[0-9]{0,2})/', $get_quote, $quote_charge);

                        if (!isset($quote_charge[1])) {
                        	$auspost_quote[0] = -1;
				$auspost_quote[1] = 'Error interfacing with Australia Post (charge)';
			} else {
                        	$post_charge = sprintf('%.2f', $quote_charge[1]);

				//Calculate additional values for registered / insured
				if($service == "registered" || $service == "insured") {
					$post_charge = sprintf('%2.f', $post_charge + 3.15);
				}
				
				//Calculate additional insurance cost if the item is over $100AUD (first $100AUD is covered by standard registered post)
				if(($service == "insured") && ($parcel_value > 100)) {
					$post_charge = sprintf('%.2f', $post_charge + floatval(ceil(($parcel_value - 100) / 100) * 1.50));
				}	

                                if (floatval($this->config->get('auspost_handling')) > 0) {
                                	$post_charge = sprintf('%.2f', $post_charge + floatval($this->config->get('auspost_handling')));
				}

				if ($this->config->get('auspost_stripgst')) {	
					$auspost_quote[0] = sprintf('%.2f', ($post_charge / 11) * 10);
				} else {
					$auspost_quote[0] = sprintf('%.2f', $post_charge);
				}

                                $get_post_estimate = preg_match('/days=([0-9]{1,2})/', $get_quote, $post_estimate);

                                $auspost_quote[1] = '';
                
                                if ($this->config->get('auspost_estimate') && isset($post_estimate[1])) {
					//Added check for 0 as Australia Post modified their gateway to return 0 for international estimates as they no longer provide them
                                	if (is_numeric($post_estimate[1]) && $post_estimate[1] !=0) {
                                        	if($post_estimate[1] == 1) {
                                                	$auspost_quote[1] = ' (est. ' . $post_estimate[1] . ' day delivery)';
                                                } else {
                                                        $auspost_quote[1] = ' (est. ' . $post_estimate[1] . ' days delivery)';
                                                }
                                        }
                                }

			}
		}
	

		return $auspost_quote;
	}

	private function getAuspostSatchel($service, $weight) {
		//Define the different satchel sizes / prices (0 represents unavailable) - Updated April 2012
      		$satchel = array("satchreg" => array(0 => 7.20, 1 => 11.40, 2 => 14.50),
				 "satcheby" => array(0 => 6.20, 1=> 10.55, 2=> 0),
                       		 "satchexp" => array(0 => 9.55, 1 => 13.05, 2 => 21.65),
                       		 "satchpla" => array(0 => 13.90, 1 => 18.35, 2 => 0));

		//Default to return 0
		$satch_quote = 0;

		if($weight <= 500) { $satch_quote = $satchel[$service][0];}
		if(($weight > 500) && ($weight <= 3000)) { $satch_quote = $satchel[$service][1];}
		if(($weight > 3000) && ($weight <=5000)) { $satch_quote = $satchel[$service][2];}

		//Added > 0 check to ensure handling wasn't added if no satchel was suitable
                if ((floatval($this->config->get('auspost_handling')) > 0) && $satch_quote > 0 ) {
                	$satch_quote = sprintf('%.2f', $satch_quote + floatval($this->config->get('auspost_handling')));
                }

		if ($this->config->get('auspost_stripgst')) {$satch_quote = (($satch_quote / 11) * 10);}

		return $satch_quote;
	}
}
?>
I will keep working on it but any input is appreciated.

Aaran
Last edited by tecktipsaaran on Thu Sep 20, 2012 1:04 pm, edited 1 time in total.

Newbie

Posts

Joined
Tue Sep 04, 2012 6:18 am

Post by philbydevil » Thu Sep 13, 2012 8:14 am

Until split shipping is fixed properly, could you just remove the dimensions from your products, and make the weight what the post office cubes the item to. That's what I've always done with my products and haven't had any major problems so far.

You would be able to run a small query (or whatever it's called) through phpMyAdmin to reset all dimensions to zero (and if you've backed up your database, which you always do before attempting any change, then you can re-import these dimensions when the module is fixed).

I Image cmd-f, cmd-c, cmd-v, cmd-z + vQmod.
My favourite page...
v1.5.4.1


User avatar
Active Member

Posts

Joined
Fri Dec 03, 2010 5:20 am
Location - Sunshine Coast, Australia

Post by javonanka » Thu Sep 13, 2012 9:51 pm

Hi SuperJuice,

I'm running 1.5.4.1 and want to use your module. I'm getting the same error message as a few before me.

Notice: Undefined offset: 1 in /home/pixmieco/public_html/test/ecommerce/catalog/model/shipping/auspost.php on line 39

I have seen a solution in the forum, http://forum.opencart.com/viewtopic.php?f=114&t=82494, can you confirm if this is an ok fix to use? Will this be implemented in a new release?

Also, if I decide to use this module, is there a way of donating something to yourself for use of this module?


Cheers,
Johan

Newbie

Posts

Joined
Wed Sep 12, 2012 9:13 pm
Location - Brisbane, Australia

Post by philbydevil » Fri Sep 14, 2012 9:16 pm

@javonanka

That bug fix looks like it is for the crappy Australia Post module that is now included in the default installation. No idea why it's being used when SuperJuice's extension is much more comprehensive...

I would recommend deleting the default AusPost extension/module and installing the latest version of this mod (better back up first though, just in case).

I Image cmd-f, cmd-c, cmd-v, cmd-z + vQmod.
My favourite page...
v1.5.4.1


User avatar
Active Member

Posts

Joined
Fri Dec 03, 2010 5:20 am
Location - Sunshine Coast, Australia

Post by tecktipsaaran » Thu Sep 20, 2012 1:03 pm

Hey,

I have tried to get the multiple shipping working using weight and no dimensions.
But it's still not adding up.
Say I have 2 products which by them selves are $16.15 and $11.65.
When I have the both in the cart i get a quote of $19.90. ???

I don't know if it is something with the module or opencart?

While I was trying to get it working with dimensions it appeared that opencart was getting the 2 quotes but not adding them up, just using the last one.

Any help would be great.

Thanks

Aaran

Newbie

Posts

Joined
Tue Sep 04, 2012 6:18 am

Post by philbydevil » Thu Sep 20, 2012 4:37 pm

Have you double checked the calculation again the Australia Post website?

The postage cost for Product A OR Product B purchased on it's own isn't always the same as Product A AND Product B bought in the same transaction.

Is the combined weight under or over 20kg? If it's under 20kg, then it won't be split, so the cost won't be A + B (it'll be A + a bit more).

The way I've set all of my product weights is the cube weight (so type the dimensions into the Australia Post website and see what weight it spits out). When the cart goes over 20kg, it splits the shipment into two parcels, and ends up being a fair bit more expensive.

If the cart weight is under 20kg, then it just adds incremental costs.

This is the way Australia Post does it.

I Image cmd-f, cmd-c, cmd-v, cmd-z + vQmod.
My favourite page...
v1.5.4.1


User avatar
Active Member

Posts

Joined
Fri Dec 03, 2010 5:20 am
Location - Sunshine Coast, Australia

Post by circey » Tue Sep 25, 2012 9:22 am

Hey there. I'm having issues with this extension.

I installed the extension replacing the one that comes standard with OpenCart (1.5.4). When I change the extension status to "Enabled", the shipping popup on the cart (and checkout) no longer works. I get the spinning wheel gif and then nothing happens.

When I disable the extension, the shipping popup works as expected.

I've tried installing the extension twice now and am getting the same result. Any ideas?

MTIA.

New member

Posts

Joined
Thu Sep 23, 2010 4:22 pm
Who is online

Users browsing this forum: No registered users and 7 guests