50 lines
1.1 KiB
SQL
50 lines
1.1 KiB
SQL
/**
|
|
* Obtains a customer id from a phone number.
|
|
*
|
|
* @param v_phone The caller phone number
|
|
* @return The customer id or %NULL if customer not exists or is inactive
|
|
**/
|
|
USE pbx;
|
|
DROP FUNCTION IF EXISTS customer_from_phone;
|
|
DELIMITER $$
|
|
CREATE FUNCTION customer_from_phone (v_phone VARCHAR(255))
|
|
RETURNS INT
|
|
DETERMINISTIC
|
|
BEGIN
|
|
DECLARE v_customer INT DEFAULT NULL;
|
|
|
|
SET @phone = v_phone COLLATE 'utf8_unicode_ci';
|
|
|
|
-- Searchs a customer associated to the phone number
|
|
|
|
DROP TEMPORARY TABLE IF EXISTS tmp.customer;
|
|
CREATE TEMPORARY TABLE tmp.customer
|
|
ENGINE = MEMORY
|
|
SELECT id_cliente customer
|
|
FROM vn2008.Clientes c
|
|
WHERE telefono = @phone
|
|
OR movil = @phone
|
|
UNION
|
|
SELECT id_cliente
|
|
FROM vn2008.Consignatarios
|
|
WHERE telefono = @phone
|
|
OR movil = @phone
|
|
UNION
|
|
SELECT r.id_cliente
|
|
FROM vn2008.Relaciones r
|
|
JOIN vn2008.Contactos c ON r.Id_Contacto = c.Id_Contacto
|
|
WHERE telefono = @phone
|
|
OR movil = @phone;
|
|
|
|
SELECT t.customer INTO v_customer
|
|
FROM tmp.customer t
|
|
JOIN vn2008.Clientes c ON c.id_cliente = t.customer
|
|
WHERE c.activo
|
|
LIMIT 1;
|
|
|
|
DROP TEMPORARY TABLE tmp.customer;
|
|
|
|
RETURN v_customer;
|
|
END$$
|
|
DELIMITER ;
|