diff --git a/modules/line_item/includes/views/handlers/commerce_line_item_handler_area_line_item_summary.inc b/modules/line_item/includes/views/handlers/commerce_line_item_handler_area_line_item_summary.inc
index fde7b0f..5d1d4bd 100644
--- a/modules/line_item/includes/views/handlers/commerce_line_item_handler_area_line_item_summary.inc
+++ b/modules/line_item/includes/views/handlers/commerce_line_item_handler_area_line_item_summary.inc
@@ -83,65 +83,57 @@ class commerce_line_item_handler_area_line_item_summary extends views_handler_ar
     }
   }
 
-  /**
-   * This handler never outputs data when the view is empty.
-   */
-  function views_form_empty($empty) {
-    return $empty;
-  }
-
-  function views_form(&$form, &$form_state) {
-    // Build an array of line item IDs from the View results that we will load
-    // and use for calculating totals.
-    $line_item_ids = array();
-
-    foreach ($this->view->result as $result) {
-      $line_item_id = $this->get_value($result);
-      if ($line_item_id) {
-        $line_item_ids[] = $line_item_id;
+  function render($empty = FALSE) {
+    if (!$empty) {
+      // Build an array of line item IDs from the View results that we will load
+      // and use for calculating totals.
+      $line_item_ids = array();
+
+      foreach ($this->view->result as $result) {
+        $line_item_id = $this->get_value($result);
+        if ($line_item_id) {
+          $line_item_ids[] = $line_item_id;
+        }
       }
-    }
 
-    $line_items = commerce_line_item_load_multiple($line_item_ids);
+      $line_items = commerce_line_item_load_multiple($line_item_ids);
 
-    // Add total information and the line item summary links.
-    $quantity = commerce_line_items_quantity($line_items);
-    $total = commerce_line_items_total($line_items);
-    $currency = commerce_currency_load($total['currency_code']);
+      // Add total information and the line item summary links.
+      $quantity = commerce_line_items_quantity($line_items);
+      $total = commerce_line_items_total($line_items);
+      $currency = commerce_currency_load($total['currency_code']);
 
-    $links = array();
+      $links = array();
 
-    foreach (commerce_line_item_summary_links() as $name => $link) {
-      if ($this->options['links'][$name] === $name && $link['access']) {
-        $links[str_replace('_', '-', 'line-item-summary-' . $name)] = $link;
+      foreach (commerce_line_item_summary_links() as $name => $link) {
+        if ($this->options['links'][$name] === $name && $link['access']) {
+          $links[str_replace('_', '-', 'line-item-summary-' . $name)] = $link;
+        }
       }
-    }
 
-    // Build the variables array to send to the template.
-    $variables = array(
-      'view' => $this->view,
-      'links' => theme('links', array('links' => $links, 'attributes' => array('class' => array('links', 'inline')))),
-    );
-    if ($this->options['info']['quantity']) {
-      $variables = array(
-        'quantity_raw' => $quantity,
-        'quantity_label' => format_plural($quantity, 'item', 'items'),
-        'quantity' => format_plural($quantity, '1 item', '@count items'),
-      ) + $variables;
-    }
-    if ($this->options['info']['total']) {
+      // Build the variables array to send to the template.
       $variables = array(
-        'total_raw' => number_format(commerce_currency_round($total['amount'], $currency), $currency['decimals']),
-        'total_label' => t('Total:'),
-        'total' => commerce_currency_format($total['amount'], $total['currency_code'], $this->view),
-      ) + $variables;
+        'view' => $this->view,
+        'links' => theme('links', array('links' => $links, 'attributes' => array('class' => array('links', 'inline')))),
+      );
+      if ($this->options['info']['quantity']) {
+        $variables = array(
+          'quantity_raw' => $quantity,
+          'quantity_label' => format_plural($quantity, 'item', 'items'),
+          'quantity' => format_plural($quantity, '1 item', '@count items'),
+        ) + $variables;
+      }
+      if ($this->options['info']['total']) {
+        $variables = array(
+          'total_raw' => number_format(commerce_currency_round($total['amount'], $currency), $currency['decimals']),
+          'total_label' => t('Total:'),
+          'total' => commerce_currency_format($total['amount'], $total['currency_code'], $this->view),
+        ) + $variables;
+      }
+
+      return theme('commerce_line_item_summary', $variables);
     }
 
-    // Add the summary to the form, just above the buttons.
-    $form['line_item_summary'] = array(
-      '#type' => 'markup',
-      '#markup' => theme('commerce_line_item_summary', $variables),
-      '#weight' => 99,
-    );
+    return '';
   }
 }
diff --git a/modules/order/commerce_order.module b/modules/order/commerce_order.module
index 16e3526..2c5b58c 100644
--- a/modules/order/commerce_order.module
+++ b/modules/order/commerce_order.module
@@ -1360,3 +1360,27 @@ function commerce_order_set_properties($order, $name, $value) {
     $order->uid = $value;
   }
 }
+
+/**
+ * Move the output of the commerce area handlers from below the submit
+ * buttons to above them, when they are used in a views form.
+ */
+function commerce_order_preprocess_views_view(&$vars) {
+  $view = $vars['view'];
+  // Check if at least one of the area handlers is present.
+  $has_handler = FALSE;
+  foreach ($view->footer as $area) {
+    if ($area instanceof commerce_line_item_handler_area_line_item_summary || $area instanceof commerce_order_handler_area_order_total) {
+      $has_handler = TRUE;
+    }
+  }
+
+  if (views_view_has_form_elements($view) && $has_handler) {
+    $vars['rows']['footer'] = array(
+      '#type' => 'markup',
+      '#markup' => $vars['footer'],
+      '#weight' => 99,
+    );
+    $vars['footer'] = '';
+  }
+}
