From 050085577f7bea89c2ea21f2c57b249bcb98ed0a Mon Sep 17 00:00:00 2001
From: Henning Leutz <leutz@pcsg.de>
Date: Thu, 15 Sep 2022 12:05:00 +0000
Subject: [PATCH] feat: refactor: quiqqer/erp#78

---
 ajax/invoices/temporary/save.php              | 19 ++++++++++++-------
 .../controls/panels/TemporaryInvoice.js       |  3 +++
 2 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/ajax/invoices/temporary/save.php b/ajax/invoices/temporary/save.php
index 42a9114..7e25801 100644
--- a/ajax/invoices/temporary/save.php
+++ b/ajax/invoices/temporary/save.php
@@ -4,9 +4,6 @@
  * This file contains package_quiqqer_invoice_ajax_invoices_temporary_save
  */
 
-use QUI\ERP\Shipping\Shipping;
-use QUI\ERP\Accounting\Invoice\Handler as InvoiceHandler;
-
 /**
  * Saves the temporary invoice
  *
@@ -17,7 +14,7 @@
     'package_quiqqer_invoice_ajax_invoices_temporary_save',
     function ($invoiceId, $data) {
         $Invoice = QUI\ERP\Accounting\Invoice\Utils\Invoice::getTemporaryInvoiceByString($invoiceId);
-        $data    = \json_decode($data, true);
+        $data    = json_decode($data, true);
 
         if (empty($data['customer_id'])) {
             $data['invoice_address_id'] = '';
@@ -44,13 +41,21 @@ function ($invoiceId, $data) {
             unset($data['articles']);
         }
 
+        if (isset($data['priceFactors'])) {
+            try {
+                $List = new QUI\ERP\Accounting\PriceFactors\FactorList($data['priceFactors']);
+                $Invoice->getArticles()->importPriceFactors($List);
+            } catch (QUI\Exception $Exception) {
+            }
+        }
+
         if (isset($data['currency'])) {
             $Invoice->setCurrency($data['currency']);
         }
 
         if (!empty($data['currencyRate'])) {
             $Currency = $Invoice->getCurrency();
-            $Currency->setExchangeRate(\floatval($data['currencyRate']));
+            $Currency->setExchangeRate(floatval($data['currencyRate']));
             $Invoice->setCurrency($Currency);
         }
 
@@ -61,8 +66,8 @@ function ($invoiceId, $data) {
         $Invoice->clearCustomerFiles();
 
         if (!empty($data['attached_customer_files'])) {
-            if (\is_string($data['attached_customer_files'])) {
-                $customerFiles = \json_decode($data['attached_customer_files'], true);
+            if (is_string($data['attached_customer_files'])) {
+                $customerFiles = json_decode($data['attached_customer_files'], true);
             } else {
                 $customerFiles = $data['attached_customer_files'];
             }
diff --git a/bin/backend/controls/panels/TemporaryInvoice.js b/bin/backend/controls/panels/TemporaryInvoice.js
index 25a9b3b..3a11ac8 100644
--- a/bin/backend/controls/panels/TemporaryInvoice.js
+++ b/bin/backend/controls/panels/TemporaryInvoice.js
@@ -172,6 +172,7 @@ define('package/quiqqer/invoice/bin/backend/controls/panels/TemporaryInvoice', [
                     };
 
                     self.setAttribute('articles', data.articles.articles);
+                    self.setAttribute('priceFactors', data.articles.priceFactors);
                 }
 
                 if (data.invoice_address) {
@@ -279,6 +280,7 @@ define('package/quiqqer/invoice/bin/backend/controls/panels/TemporaryInvoice', [
                 invoice_address_id     : this.getAttribute('invoice_address_id'),
                 project_name           : this.getAttribute('project_name'),
                 articles               : this.getAttribute('articles'),
+                priceFactors           : this.getAttribute('priceFactors'),
                 date                   : this.getAttribute('date'),
                 editor_id              : this.getAttribute('editor_id'),
                 ordered_by             : this.getAttribute('ordered_by'),
@@ -1233,6 +1235,7 @@ define('package/quiqqer/invoice/bin/backend/controls/panels/TemporaryInvoice', [
 
             if (this.$ArticleList) {
                 this.setAttribute('articles', this.$ArticleList.save());
+                this.setAttribute('priceFactors', this.$ArticleList.getPriceFactors());
                 this.$serializedList = this.$ArticleList.serialize();
 
                 if (destroyList) {
-- 
GitLab