diff --git a/modules/reports/src/Form/EndOfDayForm.php b/modules/reports/src/Form/EndOfDayForm.php
index 86759fc..fd28c8c 100644
--- a/modules/reports/src/Form/EndOfDayForm.php
+++ b/modules/reports/src/Form/EndOfDayForm.php
@@ -122,37 +122,20 @@ class EndOfDayForm extends FormBase {
     // Capture the calculate button click and modify the report history
     // values to have the formstate values.
     if (!empty($form_state) && $form_state->getValue('date')) {
-      $formStateValues = $form_state->getValues();
+      $form_values = $form_state->getValues();
       $report_history['date'] = strtotime($form_state->getValue('date'));
       $report_history['register_id'] = $form_state->getValue('register_id');
-      foreach ($formStateValues as $value) {
+
+      foreach ($form_values as $value) {
         if (is_array($value)) {
           foreach ($value['rows'] as $key => $item) {
-            switch ($key) {
-              case "pos_cash":
-                $report_history['data']['pos_cash']['declared'] = $item['declared'][1][$form_state->getValue('date')];
-                $report_history['data']['pos_cash']['cash_deposit'] = $item['cash_deposit'][1][$form_state->getValue('date')];
-                break;
-
-              case "pos_credit":
-                $report_history['data']['pos_credit']['declared'] = $item['declared'][1][$form_state->getValue('date')];
-                break;
-
-              case "pos_debit":
-                $report_history['data']['pos_debit']['declared'] = $item['declared'][1][$form_state->getValue('date')];
-                break;
-
-              case "pos_gift_card":
-                $report_history['data']['pos_gift_card']['declared'] = $item['declared'][1][$form_state->getValue('date')];
-                break;
-
+            $report_history['data'][$key]['declared'] = $item['declared'][1][$form_state->getValue('date')];
+            if ($key === 'pos_cash') {
+              $report_history['data'][$key]['cash_deposit'] = $item['cash_deposit'][1][$form_state->getValue('date')];
             }
           }
         }
       }
-      drupal_set_message($this->t('Values calculated for register @register.', [
-        '@register' => $register->label(),
-      ]));
     }
 
     $form['results'] = $this->results($date_filter, $register, $report_history);
@@ -164,9 +147,7 @@ class EndOfDayForm extends FormBase {
       'calculate' => [
         '#type' => 'button',
         '#ajax' => [
-          'callback' => '::calculateSubmit',
-          'wrapper' => 'commerce-pos-report-eod-results-container',
-          'effect' => 'fade',
+          'callback' => '::ajaxRefresh',
         ],
         '#value' => $this->t('Calculate'),
       ],
@@ -201,14 +182,6 @@ class EndOfDayForm extends FormBase {
     return $form;
   }
 
-  /**
-   * Submit callback for the End of Day report "calculate" button.
-   */
-  public function calculateSubmit(array &$form, FormStateInterface &$form_state) {
-    $form_state->setRebuild(TRUE);
-    return $form['results'];
-  }
-
   /**
    * Generate the filters for the EOD report.
    */
@@ -276,7 +249,7 @@ class EndOfDayForm extends FormBase {
     }
 
     $can_update = $this->currentUser()
-      ->hasPermission('update commerce pos closed reports') || $register->isOpen();
+        ->hasPermission('update commerce pos closed reports') || $register->isOpen();
 
     $payment_gateway_options = commerce_pos_reports_get_payment_gateway_options();
     $currency_formatter = \Drupal::service('commerce_price.currency_formatter');
diff --git a/modules/reports/tests/src/FunctionalJavascript/EndOfDayTest.php b/modules/reports/tests/src/FunctionalJavascript/EndOfDayTest.php
index 53e9ca5..8e4ee21 100644
--- a/modules/reports/tests/src/FunctionalJavascript/EndOfDayTest.php
+++ b/modules/reports/tests/src/FunctionalJavascript/EndOfDayTest.php
@@ -150,6 +150,46 @@ class EndOfDayTest extends WebDriverTestBase {
     $this->assertSession()->responseNotContains('Not POS Credit Card');
   }
 
+  /**
+   * Tests end of day calculate report feature.
+   */
+  public function testCalculateReport() {
+    $this->drupalLogin($this->adminUser);
+    $web_assert = $this->assertSession();
+
+    \Drupal::service('commerce_pos.current_register')->set($this->register);
+
+    // Let's create some sales transactions.
+    $this->generateTransactions();
+
+    // Now, go to the EOD reports form and verify the values.
+    $this->drupalGet('admin/commerce/pos/reports/end-of-day');
+
+    $this->getSession()->getPage()->fillField('register_id', $this->register->id());
+    $this->waitForAjaxToFinish();
+
+    $date = date('Y-m-d', time());
+    // Insert declared values into form.
+    $this->getSession()->getPage()->fillField("USD[rows][pos_cash][declared][1][$date]", 175.98);
+    $this->getSession()->getPage()->fillField("USD[rows][pos_credit][declared][1][$date]", 15.99);
+    $this->getSession()->getPage()->fillField("USD[rows][pos_debit][declared][1][$date]", 35.99);
+    $this->getSession()->getPage()->fillField("USD[rows][pos_gift_card][declared][1][$date]", 16.99);
+
+    // Press calculate button and wait for it to finish.
+    $this->getSession()->getPage()->pressButton('Calculate');
+    $this->waitForAjaxToFinish();
+
+    // Verify our values updated without saving the form.
+    /** @var \Behat\Mink\Element\NodeElement $element */
+    $this->assertEquals("($0.00)",  $this->xpath('//div[@data-payment-method-id="pos_cash"]')[1]->getText());
+    $this->assertEquals("$0.00",  $this->xpath('//div[@data-payment-method-id="pos_credit"]')[1]->getText());
+    $this->assertEquals("$0.00",  $this->xpath('//div[@data-payment-method-id="pos_debit"]')[1]->getText());
+    $this->assertEquals("$0.00",  $this->xpath('//div[@data-payment-method-id="pos_gift_card"]')[1]->getText());
+    $web_assert->pageTextNotContains('Successfully saved the declared values for register');
+    $web_assert->pageTextNotContains('has been closed');
+
+  }
+
   /**
    * Generates POS transactions and payments.
    *
