From ec6ac148c6a0db85449af77692352091129a18fd Mon Sep 17 00:00:00 2001
From: Henning Leutz <leutz@pcsg.de>
Date: Thu, 19 Sep 2019 10:02:22 +0200
Subject: [PATCH] feat: quiqqer/order#80 - show article no in the basket -
 setting

---
 locale.xml                                    | 27 +++++++++++++++----
 settings.xml                                  | 20 +++++++++++++-
 src/QUI/ERP/Order/Controls/Basket/Basket.html |  6 +++++
 src/QUI/ERP/Order/Controls/Basket/Basket.php  | 16 ++++++-----
 4 files changed, 56 insertions(+), 13 deletions(-)

diff --git a/locale.xml b/locale.xml
index d9055657..165fac94 100644
--- a/locale.xml
+++ b/locale.xml
@@ -545,6 +545,10 @@
             <de><![CDATA[Bestellungen]]></de>
             <en><![CDATA[Orders]]></en>
         </locale>
+        <locale name="order.process.settings.title">
+            <de><![CDATA[Bestellprozess]]></de>
+            <en><![CDATA[Orderprocess]]></en>
+        </locale>
         <locale name="order.settings.failedPaymentProcedure">
             <de><![CDATA[Vorgehen bei gescheiterter Zahlung]]></de>
             <en><![CDATA[Procedure for failed payment]]></en>
@@ -653,6 +657,10 @@
             The invoice is posted automatically when the invoice is created
             ]]></en>
         </locale>
+        <locale name="order.settings.orderProcess.showArticleNumberInBasket">
+            <de><![CDATA[Artikelnummer im Warenkorb anzeigen]]></de>
+            <en><![CDATA[Show article number in shopping cart]]></en>
+        </locale>
 
         <locale name="exception.order.process.not.found">
             <de><![CDATA[Keinen Bestellprozess gefunden. Bitte legen Sie einen Bestellprozess an.]]></de>
@@ -955,6 +963,11 @@
             Order: [orderId]; Error: [message]
             ]]></en>
         </locale>
+
+        <locale name="basket.articles.articleNo">
+            <de><![CDATA[Artikel Nr.:]]></de>
+            <en><![CDATA[Article No.:]]></en>
+        </locale>
     </groups>
 
     <groups name="quiqqer/order" datatype="js">
@@ -1314,8 +1327,10 @@
             <en><![CDATA[Notify customer]]></en>
         </locale>
         <locale name="dialog.processingStatus.template.descNotification" html="true">
-            <de><![CDATA[Kunden sollen automatisch per E-Mail benachrichtigt werden, wenn der Status einer Bestellung <b>automatisch</b> auf diesen Status geändert wird. Bei einer <b>manuellen Statusänderung</b> wird vorher nochmal nachgefragt, ob eine Benachrichtigung erfolgen soll.]]></de>
-            <en><![CDATA[Customers should be automatically notified by e-mail when the status of an order <b>automatically</b> is changed to this status. In case of a <b>manual status change</b> you will be asked if you want to send a notification.]]></en>
+            <de>
+                <![CDATA[Kunden sollen automatisch per E-Mail benachrichtigt werden, wenn der Status einer Bestellung <b>automatisch</b> auf diesen Status geändert wird. Bei einer <b>manuellen Statusänderung</b> wird vorher nochmal nachgefragt, ob eine Benachrichtigung erfolgen soll.]]></de>
+            <en>
+                <![CDATA[Customers should be automatically notified by e-mail when the status of an order <b>automatically</b> is changed to this status. In case of a <b>manual status change</b> you will be asked if you want to send a notification.]]></en>
         </locale>
 
         <locale name="dialog.order.createInvoice.title">
@@ -1450,7 +1465,7 @@
             <de><![CDATA[TX-ID]]></de>
             <en><![CDATA[TX ID]]></en>
         </locale>
-        
+
         <locale name="dialog.statusChangeNotification.title">
             <de><![CDATA[Bestellstatus wurde geändert]]></de>
             <en><![CDATA[Order status has changed]]></en>
@@ -1460,8 +1475,10 @@
             <en><![CDATA[Order status has changed]]></en>
         </locale>
         <locale name="dialog.statusChangeNotification.information" html="true">
-            <de><![CDATA[Der Status der Bestellung wurde auf <b>[statusTitle]</b> geändert. Soll dem Kunden eine Benachrichtigung über diese Änderung per E-Mail gesendet werden?]]></de>
-            <en><![CDATA[The status of the order was changed to <b>[statusTitle]</b>. Should a notification of this change be sent to the customer by e-mail?]]></en>
+            <de>
+                <![CDATA[Der Status der Bestellung wurde auf <b>[statusTitle]</b> geändert. Soll dem Kunden eine Benachrichtigung über diese Änderung per E-Mail gesendet werden?]]></de>
+            <en>
+                <![CDATA[The status of the order was changed to <b>[statusTitle]</b>. Should a notification of this change be sent to the customer by e-mail?]]></en>
         </locale>
         <locale name="dialog.statusChangeNotification.notification.label">
             <de><![CDATA[Bitte legen Sie die Nachricht an den Benutzer fest:]]></de>
diff --git a/settings.xml b/settings.xml
index 9b111c87..e5b22fb8 100644
--- a/settings.xml
+++ b/settings.xml
@@ -34,6 +34,13 @@
                 </conf>
             </section>
 
+            <section name="orderProcess">
+                <conf name="showArticleNumberInBasket">
+                    <type><![CDATA[bool]]></type>
+                    <defaultvalue><![CDATA[1]]></defaultvalue>
+                </conf>
+            </section>
+
             <section name="paymentsChangeable"/>
         </config>
 
@@ -138,6 +145,18 @@
                         </input>
                     </settings>
 
+                    <settings title="orderProcess" name="orderProcess">
+                        <title>
+                            <locale group="quiqqer/order" var="order.process.settings.title"/>
+                        </title>
+
+                        <input type="checkbox" conf="orderProcess.showArticleNumberInBasket">
+                            <text>
+                                <locale group="quiqqer/order" var="order.settings.orderProcess.showArticleNumberInBasket"/>
+                            </text>
+                        </input>
+                    </settings>
+
                     <settings title="order" name="order">
                         <title>
                             <locale group="quiqqer/order" var="order.settings.paymentsChangeable.title"/>
@@ -149,7 +168,6 @@
                         />
                     </settings>
 
-
                     <settings>
                         <title>
                             <locale group="quiqqer/order" var="order.settings.processingStatus.title"/>
diff --git a/src/QUI/ERP/Order/Controls/Basket/Basket.html b/src/QUI/ERP/Order/Controls/Basket/Basket.html
index 13cecffe..50ad8b19 100644
--- a/src/QUI/ERP/Order/Controls/Basket/Basket.html
+++ b/src/QUI/ERP/Order/Controls/Basket/Basket.html
@@ -59,6 +59,12 @@
                 </li>
                 {/foreach}
             </ul>
+
+            {if $showArticleNumber}
+            <div class="quiqqer-order-basket-articles-article-productno">
+                {locale group="quiqqer/order" var="basket.articles.articleNo"} {$product.productNo}
+            </div>
+            {/if}
         </td>
         <td class="quiqqer-order-basket-articles-article-quantity"
             data-label="{locale group='quiqqer/erp' var='article.list.articles.header.quantity'}"
diff --git a/src/QUI/ERP/Order/Controls/Basket/Basket.php b/src/QUI/ERP/Order/Controls/Basket/Basket.php
index 97f0c865..085d4fae 100644
--- a/src/QUI/ERP/Order/Controls/Basket/Basket.php
+++ b/src/QUI/ERP/Order/Controls/Basket/Basket.php
@@ -74,15 +74,17 @@ public function getBody()
         $Products->setUser(QUI::getUserBySession());
         $Products->recalculate();
 
-        $View = $Products->getView(QUI::getLocale());
+        $View              = $Products->getView(QUI::getLocale());
+        $showArticleNumber = QUI\ERP\Order\Settings::getInstance()->get('orderProcess', 'showArticleNumberInBasket');
 
         $Engine->assign([
-            'data'     => $View->toArray(),
-            'Basket'   => $this->Basket,
-            'Project'  => $this->Project,
-            'Products' => $View,
-            'products' => $View->getProducts(),
-            'this'     => $this
+            'data'              => $View->toArray(),
+            'Basket'            => $this->Basket,
+            'Project'           => $this->Project,
+            'Products'          => $View,
+            'products'          => $View->getProducts(),
+            'this'              => $this,
+            'showArticleNumber' => $showArticleNumber
         ]);
 
         return $Engine->fetch(\dirname(__FILE__).'/Basket.html');
-- 
GitLab