DELIMITER $$

CREATE OR REPLACE DEFINER=`vn`@`localhost`
PROCEDURE `vn`.`client_setPackagesDiscountFactor`()
BEGIN
	/**
	 * Set the discount factor for the packages of the clients.
	 */
	UPDATE client c
		JOIN (
			SELECT t.clientFk,
					LEAST((
						SUM(t.packages) / COUNT(DISTINCT DATE(t.shipped))
					) / cc.packagesOptimum, 1) discountFactor
				FROM ticket t
					JOIN clientConfig cc ON TRUE
				WHERE t.shipped > util.VN_CURDATE() - INTERVAL cc.monthsToCalcOptimumPrice MONTH
					AND t.packages
				GROUP BY t.clientFk
		) ca ON c.id = ca.clientFk
	SET c.packagesDiscountFactor = ca.discountFactor;

END$$

DELIMITER ;
