Skip to content
Code-Schnipsel Gruppen Projekte
Commit 10023c73 erstellt von Henning Leutz's avatar Henning Leutz :martial_arts_uniform:
Dateien durchsuchen

feat: quiqqer/stock-management#13

Übergeordneter 4da5d7a8
No related branches found
No related tags found
Keine zugehörigen Merge Requests gefunden
......@@ -21,16 +21,23 @@ function ($basketId, $products) {
$User = QUI::getUserBySession();
$Basket = new QUI\ERP\Order\Basket\Basket($basketId, $User);
$Basket->import(\json_decode($products, true));
if (!QUI::getUsers()->isNobodyUser($User)) {
try {
$Order = Handler::getInstance()->getLastOrderInProcessFromUser($User);
$BasketOrder = new QUI\ERP\Order\Basket\BasketOrder($Order->getHash(), $User);
$BasketOrder->import(\json_decode($products, true));
$productsCalc = $BasketOrder->getProducts()->toArray();
$products = $productsCalc['products'];
// set the order products to the basket
$Basket->import($products);
} catch (QUI\Exception $Exception) {
Log::writeDebugException($Exception);
}
} else {
$Basket->import(\json_decode($products, true));
}
return $Basket->toArray();
......
......@@ -752,6 +752,21 @@
<de><![CDATA[Artikelnummer im Warenkorb anzeigen]]></de>
<en><![CDATA[Show article number in shopping cart]]></en>
</locale>
<locale name="order.settings.orderProcess.mergeSameProducts">
<de><![CDATA[Gleiche Produkte zusammenführen]]></de>
<en><![CDATA[Merge the same products]]></en>
</locale>
<locale name="order.settings.orderProcess.mergeSameProducts.description">
<de><![CDATA[
Beim Hinzufügen eines Produktes werden gleiche Produkte zu einem Produkt zusammen geführt
und die Anzahl dementsprechend erhöht.
Ist diese Option nicht aktiviert bekommt jedes Hinzufügen eines Produktes eine eigene Position.
]]></de>
<en><![CDATA[
When a product is added, identical products are merged into one product and the number is increased accordingly.
If this option is not activated, each product added will have its own position.
]]></en>
</locale>
<locale name="exception.order.process.not.found">
<de><![CDATA[Keinen Bestellprozess gefunden. Bitte legen Sie einen Bestellprozess an.]]></de>
......
......@@ -64,6 +64,10 @@
<type><![CDATA[bool]]></type>
<defaultvalue><![CDATA[1]]></defaultvalue>
</conf>
<conf name="mergeSameProducts">
<type><![CDATA[bool]]></type>
<defaultvalue><![CDATA[1]]></defaultvalue>
</conf>
</section>
<section name="paymentsChangeable"/>
......@@ -84,6 +88,30 @@
</text>
<icon>fa fa-shopping-basket</icon>
<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>
<input type="checkbox" conf="orderProcess.mergeSameProducts">
<text>
<locale group="quiqqer/order"
var="order.settings.orderProcess.mergeSameProducts"/>
</text>
<description>
<locale group="quiqqer/order"
var="order.settings.orderProcess.mergeSameProducts.description"/>
</description>
</input>
</settings>
<settings title="order" name="order">
<title>
<locale group="quiqqer/order" var="order.settings.title"/>
......@@ -225,19 +253,6 @@
</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"/>
......
......@@ -175,18 +175,30 @@ public function getProducts()
* Add a product to the basket
*
* @param Product $Product
* @throws QUI\Exception
*/
public function addProduct(Product $Product)
{
$this->List->addProduct($Product);
/** @noinspection \QUI\Exception */
$Package = QUI::getPackage('quiqqer/order');
$Config = $Package->getConfig();
$merge = \boolval($Config->getValue('orderProcess', 'mergeSameProducts'));
if (!$merge) {
$this->List->addProduct($Product);
} else {
$Products = $this->List->getProducts();
foreach ($Products as $Product) {
}
}
if ($this->hasOrder()) {
try {
if (!$merge) {
$this->getOrder()->addArticle($Product->toArticle());
$this->save();
} catch (QUI\Exception $Exception) {
}
$this->save();
}
}
......@@ -228,6 +240,64 @@ public function import($products = [])
$products = [];
}
$Package = QUI::getPackage('quiqqer/order');
$Config = $Package->getConfig();
$merge = \boolval($Config->getValue('orderProcess', 'mergeSameProducts'));
if ($merge) {
$newProductList = [];
$getCompareProductArray = function ($product) {
$compare = [];
$needles = [
'id',
'title',
'articleNo',
'description',
'unitPrice',
'displayPrice',
'class',
'customFields',
'customData',
'display_unitPrice'
];
foreach ($needles as $f) {
if (isset($product[$f])) {
$compare[$f] = $product[$f];
}
}
return $compare;
};
$getProductIndex = function ($product) use (&$newProductList, $getCompareProductArray) {
foreach ($newProductList as $index => $p) {
$p1 = \serialize($getCompareProductArray($product));
$p2 = \serialize($getCompareProductArray($p));
if ($p1 == $p2) {
return $index;
}
}
return false;
};
foreach ($products as $product) {
$index = $getProductIndex($product);
if ($index !== false) {
$newProductList[$index]['quantity'] = $newProductList[$index]['quantity'] + $product['quantity'];
continue;
}
$newProductList[] = $product;
}
$products = $newProductList;
}
$this->List = QUI\ERP\Order\Utils\Utils::importProductsToBasketList(
$this->List,
$products
......
0% oder .
You are about to add 0 people to the discussion. Proceed with caution.
Bearbeitung dieser Nachricht zuerst beenden!
Bitte registrieren oder zum Kommentieren