SHOW:
|
|
- or go back to the newest paste.
| 1 | <?php | |
| 2 | function custom_ajax_order_review_refresh_form_commerce_checkout_form_review_alter(&$form, &$form_state) {
| |
| 3 | // give the form a custom callback | |
| 4 | $form['commerce_payment']['payment_method']['#ajax']['callback'] = "custom_ajax_order_review_refresh_custom_callback"; | |
| 5 | // refresh the current order | |
| 6 | commerce_cart_order_refresh($form_state['order']); | |
| 7 | } | |
| 8 | ||
| 9 | function custom_ajax_order_review_refresh_custom_callback(&$form, $form_state) {
| |
| 10 | // load the current order | |
| 11 | $order_id = $form_state['order']->order_id; | |
| 12 | $order = commerce_order_load($order_id); | |
| 13 | // set the newly selected payment option to the order | |
| 14 | $order->data['payment_method'] = $form['commerce_payment']['payment_method']['#default_value']; | |
| 15 | // refresh the current order (more specific: update it's line items | |
| 16 | commerce_cart_order_refresh($order); | |
| 17 | // save the refreshed order (more specific: recalculate the order total and save it) | |
| 18 | commerce_order_save($order); | |
| 19 | // define the ajax commands and refresh the targeted fieldsets | |
| 20 | $commands = array(); | |
| 21 | $commands[] = ajax_command_replace('#payment-details', render($form['commerce_payment']['payment_details']));
| |
| 22 | $commands[] = ajax_command_replace('.view-commerce-cart-summary', views_embed_view('commerce_cart_summary', 'default', $order_id));
| |
| 23 | return array('#type' => 'ajax', '#commands' => $commands);
| |
| 24 | } |