Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Shipping Module Alteration...help!


jamesbr

Recommended Posts

Posted

I have this shipping method "zones" for EMS shipping instaled and working, I need to create a new method for "prioritario" but I dont know where to alter the code. I have tried some alterations but when uploaded it over writes the "zones" for EMS.

It will be very much apreciated any sort of information...help.. Thanks . :D Bellow the two php files.

 

The files have been renamed to prioritario.php

 

The code bellow goes in: shop/includes/languages/english/modules/shipping

 

<?php
define('MODULE_SHIPPING_ZONES_TEXT_TITLE', 'Envio por Prioritário');
define('MODULE_SHIPPING_ZONES_TEXT_DESCRIPTION', 'Tarifa do Prioritário');
define('MODULE_SHIPPING_ZONES_TEXT_WAY', 'Enviar <b>por Prioritário</b> a');
define('MODULE_SHIPPING_ZONES_TEXT_UNITS', 'kg(s)');
define('MODULE_SHIPPING_ZONES_INVALID_ZONE', 'Não há envio disponível para este País.');
define('MODULE_SHIPPING_ZONES_UNDEFINED_RATE', 'Impossível calcular os gastos de envio. Peso excede o limite para este meio de entrega.');
?>

 

 

The code bellow goes in: shop/includes/modules/shipping

 

<?php
class prioritario {
   var $code, $title, $description, $enabled, $num_zones;

// class constructor
   function prioritario() {
     $this->code = 'prioritario';
     $this->title = MODULE_SHIPPING_ZONES_TEXT_TITLE;
     $this->description = MODULE_SHIPPING_ZONES_TEXT_DESCRIPTION;
     $this->sort_order = MODULE_SHIPPING_ZONES_SORT_ORDER;
     $this->icon = '';
     $this->tax_class = MODULE_SHIPPING_ZONES_TAX_CLASS;
     $this->enabled = ((MODULE_SHIPPING_ZONES_STATUS == 'True') ? true : false);

     // CUSTOMIZE THIS SETTING FOR THE NUMBER OF ZONES NEEDED
     $this->num_zones = 5;
   }

// class methods
   function quote($method = '') {
     global $order, $shipping_weight, $shipping_num_boxes;

     $dest_country = $order->delivery['country']['iso_code_2'];
     $dest_zone = 0;
     $error = false;

     for ($i=1; $i<=$this->num_zones; $i++) {
       $countries_table = constant('MODULE_SHIPPING_ZONES_COUNTRIES_' . $i);
       $country_zones = split("[,]", $countries_table);
       if (in_array($dest_country, $country_zones)) {
         $dest_zone = $i;
         break;
       }
     }

     if ($dest_zone == 0) {
       $error = true;
     } else {
       $shipping = -1;
       $zones_cost = constant('MODULE_SHIPPING_ZONES_COST_' . $dest_zone);

       $zones_table = split("[:,]" , $zones_cost);
       $size = sizeof($zones_table);
       for ($i=0; $i<$size; $i+=2) {
         if ($shipping_weight <= $zones_table[$i]) {
           $shipping = $zones_table[$i+1];
           $shipping_method = MODULE_SHIPPING_ZONES_TEXT_WAY . ' ' . $dest_country . ' : ' . $shipping_weight . ' ' . MODULE_SHIPPING_ZONES_TEXT_UNITS;
           break;
         }
       }

       if ($shipping == -1) {
         $shipping_cost = 0;
         $shipping_method = MODULE_SHIPPING_ZONES_UNDEFINED_RATE;
       } else {
         $shipping_cost = ($shipping * $shipping_num_boxes) + constant('MODULE_SHIPPING_ZONES_HANDLING_' . $dest_zone);
       }
     }

     $this->quotes = array('id' => $this->code,
                           'module' => MODULE_SHIPPING_ZONES_TEXT_TITLE,
                           'methods' => array(array('id' => $this->code,
                                                    'title' => $shipping_method,
                                                    'cost' => $shipping_cost)));

     if ($this->tax_class > 0) {
       $this->quotes['tax'] = tep_get_tax_rate($this->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
     }

     if (tep_not_null($this->icon)) $this->quotes['icon'] = tep_image($this->icon, $this->title);

     if ($error == true) $this->quotes['error'] = MODULE_SHIPPING_ZONES_INVALID_ZONE;

     return $this->quotes;
   }

   function check() {
     if (!isset($this->_check)) {
       $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_SHIPPING_ZONES_STATUS'");
       $this->_check = tep_db_num_rows($check_query);
     }
     return $this->_check;
   }

   function install() {
     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) VALUES ('Enable Zones Method', 'MODULE_SHIPPING_ZONES_STATUS', 'True', 'Do you want to offer zone rate shipping?', '6', '0', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");
     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Tax Class', 'MODULE_SHIPPING_ZONES_TAX_CLASS', '0', 'Use the following tax class on the shipping fee.', '6', '0', 'tep_get_tax_class_title', 'tep_cfg_pull_down_tax_classes(', now())");
     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort Order', 'MODULE_SHIPPING_ZONES_SORT_ORDER', '0', 'Sort order of display.', '6', '0', now())");
     for ($i = 1; $i <= $this->num_zones; $i++) {
       $default_countries = '';
       if ($i == 1) {
         $default_countries = 'BR';
       }
       tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Zone " . $i ." Countries', 'MODULE_SHIPPING_ZONES_COUNTRIES_" . $i ."', '" . $default_countries . "', 'Comma separated list of two character ISO country codes that are part of Zone " . $i . ".', '6', '0', now())");
       tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Zone " . $i ." Shipping Table', 'MODULE_SHIPPING_ZONES_COST_" . $i ."', '3:8.50,7:10.50,99:20.00', 'Shipping rates to Zone " . $i . " destinations based on a group of maximum order weights. Example: 3:8.50,7:10.50,... Weights less than or equal to 3 would cost 8.50 for Zone " . $i . " destinations.', '6', '0', now())");
       tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Zone " . $i ." Handling Fee', 'MODULE_SHIPPING_ZONES_HANDLING_" . $i."', '0', 'Handling Fee for this shipping zone', '6', '0', now())");
     }
   }

   function remove() {
     tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
   }

   function keys() {
     $keys = array('MODULE_SHIPPING_ZONES_STATUS', 'MODULE_SHIPPING_ZONES_TAX_CLASS', 'MODULE_SHIPPING_ZONES_SORT_ORDER');

     for ($i=1; $i<=$this->num_zones; $i++) {
       $keys[] = 'MODULE_SHIPPING_ZONES_COUNTRIES_' . $i;
       $keys[] = 'MODULE_SHIPPING_ZONES_COST_' . $i;
       $keys[] = 'MODULE_SHIPPING_ZONES_HANDLING_' . $i;
     }

     return $keys;
   }
 }
?>

For those that help... THANKS. For those that would like to help and dont know how to... Thanks. For those that know how to help and dont help... Thanks (there are always the nice people that do help).

Posted

You need to rename all of the modules defined keys to be unique.

What I would recommend is doing a search and replace on both of your new prioritario files.

 

EG:

Replace all instances of:

MODULE_SHIPPING_ZONES_

with:

MODULE_SHIPPING_PRIORITARIO_

 

Ive pasted the corrected files below.

<?php
define('MODULE_SHIPPING_PRIORITARIO_TEXT_TITLE', 'Envio por Prioritário');
define('MODULE_SHIPPING_PRIORITARIO_TEXT_DESCRIPTION', 'Tarifa do Prioritário');
define('MODULE_SHIPPING_PRIORITARIO_TEXT_WAY', 'Enviar <b>por Prioritário</b> a');
define('MODULE_SHIPPING_PRIORITARIO_TEXT_UNITS', 'kg(s)');
define('MODULE_SHIPPING_PRIORITARIO_INVALID_ZONE', 'Não há envio disponível para este País.');
define('MODULE_SHIPPING_PRIORITARIO_UNDEFINED_RATE', 'Impossível calcular os gastos de envio. Peso excede o limite para este meio de entrega.');
?>

 

<?php
class prioritario {
 var $code, $title, $description, $enabled, $num_zones;

 // class constructor
 function prioritario() {
   $this->code = 'prioritario';
   $this->title = MODULE_SHIPPING_PRIORITARIO_TEXT_TITLE;
   $this->description = MODULE_SHIPPING_PRIORITARIO_TEXT_DESCRIPTION;
   $this->sort_order = MODULE_SHIPPING_PRIORITARIO_SORT_ORDER;
   $this->icon = '';
   $this->tax_class = MODULE_SHIPPING_PRIORITARIO_TAX_CLASS;
   $this->enabled = ((MODULE_SHIPPING_PRIORITARIO_STATUS == 'True') ? true : false);

   // CUSTOMIZE THIS SETTING FOR THE NUMBER OF ZONES NEEDED
   $this->num_zones = 5;
 }

 // class methods
 function quote($method = '') {
   global $order, $shipping_weight, $shipping_num_boxes;

   $dest_country = $order->delivery['country']['iso_code_2'];
   $dest_zone = 0;
   $error = false;

   for ($i=1; $i<=$this->num_zones; $i++) {
     $countries_table = constant('MODULE_SHIPPING_PRIORITARIO_COUNTRIES_' . $i);
     $country_zones = split("[,]", $countries_table);
     if (in_array($dest_country, $country_zones)) {
       $dest_zone = $i;
       break;
     }
   }

   if ($dest_zone == 0) {
     $error = true;
   } else {
     $shipping = -1;
     $zones_cost = constant('MODULE_SHIPPING_PRIORITARIO_COST_' . $dest_zone);

     $zones_table = split("[:,]" , $zones_cost);
     $size = sizeof($zones_table);
     for ($i=0; $i<$size; $i+=2) {
       if ($shipping_weight <= $zones_table[$i]) {
         $shipping = $zones_table[$i+1];
         $shipping_method = MODULE_SHIPPING_PRIORITARIO_TEXT_WAY . ' ' . $dest_country . ' : ' . $shipping_weight . ' ' . MODULE_SHIPPING_PRIORITARIO_TEXT_UNITS;
         break;
       }
     }

     if ($shipping == -1) {
       $shipping_cost = 0;
       $shipping_method = MODULE_SHIPPING_PRIORITARIO_UNDEFINED_RATE;
     } else {
       $shipping_cost = ($shipping * $shipping_num_boxes) + constant('MODULE_SHIPPING_PRIORITARIO_HANDLING_' . $dest_zone);
     }
   }

   $this->quotes = array('id' => $this->code,
                         'module' => MODULE_SHIPPING_PRIORITARIO_TEXT_TITLE,
                         'methods' => array(array('id' => $this->code,
                                                  'title' => $shipping_method,
                                                  'cost' => $shipping_cost)));

   if ($this->tax_class > 0) {
     $this->quotes['tax'] = tep_get_tax_rate($this->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
   }

   if (tep_not_null($this->icon)) $this->quotes['icon'] = tep_image($this->icon, $this->title);

   if ($error == true) $this->quotes['error'] = MODULE_SHIPPING_PRIORITARIO_INVALID_ZONE;

   return $this->quotes;
 }

 function check() {
   if (!isset($this->_check)) {
     $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_SHIPPING_PRIORITARIO_STATUS'");
     $this->_check = tep_db_num_rows($check_query);
   }
   return $this->_check;
 }

 function install() {
   tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) VALUES ('Enable Zones Method', 'MODULE_SHIPPING_PRIORITARIO_STATUS', 'True', 'Do you want to offer zone rate shipping?', '6', '0', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");
   tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Tax Class', 'MODULE_SHIPPING_PRIORITARIO_TAX_CLASS', '0', 'Use the following tax class on the shipping fee.', '6', '0', 'tep_get_tax_class_title', 'tep_cfg_pull_down_tax_classes(', now())");
   tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort Order', 'MODULE_SHIPPING_PRIORITARIO_SORT_ORDER', '0', 'Sort order of display.', '6', '0', now())");
   for ($i = 1; $i <= $this->num_zones; $i++) {
     $default_countries = '';
     if ($i == 1) {
       $default_countries = 'BR';
     }
     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Zone " . $i ." Countries', 'MODULE_SHIPPING_PRIORITARIO_COUNTRIES_" . $i ."', '" . $default_countries . "', 'Comma separated list of two character ISO country codes that are part of Zone " . $i . ".', '6', '0', now())");
     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Zone " . $i ." Shipping Table', 'MODULE_SHIPPING_PRIORITARIO_COST_" . $i ."', '3:8.50,7:10.50,99:20.00', 'Shipping rates to Zone " . $i . " destinations based on a group of maximum order weights. Example: 3:8.50,7:10.50,... Weights less than or equal to 3 would cost 8.50 for Zone " . $i . " destinations.', '6', '0', now())");
     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Zone " . $i ." Handling Fee', 'MODULE_SHIPPING_PRIORITARIO_HANDLING_" . $i."', '0', 'Handling Fee for this shipping zone', '6', '0', now())");
   }
 }

 function remove() {
   tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
 }

 function keys() {
   $keys = array('MODULE_SHIPPING_PRIORITARIO_STATUS', 'MODULE_SHIPPING_PRIORITARIO_TAX_CLASS', 'MODULE_SHIPPING_PRIORITARIO_SORT_ORDER');

   for ($i=1; $i<=$this->num_zones; $i++) {
     $keys[] = 'MODULE_SHIPPING_PRIORITARIO_COUNTRIES_' . $i;
     $keys[] = 'MODULE_SHIPPING_PRIORITARIO_COST_' . $i;
     $keys[] = 'MODULE_SHIPPING_PRIORITARIO_HANDLING_' . $i;
   }

   return $keys;
 }
}
?>

Posted

Hello Satish, thank you so much for the link with the resolution. It is so nice to see that OSC globolizes as I live in Brazil you in India. Thanks again. :thumbsup:

 

For those that help... THANKS. For those that would like to help and dont know how to... Thanks. For those that know how to help and dont help... Thanks (there are always the nice people that do help).

Posted

Welcome Jame :Ds

Ask/Skype for Free osCommerce value addon/SEO suggestion tips for your site.

 

Check My About US For who am I and what My company does.

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...