salix/db/routines/edi/procedures/ekt_refresh.sql

56 lines
1.1 KiB
MySQL
Raw Normal View History

DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `edi`.`ekt_refresh`(
`vSelf` INT, vMailFk INT)
BEGIN
/**
* Updates a transaction, generates it's barcode.
*/
DECLARE vRewriteKop INT DEFAULT NULL;
DECLARE vTruncatePutOrder INT DEFAULT NULL;
DECLARE vBarcode CHAR(15) DEFAULT NULL;
DECLARE vKop INT;
DECLARE vPutOrderFk BIGINT;
SELECT kop, putOrderFk
INTO vKop, vPutOrderFk
FROM ekt
WHERE id = vSelf;
-- Generates the barcode
SELECT CONCAT(
LPAD(IFNULL(auction,0), 3, 0),
LPAD(IFNULL(klo, 99), 2, 0),
LPAD(DAYOFYEAR(fec), 3, 0),
COALESCE(agj, RIGHT(batchNumber,7), id))
INTO vBarcode
FROM ekt
WHERE id = vSelf;
-- Rewrites the kop parameter
IF vKop IS NULL THEN
SELECT defaultKop INTO vKop FROM exchangeConfig;
END IF;
SELECT e.kop INTO vRewriteKop
FROM mailSender e
JOIN mail m ON m.senderFk = e.id
WHERE m.id = vMailFk;
SET vKop = IFNULL(vRewriteKop, vKop);
-- Format order id
SET vTruncatePutOrder = vPutOrderFk MOD 1000000;
-- Refresh EKT
UPDATE ekt SET
barcode = vBarcode
,kop = vKop
,putOrderFk = vTruncatePutOrder
WHERE id = vSelf;
END$$
DELIMITER ;