DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `cache`.`available_updateItem`(
	`vItem` INT,
	`vWarehouse` INT,
	`vDated` DATE,
	`vQuantity` INT
)
BEGIN
/**
 * Immediately deduct/add an amount from the available cache (if exists).
 *
 * @param vItem The item id
 * @param vWarehouse The warehouse id
 * @param vDated Available cache date
 * @param vQuantity The amount to be deducted from the cache
 */
	DECLARE vCalc INT;

	SELECT id INTO vCalc
		FROM cache_calc
		WHERE cacheName = 'available'
			AND params = CONCAT_WS('/', vWarehouse, vDated);

	IF vCalc IS NOT NULL THEN
		UPDATE available
			SET available = available - vQuantity
			WHERE calc_id = vCalc
				AND item_id = vItem;
	END IF;
END$$
DELIMITER ;