82 lines
1.5 KiB
MySQL
82 lines
1.5 KiB
MySQL
|
DELIMITER $$
|
||
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `hedera`.`tpvTransaction_undo`(vSelf INT)
|
||
|
p: BEGIN
|
||
|
DECLARE vCustomer INT;
|
||
|
DECLARE vAmount DOUBLE;
|
||
|
DECLARE vReceipt INT;
|
||
|
DECLARE vDate DATE;
|
||
|
DECLARE vBank INT;
|
||
|
DECLARE vAccount VARCHAR(12);
|
||
|
DECLARE vSubaccount VARCHAR(12);
|
||
|
|
||
|
DECLARE EXIT HANDLER FOR SQLEXCEPTION
|
||
|
BEGIN
|
||
|
ROLLBACK;
|
||
|
RESIGNAL;
|
||
|
END;
|
||
|
|
||
|
START TRANSACTION;
|
||
|
|
||
|
SELECT
|
||
|
t.clientFk
|
||
|
,t.amount / 100
|
||
|
,t.receiptFk
|
||
|
,DATE(t.created)
|
||
|
,m.bankFk
|
||
|
INTO
|
||
|
vCustomer
|
||
|
,vAmount
|
||
|
,vReceipt
|
||
|
,vDate
|
||
|
,vBank
|
||
|
FROM tpvTransaction t
|
||
|
JOIN tpvMerchant m ON m.id = t.merchantFk
|
||
|
JOIN tpvConfig c
|
||
|
WHERE t.id = vSelf
|
||
|
FOR UPDATE;
|
||
|
|
||
|
-- Elimina el recibo
|
||
|
|
||
|
DELETE FROM vn.receipt
|
||
|
WHERE id = vReceipt LIMIT 1;
|
||
|
|
||
|
-- Elimina la entrada de cajas
|
||
|
|
||
|
DELETE FROM vn.till
|
||
|
WHERE bankFk = vBank
|
||
|
AND DATE(dated) = vDate
|
||
|
AND `in` = vAmount
|
||
|
LIMIT 1;
|
||
|
|
||
|
-- Elimina los asientos contables
|
||
|
|
||
|
SELECT accountingAccount INTO vSubaccount
|
||
|
FROM vn.`client` WHERE id = vCustomer;
|
||
|
|
||
|
SELECT account INTO vAccount
|
||
|
FROM vn.bank WHERE id = vBank;
|
||
|
|
||
|
DELETE FROM vn.XDiario
|
||
|
WHERE SUBCTA = vSubaccount
|
||
|
AND CONTRA = vAccount
|
||
|
AND DATE(FECHA) = vDate
|
||
|
AND EUROHABER = vAmount
|
||
|
LIMIT 1;
|
||
|
|
||
|
DELETE FROM vn.XDiario
|
||
|
WHERE CONTRA = vSubaccount
|
||
|
AND SUBCTA = vAccount
|
||
|
AND DATE(FECHA) = vDate
|
||
|
AND EURODEBE = vAmount
|
||
|
LIMIT 1;
|
||
|
|
||
|
-- Actualiza la transaccion
|
||
|
|
||
|
UPDATE tpvTransaction
|
||
|
SET response = NULL, status = 'started'
|
||
|
WHERE id = vSelf;
|
||
|
|
||
|
COMMIT;
|
||
|
END$$
|
||
|
DELIMITER ;
|