Jump to content

Buscar clientes por numero de telefono en "Añadir nuevo pedido"


aguiu

Recommended Posts

Cuando recibo pedidos telefónicos, meto los pedidos con la función "Añadir nuevo pedido" en pedidos del backoffice, luego me pide que busque al cliente para el pedido, pero prestashop solo tiene la posibilidad de buscar el cliente por nombre, pero sería mucho mas rápido poder buscar el cliente por numero de teléfono, ya que cuando me llaman veo el numero de teléfono en la pantalla de mi teléfono y sin preguntarle siquiera al cliente ya podría buscarlo y seria más rápido. ¿Como podría modificar mi prestashop para que busque a los clientes también por numero de teléfono? Gracias de antemano

Link to comment
Share on other sites

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>';

});

  • Like 1
Link to comment
Share on other sites

  • 5 years later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...