From 6d024a68900969770ded08ea8cf39c1132e9382f Mon Sep 17 00:00:00 2001
From: Henning Leutz <leutz@pcsg.de>
Date: Wed, 7 Apr 2021 14:12:29 +0200
Subject: [PATCH] fix: quiqqer/invoice#104 - insert a time frame for
 calculation check

---
 bin/backend/controls/articles/ArticleList.js | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/bin/backend/controls/articles/ArticleList.js b/bin/backend/controls/articles/ArticleList.js
index 76da549..1a3041e 100644
--- a/bin/backend/controls/articles/ArticleList.js
+++ b/bin/backend/controls/articles/ArticleList.js
@@ -59,7 +59,8 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
             this.$user     = {};
             this.$sorting  = false;
 
-            this.$calculationTimer = null;
+            this.$calculationTimer     = null;
+            this.$isIncalculationFrame = false;
 
             this.$calculations = {
                 currencyData: {},
@@ -374,6 +375,12 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
         $executeCalculation: function () {
             var self = this;
 
+            if (this.$isIncalculationFrame) {
+                self.fireEvent('calc', [self, self.$calculations]);
+
+                return Promise.resolve(self.$calculations);
+            }
+
             if (this.$calculationRunning) {
                 return new Promise(function (resolve) {
                     var trigger = function () {
@@ -393,8 +400,15 @@ define('package/quiqqer/erp/bin/backend/controls/articles/ArticleList', [
                 });
 
                 QUIAjax.get('package_quiqqer_erp_ajax_products_calc', function (result) {
-                    self.$calculations       = result;
-                    self.$calculationRunning = false;
+                    self.$calculations         = result;
+                    self.$isIncalculationFrame = true;
+                    self.$calculationRunning   = false;
+
+                    // performance double request -> quiqqer/invoice#104
+                    setTimeout(function () {
+                        self.$isIncalculationFrame = false;
+                    }, 100);
+
                     self.fireEvent('calc', [self, result]);
                     resolve(result);
                 }, {
-- 
GitLab