38 lines
799 B
MySQL
38 lines
799 B
MySQL
|
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 ;
|