update procedures db
This commit is contained in:
parent
f38210ddd2
commit
261b9686a0
|
@ -0,0 +1,120 @@
|
|||
|
||||
DROP procedure IF EXISTS `hedera`.`tpvTransaction_confirm`;
|
||||
|
||||
DELIMITER $$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `hedera`.`tpvTransaction_confirm`(
|
||||
vAmount INT
|
||||
,vOrder INT
|
||||
,vMerchant INT
|
||||
,vCurrency INT
|
||||
,vResponse INT
|
||||
,vErrorCode VARCHAR(10)
|
||||
)
|
||||
BEGIN
|
||||
/**
|
||||
* Confirma una transacción previamente iniciada, reescribiendo
|
||||
* sus datos por los confirmados por el banco (solo si estos difieren).
|
||||
* Genera el recibo y su correspondiente entrada en caja.
|
||||
*
|
||||
* @param vAmount Cantidad confirmada
|
||||
* @param vOrder Identificador de transacción
|
||||
* @param vMerchant Identificador de comercio
|
||||
* @param vCurrency Identificador de moneda
|
||||
* @param vResponse Identificador de respuesta del banco
|
||||
* @param vErrorCode Código de error del banco, si lo hubiera
|
||||
*/
|
||||
DECLARE vReceipt INT;
|
||||
DECLARE vStatus VARCHAR(10);
|
||||
DECLARE vCustomer INT;
|
||||
DECLARE vBank INT;
|
||||
DECLARE vCompany INT;
|
||||
DECLARE vEmployee INT;
|
||||
DECLARE vIsDuplicated BOOLEAN;
|
||||
DECLARE vDate DATE;
|
||||
DECLARE vConcept VARCHAR(25) DEFAULT 'Cobro Web';
|
||||
|
||||
DECLARE EXIT HANDLER FOR SQLEXCEPTION
|
||||
BEGIN
|
||||
ROLLBACK;
|
||||
RESIGNAL;
|
||||
END;
|
||||
|
||||
START TRANSACTION;
|
||||
|
||||
SELECT COUNT(*) > 0 INTO vIsDuplicated
|
||||
FROM tpvTransaction
|
||||
WHERE id = vOrder AND response IS NOT NULL
|
||||
FOR UPDATE;
|
||||
|
||||
IF vIsDuplicated
|
||||
THEN
|
||||
CALL util.throw ('TRANSACTION_DUPLICATED');
|
||||
END IF;
|
||||
|
||||
IF vResponse BETWEEN 0 AND 99
|
||||
THEN
|
||||
SELECT
|
||||
t.clientFk
|
||||
,m.bankFk
|
||||
,m.companyFk
|
||||
,c.employeeFk
|
||||
,DATE(t.created)
|
||||
INTO
|
||||
vCustomer
|
||||
,vBank
|
||||
,vCompany
|
||||
,vEmployee
|
||||
,vDate
|
||||
FROM tpvMerchant m
|
||||
JOIN tpvConfig c
|
||||
LEFT JOIN tpvTransaction t ON t.id = vOrder
|
||||
WHERE m.id = vMerchant;
|
||||
|
||||
INSERT INTO vn.receipt
|
||||
SET
|
||||
amountPaid = vAmount / 100
|
||||
,payed = vDate
|
||||
,workerFk = vEmployee
|
||||
,bankFk = vBank
|
||||
,clientFk = vCustomer
|
||||
,companyFk = vCompany
|
||||
,invoiceFk = vConcept
|
||||
,isConciliate = TRUE;
|
||||
|
||||
SET vReceipt = LAST_INSERT_ID();
|
||||
SET vStatus = 'ok';
|
||||
|
||||
-- Código redundante
|
||||
|
||||
DO vn.till_new
|
||||
(
|
||||
vCustomer
|
||||
,vBank
|
||||
,vAmount / 100
|
||||
,vConcept
|
||||
,vDate
|
||||
,'A'
|
||||
,TRUE
|
||||
,vCustomer
|
||||
,vCompany
|
||||
,vEmployee
|
||||
);
|
||||
ELSE
|
||||
SET vReceipt = NULL;
|
||||
SET vStatus = 'ko';
|
||||
END IF;
|
||||
|
||||
UPDATE tpvTransaction
|
||||
SET
|
||||
merchantFk = vMerchant
|
||||
,receiptFk = vReceipt
|
||||
,amount = vAmount
|
||||
,response = vResponse
|
||||
,errorCode = vErrorCode
|
||||
,status = vStatus
|
||||
WHERE id = vOrder;
|
||||
COMMIT;
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
||||
|
|
@ -0,0 +1,87 @@
|
|||
USE `hedera`;
|
||||
DROP procedure IF EXISTS `tpvTransaction_undo`;
|
||||
|
||||
DELIMITER $$
|
||||
USE `hedera`$$
|
||||
CREATE DEFINER=`root`@`%` PROCEDURE `tpvTransaction_undo`(vSelf INT)
|
||||
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 ;
|
||||
|
Loading…
Reference in New Issue