salix/db/routines/bi/procedures/defaultersFromDate.sql

44 lines
1.1 KiB
SQL

DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `bi`.`defaultersFromDate`(
IN vDated DATE
)
BEGIN
/**
* Retorna la info de clientes morosos a una fecha
*
* @param vDated Fecha a comprobar
*/
WITH todayDefaulters AS(
SELECT client, amount, defaulterSince
FROM bi.defaulters
WHERE date = vDated
AND hasChanged
), yesterdayDefaulters AS(
SELECT client, amount
FROM bi.defaulters
WHERE date = vDated - INTERVAL 1 DAY
), newDefaulters AS(
SELECT td.client,
td.amount todayAmount,
yd.amount yesterdayAmount,
ROUND(yd.amount - td.amount, 2) difference,
defaulterSince
FROM todayDefaulters td
JOIN yesterdayDefaulters yd ON yd.client = td.client
WHERE td.amount > 0
HAVING difference <> 0
) SELECT nd.client,
nd.todayAmount,
nd.yesterdayAmount,
nd.difference,
nd.defaulterSince,
c.name Cliente,
d.name salesDepartmentName,
c.payMethodFk pay_met_id,
c.dueDay Vencimiento
FROM newDefaulters nd
LEFT JOIN vn.client c ON c.id = nd.client
LEFT JOIN vn.department d ON d.id = c.salesDepartmentFk;
END$$
DELIMITER ;