diff --git a/ajax/invoices/temporary/product/calc.php b/ajax/invoices/temporary/product/calc.php
deleted file mode 100644
index 8bb46b3fb79d8310f2785cd9a4c23c2ef23083b0..0000000000000000000000000000000000000000
--- a/ajax/invoices/temporary/product/calc.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-/**
- * This file contains package_quiqqer_invoice_ajax_invoices_temporary_product_calc
- */
-
-/**
- * Calculates the current price of the article
- *
- * @return string
- */
-QUI::$Ajax->registerFunction(
-    'package_quiqqer_invoice_ajax_invoices_temporary_product_calc',
-    function ($params, $user) {
-        $params = \json_decode($params, true);
-        $user   = \json_decode($user, true);
-
-        if (!empty($user)) {
-            try {
-                $User = QUI\ERP\User::convertUserDataToErpUser($user);
-                $Calc = QUI\ERP\Accounting\Calc::getInstance($User);
-            } catch (QUI\ERP\Exception $Exception) {
-                $Calc = QUI\ERP\Accounting\Calc::getInstance();
-            }
-        } else {
-            $Calc = QUI\ERP\Accounting\Calc::getInstance();
-        }
-
-        $Article = new QUI\ERP\Accounting\Article($params);
-        $Article->calc($Calc);
-
-        return $Article->toArray();
-    },
-    ['params', 'user'],
-    'Permission::checkAdminUser'
-);
diff --git a/ajax/invoices/temporary/product/getProductEdit.php b/ajax/invoices/temporary/product/getProductEdit.php
deleted file mode 100644
index 7e842a3854efda95a29ad7d94637bdffbbc13b09..0000000000000000000000000000000000000000
--- a/ajax/invoices/temporary/product/getProductEdit.php
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-
-/**
- * This file contains package_quiqqer_invoice_ajax_invoices_temporary_product_parseProductToArticle
- */
-
-use QUI\ERP\Products\Controls\Products\ProductEdit;
-use QUI\ERP\Products\Handler\Products;
-
-/**
- *
- */
-QUI::$Ajax->registerFunction(
-    'package_quiqqer_invoice_ajax_invoices_temporary_product_getProductEdit',
-    function ($productId, $user) {
-        $Product = Products::getProduct($productId);
-        $user    = \json_encode($user, true);
-
-        $Control = new ProductEdit([
-            'Product' => $Product
-        ]);
-
-        $css  = ''; //QUI\Control\Manager::getCSS();
-        $html = $Control->create();
-
-        return $css.$html;
-    },
-    ['productId', 'user'],
-    'Permission::checkAdminUser'
-);
diff --git a/ajax/invoices/temporary/product/hasProductCustomFields.php b/ajax/invoices/temporary/product/hasProductCustomFields.php
deleted file mode 100644
index 02d459efc899d42243e7157c92f214e788752926..0000000000000000000000000000000000000000
--- a/ajax/invoices/temporary/product/hasProductCustomFields.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-
-/**
- * This file contains package_quiqqer_invoice_ajax_invoices_temporary_product_hasProductCustomFields
- */
-
-use QUI\ERP\Products\Handler\Products;
-
-/**
- *
- */
-QUI::$Ajax->registerFunction(
-    'package_quiqqer_invoice_ajax_invoices_temporary_product_hasProductCustomFields',
-    function ($productId) {
-        $Product = Products::getProduct($productId);
-        $fields  = $Product->createUniqueProduct()->getCustomFields();
-
-        return \count($fields);
-    },
-    ['productId'],
-    'Permission::checkAdminUser'
-);
diff --git a/ajax/invoices/temporary/product/parseProductToArticle.php b/ajax/invoices/temporary/product/parseProductToArticle.php
deleted file mode 100644
index e970c28164f9619063f137cc401f44b24c4fc984..0000000000000000000000000000000000000000
--- a/ajax/invoices/temporary/product/parseProductToArticle.php
+++ /dev/null
@@ -1,82 +0,0 @@
-<?php
-
-/**
- * This file contains package_quiqqer_invoice_ajax_invoices_temporary_product_parseProductToArticle
- */
-
-use QUI\ERP\Products\Handler\Fields;
-use QUI\ERP\Products\Handler\Products;
-
-/**
- *
- */
-QUI::$Ajax->registerFunction(
-    'package_quiqqer_invoice_ajax_invoices_temporary_product_parseProductToArticle',
-    function ($productId, $attributes, $user) {
-        $user       = \json_decode($user, true);
-        $attributes = \json_decode($attributes, true);
-        $User       = null;
-        $Locale     = QUI::getLocale();
-
-        if (!empty($user)) {
-            try {
-                $User = QUI\ERP\User::convertUserDataToErpUser($user);
-            } catch (QUI\Exception $Exception) {
-                if (!isset($user['uid'])) {
-                    throw $Exception;
-                }
-
-                $User = QUI::getUsers()->get($user['uid']);
-            }
-
-            $Locale = $User->getLocale();
-        }
-
-        try {
-            $Product = Products::getProduct((int)$productId);
-
-            foreach ($attributes as $field => $value) {
-                if (\strpos($field, 'field-') === false) {
-                    continue;
-                }
-
-                $field = \str_replace('field-', '', $field);
-                $Field = $Product->getField((int)$field);
-
-                $Field->setValue($value);
-            }
-
-            // look if the invoice text field has values
-            try {
-                $Description = $Product->getField(Fields::FIELD_SHORT_DESC);
-                $InvoiceText = $Product->getField(
-                    QUI\ERP\Accounting\Invoice\Handler::INVOICE_PRODUCT_TEXT_ID
-                );
-
-                if (!$InvoiceText->isEmpty()) {
-                    $Description->setValue($InvoiceText->getValue());
-                }
-            } catch (QUI\Exception $Exception) {
-                QUI\System\Log::addNotice($Exception->getMessage());
-            }
-
-
-            // create unique product, to create the ERP Article, so invoice can work with it
-            $Unique = $Product->createUniqueProduct($User);
-
-            if (isset($attributes['quantity'])) {
-                $Unique->setQuantity($attributes['quantity']);
-            }
-
-            $Unique->calc();
-
-            return $Unique->toArticle($Locale)->toArray();
-        } catch (QUI\Exception $Exception) {
-            QUI\System\Log::write($Exception->getMessage());
-        }
-
-        return [];
-    },
-    ['productId', 'attributes', 'user'],
-    'Permission::checkAdminUser'
-);
diff --git a/ajax/invoices/temporary/product/summary.php b/ajax/invoices/temporary/product/summary.php
deleted file mode 100644
index bc5914e9c8a46945856c56270cf9f1b9033b6d74..0000000000000000000000000000000000000000
--- a/ajax/invoices/temporary/product/summary.php
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-
-/**
- * This file contains package_quiqqer_invoice_ajax_invoices_temporary_product_summary
- */
-
-/**
- * Data for the summary display of an article
- * The calculation is with a brutto user, so you get the complete data
- *
- * @return array
- */
-QUI::$Ajax->registerFunction(
-    'package_quiqqer_invoice_ajax_invoices_temporary_product_summary',
-    function ($article) {
-        $article = \json_decode($article, true);
-
-        $Brutto = new QUI\ERP\User([
-            'id'        => 'BRUTTO',
-            'country'   => '',
-            'username'  => '',
-            'firstname' => '',
-            'lastname'  => '',
-            'lang'      => QUI::getLocale()->getCurrent(),
-            'isCompany' => 0,
-            'isNetto'   => 0
-        ]);
-
-        $Brutto->setAttribute(
-            'quiqqer.erp.isNettoUser',
-            QUI\ERP\Utils\User::IS_BRUTTO_USER
-        );
-
-        $Calc    = QUI\ERP\Accounting\Calc::getInstance($Brutto);
-        $Article = new QUI\ERP\Accounting\Article($article);
-
-        //$Article->setCurrency();
-        $Article->setUser($Brutto);
-        $Article->calc($Calc);
-
-        return $Article->toArray();
-    },
-    ['article'],
-    'Permission::checkAdminUser'
-);
diff --git a/bin/backend/controls/panels/TemporaryInvoice.js b/bin/backend/controls/panels/TemporaryInvoice.js
index 432c33702ea29ddf76229fd064fc2f423f266772..e72cf997f93e8dc6b975811e1a269ee9b57a7118 100644
--- a/bin/backend/controls/panels/TemporaryInvoice.js
+++ b/bin/backend/controls/panels/TemporaryInvoice.js
@@ -133,6 +133,10 @@ define('package/quiqqer/invoice/bin/backend/controls/panels/TemporaryInvoice', [
         refresh: function () {
             var title = this.getAttribute('invoiceId');
 
+            if (this.getAttribute('id')) {
+                title = this.getAttribute('id');
+            }
+
             title = title + ' (';
 
             if (this.getAttribute('isbrutto')) {
diff --git a/src/QUI/ERP/Accounting/Invoice/Invoice.php b/src/QUI/ERP/Accounting/Invoice/Invoice.php
index 97a1dd88114756043d37b5ffadeacbce34b94384..e421e949273d2cd7b4795655c89a399aaa0c1bac 100644
--- a/src/QUI/ERP/Accounting/Invoice/Invoice.php
+++ b/src/QUI/ERP/Accounting/Invoice/Invoice.php
@@ -292,7 +292,13 @@ public function getCurrency(): QUI\ERP\Currency\Currency
             return QUI\ERP\Defaults::getCurrency();
         }
 
-        return QUI\ERP\Currency\Handler::getCurrency($currency['code']);
+        $Currency = QUI\ERP\Currency\Handler::getCurrency($currency['code']);
+
+        if (isset($currency['rate'])) {
+            $Currency->setExchangeRate($currency['rate']);
+        }
+
+        return $Currency;
     }
 
     /**
diff --git a/src/QUI/ERP/Accounting/Invoice/InvoiceTemporary.php b/src/QUI/ERP/Accounting/Invoice/InvoiceTemporary.php
index c2e9f9eba5ec60f6d608bfe6d3970aeabb5daea3..867f6997070bbdda0d1b3a3e98a6ac252515ee2e 100644
--- a/src/QUI/ERP/Accounting/Invoice/InvoiceTemporary.php
+++ b/src/QUI/ERP/Accounting/Invoice/InvoiceTemporary.php
@@ -1009,8 +1009,9 @@ public function copy($PermissionUser = null): InvoiceTemporary
             'limit' => 1
         ]);
 
-        $currentData = $currentData[0];
-
+        $currentData         = $currentData[0];
+        $currentData['hash'] = QUI\Utils\Uuid::get();
+        
         unset($currentData['id']);
         unset($currentData['c_user']);
         unset($currentData['date']);