Created
January 16, 2014 22:12
-
-
Save sidharrell/8464476 to your computer and use it in GitHub Desktop.
diff for apply coupon to cart once modification
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| --- a/includes/admin-files/optional_event_settings.php | |
| +++ b/includes/admin-files/optional_event_settings.php | |
| @@ -103,7 +103,13 @@ $values=array( | |
| <?php _e('Allow discounts in the shopping cart?','event_espresso'); ?> | |
| </label> | |
| <?php echo select_input('allow_mer_discounts', $values, isset($org_options['allow_mer_discounts']) ? $org_options['allow_mer_discounts'] : ''); ?> <br /> | |
| - </li> | |
| + </li> | |
| + <li> | |
| + <label> | |
| + <?php _e('Apply discounts in the shopping cart once only?','event_espresso'); ?> | |
| + </label> | |
| + <?php echo select_input('apply_mer_discounts_once', $values, isset($org_options['apply_mer_discounts_once']) ? $org_options['apply_mer_discounts_once'] : ''); ?> <br /> | |
| + </li> | |
| <?php endif; ?> | |
| <?php if ( function_exists( 'event_espresso_groupon_payment_page' ) ) : ?> | |
| <li> | |
| --- a/includes/functions/cart.php | |
| +++ b/includes/functions/cart.php | |
| @@ -287,6 +287,7 @@ if (!function_exists('event_espresso_update_item_in_session')) { | |
| */ | |
| if (!function_exists('event_espresso_calculate_total')) { | |
| function event_espresso_calculate_total( $update_section = FALSE, $mer = TRUE ) { | |
| + global $org_options; | |
| do_action('action_hook_espresso_log', __FILE__, __FUNCTION__, ''); | |
| @@ -362,6 +363,7 @@ if (!function_exists('event_espresso_calculate_total')) { | |
| //echo '<h4>event_cost : ' . $event_individual_cost[$event_id] . ' <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span></h4>'; | |
| + $apply_coupon = TRUE; | |
| if ( is_array( $event_price )) { | |
| foreach ( $event_price as $_price_id => $qty ) { | |
| @@ -369,12 +371,20 @@ if (!function_exists('event_espresso_calculate_total')) { | |
| if ( $attendee_quantity > 0 ) { | |
| // Process coupons | |
| - $coupon_results['event_cost'] = event_espresso_get_final_price( $_price_id, $event_id ); | |
| - $coupon_results = apply_filters( 'filter_hook_espresso_coupon_results', $coupon_results, $event_id, $mer ); | |
| - $coupon_notifications = apply_filters( 'filter_hook_espresso_cart_modifier_strings', $coupon_notifications, $coupon_results['msg'] ); | |
| - $coupon_errors = apply_filters( 'filter_hook_espresso_cart_modifier_strings', $coupon_errors, $coupon_results['error'] ); | |
| - if ( $coupon_results['valid'] ) { | |
| - $coupon_events = apply_filters( 'filter_hook_espresso_cart_coupon_events_array', $coupon_events, $event['event_name'] ); | |
| + $pre_discount_price = $coupon_results['event_cost'] = event_espresso_get_final_price( $_price_id, $event_id ); | |
| + if ($apply_coupon) { | |
| + $coupon_results = apply_filters( 'filter_hook_espresso_coupon_results', $coupon_results, $event_id, $mer ); | |
| + $coupon_notifications = apply_filters( 'filter_hook_espresso_cart_modifier_strings', $coupon_notifications, $coupon_results['msg'] ); | |
| + $coupon_errors = apply_filters( 'filter_hook_espresso_cart_modifier_strings', $coupon_errors, $coupon_results['error'] ); | |
| + if ( $coupon_results['valid'] ) { | |
| + $coupon_events = apply_filters( 'filter_hook_espresso_cart_coupon_events_array', $coupon_events, $event['event_name'] ); | |
| + } | |
| + if ($pre_discount_price != $coupon_results['event_cost'] && $org_options['apply_mer_discounts_once']=='Y') { | |
| + $discount = $pre_discount_price - $coupon_results['event_cost']; | |
| + $discount_per_ticket = $discount/$qty; | |
| + $coupon_results['event_cost'] = $pre_discount_price - $discount_per_ticket; | |
| + $apply_coupon = FALSE; | |
| + } | |
| } | |
| $event_cost = $coupon_results['event_cost']; | |
| --- a/includes/organization_config.php | |
| +++ b/includes/organization_config.php | |
| @@ -34,6 +34,7 @@ function organization_config_mnu() { | |
| $org_options['time_reg_limit'] = isset($_POST['time_reg_limit']) && !empty($_POST['time_reg_limit']) ? $_POST['time_reg_limit'] : ''; | |
| $org_options['skip_confirmation_page'] = isset($_POST['skip_confirmation_page']) ? $_POST['skip_confirmation_page'] : 'N'; | |
| $org_options['allow_mer_discounts'] = isset($_POST['allow_mer_discounts']) ? $_POST['allow_mer_discounts'] : 'N'; | |
| + $org_options['apply_mer_discounts_once'] = isset($_POST['apply_mer_discounts_once']) ? $_POST['apply_mer_discounts_once'] : 'N'; | |
| $org_options['allow_mer_vouchers'] = isset($_POST['allow_mer_vouchers']) ? $_POST['allow_mer_vouchers'] : 'N'; | |
| $org_options['use_attendee_pre_approval'] = isset($_POST['use_attendee_pre_approval']) && !empty($_POST['use_attendee_pre_approval']) ? $_POST['use_attendee_pre_approval'] : ''; | |
| if (!empty($_POST['event_ssl_active'])) | |
| --- a/includes/process-registration/add_attendees_to_db.php | |
| +++ b/includes/process-registration/add_attendees_to_db.php | |
| @@ -339,22 +339,37 @@ if ( ! function_exists( 'event_espresso_add_attendees_to_db' )) { | |
| $end_date = $time->end_date; | |
| } | |
| - | |
| - | |
| - | |
| - | |
| + //If we are using the number of attendees dropdown, find out how many tickets they want. | |
| + //echo $data_source['espresso_addtl_limit_dd']; | |
| + if (isset($data_source['espresso_addtl_limit_dd'])) { | |
| + $num_people = absint($data_source ['num_people']); | |
| + } elseif (isset($event_meta['additional_attendee_reg_info']) && $event_meta['additional_attendee_reg_info'] == 1) { | |
| + $num_people = absint($data_source ['num_people']); | |
| + } else { | |
| + $num_people = 1; | |
| + } | |
| + | |
| // check for coupon | |
| if ( function_exists( 'event_espresso_process_coupon' )) { | |
| - if ( $coupon_results = event_espresso_process_coupon( $event_id, $final_price, $multi_reg )) { | |
| - //printr( $coupon_results, '$coupon_results <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span>', 'auto' ); | |
| - if ( $coupon_results['valid'] ) { | |
| - $final_price = number_format( $coupon_results['event_cost'], 2, '.', '' ); | |
| - $coupon_code = $coupon_results['code']; | |
| - } | |
| - if ( ! $multi_reg && ! empty( $coupon_results['msg'] )) { | |
| - $notifications['coupons'] = $coupon_results['msg']; | |
| - } | |
| - } | |
| + static $apply_coupon = TRUE; | |
| + if ($apply_coupon) { | |
| + if ( $coupon_results = event_espresso_process_coupon( $event_id, $final_price, $multi_reg )) { | |
| + //printr( $coupon_results, '$coupon_results <br /><span style="font-size:10px;font-weight:normal;">' . __FILE__ . '<br />line no: ' . __LINE__ . '</span>', 'auto' ); | |
| + if ( $coupon_results['valid'] ) { | |
| + $final_price = number_format( $coupon_results['event_cost'], 2, '.', '' ); | |
| + $coupon_code = $coupon_results['code']; | |
| + } | |
| + if ( ! $multi_reg && ! empty( $coupon_results['msg'] )) { | |
| + $notifications['coupons'] = $coupon_results['msg']; | |
| + } | |
| + if ($orig_price != $final_price && $org_options['apply_mer_discounts_once']=='Y') { | |
| + $discount = $orig_price - $final_price; | |
| + $discount_per_ticket = $discount/$num_people; | |
| + $final_price = $orig_price - $discount_per_ticket; | |
| + $apply_coupon = FALSE; | |
| + } | |
| + } | |
| + } | |
| } | |
| // check for groupon | |
| @@ -384,16 +399,6 @@ if ( ! function_exists( 'event_espresso_add_attendees_to_db' )) { | |
| $orig_price = number_format( (float)$orig_price, 2, '.', '' ); | |
| $final_price = number_format( (float)$final_price, 2, '.', '' ); | |
| $total_cost = $total_cost + $final_price; | |
| - | |
| - //If we are using the number of attendees dropdown, find out how many tickets they want. | |
| - //echo $data_source['espresso_addtl_limit_dd']; | |
| - if (isset($data_source['espresso_addtl_limit_dd'])) { | |
| - $num_people = absint($data_source ['num_people']); | |
| - } elseif (isset($event_meta['additional_attendee_reg_info']) && $event_meta['additional_attendee_reg_info'] == 1) { | |
| - $num_people = absint($data_source ['num_people']); | |
| - } else { | |
| - $num_people = 1; | |
| - } | |
| $columns_and_values = array( | |
| 'registration_id' => $registration_id, |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
...and how would you use this file? How to tie it in to the registration and checkout.