DELIMITER $$ CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`ticket_recalc`(vSelf INT, vTaxArea VARCHAR(25)) proc:BEGIN /** * Calcula y guarda el total con/sin IVA en un ticket. * * @param vSelf Identificador del ticket * @param vTaxArea */ DECLARE hasInvoice BOOL; SELECT COUNT(*) INTO hasInvoice FROM ticket WHERE id = vSelf AND refFk IS NOT NULL; IF hasInvoice THEN LEAVE proc; END IF; DROP TEMPORARY TABLE IF EXISTS tmp.ticket; CREATE TEMPORARY TABLE tmp.ticket ENGINE = MEMORY SELECT vSelf ticketFk; CALL ticketGetTotal(vTaxArea); UPDATE ticket t JOIN tmp.ticketTotal tt ON tt.ticketFk = t.id SET t.totalWithVat = tt.total, t.totalWithoutVat = tt.totalWithoutVat; DROP TEMPORARY TABLE tmp.ticket, tmp.ticketTotal; END$$ DELIMITER ;