diff --git a/src/QUI/ERP/Accounting/Invoice/Invoice.php b/src/QUI/ERP/Accounting/Invoice/Invoice.php
index ad548f43d41896b0a73a90b071181dab81045860..0d949e9be5a0f910758bce0a6b9db02b5bd1d561 100644
--- a/src/QUI/ERP/Accounting/Invoice/Invoice.php
+++ b/src/QUI/ERP/Accounting/Invoice/Invoice.php
@@ -235,18 +235,18 @@ public function getView(): InvoiceView
      */
     public function getArticles(): ArticleListUnique
     {
+        try {
+            $Currency = $this->getCurrency();
+        } catch (QUI\Exception $Exception) {
+            $Currency = QUI\ERP\Defaults::getCurrency();
+        }
+
         $articles = $this->getAttribute('articles');
 
         if (\is_string($articles)) {
             $articles = \json_decode($articles, true);
         }
 
-        try {
-            $articles['calculations']['currencyData'] = $this->getCurrency()->toArray();
-        } catch (QUI\Exception $Exception) {
-            QUI\System\Log::writeDebugException($Exception);
-        }
-
         $List = new ArticleListUnique($articles, $this->getCustomer());
         $List->setLocale($this->getCustomer()->getLocale());
 
diff --git a/src/QUI/ERP/Accounting/Invoice/InvoiceTemporary.php b/src/QUI/ERP/Accounting/Invoice/InvoiceTemporary.php
index a6e84b76486d11bf5cbd7d6beaa806bcb243f316..c1caf17778f385486d965cc710d64d959b390968 100644
--- a/src/QUI/ERP/Accounting/Invoice/InvoiceTemporary.php
+++ b/src/QUI/ERP/Accounting/Invoice/InvoiceTemporary.php
@@ -121,10 +121,10 @@ public function __construct($id, Handler $Handler)
         $data = $Handler->getTemporaryInvoiceData($id);
 
         $this->prefix = Settings::getInstance()->getTemporaryInvoicePrefix();
-        $this->id     = (int)\str_replace($this->prefix, '', $id);
+        $this->id = (int)\str_replace($this->prefix, '', $id);
 
         $this->Articles = new ArticleList();
-        $this->History  = new QUI\ERP\Comments();
+        $this->History = new QUI\ERP\Comments();
         $this->Comments = new QUI\ERP\Comments();
 
         if (!empty($data['delivery_address'])) {
@@ -279,7 +279,7 @@ public function __construct($id, Handler $Handler)
      */
     public function getId(): string
     {
-        return $this->prefix.$this->id;
+        return $this->prefix . $this->id;
     }
 
     /**
@@ -419,7 +419,8 @@ public function setCurrency($currency)
         }
 
         $this->setAttribute('currency_data', $currency->toArray());
-        $this->Currency = null;
+        $this->Articles->setCurrency($this->Currency);
+        $this->Currency = $this->getCurrency();
     }
 
     /**
@@ -471,7 +472,7 @@ public function getEditor(): ?QUI\Interfaces\Users\User
 
         if ($this->getAttribute('editor_id')) {
             try {
-                $Editor    = QUI::getUsers()->get($this->getAttribute('editor_id'));
+                $Editor = QUI::getUsers()->get($this->getAttribute('editor_id'));
                 $isInGroup = $Editor->isInGroup($Employees->getEmployeeGroup()->getId());
 
                 if ($isInGroup) {
@@ -630,7 +631,7 @@ public function setInvoiceType($type, $PermissionUser = null)
         }
 
         $this->type = $type;
-        $typeTitle  = QUI::getLocale()->get('quiqqer/invoice', 'invoice.type.'.$type);
+        $typeTitle = QUI::getLocale()->get('quiqqer/invoice', 'invoice.type.' . $type);
 
         $this->addHistory(
             QUI::getLocale()->get(
@@ -689,9 +690,9 @@ public function update($PermissionUser = null)
         );
 
         // attributes
-        $projectName    = '';
+        $projectName = '';
         $timeForPayment = null;
-        $date           = '';
+        $date = '';
 
         $isBrutto = QUI\ERP\Defaults::getBruttoNettoStatus();
 
@@ -741,7 +742,7 @@ public function update($PermissionUser = null)
 
             $invoiceAddressId = $Address->getId();
         } catch (QUI\Exception $Exception) {
-            $invoiceAddress      = $this->getAttribute('invoice_address');
+            $invoiceAddress = $this->getAttribute('invoice_address');
             $invoiceAddressCheck = false;
 
             if (\is_string($invoiceAddress)) {
@@ -765,7 +766,7 @@ public function update($PermissionUser = null)
         try {
             if ($this->getAttribute('payment_method')) {
                 $Payments = QUI\ERP\Accounting\Payments\Payments::getInstance();
-                $Payment  = $Payments->getPayment($this->getAttribute('payment_method'));
+                $Payment = $Payments->getPayment($this->getAttribute('payment_method'));
 
                 $paymentMethod = $Payment->getId();
             }
@@ -796,50 +797,50 @@ public function update($PermissionUser = null)
         }
 
         // Editor
-        $Editor     = $this->getEditor();
-        $editorId   = 0;
+        $Editor = $this->getEditor();
+        $editorId = 0;
         $editorName = '';
 
         // use default advisor as editor
         if ($Editor) {
-            $editorId   = $Editor->getId();
+            $editorId = $Editor->getId();
             $editorName = $Editor->getName();
         }
 
         // Ordered By
-        $OrderedBy     = $this->getOrderedByUser();
-        $orderedBy     = (int)$this->getAttribute('customer_id');
+        $OrderedBy = $this->getOrderedByUser();
+        $orderedBy = (int)$this->getAttribute('customer_id');
         $orderedByName = '';
 
         if ($OrderedBy) {
-            $orderedBy     = $OrderedBy->getId();
+            $orderedBy = $OrderedBy->getId();
             $orderedByName = $OrderedBy->getName();
         } elseif ($orderedBy) {
             try {
-                $User          = QUI::getUsers()->get($orderedBy);
-                $orderedBy     = $User->getId();
+                $User = QUI::getUsers()->get($orderedBy);
+                $orderedBy = $User->getId();
                 $orderedByName = $User->getName();
             } catch (QUI\Exception $Exception) {
             }
         }
 
         // shipping
-        $shippingId   = null;
+        $shippingId = null;
         $shippingData = null;
 
         if ($this->getShipping()) {
-            $shippingId   = $this->getShipping()->getId();
+            $shippingId = $this->getShipping()->getId();
             $shippingData = $this->getShipping()->toJSON();
         }
 
         // delivery address
-        $deliveryAddress   = '';
+        $deliveryAddress = '';
         $deliveryAddressId = null;
-        $DeliveryAddress   = $this->getDeliveryAddress();
+        $DeliveryAddress = $this->getDeliveryAddress();
 
         // Save delivery address separately only if it differs from invoice address
         if ($DeliveryAddress && ($invoiceAddressId && $DeliveryAddress->getId() !== $invoiceAddressId)) {
-            $deliveryAddress   = $DeliveryAddress->toJSON();
+            $deliveryAddress = $DeliveryAddress->toJSON();
             $deliveryAddressId = $DeliveryAddress->getId();
 
             if (empty($deliveryAddressId)) {
@@ -1010,7 +1011,7 @@ public function copy($PermissionUser = null): InvoiceTemporary
 
         $Handler = Handler::getInstance();
         $Factory = Factory::getInstance();
-        $New     = $Factory->createInvoice($PermissionUser);
+        $New = $Factory->createInvoice($PermissionUser);
 
         $currentData = QUI::getDataBase()->fetch([
             'from'  => $Handler->temporaryInvoiceTable(),
@@ -1020,7 +1021,7 @@ public function copy($PermissionUser = null): InvoiceTemporary
             'limit' => 1
         ]);
 
-        $currentData         = $currentData[0];
+        $currentData = $currentData[0];
         $currentData['hash'] = QUI\Utils\Uuid::get();
 
         unset($currentData['id']);
@@ -1080,11 +1081,11 @@ public function post($PermissionUser = null): Invoice
         $this->validate();
 
         // data
-        $User     = QUI::getUserBySession();
-        $date     = \date('Y-m-d H:i:s'); // invoice date, to today
+        $User = QUI::getUserBySession();
+        $date = \date('Y-m-d H:i:s'); // invoice date, to today
         $isBrutto = QUI\ERP\Defaults::getBruttoNettoStatus();
         $Customer = $this->getCustomer();
-        $Handler  = Handler::getInstance();
+        $Handler = Handler::getInstance();
 
         if (QUI\Permissions\Permission::hasPermission('quiqqer.invoice.changeDate')) {
             if ($this->getAttribute('date')
@@ -1116,37 +1117,37 @@ public function post($PermissionUser = null): Invoice
         // customerData
         $ErpCustomer = QUI\ERP\User::convertUserToErpUser($Customer);
 
-        $customerData                    = $ErpCustomer->getAttributes();
+        $customerData = $ErpCustomer->getAttributes();
         $customerData['erp.isNettoUser'] = $Customer->getAttribute('quiqqer.erp.isNettoUser');
-        $customerData['erp.euVatId']     = $Customer->getAttribute('quiqqer.erp.euVatId');
-        $customerData['erp.taxId']       = $Customer->getAttribute('quiqqer.erp.taxId');
+        $customerData['erp.euVatId'] = $Customer->getAttribute('quiqqer.erp.euVatId');
+        $customerData['erp.taxId'] = $Customer->getAttribute('quiqqer.erp.taxId');
 
 
         // Editor
-        $Editor     = $this->getEditor();
-        $editorId   = 0;
+        $Editor = $this->getEditor();
+        $editorId = 0;
         $editorName = '';
 
         // use default advisor as editor
         if ($Editor) {
-            $editorId   = $Editor->getId();
+            $editorId = $Editor->getId();
             $editorName = $Editor->getName();
         }
 
         // Ordered By
-        $OrderedBy     = $this->getOrderedByUser();
-        $orderedBy     = (int)$this->getAttribute('customer_id');
+        $OrderedBy = $this->getOrderedByUser();
+        $orderedBy = (int)$this->getAttribute('customer_id');
         $orderedByName = '';
 
 
         // use default advisor as editor
         if ($OrderedBy) {
-            $orderedBy     = $OrderedBy->getId();
+            $orderedBy = $OrderedBy->getId();
             $orderedByName = $OrderedBy->getName();
         } elseif ($orderedBy) {
             try {
-                $User          = QUI::getUsers()->get($orderedBy);
-                $orderedBy     = $User->getId();
+                $User = QUI::getUsers()->get($orderedBy);
+                $orderedBy = $User->getId();
                 $orderedByName = $User->getName();
             } catch (QUI\Exception $Exception) {
             }
@@ -1159,16 +1160,16 @@ public function post($PermissionUser = null): Invoice
 
         // payment stuff
         $Payments = QUI\ERP\Accounting\Payments\Payments::getInstance();
-        $Payment  = $Payments->getPayment($this->getAttribute('payment_method'));
+        $Payment = $Payments->getPayment($this->getAttribute('payment_method'));
 
         $paymentMethodData = $this->parsePaymentForPaymentData($Payment);
-        $paymentTime       = (int)$this->getAttribute('time_for_payment');
+        $paymentTime = (int)$this->getAttribute('time_for_payment');
 
         if ($paymentTime < 0) {
             $paymentTime = 0;
         }
 
-        $timeForPayment = \strtotime(\date('Y-m-d').' 00:00 + '.$paymentTime.' days');
+        $timeForPayment = \strtotime(\date('Y-m-d') . ' 00:00 + ' . $paymentTime . ' days');
         $timeForPayment = \date('Y-m-d', $timeForPayment);
         $timeForPayment .= ' 23:59:59';
 
@@ -1191,18 +1192,18 @@ public function post($PermissionUser = null): Invoice
         $this->Articles->calc();
 
         $listCalculations = $this->Articles->getCalculations();
-        $uniqueList       = $this->Articles->toUniqueList()->toArray();
+        $uniqueList = $this->Articles->toUniqueList()->toArray();
 
-        $uniqueList['calculations']['sum']    = InvoiceUtils::roundInvoiceSum($uniqueList['calculations']['sum']);
+        $uniqueList['calculations']['sum'] = InvoiceUtils::roundInvoiceSum($uniqueList['calculations']['sum']);
         $uniqueList['calculations']['subSum'] = InvoiceUtils::roundInvoiceSum($uniqueList['calculations']['subSum']);
-        $uniqueList                           = \json_encode($uniqueList);
+        $uniqueList = \json_encode($uniqueList);
 
         //shipping
-        $shippingId   = null;
+        $shippingId = null;
         $shippingData = null;
 
         if ($this->getShipping()) {
-            $shippingId   = $this->getShipping()->getId();
+            $shippingId = $this->getShipping()->getId();
             $shippingData = $this->getShipping()->toJSON();
         }
 
@@ -1232,7 +1233,7 @@ public function post($PermissionUser = null): Invoice
 
         // payment custom data
         try {
-            $InvoicePayment                             = new Payment($paymentMethodData);
+            $InvoicePayment = new Payment($paymentMethodData);
             $this->customData['InvoiceInformationText'] = $InvoicePayment->getInvoiceInformationText($this);
         } catch (\Exception $Exception) {
         }
@@ -1262,9 +1263,9 @@ public function post($PermissionUser = null): Invoice
             // if invoice hash exist, we need a new hash
             $this->setAttribute('hash', QUI\Utils\Uuid::get());
             $this->getComments()->addComment(
-                'A new hash has been created. The hash already existed.'.
-                'Old Hash: '.$oldHash.
-                'New Hash: '.$this->getAttribute('hash')
+                'A new hash has been created. The hash already existed.' .
+                'Old Hash: ' . $oldHash .
+                'New Hash: ' . $this->getAttribute('hash')
             );
         } catch (QUI\Exception $Exception) {
             QUI\System\Log::writeDebugException($Exception);
@@ -1361,7 +1362,7 @@ public function post($PermissionUser = null): Invoice
         $this->delete(QUI::getUsers()->getSystemUser());
 
         // invoice payment calculation
-        $Invoice     = $Handler->getInvoice($newId);
+        $Invoice = $Handler->getInvoice($newId);
         $calculation = QUI\ERP\Accounting\Calc::calculatePayments($Invoice);
 
         if (empty($calculation)) {
@@ -1407,7 +1408,6 @@ public function post($PermissionUser = null): Invoice
             }
         } catch (\Exception $Exception) {
             QUI\System\Log::writeException($Exception);
-
             // @todo history info das mail nicht raus ging
         }
 
@@ -1453,8 +1453,8 @@ public function toArray(): array
     {
         $attributes = $this->getAttributes();
 
-        $attributes['id']       = $this->getId();
-        $attributes['type']     = $this->getInvoiceType();
+        $attributes['id'] = $this->getId();
+        $attributes['type'] = $this->getInvoiceType();
         $attributes['articles'] = $this->Articles->toArray();
 
         $attributes['globalProcessId'] = $this->getGlobalProcessId();
@@ -1730,20 +1730,20 @@ public function getData(string $key)
      */
     protected function parsePaymentForPaymentData(QUI\ERP\Accounting\Payments\Types\PaymentInterface $Payment): array
     {
-        $data      = $Payment->toArray();
-        $Locale    = new QUI\Locale();
+        $data = $Payment->toArray();
+        $Locale = new QUI\Locale();
         $languages = QUI\Translator::getAvailableLanguages();
 
-        $data['title']        = [];
+        $data['title'] = [];
         $data['workingTitle'] = [];
-        $data['description']  = [];
+        $data['description'] = [];
 
         foreach ($languages as $language) {
             $Locale->setCurrent($language);
 
-            $data['title'][$language]        = $Payment->getTitle($Locale);
+            $data['title'][$language] = $Payment->getTitle($Locale);
             $data['workingTitle'][$language] = $Payment->getWorkingTitle($Locale);
-            $data['description'][$language]  = $Payment->getDescription($Locale);
+            $data['description'][$language] = $Payment->getDescription($Locale);
         }
 
         return $data;
@@ -1793,7 +1793,7 @@ public function getPaymentData(string $key)
     public function lock()
     {
         $Package = QUI::getPackage('quiqqer/invoice');
-        $key     = 'temporary-invoice-'.$this->getId();
+        $key = 'temporary-invoice-' . $this->getId();
 
         QUI\Lock\Locker::lock($Package, $key);
     }
@@ -1808,7 +1808,7 @@ public function lock()
     public function unlock()
     {
         $Package = QUI::getPackage('quiqqer/invoice');
-        $key     = 'temporary-invoice-'.$this->getId();
+        $key = 'temporary-invoice-' . $this->getId();
 
         QUI\Lock\Locker::unlock($Package, $key);
     }
@@ -1823,7 +1823,7 @@ public function unlock()
     public function isLocked(): bool
     {
         $Package = QUI::getPackage('quiqqer/invoice');
-        $key     = 'temporary-invoice-'.$this->getId();
+        $key = 'temporary-invoice-' . $this->getId();
 
         return QUI\Lock\Locker::isLocked($Package, $key);
     }
@@ -1837,7 +1837,7 @@ public function isLocked(): bool
     public function checkLocked()
     {
         $Package = QUI::getPackage('quiqqer/invoice');
-        $key     = 'temporary-invoice-'.$this->getId();
+        $key = 'temporary-invoice-' . $this->getId();
 
         QUI\Lock\Locker::checkLocked($Package, $key);
     }
@@ -1943,7 +1943,7 @@ public function getDeliveryAddress(): ?QUI\ERP\Address
                 );
 
                 if ($Address) {
-                    $addressData       = $Address->getAttributes();
+                    $addressData = $Address->getAttributes();
                     $addressData['id'] = $Address->getId();
 
                     return new QUI\ERP\Address($addressData, $this->getCustomer());
@@ -2072,7 +2072,7 @@ public function addCustomerFile(string $fileHash, array $options = [])
             'options' => $options
         ];
 
-        $customerFiles   = $this->getCustomerFiles();
+        $customerFiles = $this->getCustomerFiles();
         $customerFiles[] = $fileEntry;
 
         $this->setData('customer_files', $customerFiles);