示例#1
0
 /**
  * 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];
 }
示例#2
0
 /**
  * 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;
 }