Version Notes
Selectable Payments for Customer Groups
Download this release
Release Info
Developer | Magento Core Team |
Extension | SharpShippingByCustomerGroup |
Version | 0.1.0 |
Comparing to | |
See all releases |
Version 0.1.0
- app/code/community/Sharpdot/SharpShippingByCustomerGroup/Block/Adminhtml/System/Config/Form.php +240 -0
- app/code/community/Sharpdot/SharpShippingByCustomerGroup/Helper/Data.php +57 -0
- app/code/community/Sharpdot/SharpShippingByCustomerGroup/Model/Adminhtml/System/Config/Source/Customer/Group.php +42 -0
- app/code/community/Sharpdot/SharpShippingByCustomerGroup/Model/Shipping/Rate/Request.php +100 -0
- app/code/community/Sharpdot/SharpShippingByCustomerGroup/etc/config.xml +111 -0
- app/code/community/Sharpdot/SharpShippingByCustomerGroup/etc/system.xml +74 -0
- app/etc/modules/Sharpdot_SharpShippingByCustomerGroup.xml +11 -0
- package.xml +18 -0
app/code/community/Sharpdot/SharpShippingByCustomerGroup/Block/Adminhtml/System/Config/Form.php
ADDED
@@ -0,0 +1,240 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 Sharpdot
|
22 |
+
* @package Sharpdot_SharpShippingByCustomerGroup
|
23 |
+
* @copyright Copyright (c) 2010 Sharpdot Inc. (http://www.sharpdotinc.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
|
28 |
+
/**
|
29 |
+
* System config form block
|
30 |
+
*
|
31 |
+
* @category Sharpdot
|
32 |
+
* @package Sharpdot_SharpShippingByCustomerGroup
|
33 |
+
* @author Mike D
|
34 |
+
*/
|
35 |
+
class Sharpdot_SharpShippingByCustomerGroup_Block_Adminhtml_System_Config_Form extends Mage_Adminhtml_Block_System_Config_Form
|
36 |
+
{
|
37 |
+
|
38 |
+
|
39 |
+
|
40 |
+
/**
|
41 |
+
* Init fieldset fields
|
42 |
+
*
|
43 |
+
* @param Varien_Data_Form_Element_Fieldset $fieldset
|
44 |
+
* @param Varien_Simplexml_Element $group
|
45 |
+
* @param Varien_Simplexml_Element $section
|
46 |
+
* @param string $fieldPrefix
|
47 |
+
* @param string $labelPrefix
|
48 |
+
* @return Mage_Adminhtml_Block_System_Config_Form
|
49 |
+
*/
|
50 |
+
public function initFields($fieldset, $group, $section, $fieldPrefix='', $labelPrefix='')
|
51 |
+
{
|
52 |
+
if(!$group->is('use_custom_form', 1)){
|
53 |
+
return parent::initFields($fieldset, $group, $section, $fieldPrefix='', $labelPrefix='');
|
54 |
+
}
|
55 |
+
|
56 |
+
if (!$this->_configDataObject) {
|
57 |
+
$this->_initObjects();
|
58 |
+
}
|
59 |
+
|
60 |
+
// Extends for config data
|
61 |
+
$configDataAdditionalGroups = array();
|
62 |
+
|
63 |
+
$carriers = Mage::getStoreConfig('carriers');
|
64 |
+
|
65 |
+
|
66 |
+
$xmlString = "<config><fields>";
|
67 |
+
$sort_order = 0;
|
68 |
+
foreach($carriers as $code => $carrierConfig){
|
69 |
+
//TODO: if payment method is not active then hide it and set value to empty or null -MRD
|
70 |
+
if(!isset($carrierConfig['active']) || $carrierConfig['active'] == 0){
|
71 |
+
continue;
|
72 |
+
}
|
73 |
+
//Mainly keeps google checkout option from showing.
|
74 |
+
if(!isset($carrierConfig['title'])){
|
75 |
+
continue;
|
76 |
+
}
|
77 |
+
|
78 |
+
++$sort_order;
|
79 |
+
$xmlString .= '
|
80 |
+
<'.$code.' translate="label">
|
81 |
+
<label>'.$carrierConfig['title'].'</label>
|
82 |
+
<frontend_type>multiselect</frontend_type>
|
83 |
+
<source_model>sharpshippingbycustomergroup/adminhtml_system_config_source_customer_group</source_model>
|
84 |
+
<sort_order>'.$sort_order.'</sort_order>
|
85 |
+
<show_in_default>1</show_in_default>
|
86 |
+
<show_in_website>1</show_in_website>
|
87 |
+
<show_in_store>1</show_in_store>
|
88 |
+
</'.$code.'>';
|
89 |
+
}
|
90 |
+
$xmlString .= "</fields></config>";
|
91 |
+
|
92 |
+
$element = new Mage_Core_Model_Config_Base();
|
93 |
+
$element->loadString($xmlString);
|
94 |
+
|
95 |
+
|
96 |
+
foreach($element->getNode('fields') as $elements){
|
97 |
+
|
98 |
+
|
99 |
+
$elements = (array)$elements;
|
100 |
+
// sort either by sort_order or by child node values bypassing the sort_order
|
101 |
+
if ($group->sort_fields && $group->sort_fields->by) {
|
102 |
+
$fieldset->setSortElementsByAttribute((string)$group->sort_fields->by,
|
103 |
+
($group->sort_fields->direction_desc ? SORT_DESC : SORT_ASC)
|
104 |
+
);
|
105 |
+
} else {
|
106 |
+
usort($elements, array($this, '_sortForm'));
|
107 |
+
}
|
108 |
+
|
109 |
+
foreach ($elements as $e) {
|
110 |
+
if (!$this->_canShowField($e)) {
|
111 |
+
continue;
|
112 |
+
}
|
113 |
+
|
114 |
+
/**
|
115 |
+
* Look for custom defined field path
|
116 |
+
*/
|
117 |
+
$path = (string)$e->config_path;
|
118 |
+
if (empty($path)) {
|
119 |
+
$path = $section->getName() . '/' . $group->getName() . '/' . $fieldPrefix . $e->getName();
|
120 |
+
} elseif (strrpos($path, '/') > 0) {
|
121 |
+
// Extend config data with new section group
|
122 |
+
$groupPath = substr($path, 0, strrpos($path, '/'));
|
123 |
+
if (!isset($configDataAdditionalGroups[$groupPath])) {
|
124 |
+
$this->_configData = $this->_configDataObject->extendConfig($groupPath, false, $this->_configData);
|
125 |
+
$configDataAdditionalGroups[$groupPath] = true;
|
126 |
+
}
|
127 |
+
}
|
128 |
+
|
129 |
+
$id = $section->getName() . '_' . $group->getName() . '_' . $fieldPrefix . $e->getName();
|
130 |
+
|
131 |
+
if (isset($this->_configData[$path])) {
|
132 |
+
$data = $this->_configData[$path];
|
133 |
+
$inherit = false;
|
134 |
+
} else {
|
135 |
+
$data = $this->_configRoot->descend($path);
|
136 |
+
$inherit = true;
|
137 |
+
}
|
138 |
+
if ($e->frontend_model) {
|
139 |
+
$fieldRenderer = Mage::getBlockSingleton((string)$e->frontend_model);
|
140 |
+
} else {
|
141 |
+
$fieldRenderer = $this->_defaultFieldRenderer;
|
142 |
+
}
|
143 |
+
|
144 |
+
$fieldRenderer->setForm($this);
|
145 |
+
$fieldRenderer->setConfigData($this->_configData);
|
146 |
+
|
147 |
+
$helperName = $this->_configFields->getAttributeModule($section, $group, $e);
|
148 |
+
$fieldType = (string)$e->frontend_type ? (string)$e->frontend_type : 'text';
|
149 |
+
$name = 'groups['.$group->getName().'][fields]['.$fieldPrefix.$e->getName().'][value]';
|
150 |
+
$label = Mage::helper($helperName)->__($labelPrefix).' '.Mage::helper($helperName)->__((string)$e->label);
|
151 |
+
$hint = (string)$e->hint ? Mage::helper($helperName)->__((string)$e->hint) : '';
|
152 |
+
|
153 |
+
if ($e->backend_model) {
|
154 |
+
$model = Mage::getModel((string)$e->backend_model);
|
155 |
+
if (!$model instanceof Mage_Core_Model_Config_Data) {
|
156 |
+
Mage::throwException('Invalid config field backend model: '.(string)$e->backend_model);
|
157 |
+
}
|
158 |
+
$model->setPath($path)
|
159 |
+
->setValue($data)
|
160 |
+
->setWebsite($this->getWebsiteCode())
|
161 |
+
->setStore($this->getStoreCode())
|
162 |
+
->afterLoad();
|
163 |
+
$data = $model->getValue();
|
164 |
+
}
|
165 |
+
|
166 |
+
$comment = $this->_prepareFieldComment($e, $helperName, $data);
|
167 |
+
$tooltip = $this->_prepareFieldTooltip($e, $helperName);
|
168 |
+
|
169 |
+
if ($e->depends) {
|
170 |
+
foreach ($e->depends->children() as $dependent) {
|
171 |
+
$dependentId = $section->getName() . '_' . $group->getName() . '_' . $fieldPrefix . $dependent->getName();
|
172 |
+
$dependentValue = (string) $dependent;
|
173 |
+
$this->_getDependence()
|
174 |
+
->addFieldMap($id, $id)
|
175 |
+
->addFieldMap($dependentId, $dependentId)
|
176 |
+
->addFieldDependence($id, $dependentId, $dependentValue);
|
177 |
+
}
|
178 |
+
}
|
179 |
+
|
180 |
+
$field = $fieldset->addField($id, $fieldType, array(
|
181 |
+
'name' => $name,
|
182 |
+
'label' => $label,
|
183 |
+
'comment' => $comment,
|
184 |
+
'tooltip' => $tooltip,
|
185 |
+
'hint' => $hint,
|
186 |
+
'value' => $data,
|
187 |
+
'inherit' => $inherit,
|
188 |
+
'class' => $e->frontend_class,
|
189 |
+
'field_config' => $e,
|
190 |
+
'scope' => $this->getScope(),
|
191 |
+
'scope_id' => $this->getScopeId(),
|
192 |
+
'scope_label' => $this->getScopeLabel($e),
|
193 |
+
'can_use_default_value' => $this->canUseDefaultValue((int)$e->show_in_default),
|
194 |
+
'can_use_website_value' => $this->canUseWebsiteValue((int)$e->show_in_website),
|
195 |
+
));
|
196 |
+
$this->_prepareFieldOriginalData($field, $e);
|
197 |
+
|
198 |
+
if (isset($e->validate)) {
|
199 |
+
$field->addClass($e->validate);
|
200 |
+
}
|
201 |
+
|
202 |
+
if (isset($e->frontend_type) && 'multiselect' === (string)$e->frontend_type && isset($e->can_be_empty)) {
|
203 |
+
$field->setCanBeEmpty(true);
|
204 |
+
}
|
205 |
+
|
206 |
+
$field->setRenderer($fieldRenderer);
|
207 |
+
|
208 |
+
if ($e->source_model) {
|
209 |
+
// determine callback for the source model
|
210 |
+
$factoryName = (string)$e->source_model;
|
211 |
+
$method = false;
|
212 |
+
if (preg_match('/^([^:]+?)::([^:]+?)$/', $factoryName, $matches)) {
|
213 |
+
array_shift($matches);
|
214 |
+
list($factoryName, $method) = array_values($matches);
|
215 |
+
}
|
216 |
+
|
217 |
+
$sourceModel = Mage::getSingleton($factoryName);
|
218 |
+
if ($sourceModel instanceof Varien_Object) {
|
219 |
+
$sourceModel->setPath($path);
|
220 |
+
}
|
221 |
+
if ($method) {
|
222 |
+
if ($fieldType == 'multiselect') {
|
223 |
+
$optionArray = $sourceModel->$method();
|
224 |
+
} else {
|
225 |
+
$optionArray = array();
|
226 |
+
foreach ($sourceModel->$method() as $value => $label) {
|
227 |
+
$optionArray[] = array('label' => $label, 'value' => $value);
|
228 |
+
}
|
229 |
+
}
|
230 |
+
} else {
|
231 |
+
$optionArray = $sourceModel->toOptionArray($fieldType == 'multiselect');
|
232 |
+
}
|
233 |
+
$field->setValues($optionArray);
|
234 |
+
}
|
235 |
+
}
|
236 |
+
}
|
237 |
+
return $this;
|
238 |
+
}
|
239 |
+
|
240 |
+
}
|
app/code/community/Sharpdot/SharpShippingByCustomerGroup/Helper/Data.php
ADDED
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 Sharpdot
|
22 |
+
* @package Sharpdot_SharpShippingByCustomerGroup
|
23 |
+
* @copyright Copyright (c) 2010 Sharpdot Inc. (http://www.sharpdotinc.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Helper
|
30 |
+
*
|
31 |
+
* @category Sharpdot
|
32 |
+
* @package Sharpdot_SharpShippingByCustomerGroup
|
33 |
+
* @author Mike D
|
34 |
+
*/
|
35 |
+
class Sharpdot_SharpShippingByCustomerGroup_Helper_Data extends Mage_Core_Helper_Abstract
|
36 |
+
{
|
37 |
+
public function getAllowedShippingCarriersByCustomerGroup($customerGroup = null)
|
38 |
+
{
|
39 |
+
//if no customergroupId then return nothing. this allows admin to get all avaliable methods.
|
40 |
+
if(is_null($customerGroup)){
|
41 |
+
return array();
|
42 |
+
}
|
43 |
+
|
44 |
+
$carriers = Mage::getStoreConfig('sharpshippingbycustomergroup/shipping_methods');
|
45 |
+
|
46 |
+
$allowedCarriers = array();
|
47 |
+
foreach($carriers as $code => $customerGroupIdCsv){
|
48 |
+
$allowedGroupIds = explode(',', $customerGroupIdCsv);
|
49 |
+
|
50 |
+
if(in_array($customerGroup, $allowedGroupIds)){
|
51 |
+
$allowedCarriers[] = $code;
|
52 |
+
}
|
53 |
+
}
|
54 |
+
|
55 |
+
return $allowedCarriers;
|
56 |
+
}
|
57 |
+
}
|
app/code/community/Sharpdot/SharpShippingByCustomerGroup/Model/Adminhtml/System/Config/Source/Customer/Group.php
ADDED
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 Sharpdot
|
22 |
+
* @package Sharpdot_SharpShippingByCustomerGroup
|
23 |
+
* @copyright Copyright (c) 2010 Sharpdot Inc. (http://www.sharpdotinc.com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
|
28 |
+
class Sharpdot_SharpShippingByCustomerGroup_Model_Adminhtml_System_Config_Source_Customer_Group
|
29 |
+
{
|
30 |
+
protected $_options;
|
31 |
+
|
32 |
+
public function toOptionArray()
|
33 |
+
{
|
34 |
+
if (!$this->_options) {
|
35 |
+
$this->_options = Mage::getResourceModel('customer/group_collection')
|
36 |
+
//->setRealGroupsFilter()
|
37 |
+
->loadData()->toOptionArray();
|
38 |
+
array_unshift($this->_options, array('value'=> '', 'label'=> Mage::helper('sharppaymentsbycustomergroup')->__('-- Please Select --')));
|
39 |
+
}
|
40 |
+
return $this->_options;
|
41 |
+
}
|
42 |
+
}
|
app/code/community/Sharpdot/SharpShippingByCustomerGroup/Model/Shipping/Rate/Request.php
ADDED
@@ -0,0 +1,100 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 Sharpdot
|
22 |
+
* @package Sharpdot_SharpShippingByCustomerGroup
|
23 |
+
* @copyright Copyright (c) 2010 Sharpdot Inc. (http://www.sharpdotinc..com)
|
24 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
25 |
+
*/
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Fields:
|
29 |
+
* - orig:
|
30 |
+
* - country_id: UK
|
31 |
+
* - region_id: 1
|
32 |
+
* - postcode: 90034
|
33 |
+
* - dest:
|
34 |
+
* - country_id: UK
|
35 |
+
* - region_id: 2
|
36 |
+
* - postcode: 01005
|
37 |
+
* - package:
|
38 |
+
* - value: $100
|
39 |
+
* - weight: 1.5 lb
|
40 |
+
* - height: 10"
|
41 |
+
* - width: 10"
|
42 |
+
* - depth: 10"
|
43 |
+
* - order:
|
44 |
+
* - total_qty: 10
|
45 |
+
* - subtotal: $100
|
46 |
+
* - option
|
47 |
+
* - insurance: true
|
48 |
+
* - handling: $1
|
49 |
+
* - table (shiptable)
|
50 |
+
* - condition_name: package_weight
|
51 |
+
* - limit
|
52 |
+
* - carrier: ups
|
53 |
+
* - method: 3dp
|
54 |
+
* - ups
|
55 |
+
* - pickup: CC
|
56 |
+
* - container: CP
|
57 |
+
* - address: RES
|
58 |
+
*/
|
59 |
+
class Sharpdot_SharpShippingByCustomerGroup_Model_Shipping_Rate_Request extends Mage_Shipping_Model_Rate_Request
|
60 |
+
{
|
61 |
+
|
62 |
+
protected function _construct()
|
63 |
+
{
|
64 |
+
//allways force the check.
|
65 |
+
$this->setLimitCarrier();
|
66 |
+
}
|
67 |
+
|
68 |
+
protected function _getCustomerGroupCarriers()
|
69 |
+
{
|
70 |
+
//Is enabled
|
71 |
+
if(!Mage::getStoreConfig('sharpshippingbycustomergroup/settings/enabled')){
|
72 |
+
return array();
|
73 |
+
}
|
74 |
+
|
75 |
+
//Is admin
|
76 |
+
if (Mage::getSingleton('admin/session')->isLoggedIn()) { //Dont restrict admin
|
77 |
+
return array();
|
78 |
+
}
|
79 |
+
|
80 |
+
|
81 |
+
$customerGroupId = Mage::getSingleton('customer/session')->getCustomerGroupId();
|
82 |
+
$allowedShippingMethodsByGroup = Mage::helper('sharpshippingbycustomergroup')->getAllowedShippingCarriersByCustomerGroup($customerGroupId);
|
83 |
+
|
84 |
+
return $allowedShippingMethodsByGroup;
|
85 |
+
}
|
86 |
+
|
87 |
+
public function setLimitCarrier($carrier='')
|
88 |
+
{
|
89 |
+
if(empty($carrier)){
|
90 |
+
$carrier = array();
|
91 |
+
}elseif(!is_array($carrier)){
|
92 |
+
$carrier = array($carrier);
|
93 |
+
}
|
94 |
+
|
95 |
+
|
96 |
+
$allowedCarriers = array_unique(array_merge($this->_getCustomerGroupCarriers(), $carrier));
|
97 |
+
|
98 |
+
$this->setData('limit_carrier', $allowedCarriers);
|
99 |
+
}
|
100 |
+
}
|
app/code/community/Sharpdot/SharpShippingByCustomerGroup/etc/config.xml
ADDED
@@ -0,0 +1,111 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<Sharpdot_SharpShippingByCustomerGroup>
|
5 |
+
<version>0.1.0</version>
|
6 |
+
</Sharpdot_SharpShippingByCustomerGroup>
|
7 |
+
</modules>
|
8 |
+
<admin />
|
9 |
+
<global>
|
10 |
+
<blocks>
|
11 |
+
<sharpshippingbycustomergroup><class>Sharpdot_SharpShippingByCustomerGroup_Block</class></sharpshippingbycustomergroup>
|
12 |
+
</blocks>
|
13 |
+
<helpers>
|
14 |
+
<sharpshippingbycustomergroup>
|
15 |
+
<class>Sharpdot_SharpShippingByCustomerGroup_Helper</class>
|
16 |
+
</sharpshippingbycustomergroup>
|
17 |
+
</helpers>
|
18 |
+
<models>
|
19 |
+
<sharpshippingbycustomergroup>
|
20 |
+
<class>Sharpdot_SharpShippingByCustomerGroup_Model</class>
|
21 |
+
<resourceModel>sharpshippingbycustomergroup_mysql4</resourceModel>
|
22 |
+
</sharpshippingbycustomergroup>
|
23 |
+
<sharpshippingbycustomergroup_mysql4>
|
24 |
+
<class>Sharpdot_SharpShippingByCustomerGroup_Model_Mysql4</class>
|
25 |
+
</sharpshippingbycustomergroup_mysql4>
|
26 |
+
|
27 |
+
<shipping>
|
28 |
+
<rewrite>
|
29 |
+
<rate_request>Sharpdot_SharpShippingByCustomerGroup_Model_Shipping_Rate_Request</rate_request>
|
30 |
+
</rewrite>
|
31 |
+
</shipping>
|
32 |
+
</models>
|
33 |
+
<resources>
|
34 |
+
<sharpshippingbycustomergroup_setup>
|
35 |
+
<setup>
|
36 |
+
<module>Sharpdot_SharpShippingByCustomerGroup</module>
|
37 |
+
</setup>
|
38 |
+
<connection>
|
39 |
+
<use>core_setup</use>
|
40 |
+
</connection>
|
41 |
+
</sharpshippingbycustomergroup_setup>
|
42 |
+
<sharpshippingbycustomergroup_write>
|
43 |
+
<connection>
|
44 |
+
<use>core_write</use>
|
45 |
+
</connection>
|
46 |
+
</sharpshippingbycustomergroup_write>
|
47 |
+
<sharpshippingbycustomergroup_read>
|
48 |
+
<connection>
|
49 |
+
<use>core_read</use>
|
50 |
+
</connection>
|
51 |
+
</sharpshippingbycustomergroup_read>
|
52 |
+
</resources>
|
53 |
+
</global>
|
54 |
+
<adminhtml>
|
55 |
+
<translate>
|
56 |
+
<modules>
|
57 |
+
<Sharpdot_SharpShippingByCustomerGroup>
|
58 |
+
<files>
|
59 |
+
<default>Sharpdot_SharpShippingByCustomerGroup.csv</default>
|
60 |
+
</files>
|
61 |
+
</Sharpdot_SharpShippingByCustomerGroup>
|
62 |
+
</modules>
|
63 |
+
</translate>
|
64 |
+
<acl>
|
65 |
+
<resources>
|
66 |
+
<admin>
|
67 |
+
<children>
|
68 |
+
<system>
|
69 |
+
<children>
|
70 |
+
<config>
|
71 |
+
<children>
|
72 |
+
<sharpshippingbycustomergroup translate="title" module="sharpshippingbycustomergroup">
|
73 |
+
<title>Shipping Methods By Customer Group Section</title>
|
74 |
+
</sharpshippingbycustomergroup>
|
75 |
+
</children>
|
76 |
+
</config>
|
77 |
+
</children>
|
78 |
+
</system>
|
79 |
+
</children>
|
80 |
+
</admin>
|
81 |
+
</resources>
|
82 |
+
</acl>
|
83 |
+
</adminhtml>
|
84 |
+
<frontend>
|
85 |
+
<translate>
|
86 |
+
<modules>
|
87 |
+
<Sharpdot_SharpShippingByCustomerGroup>
|
88 |
+
<files>
|
89 |
+
<default>Sharpdot_SharpShippingByCustomerGroup.csv</default>
|
90 |
+
</files>
|
91 |
+
</Sharpdot_SharpShippingByCustomerGroup>
|
92 |
+
</modules>
|
93 |
+
</translate>
|
94 |
+
<layout>
|
95 |
+
<updates>
|
96 |
+
<sharpshippingbycustomergroup module="Sharpdot_SharpShippingByCustomerGroup">
|
97 |
+
<file>sharpdot_sharpshippingbycustomergroup.xml</file>
|
98 |
+
</sharpshippingbycustomergroup>
|
99 |
+
</updates>
|
100 |
+
</layout>
|
101 |
+
</frontend>
|
102 |
+
|
103 |
+
<default>
|
104 |
+
<sharpshippingbycustomergroup>
|
105 |
+
<settings>
|
106 |
+
<enabled>enabled</enabled>
|
107 |
+
</settings>
|
108 |
+
</sharpshippingbycustomergroup>
|
109 |
+
</default>
|
110 |
+
|
111 |
+
</config>
|
app/code/community/Sharpdot/SharpShippingByCustomerGroup/etc/system.xml
ADDED
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<!--
|
3 |
+
/**
|
4 |
+
* Magento
|
5 |
+
*
|
6 |
+
* NOTICE OF LICENSE
|
7 |
+
*
|
8 |
+
* This source file is subject to the Academic Free License (AFL 3.0)
|
9 |
+
* that is bundled with this package in the file LICENSE_AFL.txt.
|
10 |
+
* It is also available through the world-wide-web at this URL:
|
11 |
+
* http://opensource.org/licenses/afl-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 |
+
* @category Sharpdot
|
23 |
+
* @package Sharpdot_SharpShippingByCustomerGroup
|
24 |
+
* @copyright Copyright (c) 2010 Sharpdot Inc. (http://www.sharpdotinc.com)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
-->
|
28 |
+
<config>
|
29 |
+
<sections>
|
30 |
+
<sharpshippingbycustomergroup translate="label" module="sharpshippingbycustomergroup">
|
31 |
+
<class>separator-top</class>
|
32 |
+
<label>Shipping Carriers By Customer Group</label>
|
33 |
+
<tab>sales</tab>
|
34 |
+
<frontend_type>text</frontend_type>
|
35 |
+
<sort_order>200</sort_order>
|
36 |
+
<show_in_default>1</show_in_default>
|
37 |
+
<show_in_website>1</show_in_website>
|
38 |
+
<show_in_store>1</show_in_store>
|
39 |
+
<frontend_model>sharpshippingbycustomergroup/adminhtml_system_config_form</frontend_model>
|
40 |
+
<groups>
|
41 |
+
<settings translate="label">
|
42 |
+
<label>General Settings</label>
|
43 |
+
<frontend_type>text</frontend_type>
|
44 |
+
<sort_order>10</sort_order>
|
45 |
+
<show_in_default>1</show_in_default>
|
46 |
+
<show_in_website>1</show_in_website>
|
47 |
+
<show_in_store>1</show_in_store>
|
48 |
+
<fields>
|
49 |
+
<enabled translate="label">
|
50 |
+
<label>Enabled</label>
|
51 |
+
<frontend_type>select</frontend_type>
|
52 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
53 |
+
<sort_order>1</sort_order>
|
54 |
+
|
55 |
+
<show_in_default>1</show_in_default>
|
56 |
+
<show_in_website>0</show_in_website>
|
57 |
+
<show_in_store>0</show_in_store>
|
58 |
+
</enabled>
|
59 |
+
</fields>
|
60 |
+
</settings>
|
61 |
+
<shipping_methods translate="label">
|
62 |
+
<label>Allowed Carriers by Customer Group</label>
|
63 |
+
<frontend_type>text</frontend_type>
|
64 |
+
<sort_order>100</sort_order>
|
65 |
+
<show_in_default>1</show_in_default>
|
66 |
+
<show_in_website>1</show_in_website>
|
67 |
+
<show_in_store>1</show_in_store>
|
68 |
+
<use_custom_form>1</use_custom_form>
|
69 |
+
<!-- Note That Fields are set up in the Sections Frontend Model -->
|
70 |
+
</shipping_methods>
|
71 |
+
</groups>
|
72 |
+
</sharpshippingbycustomergroup>
|
73 |
+
</sections>
|
74 |
+
</config>
|
app/etc/modules/Sharpdot_SharpShippingByCustomerGroup.xml
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<Sharpdot_SharpShippingByCustomerGroup>
|
5 |
+
<active>true</active>
|
6 |
+
<codePool>community</codePool>
|
7 |
+
<depends>
|
8 |
+
</depends>
|
9 |
+
</Sharpdot_SharpShippingByCustomerGroup>
|
10 |
+
</modules>
|
11 |
+
</config>
|
package.xml
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<package>
|
3 |
+
<name>SharpShippingByCustomerGroup</name>
|
4 |
+
<version>0.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>Selectable Shipping Carriers by Customer Group</summary>
|
10 |
+
<description>This package allows administrators to choose which enabled shipping carriers a customer group can use.</description>
|
11 |
+
<notes>Selectable Payments for Customer Groups</notes>
|
12 |
+
<authors><author><name>Michael Dost</name><user>auto-converted</user><email>mdost@sharpdotinc.com</email></author></authors>
|
13 |
+
<date>2011-01-14</date>
|
14 |
+
<time>05:34:44</time>
|
15 |
+
<contents><target name="mageetc"><dir name="modules"><file name="Sharpdot_SharpShippingByCustomerGroup.xml" hash="eddd74bebc76e5aa615ab604e82a89c6"/></dir></target><target name="magecommunity"><dir name="Sharpdot"><dir name="SharpShippingByCustomerGroup"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><file name="Form.php" hash="01a38d4eab68272eb10a332251c2cc63"/></dir></dir></dir></dir><dir name="etc"><file name="config.xml" hash="bd369b22536f4aece80c2397f2cb01fc"/><file name="system.xml" hash="089ecdea050b69b3c133c042da63d678"/></dir><dir name="Helper"><file name="Data.php" hash="87f42620bcf782da87eee11bf4fc958e"/></dir><dir name="Model"><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Source"><dir name="Customer"><file name="Group.php" hash="9e21d0d37264e25d53f10e7c7a104b08"/></dir></dir></dir></dir></dir><dir name="Shipping"><dir name="Rate"><file name="Request.php" hash="5255ecb245861d789bd66f7427e135e0"/></dir></dir></dir></dir></dir></target></contents>
|
16 |
+
<compatible/>
|
17 |
+
<dependencies/>
|
18 |
+
</package>
|