/**
     * Check if variation or grouped product prices are all equal and return cheapest price
     * 
     * @access public
     * @param object $product
     * @return array
     */
    public static function get_cheapest_child_price($product)
    {
        $ids = array();

        // Grouped product?
        if ($product->product_type == 'grouped') {
            $children = get_children(array(
                'post_parent' => $product->id,
                'post_type' => 'product',
            ));

            foreach ($children as $child) {
                $ids[] = $child->ID;
            }
        }

        // Variable product
        else {
            $variations = $product->get_available_variations();

            foreach ($variations as $variation) {
                $ids[] = $variation['variation_id'];
            }
        }

        if (empty($ids)) {
            return array(0, true);
        }

        $selected_id = null;
        $cheapest = null;
        $equal = true;

        foreach ($ids as $id) {

            // We skip non-subscription variations as there is no easy way to compare recurring payments with one-off payments
            if (!self::is_subscription($id)) {
                $equal = false;
                continue;
            }

            $child_product = new WC_Product($id);
            $child_meta = Subscriptio::unwrap_post_meta(get_post_meta($id));

            $child_days = Subscriptio_Subscription::get_period_length_in('day', $child_meta['_subscriptio_price_time_unit'], $child_meta['_subscriptio_price_time_value']);
            $price_per_day = $child_days == 0 ? 0 : $child_product->get_price() / $child_days;

            if ($cheapest === null) {
                $selected_id = $id;
                $cheapest = $price_per_day;
            }
            else if ($price_per_day < $cheapest) {
                $selected_id = $id;
                $cheapest = $price_per_day;
                $equal = false;
            }
        }

        return array($selected_id, $equal);
    }