Zen Cart Logo
Forums / Addon Shipping Modules / Estonian SmartPost

Estonian SmartPost

Locked

Views: 2,244

Results 1 to 4 of 4
This thread is locked. New replies are disabled.
19 Oct 2009, 8:03 PM
#1
rait avatar

rait

New Zenner

Join Date:
Oct 2009
Posts:
6
Plugin Contributions:
0

Estonian SmartPost

Hello

I am just about done with setting up my shop, but now I have ran into a glitch.

The details:

Zen-Cart version: 1.3.8 patched to latest

Addons: PDF Order Center, Lightbox, Image Handler2, Google Analytics

The problem:

I need a special shipping module for SmartPost, which is a delivery system where the packages get delivered into SmartPost parcel machines. I forward the client the PIN code for the door, and they can go pick up their package.

Now for this to work, I need to present the customer with a drop-down box with available SmartPost parcel machine locations.

So a long story short: I need to add a drop-down list to my flat rate clone. And the selection the customer makes, needs to be stored with the order for my reference.

Hope this makes any sense. If you need me to be more specific, go ahead, just ask.

Thanks

Rait

21 Oct 2009, 6:56 AM
#2
rait avatar

rait

New Zenner

Join Date:
Oct 2009
Posts:
6
Plugin Contributions:
0

Re: Estonian SmartPost

Well, by now I've determined that it's either the SmartPost.php in my shipping modules that needs modification, or the shipping template tpl_checkout_shipping_default.php

I could probably manage to add the dropdown into one of those, but the question is, how do I store the information on which of the locations was selected?

22 Oct 2009, 9:16 AM
#3
rait avatar

rait

New Zenner

Join Date:
Oct 2009
Posts:
6
Plugin Contributions:
0

Re: Estonian SmartPost

Ok, I have managed to create the dropdown menu where it needs to be. But now comes the question of how to store the selection?

Could someone tell me which file is responsible for storing the order data? Like which payment option was chosen and which shipping type.

This would help me greatly.

Thanks.

2 Nov 2009, 8:15 PM
#4
rait avatar

rait

New Zenner

Join Date:
Oct 2009
Posts:
6
Plugin Contributions:
0

Re: Estonian SmartPost

Ok, so below is my SmartPost.php file now. Basically a flat rate clone with the addition of the selection of the parcel terminals. The small part I added is just before the function install() near the bottom of the file.

Now all I need is to store the customers selection and atm I have absolutely no idea how to go about it. If anyone could point out a similar solution used somewhere within Zen Cart, I could study that and possibly make this work.

Please, any help is greatly appreciated.

<?php
//
// +----------------------------------------------------------------------+
// |zen-cart Open Source E-commerce                                       |
// +----------------------------------------------------------------------+
// | Copyright (c) 2009 Rait Lotamõis                           |
// |                                                                      |
// | 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.          |
// +----------------------------------------------------------------------+


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

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

      $this->code = 'SmartPost';
      $this->title = MODULE_SHIPPING_SMARTPOST_TEXT_TITLE;
      $this->description = MODULE_SHIPPING_SMARTPOST_TEXT_DESCRIPTION;
      $this->sort_order = MODULE_SHIPPING_SMARTPOST_SORT_ORDER;
      $this->icon = '';
      $this->tax_class = MODULE_SHIPPING_SMARTPOST_TAX_CLASS;
      $this->tax_basis = MODULE_SHIPPING_SMARTPOST_TAX_BASIS;

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

      if ( ($this->enabled == true) && ((int)MODULE_SHIPPING_SMARTPOST_ZONE > 0) ) {
        $check_flag = false;
        $check = $db->Execute("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_SHIPPING_SMARTPOST_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;
        }
      }
    }

// class methods
    function quote($method = '') {
      global $order;
$this->generateSelect('smartpost');
      $this->quotes = array('id' => $this->code,
                            'module' => MODULE_SHIPPING_SMARTPOST_TEXT_TITLE,
                            'methods' => array(array('id' => $this->code,
                                                     'title' => MODULE_SHIPPING_SMARTPOST_TEXT_WAY,
                                                     'cost' => MODULE_SHIPPING_SMARTPOST_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_SMARTPOST_STATUS'");
        $this->_check = $check_query->RecordCount();

      }
      return $this->_check;
    }

[B]// let's try and add the dropdown with locations next
    function generateSelect($name) {
	$arrSmartPostPlaces = unserialize(file_get_contents("http://www.smartpost.ee/places.php"));
	$html = '<select name="'.$name.'">';
	foreach ($arrSmartPostPlaces as $value) {
            		if ($value['active'] == 1) {
		$html .= '<option value='.$value['name'].'>'.htmlentities($value['name']).'</option>';
            		}
	}


	$html .= '</select>';
	return $html;
    }[/B]


    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 ('Enable SmartPost', 'MODULE_SHIPPING_SMARTPOST_STATUS', 'True', 'Do you want to offer SmartPost shipping?', '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 ('Shipping Cost', 'MODULE_SHIPPING_SMARTPOST_COST', '29.00', 'The shipping cost for all orders using this shipping method.', '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 ('Tax Class', 'MODULE_SHIPPING_SMARTPOST_TAX_CLASS', '0', 'Use the following tax class on the shipping fee.', '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 ('Tax Basis', 'MODULE_SHIPPING_SMARTPOST_TAX_BASIS', 'Shipping', 'On what basis is Shipping Tax calculated. Options are<br />Shipping - Based on customers Shipping Address<br />Billing Based on customers Billing address<br />Store - Based on Store address if Billing/Shipping Zone equals Store zone', '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 ('Shipping Zone', 'MODULE_SHIPPING_SMARTPOST_ZONE', '0', 'If a zone is selected, only enable this shipping method for that zone.', '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 ('Sort Order', 'MODULE_SHIPPING_SMARTPOST_SORT_ORDER', '0', 'Sort order of display.', '6', '0', now())");
    }

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

    function keys() {
      return array('MODULE_SHIPPING_SMARTPOST_LOCATION', 'MODULE_SHIPPING_SMARTPOST_STATUS', 'MODULE_SHIPPING_SMARTPOST_COST', 'MODULE_SHIPPING_SMARTPOST_TAX_CLASS', 'MODULE_SHIPPING_SMARTPOST_TAX_BASIS', 'MODULE_SHIPPING_SMARTPOST_ZONE', 'MODULE_SHIPPING_SMARTPOST_SORT_ORDER');
    }
  }
?>