Посмотрите в catalog/model/module/geoip.php:71 в методе findCountryAndZone() нужно заменить return false; на return array();
В общем, метод должен выглядеть так:
public function findCountryAndZone($filter = array()) {
$where = array();
$fields = array('c.country_id', 'c.name country_name');
if (!($filter && is_array($filter))) {
return array();
}
if (!empty($filter['iso_code_2'])) {
$where[] = 'c.iso_code_2 = "' . $this->db->escape(utf8_strtolower($filter['iso_code_2'])) . '"';
}
if (!empty($filter['country_id'])) {
$where[] = 'c.country_id = "' . $this->db->escape(utf8_strtolower($filter['country_id'])) . '"';
}
if (!empty($filter['zone_name'])) {
$fields[] = 'z.zone_id, z.name zone_name';
$where[] = 'z.name = "' . $this->db->escape(utf8_strtolower($filter['zone_name'])) . '"';
}
if (!empty($filter['zone_id'])) {
$fields[] = 'z.zone_id, z.name zone_name';
$where[] = 'z.zone_id = "' . (int)$filter['zone_id'] . '"';
}
if (!$where) {
return array();
}
return $this->db->query('SELECT ' . implode(', ', $fields) . ' FROM ' . DB_PREFIX . 'zone z
LEFT JOIN ' . DB_PREFIX . 'country c ON z.country_id = c.country_id
WHERE ' . implode(' AND ', $where))->row;
}