7299_testToMaster #2411

Merged
alexm merged 342 commits from 7299_testToMaster into master 2024-05-07 05:30:42 +00:00
2 changed files with 101 additions and 17 deletions
Showing only changes of commit dddcacee7a - Show all commits

View File

@ -2,13 +2,13 @@ DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`riskAllClients`(maxRiskDate DATE) CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`riskAllClients`(maxRiskDate DATE)
BEGIN BEGIN
DROP TEMPORARY TABLE IF EXISTS tmp.clientGetDebt; DROP TEMPORARY TABLE IF EXISTS tmp.client_list;
CREATE TEMPORARY TABLE tmp.clientGetDebt CREATE TEMPORARY TABLE tmp.client_list
(PRIMARY KEY (clientFk)) (PRIMARY KEY (Id_Cliente))
ENGINE = MEMORY ENGINE = MEMORY
SELECT id clientFk, null grade FROM client; SELECT id Id_Cliente, null grade FROM vn.client;
CALL client_getDebt (maxRiskDate); CALL vn2008.risk_vs_client_list(maxRiskDate);
SELECT SELECT
c.RazonSocial, c.RazonSocial,
@ -19,11 +19,11 @@ BEGIN
c.Id_Pais c.Id_Pais
FROM FROM
vn2008.Clientes c vn2008.Clientes c
JOIN tmp.risk r ON r.clientFk = c.Id_Cliente JOIN tmp.risk r ON r.Id_Cliente = c.Id_Cliente
JOIN tmp.clientGetDebt ci ON c.Id_Cliente = ci.clientFk JOIN tmp.client_list ci ON c.Id_Cliente = ci.Id_Cliente
GROUP BY c.Id_cliente; GROUP BY c.Id_cliente;
DROP TEMPORARY TABLE IF EXISTS tmp.risk; DROP TEMPORARY TABLE IF EXISTS tmp.risk;
DROP TEMPORARY TABLE IF EXISTS tmp.clientGetDebt; DROP TEMPORARY TABLE IF EXISTS tmp.client_list;
END$$ END$$
DELIMITER ; DELIMITER ;

View File

@ -0,0 +1,84 @@
DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`risk_vs_client_list`(maxRiskDate DATE)
BEGIN
/**
* Calcula el riesgo para los clientes activos de la tabla temporal tmp.client_list
*
* @deprecated usar vn.client_getDebt
* @param maxRiskDate Fecha maxima de los registros
* @return table tmp.risk
*/
DECLARE startingDate DATETIME DEFAULT TIMESTAMPADD(DAY, - DAYOFMONTH(util.VN_CURDATE()) - 60, util.VN_CURDATE());
DECLARE endingDate DATETIME;
DECLARE MAX_RISK_ALLOWED INT DEFAULT 200;
SET maxRiskDate = IFNULL(maxRiskDate, util.VN_CURDATE());
SET endingDate = TIMESTAMP(maxRiskDate, '23:59:59');
DROP TEMPORARY TABLE IF EXISTS tmp.client_list_2;
CREATE TEMPORARY TABLE tmp.client_list_2
(PRIMARY KEY (Id_Cliente))
ENGINE = MEMORY
SELECT *
FROM tmp.client_list;
DROP TEMPORARY TABLE IF EXISTS tmp.client_list_3;
CREATE TEMPORARY TABLE tmp.client_list_3
(PRIMARY KEY (Id_Cliente))
ENGINE = MEMORY
SELECT *
FROM tmp.client_list;
DROP TEMPORARY TABLE IF EXISTS tmp.tickets_sin_facturar;
CREATE TEMPORARY TABLE tmp.tickets_sin_facturar
(PRIMARY KEY (Id_Cliente))
ENGINE = MEMORY
SELECT t.Id_Cliente, floor(IF(cl.isVies, 1, 1.1) * sum(Cantidad * Preu * (100 - Descuento) / 100)) as total
FROM Movimientos m
JOIN Tickets t on m.Id_Ticket = t.Id_Ticket
JOIN tmp.client_list c on c.Id_Cliente = t.Id_Cliente
JOIN vn.client cl ON cl.id = t.Id_Cliente
WHERE Factura IS NULL
AND Fecha BETWEEN startingDate AND endingDate
GROUP BY t.Id_Cliente;
DROP TEMPORARY TABLE IF EXISTS tmp.risk;
CREATE TEMPORARY TABLE tmp.risk
(PRIMARY KEY (Id_Cliente))
ENGINE = MEMORY
SELECT Id_Cliente, SUM(amount) risk, sum(saldo) saldo
FROM Clientes c
JOIN (
SELECT clientFk, SUM(amount) amount,SUM(amount) saldo
FROM vn.clientRisk
JOIN tmp.client_list on Id_Cliente = clientFk
GROUP BY clientFk
UNION ALL
SELECT Id_Cliente, SUM(Entregado),SUM(Entregado)
FROM Recibos
JOIN tmp.client_list_2 using(Id_Cliente)
WHERE Fechacobro > endingDate
GROUP BY Id_Cliente
UNION ALL
SELECT Id_Cliente, total,0
FROM tmp.tickets_sin_facturar
UNION ALL
SELECT t.clientFk, CAST(-SUM(t.amount) / 100 AS DECIMAL(10,2)), CAST(-SUM(t.amount) / 100 AS DECIMAL(10,2))
FROM hedera.tpvTransaction t
JOIN tmp.client_list_3 on Id_Cliente = t.clientFk
WHERE t.receiptFk IS NULL
AND t.status = 'ok'
GROUP BY t.clientFk
) t ON c.Id_Cliente = t.clientFk
WHERE c.activo != FALSE
GROUP BY c.Id_Cliente;
DELETE r.*
FROM tmp.risk r
JOIN vn2008.Clientes c on c.Id_Cliente = r.Id_Cliente
JOIN vn2008.pay_met pm on pm.id = c.pay_met_id
WHERE IFNULL(r.saldo,0) < 10
AND r.risk <= MAX_RISK_ALLOWED
AND pm.`name` = 'TARJETA';
END$$
DELIMITER ;