/** * Get article data for sAddArticle * * @param int $id Article ordernumber * @return array|false Article data, or false if none found */ private function getArticleForAddArticle($id) { $sql = "\n SELECT s_articles.id AS articleID, name AS articleName, taxID,\n additionaltext, s_articles_details.shippingfree, laststock, instock,\n s_articles_details.id as articledetailsID, ordernumber\n FROM s_articles, s_articles_details\n WHERE s_articles_details.ordernumber = ?\n AND s_articles_details.articleID = s_articles.id\n AND s_articles.active = 1\n AND (\n SELECT articleID\n FROM s_articles_avoid_customergroups\n WHERE articleID = s_articles.id AND customergroupID = ?\n ) IS NULL\n "; $article = $this->db->fetchRow($sql, array($id, $this->sSYSTEM->sUSERGROUPDATA["id"])); $article = $this->eventManager->filter('Shopware_Modules_Basket_getArticleForAddArticle_FilterArticle', $article, array("id" => $id, 'subject' => $this, "partner" => $this->sSYSTEM->_SESSION["sPartner"])); if (!$article) { return false; } $name = $this->moduleManager->Articles()->sGetArticleNameByOrderNumber($article["ordernumber"], true); if (!empty($name)) { $article["articleName"] = $name["articleName"]; $article["additionaltext"] = $name["additionaltext"]; } return $article; }
/** * Get article data for sAddArticle * * @param int $id Article ordernumber * @return array|false Article data, or false if none found */ private function getArticleForAddArticle($id) { $sql = "\n SELECT s_articles.id AS articleID, s_articles.main_detail_id, name AS articleName, taxID,\n additionaltext, s_articles_details.shippingfree, laststock, instock,\n s_articles_details.id as articledetailsID, ordernumber,\n s_articles.configurator_set_id\n FROM s_articles, s_articles_details\n WHERE s_articles_details.ordernumber = ?\n AND s_articles_details.articleID = s_articles.id\n AND s_articles.active = 1\n AND (\n SELECT articleID\n FROM s_articles_avoid_customergroups\n WHERE articleID = s_articles.id AND customergroupID = ?\n ) IS NULL\n "; $article = $this->db->fetchRow($sql, array($id, $this->sSYSTEM->sUSERGROUPDATA["id"])); $article = $this->eventManager->filter('Shopware_Modules_Basket_getArticleForAddArticle_FilterArticle', $article, array("id" => $id, 'subject' => $this, "partner" => $this->sSYSTEM->_SESSION["sPartner"])); if (!$article) { return false; } $article = $this->moduleManager->Articles()->sGetTranslation($article, $article['articleID'], "article"); $article = $this->moduleManager->Articles()->sGetTranslation($article, $article['articledetailsID'], "variant"); if ($article['configurator_set_id'] > 0) { $context = $this->contextService->getProductContext(); $product = Shopware()->Container()->get('shopware_storefront.list_product_service')->get($article['ordernumber'], $context); $product = $this->additionalTextService->buildAdditionalText($product, $context); $article['additionaltext'] = $product->getAdditional(); } return $article; }
/** * Returns the category path to which the * article belongs, inside the category subtree. * Used internally in sSmartyCategoryPath * * @param int $articleId Id of the article to look for * @param int $parentId Category subtree root id. If null, the shop category is used. * @return null|array Category path, or null if no category found */ private function sCategoryPathByArticleId($articleId, $parentId = null) { $categoryId = $this->moduleManager->Categories()->sGetCategoryIdByArticleId($articleId, $parentId); return empty($categoryId) ? null : $this->sCategoryPath($categoryId); }
/** * Helper method for sAdmin::sGetOpenOrderData() * * @param $orderValue * @param $getOrders * @param $orderKey * @return mixed */ private function processOpenOrderDetails($orderValue, $getOrders, $orderKey) { $getOrderDetails = $this->db->fetchAll('SELECT * FROM s_order_details WHERE orderID = ? ORDER BY id ASC', array($orderValue["id"])); if (!count($getOrderDetails)) { unset($getOrders[$orderKey]); return $getOrders; } $active = 1; foreach ($getOrderDetails as $orderDetailsKey => $orderDetailsValue) { $getOrderDetails[$orderDetailsKey]["amount"] = $this->moduleManager->Articles()->sFormatPrice(round($orderDetailsValue["price"] * $orderDetailsValue["quantity"], 2)); $getOrderDetails[$orderDetailsKey]["price"] = $this->moduleManager->Articles()->sFormatPrice($orderDetailsValue["price"]); $tmpArticle = $this->moduleManager->Articles()->sGetProductByOrdernumber($getOrderDetails[$orderDetailsKey]['articleordernumber']); if (!empty($tmpArticle) && is_array($tmpArticle)) { // Set article in activate state $getOrderDetails[$orderDetailsKey]['active'] = 1; if (!empty($tmpArticle['purchaseunit'])) { $getOrderDetails[$orderDetailsKey]['purchaseunit'] = $tmpArticle['purchaseunit']; } if (!empty($tmpArticle['referenceunit'])) { $getOrderDetails[$orderDetailsKey]['referenceunit'] = $tmpArticle['referenceunit']; } if (!empty($tmpArticle['referenceprice'])) { $getOrderDetails[$orderDetailsKey]['referenceprice'] = $tmpArticle['referenceprice']; } if (!empty($tmpArticle['sUnit']) && is_array($tmpArticle['sUnit'])) { $getOrderDetails[$orderDetailsKey]['sUnit'] = $tmpArticle['sUnit']; } if (!empty($tmpArticle['price'])) { $getOrderDetails[$orderDetailsKey]['currentPrice'] = $tmpArticle['price']; } if (!empty($tmpArticle['pseudoprice'])) { $getOrderDetails[$orderDetailsKey]['currentPseudoprice'] = $tmpArticle['pseudoprice']; } $getOrderDetails[$orderDetailsKey]['currentHas_pseudoprice'] = $tmpArticle['has_pseudoprice']; // Set article in deactivate state if it's an variant or configurator article if ($tmpArticle['sVariantArticle'] === true || $tmpArticle['sConfigurator'] === true) { $getOrderDetails[$orderDetailsKey]['active'] = 0; $active = 0; } } else { $getOrderDetails[$orderDetailsKey]['active'] = 0; $active = 0; } // Check for serial if ($getOrderDetails[$orderDetailsKey]["esdarticle"]) { $numbers = array(); $getSerial = $this->db->fetchAll('SELECT serialnumber FROM s_articles_esd_serials, s_order_esd WHERE userID = ? AND orderID = ? AND orderdetailsID = ? AND s_order_esd.serialID = s_articles_esd_serials.id', array($this->session->offsetGet('sUserId'), $orderValue["id"], $orderDetailsValue["id"])); foreach ($getSerial as $serial) { $numbers[] = $serial["serialnumber"]; } $getOrderDetails[$orderDetailsKey]["serial"] = implode(",", $numbers); $getOrderDetails[$orderDetailsKey]["esdLink"] = $this->config->get('sBASEFILE') . '?sViewport=account&sAction=download&esdID=' . $orderDetailsValue['id']; } } $getOrders[$orderKey]['activeBuyButton'] = $active; $getOrders[$orderKey]["details"] = $getOrderDetails; return $getOrders; }