
Originally Posted by
strelitzia
Interestingly, if I enable another shipping method, flat rate for example, the missing #otshipping warning goes away.
Can anyone else confirm that using storepickup as the only shipping method causes the missing #otshipping warning?
I can! It's a core-file issue; you'll need to edit /includes/classes/shipping.php's cheapest method:
Code:
function cheapest() {
if (!is_array($this->modules)) return false;
$rates = array();
foreach($this->modules as $value) {
$class = substr($value, 0, strrpos($value, '.'));
if (isset($GLOBALS[$class]) && is_object($GLOBALS[$class]) && $GLOBALS[$class]->enabled) {
$quotes = isset($GLOBALS[$class]->quotes) ? $GLOBALS[$class]->quotes : null;
if (empty($quotes['methods'])) {
continue;
}
$size = sizeof($quotes['methods']);
for ($i=0; $i<$size; $i++) {
if (isset($quotes['methods'][$i]['cost'])){
$rates[] = array('id' => $quotes['id'] . '_' . $quotes['methods'][$i]['id'],
'title' => $quotes['module'] . ' (' . $quotes['methods'][$i]['title'] . ')',
'cost' => $quotes['methods'][$i]['cost'],
'module' => $quotes['id']
);
}
}
}
}
$cheapest = false;
$size = sizeof($rates);
for ($i=0; $i<$size; $i++) {
if (is_array($cheapest)) {
// never quote storepickup as lowest - needs to be configured in shipping module
if ($rates[$i]['cost'] < $cheapest['cost'] and $rates[$i]['module'] != 'storepickup') {
$cheapest = $rates[$i];
}
} else {
if ($rates[$i]['module'] != 'storepickup') {
$cheapest = $rates[$i];
}
}
}
$this->notify('NOTIFY_SHIPPING_MODULE_CALCULATE_CHEAPEST', $cheapest, $cheapest, $rates);
return $cheapest;
}
... and change the highlighted line to read:
Code:
if ($size === 1 || $rates[$i]['module'] != 'storepickup') {
That change enables the storepickup to be selected as the cheapest ... if it's the only shipping method available.
Bookmarks