mapez991 Posted December 17, 2013 Share Posted December 17, 2013 (edited) Hola a todos. Estoy usando la versión 1.5.6 y el tema default. Estoy usando distintos vendedores, que estan registrados como clientes en la tienda con sus correspondientes cuentas. Cada vendedor, cada vez que hace un cliente nuevo, lo da de alta en su cuenta de la tienda como una nueva dirección de entrega. En el título de la dirección escribimos el nombre del cliente para reconocerlo más rápidamente Al final nos encontramos que cada vendedor en su cuenta de cliente, tiene un montón de direcciones de entrega. El problema que tengo es que cuando llego al paso 3 del proceso de compra, las direcciones de entrega me salen ordenadas en la lista por orden de introducción. Necesito que me salgan por orden alfabético. He estado mirando las clases y los controladores pero no tengo los conocimientos suficientes y no doy con la solución. Adjunto imagen para que quede más claro mi problema. Muchas gracias de antemano Edited December 17, 2013 by mapez991 (see edit history) Link to comment Share on other sites More sharing options...
Sergio Ruiz Posted December 17, 2013 Share Posted December 17, 2013 Mira ver a modo de prueba (si funciona ya despues hacer el override) editar el fichero: /classes/Customer.php Buscar esto: public function getAddresses($id_lang) { $share_order = (bool)Context::getContext()->shop->getGroup()->share_order; $cache_id = 'Customer::getAddresses'.(int)$this->id.'-'.(int)$id_lang.'-'.$share_order; if (!Cache::isStored($cache_id)) { $sql = 'SELECT DISTINCT a.*, cl.`name` AS country, s.name AS state, s.iso_code AS state_iso FROM `'._DB_PREFIX_.'address` a LEFT JOIN `'._DB_PREFIX_.'country` c ON (a.`id_country` = c.`id_country`) LEFT JOIN `'._DB_PREFIX_.'country_lang` cl ON (c.`id_country` = cl.`id_country`) LEFT JOIN `'._DB_PREFIX_.'state` s ON (s.`id_state` = a.`id_state`) '.($share_order ? '' : Shop::addSqlAssociation('country', 'c')).' WHERE `id_lang` = '.(int)$id_lang.' AND `id_customer` = '.(int)$this->id.' AND a.`deleted` = 0'; $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); Cache::store($cache_id, $result); } return Cache::retrieve($cache_id); } y probar dejar algo asi: public function getAddresses($id_lang) { $share_order = (bool)Context::getContext()->shop->getGroup()->share_order; $cache_id = 'Customer::getAddresses'.(int)$this->id.'-'.(int)$id_lang.'-'.$share_order; if (!Cache::isStored($cache_id)) { $sql = 'SELECT DISTINCT a.*, cl.`name` AS country, s.name AS state, s.iso_code AS state_iso FROM `'._DB_PREFIX_.'address` a LEFT JOIN `'._DB_PREFIX_.'country` c ON (a.`id_country` = c.`id_country`) LEFT JOIN `'._DB_PREFIX_.'country_lang` cl ON (c.`id_country` = cl.`id_country`) LEFT JOIN `'._DB_PREFIX_.'state` s ON (s.`id_state` = a.`id_state`) '.($share_order ? '' : Shop::addSqlAssociation('country', 'c')).' WHERE `id_lang` = '.(int)$id_lang.' AND `id_customer` = '.(int)$this->id.' AND a.`deleted` = 0 order by a.`alias`'; $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); Cache::store($cache_id, $result); } return Cache::retrieve($cache_id); } Link to comment Share on other sites More sharing options...
mapez991 Posted December 17, 2013 Author Share Posted December 17, 2013 Muchísimas gracias Sergio, eres un máquina. Ha funcionado a la perfección. Doy el tema por solucionado. Saludos Link to comment Share on other sites More sharing options...
Recommended Posts