salix/db/routines/hedera/procedures/myTicket_list.sql

40 lines
1.3 KiB
SQL

DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `hedera`.`myTicket_list`(vFrom DATE, vTo DATE)
BEGIN
/**
* Returns the current user list of tickets between two dates reange.
* Also returns the total price with tax of every ticket.
*
* @param vFrom From date, if %NULL current date minus 25 days
* @param vTo To date, if %NULL current date
* @select The tickets list
*/
SET vFrom = IFNULL(vFrom, DATE_FORMAT(TIMESTAMPADD(MONTH, -3, util.VN_CURDATE()), '%Y-%m-01'));
SET vTo = IFNULL(vTo, TIMESTAMPADD(YEAR, 1, util.VN_CURDATE()));
DROP TEMPORARY TABLE IF EXISTS tmp.ticket;
CREATE TEMPORARY TABLE tmp.ticket
(KEY (ticketFk))
ENGINE = MEMORY
SELECT t.id ticketFk
FROM myTicket t
WHERE shipped BETWEEN TIMESTAMP(vFrom) AND TIMESTAMP(vTo, '23:59:59');
CALL vn.ticketGetTotal(NULL);
SELECT v.id, IFNULL(v.landed, v.shipped) landed,
v.shipped, v.companyFk, v.nickname,
a.city, ag.description agency, t.total
FROM tmp.ticket i
JOIN vn.ticket v ON v.id = i.ticketFk
JOIN vn.address a ON a.id = v.addressFk
JOIN vn.agencyMode ag ON ag.id = v.agencyModeFk
JOIN tmp.ticketTotal t ON t.ticketFk = i.ticketFk
ORDER BY IFNULL(v.landed, v.shipped) DESC, i.ticketFk DESC;
DROP TEMPORARY TABLE
tmp.ticket,
tmp.ticketTotal;
END$$
DELIMITER ;