DELIMITER $$ CREATE OR REPLACE DEFINER=`vn`@`localhost` PROCEDURE `vn`.`XDiario_check`() BEGIN /** * Realiza la revisiĆ³n diaria de los asientos contables, * identificando y notificando los asientos descuadrados * y ajustando los saldos en caso necesario. */ UPDATE XDiario xd JOIN ( SELECT xd.id, SUBCTA, recon FROM XDiario xd JOIN ( SELECT ASIEN, SUM(IFNULL(ROUND(Eurodebe, 2), 0)) - SUM(IFNULL(ROUND(EUROHABER, 2), 0)) recon FROM XDiario WHERE NOT enlazado GROUP BY ASIEN HAVING recon ) sub ON sub.ASIEN = xd.ASIEN WHERE xd.SUBCTA > '5999999999' GROUP BY xd.ASIEN ) sub ON sub.id = xd.id SET xd.Eurohaber = IF(IFNULL(xd.Eurohaber, 0) = 0, xd.Eurohaber, xd.Eurohaber + sub.recon), xd.Eurodebe = IF(IFNULL(xd.Eurodebe, 0) = 0, xd.Eurodebe, xd.Eurodebe - sub.recon); END$$ DELIMITER ;