Custom price calc
<?php
remove_action('wp_ajax_nopriv_gforms_get_updated_price', 'woocommerce_gravityforms_get_updated_price');
remove_action('wp_ajax_gforms_get_updated_price', 'woocommerce_gravityforms_get_updated_price');
add_action('wp_ajax_nopriv_gforms_get_updated_price', 'woocommerce_gravityforms_get_updated_priced', 10);
add_action('wp_ajax_gforms_get_updated_price', 'woocommerce_gravityforms_get_updated_priced', 10);
function woocommerce_gravityforms_get_updated_priced()
{
global $woocommerce;
header('Cache-Control: no-cache, must-revalidate');
header('Content-type: application/json');
$variation_id = isset($_POST['variation_id']) ? $_POST['variation_id'] : '';
$product_id = isset($_POST['product_id']) ? $_POST['product_id'] : 0;
$gform_total = isset($_POST['gform_total']) ? $_POST['gform_total'] : 0;
$product_data = null;
$product_data = wc_get_product(!empty($variation_id) ? $variation_id : $product_id);
if (empty($product_data)) {
die();
}
$discount_price = false;
$gforms_discount_price = false;
$base_price = wc_get_price_to_display($product_data, array( 'price' => $product_data->get_price('view') ));
$newPrice = checkCustomPrice($product_id, $product_data);
if ($newPrice != 0 && is_numeric($newPrice)) :
$base_price = $newPrice;
endif;
$price = $discount_price ? $discount_price : $base_price;
$gform_final_total = $gforms_discount_price ? $gforms_discount_price : $price + $gform_total;
$result = array(
'formattedBasePrice' => apply_filters('woocommerce_gform_base_price', wc_price($price), $product_data),
'formattedTotalPrice' => apply_filters('woocommerce_gform_total_price', wc_price($gform_final_total), $product_data),
'formattedVariationTotal' => apply_filters('woocommerce_gform_variation_total_price', wc_price($gform_total), $product_data)
);
echo json_encode($result);
die();
}