diff --git a/vendor/magento/module-purchase-order/Plugin/Quote/Model/QuotePlugin.php b/vendor/magento/module-purchase-order/Plugin/Quote/Model/QuotePlugin.php
index 2e230c870bef..420176d1d9fa 100644
--- a/vendor/magento/module-purchase-order/Plugin/Quote/Model/QuotePlugin.php
+++ b/vendor/magento/module-purchase-order/Plugin/Quote/Model/QuotePlugin.php
@@ -1,7 +1,21 @@
 <?php
-/**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
+/************************************************************************
+ *
+ *  ADOBE CONFIDENTIAL
+ *  ___________________
+ *
+ *  Copyright 2020 Adobe
+ *  All Rights Reserved.
+ *
+ *  NOTICE: All information contained herein is, and remains
+ *  the property of Adobe and its suppliers, if any. The intellectual
+ *  and technical concepts contained herein are proprietary to Adobe
+ *  and its suppliers and are protected by all applicable intellectual
+ *  property laws, including trade secret and copyright laws.
+ *  Dissemination of this information or reproduction of this material
+ *  is strictly forbidden unless prior written permission is obtained
+ *  from Adobe.
+ *  ************************************************************************
  */
 declare(strict_types=1);
 
@@ -32,7 +46,7 @@ public function __construct(
     }
 
     /**
-     * Skip collect totals for purchase order
+     * Skip collect totals for purchase order except while converted to an order
      *
      * @param Quote $subject
      * @param \Closure $proceed
@@ -40,10 +54,19 @@ public function __construct(
      */
     public function aroundCollectTotals(Quote $subject, \Closure $proceed)
     {
-        if ($this->isPurchaseOrderQuote($subject) && !$subject->getIsVirtual()) {
-            return $subject;
+        if (!$this->isPurchaseOrderQuote($subject) || $subject->getIsVirtual()) {
+            return $proceed();
+        }
+
+        if ($subject->getIsActive() && $subject->getTotalsCollectedFlag()) {
+            $items = $subject->getItems();
+            if (is_array($items) && (float)$items[0]->getData('tax_amount') > 0) {
+                $subject->setTotalsCollectedFlag(false);
+                return $proceed();
+            }
         }
-        return $proceed();
+
+        return $subject;
     }
 
     /**
