Version Notes
Added export facility
Download this release
Release Info
| Developer | Magento Core Team |
| Extension | Webshopapps_Matrixrate |
| Version | 4.1.0 |
| Comparing to | |
| See all releases | |
Version 4.1.0
- app/code/community/Webshopapps/Matrixrate/Block/Adminhtml/Shipping/Carrier/Matrixrate/Grid.php +80 -0
- app/code/community/Webshopapps/Matrixrate/Block/Adminhtml/System/Config/Form/Field/Exportmatrix.php +61 -0
- app/code/community/Webshopapps/Matrixrate/Helper/Data.php +60 -0
- app/code/community/Webshopapps/Matrixrate/Model/Adminhtml/System/Config/Backend/Shipping/Matrixrate.php +37 -0
- app/code/community/Webshopapps/Matrixrate/Model/Adminhtml/System/Config/Source/Shipping/Matrixrate.php +42 -0
- app/code/community/Webshopapps/Matrixrate/Model/Carrier/Matrixrate.php +216 -0
- app/code/community/Webshopapps/Matrixrate/Model/Mysql4/Carrier/Matrixrate.php +392 -0
- app/code/community/Webshopapps/Matrixrate/Model/Mysql4/Carrier/Matrixrate/Collection.php +68 -0
- app/code/community/Webshopapps/Matrixrate/controllers/System/ConfigController.php +59 -0
- app/code/community/Webshopapps/Matrixrate/etc/config.xml +157 -0
- app/code/community/Webshopapps/Matrixrate/etc/system.xml +233 -0
- app/code/community/Webshopapps/Matrixrate/sql/matrixrate_setup/mysql4-install-2.0.1.php +34 -0
- app/code/community/Webshopapps/Matrixrate/sql/matrixrate_setup/mysql4-install-2.0.2.php +33 -0
- app/code/community/Webshopapps/Matrixrate/sql/matrixrate_setup/mysql4-upgrade-2.0.1-2.0.2.php +33 -0
- app/etc/modules/Webshopapps_Matrixrate.xml +12 -0
- app/locale/en_US/Auctionmaid_Matrixrate.csv +15 -0
- package.xml +25 -0
app/code/community/Webshopapps/Matrixrate/Block/Adminhtml/Shipping/Carrier/Matrixrate/Grid.php
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
|
| 4 |
+
class Webshopapps_Matrixrate_Block_Adminhtml_Shipping_Carrier_Matrixrate_Grid extends Mage_Adminhtml_Block_Shipping_Carrier_Tablerate_Grid
|
| 5 |
+
{
|
| 6 |
+
|
| 7 |
+
/**
|
| 8 |
+
* Prepare table columns
|
| 9 |
+
*
|
| 10 |
+
* @return Mage_Adminhtml_Block_Widget_Grid
|
| 11 |
+
*/
|
| 12 |
+
protected function _prepareColumns()
|
| 13 |
+
{
|
| 14 |
+
$this->addColumn('dest_country', array(
|
| 15 |
+
'header' => Mage::helper('adminhtml')->__('Country'),
|
| 16 |
+
'index' => 'dest_country',
|
| 17 |
+
'default' => '*',
|
| 18 |
+
));
|
| 19 |
+
|
| 20 |
+
$this->addColumn('dest_region', array(
|
| 21 |
+
'header' => Mage::helper('adminhtml')->__('Region/State'),
|
| 22 |
+
'index' => 'dest_region',
|
| 23 |
+
'default' => '*',
|
| 24 |
+
));
|
| 25 |
+
|
| 26 |
+
$this->addColumn('dest_city', array(
|
| 27 |
+
'header' => Mage::helper('adminhtml')->__('City'),
|
| 28 |
+
'index' => 'dest_city',
|
| 29 |
+
'default' => '*',
|
| 30 |
+
));
|
| 31 |
+
|
| 32 |
+
$this->addColumn('dest_zip', array(
|
| 33 |
+
'header' => Mage::helper('adminhtml')->__('Zip/Postal Code From'),
|
| 34 |
+
'index' => 'dest_zip',
|
| 35 |
+
));
|
| 36 |
+
|
| 37 |
+
$this->addColumn('dest_zip_to', array(
|
| 38 |
+
'header' => Mage::helper('adminhtml')->__('Zip/Postal Code To'),
|
| 39 |
+
'index' => 'dest_zip_to',
|
| 40 |
+
));
|
| 41 |
+
|
| 42 |
+
|
| 43 |
+
$label = Mage::getSingleton('matrixrate/carrier_matrixrate')
|
| 44 |
+
->getCode('condition_name_short', $this->getConditionName());
|
| 45 |
+
|
| 46 |
+
$this->addColumn('condition_from_value', array(
|
| 47 |
+
'header' => $label.' From',
|
| 48 |
+
'index' => 'condition_from_value',
|
| 49 |
+
));
|
| 50 |
+
|
| 51 |
+
$this->addColumn('condition_to_value', array(
|
| 52 |
+
'header' => $label.' To',
|
| 53 |
+
'index' => 'condition_to_value',
|
| 54 |
+
));
|
| 55 |
+
|
| 56 |
+
$this->addColumn('price', array(
|
| 57 |
+
'header' => Mage::helper('adminhtml')->__('Shipping Price'),
|
| 58 |
+
'index' => 'price',
|
| 59 |
+
));
|
| 60 |
+
|
| 61 |
+
$this->addColumn('delivery_type', array(
|
| 62 |
+
'header' => Mage::helper('adminhtml')->__('Delivery Type'),
|
| 63 |
+
'index' => 'delivery_type',
|
| 64 |
+
));
|
| 65 |
+
|
| 66 |
+
return Mage_Adminhtml_Block_Widget_Grid::_prepareColumns();
|
| 67 |
+
}
|
| 68 |
+
|
| 69 |
+
protected function _prepareCollection()
|
| 70 |
+
{
|
| 71 |
+
$collection = Mage::getResourceModel('matrixrate_shipping/carrier_matrixrate_collection');
|
| 72 |
+
$collection->setConditionFilter($this->getConditionName())
|
| 73 |
+
->setWebsiteFilter($this->getWebsiteId());
|
| 74 |
+
|
| 75 |
+
$this->setCollection($collection);
|
| 76 |
+
|
| 77 |
+
return Mage_Adminhtml_Block_Widget_Grid::_prepareCollection();
|
| 78 |
+
}
|
| 79 |
+
|
| 80 |
+
}
|
app/code/community/Webshopapps/Matrixrate/Block/Adminhtml/System/Config/Form/Field/Exportmatrix.php
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Magento
|
| 4 |
+
*
|
| 5 |
+
* NOTICE OF LICENSE
|
| 6 |
+
*
|
| 7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
| 8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
| 9 |
+
* It is also available through the world-wide-web at this URL:
|
| 10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
| 11 |
+
* If you did not receive a copy of the license and are unable to
|
| 12 |
+
* obtain it through the world-wide-web, please send an email
|
| 13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
| 14 |
+
*
|
| 15 |
+
* DISCLAIMER
|
| 16 |
+
*
|
| 17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
| 18 |
+
* versions in the future. If you wish to customize Magento for your
|
| 19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
| 20 |
+
*
|
| 21 |
+
* @category Mage
|
| 22 |
+
* @package Mage_Adminhtml
|
| 23 |
+
* @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
|
| 24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 25 |
+
*/
|
| 26 |
+
|
| 27 |
+
/**
|
| 28 |
+
* Export CSV button for shipping table rates
|
| 29 |
+
*
|
| 30 |
+
* @category Mage
|
| 31 |
+
* @package Mage_Adminhtml
|
| 32 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
| 33 |
+
*/
|
| 34 |
+
class Webshopapps_Matrixrate_Block_Adminhtml_System_Config_Form_Field_Exportmatrix extends Mage_Adminhtml_Block_System_Config_Form_Field
|
| 35 |
+
|
| 36 |
+
{
|
| 37 |
+
|
| 38 |
+
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
| 39 |
+
{
|
| 40 |
+
$this->setElement($element);
|
| 41 |
+
|
| 42 |
+
$buttonBlock = $this->getLayout()->createBlock('adminhtml/widget_button');
|
| 43 |
+
|
| 44 |
+
$params = array(
|
| 45 |
+
'website' => $buttonBlock->getRequest()->getParam('website')
|
| 46 |
+
);
|
| 47 |
+
|
| 48 |
+
$data = array(
|
| 49 |
+
'label' => Mage::helper('adminhtml')->__('Export CSV'),
|
| 50 |
+
|
| 51 |
+
'onclick' => 'setLocation(\''.Mage::helper('adminhtml')->getUrl("*/*/exportmatrix", $params) . 'conditionName/\' + $(\'carriers_matrixrate_condition_name\').value + \'/matrixrate.csv\' )',
|
| 52 |
+
'class' => '',
|
| 53 |
+
);
|
| 54 |
+
|
| 55 |
+
$html = $buttonBlock->setData($data)->toHtml();
|
| 56 |
+
|
| 57 |
+
return $html;
|
| 58 |
+
}
|
| 59 |
+
|
| 60 |
+
|
| 61 |
+
}
|
app/code/community/Webshopapps/Matrixrate/Helper/Data.php
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Magento
|
| 4 |
+
*
|
| 5 |
+
* NOTICE OF LICENSE
|
| 6 |
+
*
|
| 7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
| 8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
| 9 |
+
* It is also available through the world-wide-web at this URL:
|
| 10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
| 11 |
+
* If you did not receive a copy of the license and are unable to
|
| 12 |
+
* obtain it through the world-wide-web, please send an email
|
| 13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
| 14 |
+
*
|
| 15 |
+
* DISCLAIMER
|
| 16 |
+
*
|
| 17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
| 18 |
+
* versions in the future. If you wish to customize Magento for your
|
| 19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
| 20 |
+
*
|
| 21 |
+
* @category Mage
|
| 22 |
+
* @package Mage_Shipping
|
| 23 |
+
* @copyright Copyright (c) 2008 Irubin Consulting Inc. DBA Varien (http://www.varien.com)
|
| 24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 25 |
+
*/
|
| 26 |
+
/**
|
| 27 |
+
* Webshopapps Shipping Module
|
| 28 |
+
*
|
| 29 |
+
* NOTICE OF LICENSE
|
| 30 |
+
*
|
| 31 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
| 32 |
+
* that is bundled with this package in the file LICENSE.txt.
|
| 33 |
+
* It is also available through the world-wide-web at this URL:
|
| 34 |
+
* http://opensource.org/licenses/osl-3.0.php
|
| 35 |
+
* If you did not receive a copy of the license and are unable to
|
| 36 |
+
* obtain it through the world-wide-web, please send an email
|
| 37 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
| 38 |
+
*
|
| 39 |
+
* DISCLAIMER
|
| 40 |
+
*
|
| 41 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
| 42 |
+
* versions in the future. If you wish to customize Magento for your
|
| 43 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
| 44 |
+
*
|
| 45 |
+
* Shipping MatrixRates
|
| 46 |
+
*
|
| 47 |
+
* @category Webshopapps
|
| 48 |
+
* @package Webshopapps_Matrixrate
|
| 49 |
+
* @copyright Copyright (c) 2010 Zowta Ltd (http://www.webshopapps.com)
|
| 50 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 51 |
+
* @author Karen Baker <sales@webshopapps.com>
|
| 52 |
+
*/
|
| 53 |
+
|
| 54 |
+
/**
|
| 55 |
+
* Shipping data helper
|
| 56 |
+
*/
|
| 57 |
+
class Webshopapps_Matrixrate_Helper_Data extends Mage_Core_Helper_Abstract
|
| 58 |
+
{
|
| 59 |
+
|
| 60 |
+
}
|
app/code/community/Webshopapps/Matrixrate/Model/Adminhtml/System/Config/Backend/Shipping/Matrixrate.php
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Webshopapps Shipping Module
|
| 4 |
+
*
|
| 5 |
+
* NOTICE OF LICENSE
|
| 6 |
+
*
|
| 7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
| 8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
| 9 |
+
* It is also available through the world-wide-web at this URL:
|
| 10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
| 11 |
+
* If you did not receive a copy of the license and are unable to
|
| 12 |
+
* obtain it through the world-wide-web, please send an email
|
| 13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
| 14 |
+
*
|
| 15 |
+
* DISCLAIMER
|
| 16 |
+
*
|
| 17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
| 18 |
+
* versions in the future. If you wish to customize Magento for your
|
| 19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
| 20 |
+
*
|
| 21 |
+
* Shipping MatrixRates
|
| 22 |
+
*
|
| 23 |
+
* @category Webshopapps
|
| 24 |
+
* @package Webshopapps_Matrixrate
|
| 25 |
+
* @copyright Copyright (c) 2010 Zowta Ltd (http://www.webshopapps.com)
|
| 26 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 27 |
+
* @author Karen Baker <sales@webshopapps.com>
|
| 28 |
+
*/
|
| 29 |
+
|
| 30 |
+
|
| 31 |
+
class Webshopapps_Matrixrate_Model_Adminhtml_System_Config_Backend_Shipping_Matrixrate extends Mage_Core_Model_Config_Data
|
| 32 |
+
{
|
| 33 |
+
public function _afterSave()
|
| 34 |
+
{
|
| 35 |
+
Mage::getResourceModel('matrixrate_shipping/carrier_matrixrate')->uploadAndImport($this);
|
| 36 |
+
}
|
| 37 |
+
}
|
app/code/community/Webshopapps/Matrixrate/Model/Adminhtml/System/Config/Source/Shipping/Matrixrate.php
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Webshopapps Shipping Module
|
| 4 |
+
*
|
| 5 |
+
* NOTICE OF LICENSE
|
| 6 |
+
*
|
| 7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
| 8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
| 9 |
+
* It is also available through the world-wide-web at this URL:
|
| 10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
| 11 |
+
* If you did not receive a copy of the license and are unable to
|
| 12 |
+
* obtain it through the world-wide-web, please send an email
|
| 13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
| 14 |
+
*
|
| 15 |
+
* DISCLAIMER
|
| 16 |
+
*
|
| 17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
| 18 |
+
* versions in the future. If you wish to customize Magento for your
|
| 19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
| 20 |
+
*
|
| 21 |
+
* Shipping MatrixRates
|
| 22 |
+
*
|
| 23 |
+
* @category Webshopapps
|
| 24 |
+
* @package Webshopapps_Matrixrate
|
| 25 |
+
* @copyright Copyright (c) 2010 Zowta Ltd (http://www.webshopapps.com)
|
| 26 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 27 |
+
* @author Karen Baker <sales@webshopapps.com>
|
| 28 |
+
*/
|
| 29 |
+
|
| 30 |
+
class Webshopapps_Matrixrate_Model_Adminhtml_System_Config_Source_Shipping_Matrixrate
|
| 31 |
+
{
|
| 32 |
+
public function toOptionArray()
|
| 33 |
+
{
|
| 34 |
+
|
| 35 |
+
$tableRate = Mage::getSingleton('matrixrate_shipping/carrier_matrixrate');
|
| 36 |
+
$arr = array();
|
| 37 |
+
foreach ($tableRate->getCode('condition_name') as $k=>$v) {
|
| 38 |
+
$arr[] = array('value'=>$k, 'label'=>$v);
|
| 39 |
+
}
|
| 40 |
+
return $arr;
|
| 41 |
+
}
|
| 42 |
+
}
|
app/code/community/Webshopapps/Matrixrate/Model/Carrier/Matrixrate.php
ADDED
|
@@ -0,0 +1,216 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Webshopapps Shipping Module
|
| 4 |
+
*
|
| 5 |
+
* NOTICE OF LICENSE
|
| 6 |
+
*
|
| 7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
| 8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
| 9 |
+
* It is also available through the world-wide-web at this URL:
|
| 10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
| 11 |
+
* If you did not receive a copy of the license and are unable to
|
| 12 |
+
* obtain it through the world-wide-web, please send an email
|
| 13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
| 14 |
+
*
|
| 15 |
+
* DISCLAIMER
|
| 16 |
+
*
|
| 17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
| 18 |
+
* versions in the future. If you wish to customize Magento for your
|
| 19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
| 20 |
+
*
|
| 21 |
+
* Shipping MatrixRates
|
| 22 |
+
*
|
| 23 |
+
* @category Webshopapps
|
| 24 |
+
* @package Webshopapps_Matrixrate
|
| 25 |
+
* @copyright Copyright (c) 2010 Zowta Ltd (http://www.webshopapps.com)
|
| 26 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 27 |
+
* @author Karen Baker <sales@webshopapps.com>
|
| 28 |
+
*/
|
| 29 |
+
|
| 30 |
+
class Webshopapps_Matrixrate_Model_Carrier_Matrixrate
|
| 31 |
+
extends Mage_Shipping_Model_Carrier_Abstract
|
| 32 |
+
implements Mage_Shipping_Model_Carrier_Interface
|
| 33 |
+
{
|
| 34 |
+
|
| 35 |
+
protected $_code = 'matrixrate';
|
| 36 |
+
protected $_default_condition_name = 'package_weight';
|
| 37 |
+
|
| 38 |
+
protected $_conditionNames = array();
|
| 39 |
+
|
| 40 |
+
public function __construct()
|
| 41 |
+
{
|
| 42 |
+
parent::__construct();
|
| 43 |
+
foreach ($this->getCode('condition_name') as $k=>$v) {
|
| 44 |
+
$this->_conditionNames[] = $k;
|
| 45 |
+
}
|
| 46 |
+
}
|
| 47 |
+
|
| 48 |
+
/**
|
| 49 |
+
* Enter description here...
|
| 50 |
+
*
|
| 51 |
+
* @param Mage_Shipping_Model_Rate_Request $data
|
| 52 |
+
* @return Mage_Shipping_Model_Rate_Result
|
| 53 |
+
*/
|
| 54 |
+
public function collectRates(Mage_Shipping_Model_Rate_Request $request)
|
| 55 |
+
{
|
| 56 |
+
if (!$this->getConfigFlag('active')) {
|
| 57 |
+
return false;
|
| 58 |
+
}
|
| 59 |
+
|
| 60 |
+
// exclude Virtual products price from Package value if pre-configured
|
| 61 |
+
if (!$this->getConfigFlag('include_virtual_price') && $request->getAllItems()) {
|
| 62 |
+
foreach ($request->getAllItems() as $item) {
|
| 63 |
+
if ($item->getParentItem()) {
|
| 64 |
+
continue;
|
| 65 |
+
}
|
| 66 |
+
if ($item->getHasChildren() && $item->isShipSeparately()) {
|
| 67 |
+
foreach ($item->getChildren() as $child) {
|
| 68 |
+
if ($child->getProduct()->isVirtual() || $item->getProductType() == 'downloadable') {
|
| 69 |
+
$request->setPackageValue($request->getPackageValue() - $child->getBaseRowTotal());
|
| 70 |
+
}
|
| 71 |
+
}
|
| 72 |
+
} elseif ($item->getProduct()->isVirtual() || $item->getProductType() == 'downloadable') {
|
| 73 |
+
$request->setPackageValue($request->getPackageValue() - $item->getBaseRowTotal());
|
| 74 |
+
}
|
| 75 |
+
}
|
| 76 |
+
}
|
| 77 |
+
|
| 78 |
+
// Free shipping by qty
|
| 79 |
+
$freeQty = 0;
|
| 80 |
+
if ($request->getAllItems()) {
|
| 81 |
+
foreach ($request->getAllItems() as $item) {
|
| 82 |
+
if ($item->getProduct()->isVirtual() || $item->getParentItem()) {
|
| 83 |
+
continue;
|
| 84 |
+
}
|
| 85 |
+
|
| 86 |
+
if ($item->getHasChildren() && $item->isShipSeparately()) {
|
| 87 |
+
foreach ($item->getChildren() as $child) {
|
| 88 |
+
if ($child->getFreeShipping() && !$child->getProduct()->isVirtual()) {
|
| 89 |
+
$freeQty += $item->getQty() * ($child->getQty() - (is_numeric($child->getFreeShipping()) ? $child->getFreeShipping() : 0));
|
| 90 |
+
}
|
| 91 |
+
}
|
| 92 |
+
} elseif ($item->getFreeShipping()) {
|
| 93 |
+
$freeQty += ($item->getQty() - (is_numeric($item->getFreeShipping()) ? $item->getFreeShipping() : 0));
|
| 94 |
+
}
|
| 95 |
+
}
|
| 96 |
+
}
|
| 97 |
+
|
| 98 |
+
if (!$request->getConditionName()) {
|
| 99 |
+
$request->setConditionName($this->getConfigData('condition_name') ? $this->getConfigData('condition_name') : $this->_default_condition_name);
|
| 100 |
+
}
|
| 101 |
+
|
| 102 |
+
// Package weight and qty free shipping
|
| 103 |
+
$oldWeight = $request->getPackageWeight();
|
| 104 |
+
$oldQty = $request->getPackageQty();
|
| 105 |
+
|
| 106 |
+
$request->setPackageWeight($request->getFreeMethodWeight());
|
| 107 |
+
$request->setPackageQty($oldQty - $freeQty);
|
| 108 |
+
|
| 109 |
+
$result = Mage::getModel('shipping/rate_result');
|
| 110 |
+
$ratearray = $this->getRate($request);
|
| 111 |
+
|
| 112 |
+
$freeShipping=false;
|
| 113 |
+
|
| 114 |
+
if (is_numeric($this->getConfigData('free_shipping_threshold')) &&
|
| 115 |
+
$this->getConfigData('free_shipping_threshold')>0 &&
|
| 116 |
+
$request->getPackageValue()>$this->getConfigData('free_shipping_threshold')) {
|
| 117 |
+
$freeShipping=true;
|
| 118 |
+
}
|
| 119 |
+
if ($this->getConfigData('allow_free_shipping_promotions') &&
|
| 120 |
+
($request->getFreeShipping() === true ||
|
| 121 |
+
$request->getPackageQty() == $this->getFreeBoxes()))
|
| 122 |
+
{
|
| 123 |
+
$freeShipping=true;
|
| 124 |
+
}
|
| 125 |
+
if ($freeShipping)
|
| 126 |
+
{
|
| 127 |
+
$method = Mage::getModel('shipping/rate_result_method');
|
| 128 |
+
$method->setCarrier('matrixrate');
|
| 129 |
+
$method->setCarrierTitle($this->getConfigData('title'));
|
| 130 |
+
$method->setMethod('matrixrate_free');
|
| 131 |
+
$method->setPrice('0.00');
|
| 132 |
+
$method->setMethodTitle($this->getConfigData('free_method_text'));
|
| 133 |
+
$result->append($method);
|
| 134 |
+
|
| 135 |
+
if ($this->getConfigData('show_only_free')) {
|
| 136 |
+
return $result;
|
| 137 |
+
}
|
| 138 |
+
}
|
| 139 |
+
|
| 140 |
+
foreach ($ratearray as $rate)
|
| 141 |
+
{
|
| 142 |
+
if (!empty($rate) && $rate['price'] >= 0) {
|
| 143 |
+
$method = Mage::getModel('shipping/rate_result_method');
|
| 144 |
+
|
| 145 |
+
$method->setCarrier('matrixrate');
|
| 146 |
+
$method->setCarrierTitle($this->getConfigData('title'));
|
| 147 |
+
|
| 148 |
+
$method->setMethod('matrixrate_'.$rate['pk']);
|
| 149 |
+
|
| 150 |
+
$method->setMethodTitle(Mage::helper('matrixrate')->__($rate['delivery_type']));
|
| 151 |
+
|
| 152 |
+
$shippingPrice = $this->getFinalPriceWithHandlingFee($rate['price']);
|
| 153 |
+
$method->setCost($rate['cost']);
|
| 154 |
+
$method->setDeliveryType($rate['delivery_type']);
|
| 155 |
+
|
| 156 |
+
$method->setPrice($shippingPrice);
|
| 157 |
+
|
| 158 |
+
$result->append($method);
|
| 159 |
+
}
|
| 160 |
+
}
|
| 161 |
+
|
| 162 |
+
return $result;
|
| 163 |
+
}
|
| 164 |
+
|
| 165 |
+
public function getRate(Mage_Shipping_Model_Rate_Request $request)
|
| 166 |
+
{
|
| 167 |
+
return Mage::getResourceModel('matrixrate_shipping/carrier_matrixrate')->getNewRate($request,$this->getConfigFlag('zip_range'));
|
| 168 |
+
}
|
| 169 |
+
|
| 170 |
+
/**
|
| 171 |
+
* Get allowed shipping methods
|
| 172 |
+
*
|
| 173 |
+
* @return array
|
| 174 |
+
*/
|
| 175 |
+
public function getAllowedMethods()
|
| 176 |
+
{
|
| 177 |
+
return array('matrixrate'=>$this->getConfigData('name'));
|
| 178 |
+
}
|
| 179 |
+
|
| 180 |
+
|
| 181 |
+
public function getCode($type, $code='')
|
| 182 |
+
{
|
| 183 |
+
$codes = array(
|
| 184 |
+
|
| 185 |
+
'condition_name'=>array(
|
| 186 |
+
'package_weight' => Mage::helper('shipping')->__('Weight vs. Destination'),
|
| 187 |
+
'package_value' => Mage::helper('shipping')->__('Price vs. Destination'),
|
| 188 |
+
'package_qty' => Mage::helper('shipping')->__('# of Items vs. Destination'),
|
| 189 |
+
),
|
| 190 |
+
|
| 191 |
+
'condition_name_short'=>array(
|
| 192 |
+
'package_weight' => Mage::helper('shipping')->__('Weight'),
|
| 193 |
+
'package_value' => Mage::helper('shipping')->__('Order Subtotal'),
|
| 194 |
+
'package_qty' => Mage::helper('shipping')->__('# of Items'),
|
| 195 |
+
),
|
| 196 |
+
|
| 197 |
+
);
|
| 198 |
+
|
| 199 |
+
if (!isset($codes[$type])) {
|
| 200 |
+
throw Mage::exception('Mage_Shipping', Mage::helper('shipping')->__('Invalid Matrix Rate code type: %s', $type));
|
| 201 |
+
}
|
| 202 |
+
|
| 203 |
+
if (''===$code) {
|
| 204 |
+
return $codes[$type];
|
| 205 |
+
}
|
| 206 |
+
|
| 207 |
+
if (!isset($codes[$type][$code])) {
|
| 208 |
+
throw Mage::exception('Mage_Shipping', Mage::helper('shipping')->__('Invalid Matrix Rate code for type %s: %s', $type, $code));
|
| 209 |
+
}
|
| 210 |
+
|
| 211 |
+
return $codes[$type][$code];
|
| 212 |
+
}
|
| 213 |
+
|
| 214 |
+
|
| 215 |
+
|
| 216 |
+
}
|
app/code/community/Webshopapps/Matrixrate/Model/Mysql4/Carrier/Matrixrate.php
ADDED
|
@@ -0,0 +1,392 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Webshopapps Shipping Module
|
| 4 |
+
*
|
| 5 |
+
* NOTICE OF LICENSE
|
| 6 |
+
*
|
| 7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
| 8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
| 9 |
+
* It is also available through the world-wide-web at this URL:
|
| 10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
| 11 |
+
* If you did not receive a copy of the license and are unable to
|
| 12 |
+
* obtain it through the world-wide-web, please send an email
|
| 13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
| 14 |
+
*
|
| 15 |
+
* DISCLAIMER
|
| 16 |
+
*
|
| 17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
| 18 |
+
* versions in the future. If you wish to customize Magento for your
|
| 19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
| 20 |
+
*
|
| 21 |
+
* Shipping MatrixRates
|
| 22 |
+
*
|
| 23 |
+
* @category Webshopapps
|
| 24 |
+
* @package Webshopapps_Matrixrate
|
| 25 |
+
* @copyright Copyright (c) 2010 Zowta Ltd (http://www.webshopapps.com)
|
| 26 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 27 |
+
* @author Karen Baker <sales@webshopapps.com>
|
| 28 |
+
*/
|
| 29 |
+
class Webshopapps_Matrixrate_Model_Mysql4_Carrier_Matrixrate extends Mage_Core_Model_Mysql4_Abstract
|
| 30 |
+
{
|
| 31 |
+
protected function _construct()
|
| 32 |
+
{
|
| 33 |
+
$this->_init('shipping/matrixrate', 'pk');
|
| 34 |
+
}
|
| 35 |
+
|
| 36 |
+
public function getNewRate(Mage_Shipping_Model_Rate_Request $request,$zipRangeSet=0)
|
| 37 |
+
{
|
| 38 |
+
$read = $this->_getReadAdapter();
|
| 39 |
+
$write = $this->_getWriteAdapter();
|
| 40 |
+
|
| 41 |
+
$postcode = $request->getDestPostcode();
|
| 42 |
+
$table = Mage::getSingleton('core/resource')->getTableName('matrixrate_shipping/matrixrate');
|
| 43 |
+
|
| 44 |
+
if ($zipRangeSet) {
|
| 45 |
+
# Want to search for postcodes within a range
|
| 46 |
+
$zipSearchString = $read->quoteInto(" AND dest_zip<=? ", $postcode).
|
| 47 |
+
$read->quoteInto(" AND dest_zip_to>=? )", $postcode);
|
| 48 |
+
} else {
|
| 49 |
+
$zipSearchString = $read->quoteInto(" AND ? LIKE dest_zip )", $postcode);
|
| 50 |
+
}
|
| 51 |
+
|
| 52 |
+
for ($j=0;$j<10;$j++)
|
| 53 |
+
{
|
| 54 |
+
|
| 55 |
+
$select = $read->select()->from($table);
|
| 56 |
+
switch($j) {
|
| 57 |
+
case 0:
|
| 58 |
+
$select->where(
|
| 59 |
+
$read->quoteInto(" (dest_country_id=? ", $request->getDestCountryId()).
|
| 60 |
+
$read->quoteInto(" AND dest_region_id=? ", $request->getDestRegionId()).
|
| 61 |
+
$read->quoteInto(" AND STRCMP(LOWER(dest_city),LOWER(?)) = 0 ", $request->getDestCity()).
|
| 62 |
+
# $read->quoteInto(" AND ? LIKE dest_zip ) ", $postcode)
|
| 63 |
+
$zipSearchString
|
| 64 |
+
);
|
| 65 |
+
break;
|
| 66 |
+
case 1:
|
| 67 |
+
$select->where(
|
| 68 |
+
$read->quoteInto(" (dest_country_id=? ", $request->getDestCountryId()).
|
| 69 |
+
$read->quoteInto(" AND dest_region_id=? AND dest_city=''", $request->getDestRegionId()).
|
| 70 |
+
$zipSearchString
|
| 71 |
+
);
|
| 72 |
+
break;
|
| 73 |
+
case 2:
|
| 74 |
+
$select->where(
|
| 75 |
+
$read->quoteInto(" (dest_country_id=? ", $request->getDestCountryId()).
|
| 76 |
+
$read->quoteInto(" AND dest_region_id=? ", $request->getDestRegionId()).
|
| 77 |
+
$read->quoteInto(" AND STRCMP(LOWER(dest_city),LOWER(?)) = 0 AND dest_zip='')", $request->getDestCity())
|
| 78 |
+
);
|
| 79 |
+
break;
|
| 80 |
+
case 3:
|
| 81 |
+
$select->where(
|
| 82 |
+
$read->quoteInto(" (dest_country_id=? ", $request->getDestCountryId()).
|
| 83 |
+
$read->quoteInto(" AND STRCMP(LOWER(dest_city),LOWER(?)) = 0 AND dest_region_id='0'", $request->getDestCity()).
|
| 84 |
+
$zipSearchString
|
| 85 |
+
);
|
| 86 |
+
break;
|
| 87 |
+
case 4:
|
| 88 |
+
$select->where(
|
| 89 |
+
$read->quoteInto(" (dest_country_id=? ", $request->getDestCountryId()).
|
| 90 |
+
$read->quoteInto(" AND STRCMP(LOWER(dest_city),LOWER(?)) = 0 AND dest_region_id='0' AND dest_zip='') ", $request->getDestCity())
|
| 91 |
+
);
|
| 92 |
+
break;
|
| 93 |
+
case 5:
|
| 94 |
+
$select->where(
|
| 95 |
+
$read->quoteInto(" (dest_country_id=? AND dest_region_id='0' AND dest_city='' ", $request->getDestCountryId()).
|
| 96 |
+
# $read->quoteInto(" AND ? LIKE dest_zip ) ", $postcode)
|
| 97 |
+
$zipSearchString
|
| 98 |
+
);
|
| 99 |
+
break;
|
| 100 |
+
case 6:
|
| 101 |
+
$select->where(
|
| 102 |
+
$read->quoteInto(" (dest_country_id=? ", $request->getDestCountryId()).
|
| 103 |
+
$read->quoteInto(" AND dest_region_id=? AND dest_city='' AND dest_zip='') ", $request->getDestRegionId())
|
| 104 |
+
);
|
| 105 |
+
break;
|
| 106 |
+
|
| 107 |
+
case 7:
|
| 108 |
+
$select->where(
|
| 109 |
+
$read->quoteInto(" (dest_country_id=? AND dest_region_id='0' AND dest_city='' AND dest_zip='') ", $request->getDestCountryId())
|
| 110 |
+
);
|
| 111 |
+
break;
|
| 112 |
+
case 8:
|
| 113 |
+
$select->where(
|
| 114 |
+
" (dest_country_id='0' AND dest_region_id='0'".
|
| 115 |
+
$zipSearchString
|
| 116 |
+
);
|
| 117 |
+
break;
|
| 118 |
+
|
| 119 |
+
case 9:
|
| 120 |
+
$select->where(
|
| 121 |
+
" (dest_country_id='0' AND dest_region_id='0' AND dest_zip='')"
|
| 122 |
+
);
|
| 123 |
+
break;
|
| 124 |
+
}
|
| 125 |
+
|
| 126 |
+
|
| 127 |
+
if (is_array($request->getConditionName())) {
|
| 128 |
+
$i = 0;
|
| 129 |
+
foreach ($request->getConditionName() as $conditionName) {
|
| 130 |
+
if ($i == 0) {
|
| 131 |
+
$select->where('condition_name=?', $conditionName);
|
| 132 |
+
} else {
|
| 133 |
+
$select->orWhere('condition_name=?', $conditionName);
|
| 134 |
+
}
|
| 135 |
+
$select->where('condition_from_value<=?', $request->getData($conditionName));
|
| 136 |
+
|
| 137 |
+
|
| 138 |
+
$i++;
|
| 139 |
+
}
|
| 140 |
+
} else {
|
| 141 |
+
$select->where('condition_name=?', $request->getConditionName());
|
| 142 |
+
$select->where('condition_from_value<=?', $request->getData($request->getConditionName()));
|
| 143 |
+
$select->where('condition_to_value>=?', $request->getData($request->getConditionName()));
|
| 144 |
+
}
|
| 145 |
+
|
| 146 |
+
$select->where('website_id=?', $request->getWebsiteId());
|
| 147 |
+
|
| 148 |
+
$select->order('dest_country_id DESC');
|
| 149 |
+
$select->order('dest_region_id DESC');
|
| 150 |
+
$select->order('dest_zip DESC');
|
| 151 |
+
$select->order('condition_from_value DESC');
|
| 152 |
+
/*
|
| 153 |
+
pdo has an issue. we cannot use bind
|
| 154 |
+
*/
|
| 155 |
+
|
| 156 |
+
$newdata=array();
|
| 157 |
+
$row = $read->fetchAll($select);
|
| 158 |
+
if (!empty($row))
|
| 159 |
+
{
|
| 160 |
+
// have found a result or found nothing and at end of list!
|
| 161 |
+
foreach ($row as $data) {
|
| 162 |
+
$newdata[]=$data;
|
| 163 |
+
}
|
| 164 |
+
break;
|
| 165 |
+
}
|
| 166 |
+
}
|
| 167 |
+
return $newdata;
|
| 168 |
+
|
| 169 |
+
}
|
| 170 |
+
|
| 171 |
+
public function uploadAndImport(Varien_Object $object)
|
| 172 |
+
{
|
| 173 |
+
$csvFile = $_FILES["groups"]["tmp_name"]["matrixrate"]["fields"]["import"]["value"];
|
| 174 |
+
|
| 175 |
+
if (!empty($csvFile)) {
|
| 176 |
+
|
| 177 |
+
$csv = trim(file_get_contents($csvFile));
|
| 178 |
+
|
| 179 |
+
$table = Mage::getSingleton('core/resource')->getTableName('matrixrate_shipping/matrixrate');
|
| 180 |
+
|
| 181 |
+
$websiteId = $object->getScopeId();
|
| 182 |
+
$websiteModel = Mage::app()->getWebsite($websiteId);
|
| 183 |
+
/*
|
| 184 |
+
getting condition name from post instead of the following commented logic
|
| 185 |
+
*/
|
| 186 |
+
|
| 187 |
+
if (isset($_POST['groups']['matrixrate']['fields']['condition_name']['inherit'])) {
|
| 188 |
+
$conditionName = (string)Mage::getConfig()->getNode('default/carriers/matrixrate/condition_name');
|
| 189 |
+
} else {
|
| 190 |
+
$conditionName = $_POST['groups']['matrixrate']['fields']['condition_name']['value'];
|
| 191 |
+
}
|
| 192 |
+
|
| 193 |
+
// $conditionName = $object->getValue();
|
| 194 |
+
// if ($conditionName{0} == '_') {
|
| 195 |
+
// $conditionName = Mage::helper('core/string')->substr($conditionName, 1, strpos($conditionName, '/')-1);
|
| 196 |
+
// } else {
|
| 197 |
+
// $conditionName = $websiteModel->getConfig('carriers/matrixrate/condition_name');
|
| 198 |
+
// }
|
| 199 |
+
$conditionFullName = Mage::getModel('matrixrate_shipping/carrier_matrixrate')->getCode('condition_name_short', $conditionName);
|
| 200 |
+
if (!empty($csv)) {
|
| 201 |
+
$exceptions = array();
|
| 202 |
+
$csvLines = explode("\n", $csv);
|
| 203 |
+
$csvLine = array_shift($csvLines);
|
| 204 |
+
$csvLine = $this->_getCsvValues($csvLine);
|
| 205 |
+
if (count($csvLine) < 7) {
|
| 206 |
+
$exceptions[0] = Mage::helper('shipping')->__('Invalid Matrix Rates File Format');
|
| 207 |
+
}
|
| 208 |
+
|
| 209 |
+
$countryCodes = array();
|
| 210 |
+
$regionCodes = array();
|
| 211 |
+
foreach ($csvLines as $k=>$csvLine) {
|
| 212 |
+
$csvLine = $this->_getCsvValues($csvLine);
|
| 213 |
+
if (count($csvLine) > 0 && count($csvLine) < 7) {
|
| 214 |
+
$exceptions[0] = Mage::helper('shipping')->__('Invalid Matrix Rates File Format');
|
| 215 |
+
} else {
|
| 216 |
+
$countryCodes[] = $csvLine[0];
|
| 217 |
+
$regionCodes[] = $csvLine[1];
|
| 218 |
+
}
|
| 219 |
+
}
|
| 220 |
+
|
| 221 |
+
if (empty($exceptions)) {
|
| 222 |
+
$data = array();
|
| 223 |
+
$countryCodesToIds = array();
|
| 224 |
+
$regionCodesToIds = array();
|
| 225 |
+
$countryCodesIso2 = array();
|
| 226 |
+
|
| 227 |
+
$countryCollection = Mage::getResourceModel('directory/country_collection')->addCountryCodeFilter($countryCodes)->load();
|
| 228 |
+
foreach ($countryCollection->getItems() as $country) {
|
| 229 |
+
$countryCodesToIds[$country->getData('iso3_code')] = $country->getData('country_id');
|
| 230 |
+
$countryCodesToIds[$country->getData('iso2_code')] = $country->getData('country_id');
|
| 231 |
+
$countryCodesIso2[] = $country->getData('iso2_code');
|
| 232 |
+
}
|
| 233 |
+
|
| 234 |
+
$regionCollection = Mage::getResourceModel('directory/region_collection')
|
| 235 |
+
->addRegionCodeFilter($regionCodes)
|
| 236 |
+
->addCountryFilter($countryCodesIso2)
|
| 237 |
+
->load();
|
| 238 |
+
|
| 239 |
+
foreach ($regionCollection->getItems() as $region) {
|
| 240 |
+
$regionCodesToIds[$countryCodesToIds[$region->getData('country_id')]][$region->getData('code')] = $region->getData('region_id');
|
| 241 |
+
}
|
| 242 |
+
|
| 243 |
+
foreach ($csvLines as $k=>$csvLine) {
|
| 244 |
+
|
| 245 |
+
$csvLine = $this->_getCsvValues($csvLine);
|
| 246 |
+
|
| 247 |
+
if (empty($countryCodesToIds) || !array_key_exists($csvLine[0], $countryCodesToIds)) {
|
| 248 |
+
$countryId = '0';
|
| 249 |
+
if ($csvLine[0] != '*' && $csvLine[0] != '') {
|
| 250 |
+
$exceptions[] = Mage::helper('shipping')->__('Invalid Country "%s" in the Row #%s', $csvLine[0], ($k+1));
|
| 251 |
+
}
|
| 252 |
+
} else {
|
| 253 |
+
$countryId = $countryCodesToIds[$csvLine[0]];
|
| 254 |
+
}
|
| 255 |
+
|
| 256 |
+
if (!isset($countryCodesToIds[$csvLine[0]])
|
| 257 |
+
|| !isset($regionCodesToIds[$countryCodesToIds[$csvLine[0]]])
|
| 258 |
+
|| !array_key_exists($csvLine[1], $regionCodesToIds[$countryCodesToIds[$csvLine[0]]])) {
|
| 259 |
+
$regionId = '0';
|
| 260 |
+
if ($csvLine[1] != '*' && $csvLine[1] != '') {
|
| 261 |
+
$exceptions[] = Mage::helper('shipping')->__('Invalid Region/State "%s" in the Row #%s', $csvLine[1], ($k+1));
|
| 262 |
+
}
|
| 263 |
+
} else {
|
| 264 |
+
$regionId = $regionCodesToIds[$countryCodesToIds[$csvLine[0]]][$csvLine[1]];
|
| 265 |
+
}
|
| 266 |
+
|
| 267 |
+
if (count($csvLine)==9) {
|
| 268 |
+
// we are searching for postcodes in ranges & including cities
|
| 269 |
+
if ($csvLine[2] == '*' || $csvLine[2] == '') {
|
| 270 |
+
$city = '';
|
| 271 |
+
} else {
|
| 272 |
+
$city = $csvLine[2];
|
| 273 |
+
}
|
| 274 |
+
|
| 275 |
+
|
| 276 |
+
if ($csvLine[3] == '*' || $csvLine[3] == '') {
|
| 277 |
+
$zip = '';
|
| 278 |
+
} else {
|
| 279 |
+
$zip = $csvLine[3];
|
| 280 |
+
}
|
| 281 |
+
|
| 282 |
+
|
| 283 |
+
if ($csvLine[4] == '*' || $csvLine[4] == '') {
|
| 284 |
+
$zip_to = '';
|
| 285 |
+
} else {
|
| 286 |
+
$zip_to = $csvLine[4];
|
| 287 |
+
}
|
| 288 |
+
|
| 289 |
+
|
| 290 |
+
if (!$this->_isPositiveDecimalNumber($csvLine[5]) || $csvLine[5] == '*' || $csvLine[5] == '') {
|
| 291 |
+
$exceptions[] = Mage::helper('shipping')->__('Invalid %s From "%s" in the Row #%s', $conditionFullName, $csvLine[5], ($k+1));
|
| 292 |
+
} else {
|
| 293 |
+
$csvLine[5] = (float)$csvLine[5];
|
| 294 |
+
}
|
| 295 |
+
|
| 296 |
+
if (!$this->_isPositiveDecimalNumber($csvLine[6])) {
|
| 297 |
+
$exceptions[] = Mage::helper('shipping')->__('Invalid %s To "%s" in the Row #%s', $conditionFullName, $csvLine[6], ($k+1));
|
| 298 |
+
} else {
|
| 299 |
+
$csvLine[6] = (float)$csvLine[6];
|
| 300 |
+
}
|
| 301 |
+
|
| 302 |
+
|
| 303 |
+
$data[] = array('website_id'=>$websiteId, 'dest_country_id'=>$countryId, 'dest_region_id'=>$regionId, 'dest_city'=>$city, 'dest_zip'=>$zip, 'dest_zip_to'=>$zip_to, 'condition_name'=>$conditionName, 'condition_from_value'=>$csvLine[5],'condition_to_value'=>$csvLine[6], 'price'=>$csvLine[7], 'delivery_type'=>$csvLine[8]);
|
| 304 |
+
|
| 305 |
+
}
|
| 306 |
+
else {
|
| 307 |
+
|
| 308 |
+
if ($csvLine[2] == '*' || $csvLine[2] == '') {
|
| 309 |
+
$zip = '';
|
| 310 |
+
} else {
|
| 311 |
+
$zip = $csvLine[2]."%";
|
| 312 |
+
}
|
| 313 |
+
|
| 314 |
+
$city='';
|
| 315 |
+
$zip_to = '';
|
| 316 |
+
|
| 317 |
+
if (!$this->_isPositiveDecimalNumber($csvLine[3]) || $csvLine[3] == '*' || $csvLine[3] == '') {
|
| 318 |
+
$exceptions[] = Mage::helper('shipping')->__('Invalid %s From "%s" in the Row #%s', $conditionFullName, $csvLine[3], ($k+1));
|
| 319 |
+
} else {
|
| 320 |
+
$csvLine[3] = (float)$csvLine[3];
|
| 321 |
+
}
|
| 322 |
+
|
| 323 |
+
if (!$this->_isPositiveDecimalNumber($csvLine[4])) {
|
| 324 |
+
$exceptions[] = Mage::helper('shipping')->__('Invalid %s To "%s" in the Row #%s', $conditionFullName, $csvLine[4], ($k+1));
|
| 325 |
+
} else {
|
| 326 |
+
$csvLine[4] = (float)$csvLine[4];
|
| 327 |
+
}
|
| 328 |
+
$data[] = array('website_id'=>$websiteId, 'dest_country_id'=>$countryId, 'dest_region_id'=>$regionId, 'dest_city'=>$city,'dest_zip'=>$zip,'dest_zip_to'=>$zip_to, 'condition_name'=>$conditionName, 'condition_from_value'=>$csvLine[3],'condition_to_value'=>$csvLine[4], 'price'=>$csvLine[5], 'delivery_type'=>$csvLine[6]);
|
| 329 |
+
}
|
| 330 |
+
|
| 331 |
+
|
| 332 |
+
$dataDetails[] = array('country'=>$csvLine[0], 'region'=>$csvLine[1]);
|
| 333 |
+
|
| 334 |
+
}
|
| 335 |
+
}
|
| 336 |
+
if (empty($exceptions)) {
|
| 337 |
+
$connection = $this->_getWriteAdapter();
|
| 338 |
+
|
| 339 |
+
|
| 340 |
+
$condition = array(
|
| 341 |
+
$connection->quoteInto('website_id = ?', $websiteId),
|
| 342 |
+
$connection->quoteInto('condition_name = ?', $conditionName),
|
| 343 |
+
);
|
| 344 |
+
$connection->delete($table, $condition);
|
| 345 |
+
|
| 346 |
+
foreach($data as $k=>$dataLine) {
|
| 347 |
+
try {
|
| 348 |
+
$connection->insert($table, $dataLine);
|
| 349 |
+
} catch (Exception $e) {
|
| 350 |
+
$exceptions[] = Mage::helper('shipping')->__('Duplicate Row #%s (Country "%s", Region/State "%s", City "%s", Zip From "%s", Zip To "%s", Delivery Type "%s", Value From "%s" and Value To "%s")', ($k+1), $dataDetails[$k]['country'], $dataDetails[$k]['region'], $dataLine['dest_city'], $dataLine['dest_zip'], $dataLine['dest_zip_to'], $dataLine['delivery_type'], $dataLine['condition_from_value'], $dataLine['condition_to_value']);
|
| 351 |
+
}
|
| 352 |
+
}
|
| 353 |
+
}
|
| 354 |
+
if (!empty($exceptions)) {
|
| 355 |
+
throw new Exception( "\n" . implode("\n", $exceptions) );
|
| 356 |
+
}
|
| 357 |
+
}
|
| 358 |
+
}
|
| 359 |
+
}
|
| 360 |
+
|
| 361 |
+
private function _getCsvValues($string, $separator=",")
|
| 362 |
+
{
|
| 363 |
+
$elements = explode($separator, trim($string));
|
| 364 |
+
for ($i = 0; $i < count($elements); $i++) {
|
| 365 |
+
$nquotes = substr_count($elements[$i], '"');
|
| 366 |
+
if ($nquotes %2 == 1) {
|
| 367 |
+
for ($j = $i+1; $j < count($elements); $j++) {
|
| 368 |
+
if (substr_count($elements[$j], '"') > 0) {
|
| 369 |
+
// Put the quoted string's pieces back together again
|
| 370 |
+
array_splice($elements, $i, $j-$i+1, implode($separator, array_slice($elements, $i, $j-$i+1)));
|
| 371 |
+
break;
|
| 372 |
+
}
|
| 373 |
+
}
|
| 374 |
+
}
|
| 375 |
+
if ($nquotes > 0) {
|
| 376 |
+
// Remove first and last quotes, then merge pairs of quotes
|
| 377 |
+
$qstr =& $elements[$i];
|
| 378 |
+
$qstr = substr_replace($qstr, '', strpos($qstr, '"'), 1);
|
| 379 |
+
$qstr = substr_replace($qstr, '', strrpos($qstr, '"'), 1);
|
| 380 |
+
$qstr = str_replace('""', '"', $qstr);
|
| 381 |
+
}
|
| 382 |
+
$elements[$i] = trim($elements[$i]);
|
| 383 |
+
}
|
| 384 |
+
return $elements;
|
| 385 |
+
}
|
| 386 |
+
|
| 387 |
+
private function _isPositiveDecimalNumber($n)
|
| 388 |
+
{
|
| 389 |
+
return preg_match ("/^[0-9]+(\.[0-9]*)?$/", $n);
|
| 390 |
+
}
|
| 391 |
+
|
| 392 |
+
}
|
app/code/community/Webshopapps/Matrixrate/Model/Mysql4/Carrier/Matrixrate/Collection.php
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Webshopapps Shipping Module
|
| 4 |
+
*
|
| 5 |
+
* NOTICE OF LICENSE
|
| 6 |
+
*
|
| 7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
| 8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
| 9 |
+
* It is also available through the world-wide-web at this URL:
|
| 10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
| 11 |
+
* If you did not receive a copy of the license and are unable to
|
| 12 |
+
* obtain it through the world-wide-web, please send an email
|
| 13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
| 14 |
+
*
|
| 15 |
+
* DISCLAIMER
|
| 16 |
+
*
|
| 17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
| 18 |
+
* versions in the future. If you wish to customize Magento for your
|
| 19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
| 20 |
+
*
|
| 21 |
+
* Shipping MatrixRates
|
| 22 |
+
*
|
| 23 |
+
* @category Webshopapps
|
| 24 |
+
* @package Webshopapps_Matrixrate
|
| 25 |
+
* @copyright Copyright (c) 2010 Zowta Ltd (http://www.webshopapps.com)
|
| 26 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 27 |
+
* @author Karen Baker <sales@webshopapps.com>
|
| 28 |
+
*/
|
| 29 |
+
class Webshopapps_Matrixrate_Model_Mysql4_Carrier_Matrixrate_Collection extends Varien_Data_Collection_Db
|
| 30 |
+
{
|
| 31 |
+
protected $_shipTable;
|
| 32 |
+
protected $_countryTable;
|
| 33 |
+
protected $_regionTable;
|
| 34 |
+
|
| 35 |
+
public function __construct()
|
| 36 |
+
{
|
| 37 |
+
parent::__construct(Mage::getSingleton('core/resource')->getConnection('shipping_read'));
|
| 38 |
+
$this->_shipTable = Mage::getSingleton('core/resource')->getTableName('matrixrate_shipping/matrixrate');
|
| 39 |
+
$this->_countryTable = Mage::getSingleton('core/resource')->getTableName('directory/country');
|
| 40 |
+
$this->_regionTable = Mage::getSingleton('core/resource')->getTableName('directory/country_region');
|
| 41 |
+
$this->_select->from(array("s" => $this->_shipTable))
|
| 42 |
+
->joinLeft(array("c" => $this->_countryTable), 'c.country_id = s.dest_country_id', 'iso3_code AS dest_country')
|
| 43 |
+
->joinLeft(array("r" => $this->_regionTable), 'r.region_id = s.dest_region_id', 'code AS dest_region')
|
| 44 |
+
->order(array("dest_country", "dest_region", "dest_zip"));
|
| 45 |
+
$this->_setIdFieldName('pk');
|
| 46 |
+
return $this;
|
| 47 |
+
}
|
| 48 |
+
|
| 49 |
+
public function setWebsiteFilter($websiteId)
|
| 50 |
+
{
|
| 51 |
+
$this->_select->where("website_id = ?", $websiteId);
|
| 52 |
+
|
| 53 |
+
return $this;
|
| 54 |
+
}
|
| 55 |
+
|
| 56 |
+
public function setConditionFilter($conditionName)
|
| 57 |
+
{
|
| 58 |
+
$this->_select->where("condition_name = ?", $conditionName);
|
| 59 |
+
return $this;
|
| 60 |
+
}
|
| 61 |
+
|
| 62 |
+
public function setCountryFilter($countryId)
|
| 63 |
+
{
|
| 64 |
+
$this->_select->where("dest_country_id = ?", $countryId);
|
| 65 |
+
|
| 66 |
+
return $this;
|
| 67 |
+
}
|
| 68 |
+
}
|
app/code/community/Webshopapps/Matrixrate/controllers/System/ConfigController.php
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Magento
|
| 4 |
+
*
|
| 5 |
+
* NOTICE OF LICENSE
|
| 6 |
+
*
|
| 7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
| 8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
| 9 |
+
* It is also available through the world-wide-web at this URL:
|
| 10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
| 11 |
+
* If you did not receive a copy of the license and are unable to
|
| 12 |
+
* obtain it through the world-wide-web, please send an email
|
| 13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
| 14 |
+
*
|
| 15 |
+
* DISCLAIMER
|
| 16 |
+
*
|
| 17 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
| 18 |
+
* versions in the future. If you wish to customize Magento for your
|
| 19 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
| 20 |
+
*
|
| 21 |
+
* @category Mage
|
| 22 |
+
* @package Mage_Adminhtml
|
| 23 |
+
* @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
|
| 24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 25 |
+
*/
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
/**
|
| 29 |
+
* config controller
|
| 30 |
+
*
|
| 31 |
+
* @category Mage
|
| 32 |
+
* @package Mage_Adminhtml
|
| 33 |
+
* @author Magento Core Team <core@magentocommerce.com>
|
| 34 |
+
*/
|
| 35 |
+
class Webshopapps_Matrixrate_System_ConfigController extends Mage_Adminhtml_Controller_Action
|
| 36 |
+
{
|
| 37 |
+
|
| 38 |
+
|
| 39 |
+
/**
|
| 40 |
+
* Export shipping table rates in csv format
|
| 41 |
+
*
|
| 42 |
+
*/
|
| 43 |
+
public function exportmatrixAction()
|
| 44 |
+
{
|
| 45 |
+
$fileName = 'matrixrates.csv';
|
| 46 |
+
/** @var $gridBlock Mage_Adminhtml_Block_Shipping_Carrier_Tablerate_Grid */
|
| 47 |
+
$gridBlock = $this->getLayout()->createBlock('matrixrate_adminhtml/shipping_carrier_matrixrate_grid');
|
| 48 |
+
$website = Mage::app()->getWebsite($this->getRequest()->getParam('website'));
|
| 49 |
+
if ($this->getRequest()->getParam('conditionName')) {
|
| 50 |
+
$conditionName = $this->getRequest()->getParam('conditionName');
|
| 51 |
+
} else {
|
| 52 |
+
$conditionName = $website->getConfig('carriers/matrixrate/condition_name');
|
| 53 |
+
}
|
| 54 |
+
$gridBlock->setWebsiteId($website->getId())->setConditionName($conditionName);
|
| 55 |
+
$content = $gridBlock->getCsvFile();
|
| 56 |
+
$this->_prepareDownloadResponse($fileName, $content);
|
| 57 |
+
}
|
| 58 |
+
|
| 59 |
+
}
|
app/code/community/Webshopapps/Matrixrate/etc/config.xml
ADDED
|
@@ -0,0 +1,157 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<!--
|
| 3 |
+
/**
|
| 4 |
+
* Webshopapps Shipping Module
|
| 5 |
+
*
|
| 6 |
+
* NOTICE OF LICENSE
|
| 7 |
+
*
|
| 8 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
| 9 |
+
* that is bundled with this package in the file LICENSE.txt.
|
| 10 |
+
* It is also available through the world-wide-web at this URL:
|
| 11 |
+
* http://opensource.org/licenses/osl-3.0.php
|
| 12 |
+
* If you did not receive a copy of the license and are unable to
|
| 13 |
+
* obtain it through the world-wide-web, please send an email
|
| 14 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
| 15 |
+
*
|
| 16 |
+
* DISCLAIMER
|
| 17 |
+
*
|
| 18 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
| 19 |
+
* versions in the future. If you wish to customize Magento for your
|
| 20 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
| 21 |
+
*
|
| 22 |
+
* Shipping MatrixRates
|
| 23 |
+
*
|
| 24 |
+
* @category Webshopapps
|
| 25 |
+
* @package Webshopapps_Matrixrate
|
| 26 |
+
* @copyright Copyright (c) 2010 Zowta Ltd (http://www.webshopapps.com)
|
| 27 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 28 |
+
* @author Karen Baker <sales@webshopapps.com>
|
| 29 |
+
*/
|
| 30 |
+
|
| 31 |
+
-->
|
| 32 |
+
<config>
|
| 33 |
+
<modules>
|
| 34 |
+
<Webshopapps_Matrixrate>
|
| 35 |
+
<version>2.0.2</version>
|
| 36 |
+
</Webshopapps_Matrixrate>
|
| 37 |
+
</modules>
|
| 38 |
+
<global>
|
| 39 |
+
<blocks>
|
| 40 |
+
<matrixrate_adminhtml>
|
| 41 |
+
<class>Webshopapps_Matrixrate_Block_Adminhtml</class>
|
| 42 |
+
</matrixrate_adminhtml>
|
| 43 |
+
</blocks>
|
| 44 |
+
<helpers>
|
| 45 |
+
<matrixrate>
|
| 46 |
+
<class>Webshopapps_Matrixrate_Helper</class>
|
| 47 |
+
</matrixrate>
|
| 48 |
+
</helpers>
|
| 49 |
+
<models>
|
| 50 |
+
<matrixrate>
|
| 51 |
+
<class>Webshopapps_Matrixrate_Model</class>
|
| 52 |
+
</matrixrate>
|
| 53 |
+
<matrixrate_adminhtml>
|
| 54 |
+
<class>Webshopapps_Matrixrate_Model_Adminhtml</class>
|
| 55 |
+
</matrixrate_adminhtml>
|
| 56 |
+
<matrixrate_shipping>
|
| 57 |
+
<class>Webshopapps_Matrixrate_Model</class>
|
| 58 |
+
<resourceModel>matrixrate_mysql4</resourceModel>
|
| 59 |
+
</matrixrate_shipping>
|
| 60 |
+
<matrixrate_mysql4>
|
| 61 |
+
<class>Webshopapps_Matrixrate_Model_Mysql4</class>
|
| 62 |
+
<entities>
|
| 63 |
+
<matrixrate>
|
| 64 |
+
<table>shipping_matrixrate</table>
|
| 65 |
+
</matrixrate>
|
| 66 |
+
</entities>
|
| 67 |
+
</matrixrate_mysql4>
|
| 68 |
+
</models>
|
| 69 |
+
<resources>
|
| 70 |
+
<matrixrate_setup>
|
| 71 |
+
<setup>
|
| 72 |
+
<module>Webshopapps_Matrixrate</module>
|
| 73 |
+
</setup>
|
| 74 |
+
<connection>
|
| 75 |
+
<use>core_setup</use>
|
| 76 |
+
</connection>
|
| 77 |
+
<matrixrate_write>
|
| 78 |
+
<connection>
|
| 79 |
+
<use>core_write</use>
|
| 80 |
+
</connection>
|
| 81 |
+
</matrixrate_write>
|
| 82 |
+
<matrixrate_read>
|
| 83 |
+
<connection>
|
| 84 |
+
<use>core_read</use>
|
| 85 |
+
</connection>
|
| 86 |
+
</matrixrate_read>
|
| 87 |
+
</matrixrate_setup>
|
| 88 |
+
</resources>
|
| 89 |
+
<sales>
|
| 90 |
+
<shipping>
|
| 91 |
+
<carriers>
|
| 92 |
+
<matrixrate>
|
| 93 |
+
<class>Webshopapps_Matrixrate_Model_Carrier_Matrixrate</class>
|
| 94 |
+
</matrixrate>
|
| 95 |
+
</carriers>
|
| 96 |
+
</shipping>
|
| 97 |
+
</sales>
|
| 98 |
+
<helpers>
|
| 99 |
+
<matrixrate>
|
| 100 |
+
<class>Webshopapps_Matrixrate_Helper</class>
|
| 101 |
+
</matrixrate>
|
| 102 |
+
</helpers>
|
| 103 |
+
</global>
|
| 104 |
+
<frontend>
|
| 105 |
+
|
| 106 |
+
<translate>
|
| 107 |
+
<modules>
|
| 108 |
+
<Webshopapps_Matrixrate>
|
| 109 |
+
<files>
|
| 110 |
+
<default>Webshopapps_Matrixrate.csv</default>
|
| 111 |
+
</files>
|
| 112 |
+
</Webshopapps_Matrixrate>
|
| 113 |
+
</modules>
|
| 114 |
+
</translate>
|
| 115 |
+
</frontend>
|
| 116 |
+
<admin>
|
| 117 |
+
<routers>
|
| 118 |
+
<adminhtml>
|
| 119 |
+
<args>
|
| 120 |
+
<modules>
|
| 121 |
+
<Webshopapps_Matrixrate before="Mage_Adminhtml">Webshopapps_Matrixrate</Webshopapps_Matrixrate>
|
| 122 |
+
</modules>
|
| 123 |
+
</args>
|
| 124 |
+
</adminhtml>
|
| 125 |
+
</routers>
|
| 126 |
+
</admin>
|
| 127 |
+
<adminhtml>
|
| 128 |
+
<translate>
|
| 129 |
+
|
| 130 |
+
<modules>
|
| 131 |
+
<Webshopapps_Matrixrate>
|
| 132 |
+
<files>
|
| 133 |
+
<default>Webshopapps_Matrixrate.csv</default>
|
| 134 |
+
</files>
|
| 135 |
+
</Webshopapps_Matrixrate>
|
| 136 |
+
</modules>
|
| 137 |
+
</translate>
|
| 138 |
+
</adminhtml>
|
| 139 |
+
<default>
|
| 140 |
+
<carriers>
|
| 141 |
+
<matrixrate>
|
| 142 |
+
<condition_name>package_weight</condition_name>
|
| 143 |
+
<active>0</active>
|
| 144 |
+
<include_virtual_price>1</include_virtual_price>
|
| 145 |
+
<sallowspecific>0</sallowspecific>
|
| 146 |
+
<allow_free_shipping_promotions>1</allow_free_shipping_promotions>
|
| 147 |
+
<show_only_free>0</show_only_free>
|
| 148 |
+
<free_method_text>Free Shipping</free_method_text>
|
| 149 |
+
<cutoff_cost>50</cutoff_cost>
|
| 150 |
+
<model>matrixrate_shipping/carrier_matrixrate</model>
|
| 151 |
+
<name>MatrixRate</name>
|
| 152 |
+
<title>Select Shipping Method</title>
|
| 153 |
+
<specificerrmsg>This shipping method is currently unavailable. If you would like to ship using this shipping method, please contact us.</specificerrmsg>
|
| 154 |
+
</matrixrate>
|
| 155 |
+
</carriers>
|
| 156 |
+
</default>
|
| 157 |
+
</config>
|
app/code/community/Webshopapps/Matrixrate/etc/system.xml
ADDED
|
@@ -0,0 +1,233 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<!--
|
| 3 |
+
/**
|
| 4 |
+
* Webshopapps Shipping Module
|
| 5 |
+
*
|
| 6 |
+
* NOTICE OF LICENSE
|
| 7 |
+
*
|
| 8 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
| 9 |
+
* that is bundled with this package in the file LICENSE.txt.
|
| 10 |
+
* It is also available through the world-wide-web at this URL:
|
| 11 |
+
* http://opensource.org/licenses/osl-3.0.php
|
| 12 |
+
* If you did not receive a copy of the license and are unable to
|
| 13 |
+
* obtain it through the world-wide-web, please send an email
|
| 14 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
| 15 |
+
*
|
| 16 |
+
* DISCLAIMER
|
| 17 |
+
*
|
| 18 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
| 19 |
+
* versions in the future. If you wish to customize Magento for your
|
| 20 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
| 21 |
+
*
|
| 22 |
+
* Shipping MatrixRates
|
| 23 |
+
*
|
| 24 |
+
* @category Webshopapps
|
| 25 |
+
* @package Webshopapps_Matrixrate
|
| 26 |
+
* @copyright Copyright (c) 2010 Zowta Ltd (http://www.webshopapps.com)
|
| 27 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 28 |
+
* @author Karen Baker <sales@webshopapps.com>
|
| 29 |
+
*/
|
| 30 |
+
|
| 31 |
+
-->
|
| 32 |
+
<config>
|
| 33 |
+
<sections>
|
| 34 |
+
<carriers translate="label" module="shipping">
|
| 35 |
+
<groups>
|
| 36 |
+
<matrixrate translate="label">
|
| 37 |
+
<label>Webshopapps Matrix Rates</label>
|
| 38 |
+
<frontend_type>text</frontend_type>
|
| 39 |
+
<sort_order>2</sort_order>
|
| 40 |
+
<show_in_default>1</show_in_default>
|
| 41 |
+
<show_in_website>1</show_in_website>
|
| 42 |
+
<show_in_store>1</show_in_store>
|
| 43 |
+
<comment>
|
| 44 |
+
<![CDATA[
|
| 45 |
+
<div style="padding:10px;background-color:#fff;border:1px solid #ddd;margin-bottom:7px;">
|
| 46 |
+
This module was developed by <a href="http://www.webshopapps.com" target="_blank">www.WebShopApps.com</a> - <b>Magento Shipping Extension Specialists</b>.
|
| 47 |
+
<br/>For docs & examples refer to the WebShopApps <a href="https://sites.google.com/a/webshopapps.com/webshopapps-wiki/extensions/matrix-rates">wiki</a>.
|
| 48 |
+
<br/>We offer <a href="http://webshopapps.com/shipping-extensions/most-popular/premium-matrixrate-shipping-extension.html" target="_blank">Premium Matrixrate</a> for our commercial users, masses of features to reduce maintenance time.
|
| 49 |
+
<br/>We have the largest selections of <a href="http://www.webshopapps.com" target="_blank">shipping extensions</a> on Magento.</a>
|
| 50 |
+
</div>
|
| 51 |
+
]]>
|
| 52 |
+
</comment>
|
| 53 |
+
<fields>
|
| 54 |
+
<active translate="label">
|
| 55 |
+
<label>Enabled</label>
|
| 56 |
+
<frontend_type>select</frontend_type>
|
| 57 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
| 58 |
+
<sort_order>10</sort_order>
|
| 59 |
+
<show_in_default>1</show_in_default>
|
| 60 |
+
<show_in_website>1</show_in_website>
|
| 61 |
+
<show_in_store>1</show_in_store>
|
| 62 |
+
</active>
|
| 63 |
+
<title translate="label">
|
| 64 |
+
<label>Title</label>
|
| 65 |
+
<frontend_type>text</frontend_type>
|
| 66 |
+
<sort_order>20</sort_order>
|
| 67 |
+
<show_in_default>1</show_in_default>
|
| 68 |
+
<show_in_website>1</show_in_website>
|
| 69 |
+
<show_in_store>1</show_in_store>
|
| 70 |
+
</title>
|
| 71 |
+
<condition_name translate="label">
|
| 72 |
+
<label>Condition</label>
|
| 73 |
+
<frontend_type>select</frontend_type>
|
| 74 |
+
<source_model>matrixrate_adminhtml/system_config_source_shipping_matrixrate</source_model>
|
| 75 |
+
<sort_order>30</sort_order>
|
| 76 |
+
<tooltip>
|
| 77 |
+
Once you change this and save you must re-import csv for it to take effect.
|
| 78 |
+
</tooltip>
|
| 79 |
+
<show_in_default>1</show_in_default>
|
| 80 |
+
<show_in_website>1</show_in_website>
|
| 81 |
+
<show_in_store>0</show_in_store>
|
| 82 |
+
<comment>Filter prices based on destination AND weight, price or quantity</comment>
|
| 83 |
+
</condition_name>
|
| 84 |
+
<import translate="label">
|
| 85 |
+
<label>Import</label>
|
| 86 |
+
<frontend_type>import</frontend_type>
|
| 87 |
+
<backend_model>matrixrate_adminhtml/system_config_backend_shipping_matrixrate</backend_model>
|
| 88 |
+
<sort_order>40</sort_order>
|
| 89 |
+
<show_in_default>0</show_in_default>
|
| 90 |
+
<show_in_website>1</show_in_website>
|
| 91 |
+
<show_in_store>0</show_in_store>
|
| 92 |
+
</import>
|
| 93 |
+
<export translate="label">
|
| 94 |
+
<label>Export</label>
|
| 95 |
+
<frontend_model>matrixrate_adminhtml/system_config_form_field_exportmatrix</frontend_model>
|
| 96 |
+
<sort_order>50</sort_order>
|
| 97 |
+
<show_in_default>0</show_in_default>
|
| 98 |
+
<show_in_website>1</show_in_website>
|
| 99 |
+
<show_in_store>0</show_in_store>
|
| 100 |
+
</export>
|
| 101 |
+
<zip_range translate="label">
|
| 102 |
+
<label>Use zipcode to/from range</label>
|
| 103 |
+
<frontend_type>select</frontend_type>
|
| 104 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
| 105 |
+
<sort_order>60</sort_order>
|
| 106 |
+
<show_in_default>1</show_in_default>
|
| 107 |
+
<show_in_website>1</show_in_website>
|
| 108 |
+
<show_in_store>1</show_in_store>
|
| 109 |
+
<comment>You should only set this to Yes if you use purely numeric zipcodes (e.g. USA/AUS clients)</comment>
|
| 110 |
+
</zip_range>
|
| 111 |
+
<allow_free_shipping_promotions translate="label">
|
| 112 |
+
<label>Free shipping promotions</label>
|
| 113 |
+
<frontend_type>select</frontend_type>
|
| 114 |
+
<source_model>adminhtml/system_config_source_enabledisable</source_model>
|
| 115 |
+
<sort_order>70</sort_order>
|
| 116 |
+
<tooltip>
|
| 117 |
+
Allow free shipping promotions to apply to matrixrate
|
| 118 |
+
</tooltip>
|
| 119 |
+
<show_in_default>1</show_in_default>
|
| 120 |
+
<show_in_website>1</show_in_website>
|
| 121 |
+
<show_in_store>1</show_in_store>
|
| 122 |
+
</allow_free_shipping_promotions>
|
| 123 |
+
<show_only_free translate="label">
|
| 124 |
+
<label>Only display free shipping</label>
|
| 125 |
+
<frontend_type>select</frontend_type>
|
| 126 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
| 127 |
+
<tooltip>
|
| 128 |
+
If free shipping applies dont show other shipping rates
|
| 129 |
+
</tooltip>
|
| 130 |
+
<sort_order>80</sort_order>
|
| 131 |
+
<show_in_default>1</show_in_default>
|
| 132 |
+
<show_in_website>1</show_in_website>
|
| 133 |
+
<show_in_store>1</show_in_store>
|
| 134 |
+
</show_only_free>
|
| 135 |
+
<free_method_text translate="label">
|
| 136 |
+
<label>Free shipping display text</label>
|
| 137 |
+
<frontend_type>text</frontend_type>
|
| 138 |
+
<sort_order>90</sort_order>
|
| 139 |
+
<tooltip>
|
| 140 |
+
What to show the shipping as when the price of shipping is 0. I.e "FREE SHIPPING"
|
| 141 |
+
</tooltip>
|
| 142 |
+
<show_in_default>1</show_in_default>
|
| 143 |
+
<show_in_website>1</show_in_website>
|
| 144 |
+
<show_in_store>1</show_in_store>
|
| 145 |
+
</free_method_text>
|
| 146 |
+
<free_shipping_threshold translate="label">
|
| 147 |
+
<label>Minimum order amount for free shipping</label>
|
| 148 |
+
<frontend_type>text</frontend_type>
|
| 149 |
+
<sort_order>100</sort_order>
|
| 150 |
+
<tooltip>
|
| 151 |
+
Apply free shipping if this amount is exceeded
|
| 152 |
+
</tooltip>
|
| 153 |
+
<show_in_default>1</show_in_default>
|
| 154 |
+
<show_in_website>1</show_in_website>
|
| 155 |
+
<show_in_store>1</show_in_store>
|
| 156 |
+
</free_shipping_threshold>
|
| 157 |
+
<include_virtual_price translate="label">
|
| 158 |
+
<label>Include virtual products in price calculation</label>
|
| 159 |
+
<frontend_type>select</frontend_type>
|
| 160 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
| 161 |
+
<sort_order>110</sort_order>
|
| 162 |
+
<show_in_default>1</show_in_default>
|
| 163 |
+
<show_in_website>1</show_in_website>
|
| 164 |
+
<show_in_store>0</show_in_store>
|
| 165 |
+
</include_virtual_price>
|
| 166 |
+
<handling_type translate="label">
|
| 167 |
+
<label>Calculate handling fee</label>
|
| 168 |
+
<frontend_type>select</frontend_type>
|
| 169 |
+
<source_model>shipping/source_handlingType</source_model>
|
| 170 |
+
<sort_order>120</sort_order>
|
| 171 |
+
<show_in_default>1</show_in_default>
|
| 172 |
+
<show_in_website>1</show_in_website>
|
| 173 |
+
<show_in_store>0</show_in_store>
|
| 174 |
+
</handling_type>
|
| 175 |
+
<handling_fee translate="label">
|
| 176 |
+
<label>Handling fee</label>
|
| 177 |
+
<frontend_type>text</frontend_type>
|
| 178 |
+
<sort_order>130</sort_order>
|
| 179 |
+
<show_in_default>1</show_in_default>
|
| 180 |
+
<show_in_website>1</show_in_website>
|
| 181 |
+
<show_in_store>1</show_in_store>
|
| 182 |
+
</handling_fee>
|
| 183 |
+
<sallowspecific translate="label">
|
| 184 |
+
<label>Ship to applicable countries</label>
|
| 185 |
+
<frontend_type>select</frontend_type>
|
| 186 |
+
<sort_order>200</sort_order>
|
| 187 |
+
<frontend_class>shipping-applicable-country</frontend_class>
|
| 188 |
+
<source_model>adminhtml/system_config_source_shipping_allspecificcountries</source_model>
|
| 189 |
+
<show_in_default>1</show_in_default>
|
| 190 |
+
<show_in_website>1</show_in_website>
|
| 191 |
+
<show_in_store>1</show_in_store>
|
| 192 |
+
</sallowspecific>
|
| 193 |
+
<specificcountry translate="label">
|
| 194 |
+
<label>Ship to specific countries</label>
|
| 195 |
+
<frontend_type>multiselect</frontend_type>
|
| 196 |
+
<sort_order>210</sort_order>
|
| 197 |
+
<source_model>adminhtml/system_config_source_country</source_model>
|
| 198 |
+
<show_in_default>1</show_in_default>
|
| 199 |
+
<show_in_website>1</show_in_website>
|
| 200 |
+
<show_in_store>1</show_in_store>
|
| 201 |
+
</specificcountry>
|
| 202 |
+
<showmethod translate="label">
|
| 203 |
+
<label>Show method if not applicable</label>
|
| 204 |
+
<frontend_type>select</frontend_type>
|
| 205 |
+
<sort_order>320</sort_order>
|
| 206 |
+
<frontend_class>shipping-skip-hide</frontend_class>
|
| 207 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
| 208 |
+
<show_in_default>1</show_in_default>
|
| 209 |
+
<show_in_website>1</show_in_website>
|
| 210 |
+
<show_in_store>1</show_in_store>
|
| 211 |
+
</showmethod>
|
| 212 |
+
<specificerrmsg translate="label">
|
| 213 |
+
<label>Displayed error message</label>
|
| 214 |
+
<frontend_type>textarea</frontend_type>
|
| 215 |
+
<sort_order>330</sort_order>
|
| 216 |
+
<show_in_default>1</show_in_default>
|
| 217 |
+
<show_in_website>1</show_in_website>
|
| 218 |
+
<show_in_store>1</show_in_store>
|
| 219 |
+
</specificerrmsg>
|
| 220 |
+
<sort_order translate="label">
|
| 221 |
+
<label>Sort order</label>
|
| 222 |
+
<frontend_type>text</frontend_type>
|
| 223 |
+
<sort_order>500</sort_order>
|
| 224 |
+
<show_in_default>1</show_in_default>
|
| 225 |
+
<show_in_website>1</show_in_website>
|
| 226 |
+
<show_in_store>1</show_in_store>
|
| 227 |
+
</sort_order>
|
| 228 |
+
</fields>
|
| 229 |
+
</matrixrate>
|
| 230 |
+
</groups>
|
| 231 |
+
</carriers>
|
| 232 |
+
</sections>
|
| 233 |
+
</config>
|
app/code/community/Webshopapps/Matrixrate/sql/matrixrate_setup/mysql4-install-2.0.1.php
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
$installer = $this;
|
| 4 |
+
|
| 5 |
+
$installer->startSetup();
|
| 6 |
+
|
| 7 |
+
$installer->run("
|
| 8 |
+
|
| 9 |
+
DROP TABLE IF EXISTS {$this->getTable('shipping_matrixrate')};
|
| 10 |
+
CREATE TABLE {$this->getTable('shipping_matrixrate')} (
|
| 11 |
+
pk int(10) unsigned NOT NULL auto_increment,
|
| 12 |
+
website_id int(11) NOT NULL default '0',
|
| 13 |
+
dest_country_id varchar(4) NOT NULL default '0',
|
| 14 |
+
dest_region_id int(10) NOT NULL default '0',
|
| 15 |
+
dest_city varchar(30) NOT NULL default '',
|
| 16 |
+
dest_zip varchar(10) NOT NULL default '',
|
| 17 |
+
dest_zip_to varchar(10) NOT NULL default '',
|
| 18 |
+
condition_name varchar(20) NOT NULL default '',
|
| 19 |
+
condition_from_value decimal(12,4) NOT NULL default '0.0000',
|
| 20 |
+
condition_to_value decimal(12,4) NOT NULL default '0.0000',
|
| 21 |
+
price decimal(12,4) NOT NULL default '0.0000',
|
| 22 |
+
cost decimal(12,4) NOT NULL default '0.0000',
|
| 23 |
+
delivery_type varchar(255) NOT NULL default '',
|
| 24 |
+
PRIMARY KEY(`pk`),
|
| 25 |
+
UNIQUE KEY `dest_country` (`website_id`,`dest_country_id`,`dest_region_id`,`dest_city`,`dest_zip`,`dest_zip_to`,`condition_name`,`condition_from_value`,`condition_to_value`,`delivery_type`)
|
| 26 |
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
| 27 |
+
|
| 28 |
+
|
| 29 |
+
|
| 30 |
+
");
|
| 31 |
+
|
| 32 |
+
$installer->endSetup();
|
| 33 |
+
|
| 34 |
+
|
app/code/community/Webshopapps/Matrixrate/sql/matrixrate_setup/mysql4-install-2.0.2.php
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
$installer = $this;
|
| 4 |
+
|
| 5 |
+
$installer->startSetup();
|
| 6 |
+
|
| 7 |
+
$installer->run("
|
| 8 |
+
|
| 9 |
+
CREATE TABLE IF NOT EXISTS {$this->getTable('shipping_matrixrate')} (
|
| 10 |
+
pk int(10) unsigned NOT NULL auto_increment,
|
| 11 |
+
website_id int(11) NOT NULL default '0',
|
| 12 |
+
dest_country_id varchar(4) NOT NULL default '0',
|
| 13 |
+
dest_region_id int(10) NOT NULL default '0',
|
| 14 |
+
dest_city varchar(30) NOT NULL default '',
|
| 15 |
+
dest_zip varchar(10) NOT NULL default '',
|
| 16 |
+
dest_zip_to varchar(10) NOT NULL default '',
|
| 17 |
+
condition_name varchar(20) NOT NULL default '',
|
| 18 |
+
condition_from_value decimal(12,4) NOT NULL default '0.0000',
|
| 19 |
+
condition_to_value decimal(12,4) NOT NULL default '0.0000',
|
| 20 |
+
price decimal(12,4) NOT NULL default '0.0000',
|
| 21 |
+
cost decimal(12,4) NOT NULL default '0.0000',
|
| 22 |
+
delivery_type varchar(255) NOT NULL default '',
|
| 23 |
+
PRIMARY KEY(`pk`),
|
| 24 |
+
UNIQUE KEY `dest_country` (`website_id`,`dest_country_id`,`dest_region_id`,`dest_city`,`dest_zip`,`dest_zip_to`,`condition_name`,`condition_from_value`,`condition_to_value`,`delivery_type`)
|
| 25 |
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
|
| 29 |
+
");
|
| 30 |
+
|
| 31 |
+
$installer->endSetup();
|
| 32 |
+
|
| 33 |
+
|
app/code/community/Webshopapps/Matrixrate/sql/matrixrate_setup/mysql4-upgrade-2.0.1-2.0.2.php
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
|
| 3 |
+
$installer = $this;
|
| 4 |
+
|
| 5 |
+
$installer->startSetup();
|
| 6 |
+
|
| 7 |
+
$installer->run("
|
| 8 |
+
|
| 9 |
+
CREATE TABLE IF NOT EXISTS {$this->getTable('shipping_matrixrate')} (
|
| 10 |
+
pk int(10) unsigned NOT NULL auto_increment,
|
| 11 |
+
website_id int(11) NOT NULL default '0',
|
| 12 |
+
dest_country_id varchar(4) NOT NULL default '0',
|
| 13 |
+
dest_region_id int(10) NOT NULL default '0',
|
| 14 |
+
dest_city varchar(30) NOT NULL default '',
|
| 15 |
+
dest_zip varchar(10) NOT NULL default '',
|
| 16 |
+
dest_zip_to varchar(10) NOT NULL default '',
|
| 17 |
+
condition_name varchar(20) NOT NULL default '',
|
| 18 |
+
condition_from_value decimal(12,4) NOT NULL default '0.0000',
|
| 19 |
+
condition_to_value decimal(12,4) NOT NULL default '0.0000',
|
| 20 |
+
price decimal(12,4) NOT NULL default '0.0000',
|
| 21 |
+
cost decimal(12,4) NOT NULL default '0.0000',
|
| 22 |
+
delivery_type varchar(255) NOT NULL default '',
|
| 23 |
+
PRIMARY KEY(`pk`),
|
| 24 |
+
UNIQUE KEY `dest_country` (`website_id`,`dest_country_id`,`dest_region_id`,`dest_city`,`dest_zip`,`dest_zip_to`,`condition_name`,`condition_from_value`,`condition_to_value`,`delivery_type`)
|
| 25 |
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
|
| 29 |
+
");
|
| 30 |
+
|
| 31 |
+
$installer->endSetup();
|
| 32 |
+
|
| 33 |
+
|
app/etc/modules/Webshopapps_Matrixrate.xml
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<config>
|
| 3 |
+
<modules>
|
| 4 |
+
<Webshopapps_Matrixrate>
|
| 5 |
+
<active>true</active>
|
| 6 |
+
<codePool>community</codePool>
|
| 7 |
+
<depends>
|
| 8 |
+
<Mage_Shipping />
|
| 9 |
+
</depends>
|
| 10 |
+
</Webshopapps_Matrixrate>
|
| 11 |
+
</modules>
|
| 12 |
+
</config>
|
app/locale/en_US/Auctionmaid_Matrixrate.csv
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"Calculate Handling Fee","Calculate Handling Fee"
|
| 2 |
+
"Handling Fee","Handling Fee"
|
| 3 |
+
"Enabled","Enabled"
|
| 4 |
+
"Maximum Shipping Cost","Maximum Shipping Cost"
|
| 5 |
+
"Use Zipcode To/From Range","Use Zipcode To/From Range"
|
| 6 |
+
"Import","Import"
|
| 7 |
+
"Free Shipping Text","Free Shipping Text"
|
| 8 |
+
"Sort order","Sort order"
|
| 9 |
+
"Title","Title"
|
| 10 |
+
"Method name","Method name"
|
| 11 |
+
"Ship to applicable countries","Ship to applicable countries"
|
| 12 |
+
"Ship to Specific countries","Ship to Specific countries"
|
| 13 |
+
"Show method if not applicable","Show method if not applicable"
|
| 14 |
+
"Displayed Error Message","Displayed Error Message"
|
| 15 |
+
"Shipping Option","Shipping Option"
|
package.xml
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<package>
|
| 3 |
+
<name>Webshopapps_Matrixrate</name>
|
| 4 |
+
<version>4.1.0</version>
|
| 5 |
+
<stability>stable</stability>
|
| 6 |
+
<license uri="http://www.opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
|
| 7 |
+
<channel>community</channel>
|
| 8 |
+
<extends/>
|
| 9 |
+
<summary>Multiple Table Rates via CSV. Filter by country, region,city, zipcode. Numeric Postcode ranges, and enhanced pattern matching supported. Ability to exclude items from free shipping, and specify collection only.</summary>
|
| 10 |
+
<description>Supports following:
|
| 11 |
+

|
| 12 |
+
- multiple table rates
|
| 13 |
+
- country, region, city, postcode filtering
|
| 14 |
+
- partial postcode filtering, including pattern matching
|
| 15 |
+
- numerical postcode ranges
|
| 16 |
+
- option to exclude items from free shipping
|
| 17 |
+
- collection only option</description>
|
| 18 |
+
<notes>Added export facility</notes>
|
| 19 |
+
<authors><author><name>Karen Baker</name><user>auto-converted</user><email>sales@webshopapps.com</email></author></authors>
|
| 20 |
+
<date>2011-04-28</date>
|
| 21 |
+
<time>10:08:04</time>
|
| 22 |
+
<contents><target name="magecommunity"><dir name="Webshopapps"><dir name="Matrixrate"><dir name="Block"><dir name="Adminhtml"><dir name="Shipping"><dir name="Carrier"><dir name="Matrixrate"><file name="Grid.php" hash="50f8e38a0cbfb72543a15d84eb31e4b9"/></dir></dir></dir><dir name="System"><dir name="Config"><dir name="Form"><dir name="Field"><file name="Exportmatrix.php" hash="4ed1f6634f15727205da4e479e84bd91"/></dir></dir></dir></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="97307283fd4c85ed72a699ab4be68661"/></dir><dir name="Model"><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Backend"><dir name="Shipping"><file name="Matrixrate.php" hash="d8b6999f8ad837a232ece7a69bc5893f"/></dir></dir><dir name="Source"><dir name="Shipping"><file name="Matrixrate.php" hash="f2914f0d8d36206646e7551ad69736fa"/></dir></dir></dir></dir></dir><dir name="Carrier"><file name="Matrixrate.php" hash="5963c14e89be89371b9ebb2565498268"/></dir><dir name="Mysql4"><dir name="Carrier"><dir name="Matrixrate"><file name="Collection.php" hash="7a4c5d64156700dc82799c5828e4f65c"/></dir><file name="Matrixrate.php" hash="aa5b77ed44de4b973eecccadbe887232"/></dir></dir></dir><dir name="controllers"><dir name="System"><file name="ConfigController.php" hash="5ee3cdd9ea3277607d7a17c327acc9e2"/></dir></dir><dir name="etc"><file name="config.xml" hash="6f5a54c8c08992183ffa01a721f6f6ea"/><file name="system.xml" hash="eb8bc57509351e366ce7843b958acb69"/></dir><dir name="sql"><dir name="matrixrate_setup"><file name="mysql4-install-2.0.1.php" hash="52a413f99ce3d571a067cdfb677bbf32"/><file name="mysql4-install-2.0.2.php" hash="b6530f7e95e610db357ed46bc23629b9"/><file name="mysql4-upgrade-2.0.1-2.0.2.php" hash="b6530f7e95e610db357ed46bc23629b9"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Webshopapps_Matrixrate.xml" hash="ac8b13f26402b2f0e7f6b22c3430fec8"/></dir></target><target name="magelocale"><dir name="en_US"><file name="Auctionmaid_Matrixrate.csv" hash="d72e138554570b1f7d2dd3cec0ef7ce6"/></dir></target></contents>
|
| 23 |
+
<compatible/>
|
| 24 |
+
<dependencies/>
|
| 25 |
+
</package>
|
