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 ;