Zen Cart Logo
Forums / Addon Shipping Modules / new shipping module

new shipping module

Views: 1,054

Results 1 to 7 of 7
21 Mar 2011, 9:12 PM
#1
enzo_ita avatar

enzo_ita

Zen Follower

Join Date:
Jul 2009
Posts:
402
Plugin Contributions:
0

new shipping module

Hi,
I want to add the following shipping module.
I cloned an existing one but there is no way to have it loaded in the admin area and install it.
This is the module

<?php
//
// +----------------------------------------------------------------------+
// |zen-cart Open Source E-commerce                                       |
// +----------------------------------------------------------------------+
// | Copyright (c) 2004 The zen-cart developers                           |
// |                                                                      |
// | http://www.zen-cart.com/index.php                                    |
// |                                                                      |
// | Portions Copyright (c) 2003 osCommerce                               |
// +----------------------------------------------------------------------+
// | This source file is subject to version 2.0 of the GPL license,       |
// | that is bundled with this package in the file LICENSE, and is        |
// | available through the world-wide-web at the following url:           |
// | http://www.zen-cart.com/license/2_0.txt.                             |
// | If you did not receive a copy of the zen-cart license and are unable |
// | to obtain it through the world-wide-web, please send a note to       |
// | [email protected] so we can mail you a copy immediately.          |
// +----------------------------------------------------------------------+
// $Id: celere1plus_insurance.php 2011-03-21 22:11:00 cloned from celere1plus.php drbyte $
//

  class celere1plusins {
    var $code, $title, $description, $icon, $enabled;

// class constructor
    function celere1plusins() {
      global $order, $db;

      $this->code = 'celere1plusins';
      $this->title = MODULE_SHIPPING_CELERE1PLUS_INSURANCE_TEXT_TITLE;
      $this->description = MODULE_SHIPPING_CELERE1PLUS_INSURANCE_TEXT_DESCRIPTION;
      $this->sort_order = MODULE_SHIPPING_CELERE1PLUS_INSURANCE_SORT_ORDER;
      $this->icon = '';
      $this->tax_class = MODULE_SHIPPING_CELERE1PLUS_INSURANCE_TAX_CLASS;
      $this->tax_basis = MODULE_SHIPPING_CELERE1PLUS_ISURANCE_TAX_BASIS;

	  // disable only when entire cart is free shipping
      if (zen_get_shipping_enabled($this->code)) {
        $this->enabled = ((MODULE_SHIPPING_CELERE1PLUS_INSURANCE_STATUS == 'True') ? true : false);
      }

      if ( ($this->enabled == true) && ((int)MODULE_SHIPPING_CELERE1PLUS_INSURANCE_ZONE > 0) ) {
        $check_flag = false;
        $check = $db->Execute("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_SHIPPING_CELERE1PLUS_INSURANCE_ZONE . "' and zone_country_id = '" . $order->delivery['country']['id'] . "' order by zone_id");
        while (!$check->EOF) {
          if ($check->fields['zone_id'] < 1) {
            $check_flag =  true;
            break;
          } elseif ($check->fields['zone_id'] == $order->delivery['zone_id']) {
            $check_flag = true;
            break;
          }
          $check->MoveNext();
        }

        if ($check_flag == false) {
          $this->enabled = false;
        }
      }
	//if (($this->enabled == true) && (IS_ADMIN_FLAG === false && $_SESSION['cart']->weight > 30)) $this->enabled = false;
    }

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

      $this->quotes = array('id' => $this->code,
                            'module' => MODULE_SHIPPING_CELERE1PLUS_INSURANCE_TEXT_TITLE,
                            'methods' => array(array('id' => $this->code,
                                                     'title' => MODULE_SHIPPING_CELERE1PLUS_INSURANCE_TEXT_WAY,
                                                     'cost' => MODULE_SHIPPING_CELERE1PLUS_INSURANCE_COST)));
      if ($this->tax_class > 0) {
        $this->quotes['tax'] = zen_get_tax_rate($this->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
      }

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

      return $this->quotes;
    }

    function check() {
      global $db;
      if (!isset($this->_check)) {
        $check_query = $db->Execute("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_SHIPPING_CELERE1PLUS_INSURANCE_STATUS'");
        $this->_check = $check_query->RecordCount();
      }
      return $this->_check;
    }

    function install() {
      global $db;
      $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Abilita la spedizione via Paccocelere 1 Plus ASSICURATO', 'MODULE_SHIPPING_CELERE1PLUS_INSURANCE_STATUS', 'True', 'Vuoi offrire la spedizione via Paccocelere 1 Plus ASSICURATA?', '6', '0', 'zen_cfg_select_option(array(\'True\', \'False\'), ', now())");
      $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Costo di Spedizione', 'MODULE_SHIPPING_CELERE1PLUS_INSURANCE_COST', '15.30', 'Spese di Spedizione per Paccocelere 1 Plus fino a 30 KG.', '6', '0', now())");
      $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Classe IVA', 'MODULE_SHIPPING_CELERE1PLUS_INSURANCE_TAX_CLASS', '0', 'Applica la seguente aliquota IVA ai costi di spedizione.', '6', '0', 'zen_get_tax_class_title', 'zen_cfg_pull_down_tax_classes(', now())");
      $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Base di Tassa', 'MODULE_SHIPPING_CELERE1PLUS_INSURANCE_TAX_BASIS', 'Shipping', 'Su quali basi vengono calcolate le Tasse sulle Spese di Spedizione.  Le opzioni sono:<br />Shipping - Basata sull\'indirizzo di Spedizione del Cliente<br />Billing - Basata sull\'indirizzo di Fatturazione del Cliente<br />Store - Basata sull\'indirizzo del Negozio se la Zona di Fatturazione/Spedizione è uguale alla Zona del Negozio', '6', '0', 'zen_cfg_select_option(array(\'Shipping\', \'Billing\', \'Store\'), ', now())");
      $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Zona di Spedizione', 'MODULE_SHIPPING_CELERE1PLUS_INSURANCE_ZONE', '0', 'Se viene selezionata una Zona, attiva questo metodo di spedizione soltanto per questa Zona.', '6', '0', 'zen_get_zone_class_title', 'zen_cfg_pull_down_zone_classes(', now())");
      $db->Execute("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Ordine di Visualizzazione', 'MODULE_SHIPPING_CELERE1PLUS_INSURANCE_SORT_ORDER', '0', 'Ordine di Visualizzazione.', '6', '0', now())");
    }

    function remove() {
      global $db;
      $db->Execute("delete from " . TABLE_CONFIGURATION . " where configuration_key like 'MODULE\_SHIPPING\_CELERE1PLUS\_INSURANCE\_%'");
    }

    function keys() {
      return array('MODULE_SHIPPING_CELERE1PLUS_INSURANCE_STATUS', 'MODULE_SHIPPING_CELERE1PLUS_INSURANCE_COST', 'MODULE_SHIPPING_CELERE1PLUS_INSURANCE_TAX_CLASS', 'MODULE_SHIPPING_CELERE1PLUS_INSURANCE_TAX_BASIS', 'MODULE_SHIPPING_CELERE1PLUS_INSURANCE_ZONE', 'MODULE_SHIPPING_CELERE1PLUS_INSURANCE_SORT_ORDER');
      
    }
  }
?>

I do not understand what I am missing in order to have it shown in the modules>shipping section of the admin area.
Can some one help me?
Thanks

22 Mar 2011, 2:04 AM
#2
rodg avatar

rodg

Deceased

Join Date:
Jan 2007
Location:
Australia
Posts:
6,263
Plugin Contributions:
4

Re: new shipping module

enzo-ita:

I do not understand what I am missing in order to have it shown in the modules>shipping section of the admin area.
Can some one help me?
Thanks

You probably just need to create a langauge file (even if it is unused/empty. It simply needs to exist)

Cheers
Rod

22 Mar 2011, 6:19 AM
#3
enzo_ita avatar

enzo_ita

Zen Follower

Join Date:
Jul 2009
Posts:
402
Plugin Contributions:
0

Re: new shipping module

Thanks Rod,
but unfortunately that is not the case.
I created the language file simply copying the english one in the italian folder.
If you do not have the language file the sistems warns you saying that the module can not be loaded because the language file does isnot there.
Any other idea?
Thanks

22 Mar 2011, 1:55 PM
#4
ajeh avatar

ajeh

Oba-san

Join Date:
Sep 2003
Location:
Ohio
Posts:
62,757
Plugin Contributions:
1

Re: new shipping module

I copied your code to:
/includes/modules/shipping/celere1plusins.php

and made a blank language file and placed it in:
/includes/languages/english/modules/shipping/celere1plusins.php

and installed the Shipping module and did a complete checkout with it ...

Can you check in the:
/cache

to see what debug logs you may be creating when you go to install this file?

22 Mar 2011, 5:34 PM
#5
enzo_ita avatar

enzo_ita

Zen Follower

Join Date:
Jul 2009
Posts:
402
Plugin Contributions:
0

Re: new shipping module

Ajeh:

I copied your code to:
/includes/modules/shipping/celere1plusins.php

and made a blank language file and placed it in:
/includes/languages/english/modules/shipping/celere1plusins.php

and installed the Shipping module and did a complete checkout with it ...

Can you check in the:
/cache

to see what debug logs you may be creating when you go to install this file?
Oh Well!!
I do not know if you did it on purpose, but you suggested me one thing. The file name must be the same of the class.
I renamed the files to match the class name et voilà! :clap: Installed without problems.
I have learned a lesson, the hard way, but it is the best way, because i will never forget this one!!

Thanks a lot!!
never wrote a php line before, so excuse me for my newbieism.

enzo

22 Mar 2011, 5:37 PM
#6
ajeh avatar

ajeh

Oba-san

Join Date:
Sep 2003
Location:
Ohio
Posts:
62,757
Plugin Contributions:
1

Re: new shipping module

That was a subtle hint ... but I wasn't quite ready to just say ... "Did you call the filename the right name or just make it up as you went along?" :cool:

22 Mar 2011, 5:41 PM
#7
enzo_ita avatar

enzo_ita

Zen Follower

Join Date:
Jul 2009
Posts:
402
Plugin Contributions:
0

Re: new shipping module

People from Ohio have one more gear .....:cool: