salix/services/db/install/changes/1.2-CHECK/14.clientGetMana.sql

69 lines
1.5 KiB
MySQL
Raw Normal View History

USE `vn`;
DROP function IF EXISTS `clientGetMana`;
DELIMITER $$
USE `vn`$$
CREATE DEFINER=`root`@`%` FUNCTION `clientGetMana`(vClient INT) RETURNS decimal(10,2)
BEGIN
/**
* Devuelve el maná del cliente.
*
* @param vClient Id del cliente
* @return Maná del cliente
*/
DECLARE vMana DECIMAL(10,2);
DECLARE vFromDated DATE;
SELECT max(dated) INTO vFromDated
FROM vn.clientManaCache;
SELECT sum(mana) INTO vMana
FROM
(
SELECT mana
FROM vn.clientManaCache
WHERE clientFk = vClient
AND dated = vFromDated
UNION ALL
SELECT s.quantity * Valor
FROM vn.ticket t
JOIN vn.address a ON a.id = t.addressFk
JOIN vn.sale s on s.ticketFk = t.id
JOIN vn2008.Movimientos_componentes mc on mc.Id_Movimiento = s.id
WHERE Id_Componente IN (37, 39)
AND t.shipped > vFromDated
AND t.shipped < TIMESTAMPADD(DAY,1,CURDATE())
AND a.clientFk = vClient
UNION ALL
SELECT - Entregado
FROM vn2008.Recibos r
JOIN vn2008.Clientes c using(Id_Cliente)
WHERE r.Id_Banco = 66
AND r.Fechacobro > vFromDated
AND r.Fechacobro <= CURDATE()
AND c.Id_Cliente = vClient
UNION ALL
SELECT g.Importe
FROM vn2008.Greuges g
JOIN vn2008.Clientes c using(Id_Cliente)
WHERE g.Greuges_type_id = 3 -- Maná
AND g.Fecha > vFromDated
AND g.Fecha <= CURDATE()
AND c.Id_Cliente = vClient
) sub;
RETURN IFNULL(vMana,0);
END$$
DELIMITER ;