I am trying to add a fee to the check out on my woocommerce website, based on how many days the client would like to rent the products. I managed to add this to the check out and everything looks fine, but when the client continues to the payment, the amount of money is without the fee for multiple days of renting. How can I solve this?
function wc_add_surcharge() {
global $woocommerce;
if ( is_admin() && ! defined( 'DOING_AJAX' ) ){
return;
}
// change the $fee to set the surcharge to a value to suit
parse_str($_POST['post_data'], $post_data);
if( isset( $post_data['delivery_date'] ) && $post_data['delivery_date1'] != '' ){
$date1 = strtotime($post_data['delivery_date1']);
$date2 = strtotime($post_data['delivery_date']);
$date3 = strtotime("now");
$datediff1 = $date2 - $date3;
$difference1 = ($datediff1/(60*60*24));
if( $difference1 >= 0.04166667 && $difference1 <= 2.04166667 ){
wc_add_notice( __( 'Voor huurperiodes binnen 48 uur, neem alstublieft contact met ons op. Dit kan via de chat rechtsonderin of telefonisch 06-81356571.' ), 'error' );
}
else if ( $difference1 < 0.04166667 ){
wc_add_notice( __( 'Voer alstublieft een huurperiode in die in de toekomst ligt.' ), 'error' );
}
$datediff = ($date1 - $date2);
$difference = (ceil($datediff/(60*60*24)));
global $woocommerce;
if( $difference < 0.00000001 ){
$percentage = 0.00;
$surcharge = ( $woocommerce->cart->subtotal ) * $percentage /1.21;
$woocommerce->cart->add_fee( 'x', $surcharge, true, '' );
wc_add_notice( __( 'Kies een dag voor het einde van de huur die ná het begin van de huur ligt.' ), 'error' );
} else if( $difference >= 0.00000001 && $difference <= 1 ){
$percentage = 0.00;
$surcharge = ( $woocommerce->cart->subtotal ) * $percentage /1.21;
$woocommerce->cart->add_fee( '1 dag huur', $surcharge, true, '' );
} else if( $difference >= 1 && $difference <= 2 ){
$percentage = 0.50;
$surcharge = ( $woocommerce->cart->subtotal ) * $percentage /1.21;
$woocommerce->cart->add_fee( 'Extra kosten voor 2 dagen huur', $surcharge, true, '' );
} else if( $difference >= 2 && $difference <= 3 ){
$percentage = 0.70;
$surcharge = ( $woocommerce->cart->subtotal ) * $percentage /1.21;
$woocommerce->cart->add_fee( 'Extra kosten voor 3 dagen huur', $surcharge, true, '' );
} else if( $difference >= 3 && $difference <= 4 ){
$percentage = 0.80;
$surcharge = ( $woocommerce->cart->subtotal ) * $percentage /1.21;
$woocommerce->cart->add_fee( 'Extra kosten voor 4 dagen huur', $surcharge, true, '' );
} else if( $difference >= 4 && $difference <= 5 ){
$percentage = 0.90;
$surcharge = ( $woocommerce->cart->subtotal ) * $percentage /1.21;
$woocommerce->cart->add_fee( 'Extra kosten voor 5 dagen huur', $surcharge, true, '' );
} else if( $difference >= 5 && $difference <= 6 ){
$percentage = 0.90;
$surcharge = ( $woocommerce->cart->subtotal ) * $percentage /1.21;
$woocommerce->cart->add_fee( 'Extra kosten voor 6 dagen huur', $surcharge, true, '' );
} else if( $difference >= 6 && $difference <= 7 ){
$percentage = 1.00;
$surcharge = ( $woocommerce->cart->subtotal ) * $percentage /1.21;
$woocommerce->cart->add_fee( 'Extra kosten voor 7 dagen huur', $surcharge, true, '' );
} else if( $difference >= 7 && $difference <= 8 ){
$percentage = 1.05;
$surcharge = ( $woocommerce->cart->subtotal ) * $percentage /1.21;
$woocommerce->cart->add_fee( 'Extra kosten voor 8 dagen huur', $surcharge, true, '' );
} else if( $difference >= 8 && $difference <= 9 ){
$percentage = 1.10;
$surcharge = ( $woocommerce->cart->subtotal ) * $percentage /1.21;
$woocommerce->cart->add_fee( 'Extra kosten voor 9 dagen huur', $surcharge, true, '' );
} else if( $difference >= 9 && $difference <= 10 ){
$percentage = 1.15;
$surcharge = ( $woocommerce->cart->subtotal ) * $percentage /1.21;
$woocommerce->cart->add_fee( 'Extra kosten voor 10 dagen huur', $surcharge, true, '' );
} else if( $difference >= 10 && $difference <= 15 ){
$percentage = 1.20;
$surcharge = ( $woocommerce->cart->subtotal ) * $percentage /1.21;
$woocommerce->cart->add_fee( 'Extra kosten voor 11-15 dagen huur', $surcharge, true, '' );
} else if( $difference >= 15 && $difference <= 20 ){
$percentage = 1.40;
$surcharge = ( $woocommerce->cart->subtotal ) * $percentage /1.21;
$woocommerce->cart->add_fee( 'Extra kosten voor 16-20 dagen huur', $surcharge, true, '' );
} else if( $difference >= 20 && $difference <= 25 ){
$percentage = 1.50;
$surcharge = ( $woocommerce->cart->subtotal ) * $percentage /1.21;
$woocommerce->cart->add_fee( 'Extra kosten voor 21-25 dagen huur', $surcharge, true, '' );
} else if( $difference >= 25 && $difference <= 30 ){
$percentage = 1.60;
$surcharge = ( $woocommerce->cart->subtotal ) * $percentage /1.21;
$woocommerce->cart->add_fee( 'Extra kosten voor 26-30 dagen huur', $surcharge, true, '' );
} else {
// other day
wc_add_notice( __( 'Voor huurperiodes langer dan 30 dagen, neem alstublieft contact met ons op. Dit kan via de chat rechtsonderin of telefonisch 06-81356571.' ), 'error' );
$fees = WC()->cart->get_fees();
foreach ($fees as $key => $fee) {
if($fees[$key]->name === __( "Fast delivery charge")) {
unset($fees[$key]);
}
}
WC()->cart->fees_api()->set_fees($fees);
}
}
}
add_action( 'woocommerce_cart_calculate_fees','wc_add_surcharge' );