public double getItemSubTotal(int rowNumber){
		
		if(rowNumber <= 0) throw new IllegalArgumentException("RowNumber must 1 or higher.");
		
		Product prod = productIndex.get(rowNumber - 1);
		Discount disc = prod.getDiscount();
		
		if(disc == null){
			return prod.getPrice() * products.get(prod);
		}else{
			double normalPrice = prod.getPrice();
			double discountPrice = disc.getDiscountedPrice(prod.getPrice());
			
			if(disc.getMinimumPurchaseAmount() == 0){
				// Special case, if minimum required amount is zero you get a discount on the entire subtotal.
				return discountPrice * products.get(prod); 
			}
			
			double discProdsCount = Math.floor(products.get(prod) / disc.getMinimumPurchaseAmount()) * disc.getMinimumPurchaseAmount();
			double nonDiscProdsCount = products.get(prod) % disc.getMinimumPurchaseAmount();
			
			return normalPrice * nonDiscProdsCount + discountPrice * discProdsCount;
		}
	}