Buenas tardes,
Necesito poder buscar al cliente por su numero de teléfono al realizar un pedido desde el backoffice, en lugar de buscarlo por nombre o apellidos.
Creo que hay que modificar :
Para ello deberás sobreescribir o hacer un override en archivo classes/Customer.php de la function
public static function searchByName
dejandola asi mas o menos para que se añada el nº de teléfono y el nº de movil si lo hubiera
public static function searchByName($query, $limit = null) { $sql_base = 'SELECT * FROM `'._DB_PREFIX_.'customer` c LEFT JOIN `'._DB_PREFIX_.'address` g ON g.id_customer = c.id_customer'; $sql = '('.$sql_base.' WHERE c.`email` LIKE \'%'.pSQL($query).'%\' '.Shop::addSqlRestriction(Shop::SHARE_CUSTOMER).')'; $sql .= ' UNION ('.$sql_base.' WHERE c.`id_customer` = '.(int)$query.' '.Shop::addSqlRestriction(Shop::SHARE_CUSTOMER).')'; $sql .= ' UNION ('.$sql_base.' WHERE c.`lastname` LIKE \'%'.pSQL($query).'%\' '.Shop::addSqlRestriction(Shop::SHARE_CUSTOMER).')'; $sql .= ' UNION ('.$sql_base.' WHERE c.`firstname` LIKE \'%'.pSQL($query).'%\' '.Shop::addSqlRestriction(Shop::SHARE_CUSTOMER).')'; $sql .= ' UNION ('.$sql_base.' WHERE g.`phone` LIKE \'%'.pSQL($query).'%\' '.Shop::addSqlRestriction(Shop::SHARE_CUSTOMER).')'; $sql .= ' UNION ('.$sql_base.' WHERE g.`phone_mobile` LIKE \'%'.pSQL($query).'%\' '.Shop::addSqlRestriction(Shop::SHARE_CUSTOMER).')'; if ($limit) { $sql .= ' LIMIT 0, '.(int)$limit; } return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); }
Luego si quieres que aparezca el nº de teléfono en el panel de cliente una vez encontrado, hara falta sobreescribir tambien el archivo
admin\themes\default\template\controllers\orders\form.tpl
añadiendo en esta parte de la function searchCustomers() , la parte que esta en color
if(res.found)
{
var html = '';
$.each(res.customers, function() {
html += '<div class="customerCard col-lg-4">';
html += '<div class="panel">';
html += '<div class="panel-heading">'+this.firstname+' '+this.lastname;
html += '<span class="pull-right">#'+this.id_customer+'</span></div>';
html += '<span>'+this.email+'</span><br/>';
html += '<span class="text-muted">'+((this.phone != '') ? this.phone : '')+'</span><br/>';
html += '<span class="text-muted">'+((this.phone_mobile!= '') ? this.phone_mobile: '')+'</span><br/>';
html += '<span class="text-muted">'+((this.birthday != '0000-00-00') ? this.birthday : '')+'</span><br/>';
html += '<div class="panel-footer">';
html += '<a href="{$link->getAdminLink('AdminCustomers')}&id_customer='+this.id_customer+'&viewcustomer&liteDisplaying=1" class="btn btn- default fancybox"><i class="icon-search"></i> {l s='Details'}</a>';
html += '<button type="button" data-customer="'+this.id_customer+'" class="setup-customer btn btn-default pull-right"><i class="icon-arrow- right"></i> {l s='Choose'}</button>';
html += '</div>';
html += '</div>';
html += '</div>';
});
Pero necesito soporte para poder modificarlo.
Gracias de antemano.
Contenido solo visible a usuarios registrados
Hola Sandro,
Disculpa si no logro comprender bien la consulta, como deseas realizar la búsqueda del teléfono. Si es posible indícanos con mas detalles que deseas realizar de esta forma podemos enviarte que como mayor detalle lo que nos comentas
Un Saludo 😊
Buenas tardes,
Los clientes me mandan los pedidos por telefono y al crearlos desde el backoffice necesitaria que me buscase los clientes por telefono, ahora solo te da la opcion de buscar por nombre y apellidos.
Gracias
Buenas tardes,
Los clientes me mandan los pedidos por telefono y al crearlos desde el backoffice necesitaria que me buscase los clientes por telefono, ahora solo te da la opcion de buscar por nombre y apellidos.
Gracias
He encontrado la solución que os adjunto al primer mensaje pero necesito soporte para poder realizar esos cambios, si no hay otra forma de conseguir que filtre por numero de telefono.
Hola Sandro,
Entiendo en este caso veo que necesitas modificar los archivos que mencionas al principio para añadir la configuración que necesitas, si es asi, lo primero que debes hacer es ingresar a tu cuenta cPanel -> Administrador de Archivos -> Public_html
Luego debes ingresar a la carpeta que tienes los archivos de tu sitio web y ubicar el directorio -> public_html/tu_web/classes/Customer.php y editar este archivo y ubicar la función que indica
public static function searchByName
Esta debes sustituirla por tu nueva función
Una vez guardado los cambios debes ingresar al directorio admin\themes\default\template\controllers\orders\form.tpl y añadir en el archivo donde se encuentran la función function searchCustomers() lo que menciona en el código estas lineas adicionales
html += '<span class="text-muted">'+((this.phone != '') ? this.phone : '')+'</span><br/>';
html += '<span class="text-muted">'+((this.phone_mobile!= '') ? this.phone_mobile: '')+'</span><br/>';
Ten en cuenta que estas modificando archivos directamente del core de prestashop por lo que te sugiero antes de realizar cualquier cambio hagas una copia de seguridad de tu sitio web y los archivos de esta forma si se genera un error puedes restaurarla
Adicional veo que este complemento puede ayudarte a añadir lo que necesitas -> Contenido solo visible a usuarios registrados
Solo ten en cuenta que estos complementos son de pago por lo que te sugiero contactes con el desarrollador del plugin y le preguntes si te permite añadir lo que necesitas
Un Saludo
Muchas gracias, lo intentare pero me parece muy complicado.
No hay ninguna opcion de editar los campos que aparecen cuando filtras el archivo de las direcciones de los clientes o el listado de pedidos?
Por ejemplo que en listado de pedidos aparezca ademas de
ID | Referencia | Nuevo cliente | Entrega | Cliente | Total | Pago | Estado | Fecha |
---|
que aparezca también el teléfono del pedido.
Gracias;
Hola Sandro,
En este caso esta no es una opción por defecto de prestashop por lo que para añadir esto se requiere modificar el código si no quieres modificarlo te recomiendo contactes con nuestro directorio de colaboradores quienes pueden ayudarte a agregar lo que necesitas.
Otra una opción que puedes verificar es el complemento que te menciono anteriormente -> Contenido solo visible a usuarios registrados teniendo en cuenta verificar con del desarrollador del mismo ya estos son de pago por lo que te sugiero compruebes funciona para lo que deseas añadir.
Un Saludo
Hola Sandro,
Gracias a ti, siempre es un placer poder auyudarte
Quedamos muy atentos como ha ido todo
Un Saludo 😊
Estoy revisando esto que os pregunte hace un par de años y estoy intentando añadir el mismo codigo a la tienda nueva que esta en prestashop 1.7, pero no funciona.
No vale la misma modificación en esta versión?
GRacias;
Hola Sandro,
En este caso para nuevas versiones es posible que el código varíe y no funcione de la misma forma, algo que puedes revisar es el modulo que te comente anteriormente → Contenido solo visible a usuarios registrados
Actualmente, veo que tienen compatibilidad con la versión 8.0 de Prestashop
Un Saludo
Muchas gracias, lo miraré.
Hola Sandro,
Gracias a ti, es un placer siempre poder ayudarte.
No dudes en escribirnos si tienes cualquier otra consulta
Un Saludo 😊