/** * Get a specific payment * Used internally in sAdmin::sGetPremiumShippingcosts() * * @param int $payment Payment mean id or name * @return array|false Array with payment mean information, including area, or false if empty argument */ public function sGetPaymentMean($payment) { static $cache = array(); if (empty($payment)) { return false; } if (isset($cache[$payment])) { return $cache[$payment]; } if (is_numeric($payment)) { $sql = $this->db->quoteInto('id = ?', $payment); } elseif (is_string($payment)) { $sql = $this->db->quoteInto('name = ?', $payment); } else { return false; } $sql = "\n SELECT * FROM s_core_paymentmeans\n WHERE {$sql}\n "; $cache[$payment] = $this->db->fetchRow($sql) ?: array(); $cache[$payment]["country_surcharge"] = array(); if (!empty($cache[$payment]["surchargestring"])) { foreach (explode(";", $cache[$payment]["surchargestring"]) as $countrySurcharge) { list($key, $value) = explode(":", $countrySurcharge); $value = floatval(str_replace(",", ".", $value)); if (!empty($value)) { $cache[$payment]["country_surcharge"][$key] = $value; } } } return $cache[$payment]; }
/** * Gets article base price info for sUpdateArticle * * @param $id * @param $quantity * @param $queryAdditionalInfo * @return array */ private function getPriceForUpdateArticle($id, $quantity, $queryAdditionalInfo) { // Price groups if ($queryAdditionalInfo["pricegroupActive"]) { $quantitySQL = 'AND s_articles_prices.from = 1 LIMIT 1'; } else { $quantitySQL = $this->db->quoteInto(' AND s_articles_prices.from <= ? AND (s_articles_prices.to >= ? OR s_articles_prices.to = 0)', $quantity); } // Get the order number $sql = 'SELECT s_articles_prices.price AS price, taxID, s_core_tax.tax AS tax, tax_rate, s_articles_details.id AS articleDetailsID, s_articles_details.articleID, s_order_basket.config, s_order_basket.ordernumber FROM s_articles_details, s_articles_prices, s_order_basket, s_articles, s_core_tax WHERE s_order_basket.id = ? AND s_order_basket.sessionID = ? AND s_order_basket.ordernumber = s_articles_details.ordernumber AND s_articles_details.id=s_articles_prices.articledetailsID AND s_articles_details.articleID = s_articles.id AND s_articles.taxID = s_core_tax.id AND s_articles_prices.pricegroup = ?'; $queryNewPrice = $this->db->fetchRow($sql . ' ' . $quantitySQL, array($id, $this->session->get('sessionId'), $this->sSYSTEM->sUSERGROUP)) ?: array(); // Load prices from default group if article prices are not defined if (!$queryNewPrice["price"]) { // In the case no price is available for this customer group, use price of default customer group $sql = 'SELECT s_articles_prices.price AS price, taxID, s_core_tax.tax AS tax, s_articles_details.id AS articleDetailsID, s_articles_details.articleID, s_order_basket.config, s_order_basket.ordernumber FROM s_articles_details, s_articles_prices, s_order_basket, s_articles, s_core_tax WHERE s_order_basket.id = ? AND s_order_basket.sessionID = ? AND s_order_basket.ordernumber = s_articles_details.ordernumber AND s_articles_details.id=s_articles_prices.articledetailsID AND s_articles_details.articleID = s_articles.id AND s_articles.taxID = s_core_tax.id AND s_articles_prices.pricegroup = \'EK\''; $queryNewPrice = $this->db->fetchRow($sql . ' ' . $quantitySQL, array($id, $this->session->get('sessionId'))) ?: array(); } $queryNewPrice = $this->eventManager->filter('Shopware_Modules_Basket_getPriceForUpdateArticle_FilterPrice', $queryNewPrice, array("id" => $id, 'subject' => $this, "quantity" => $quantity)); return $queryNewPrice; }