69 lines
1.5 KiB
MySQL
69 lines
1.5 KiB
MySQL
|
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 ;
|