Exemple #1
0
 public static function isFeatureActive()
 {
     $isFeatureActive = parent::isFeatureActive();
     if (!Module::isInstalled('agilemultipleseller')) {
         return $isFeatureActive;
     }
     if ($isFeatureActive) {
         Configuration::updateGlobalValue('PS_MULTISHOP_FEATURE_ACTIVE', 0);
     }
     return false;
 }
 /**
  * Get specific prices list for a product
  *
  * @param object $product
  * @param object $defaultCurrency
  * @param array $shops Available shops
  * @param array $currencies Available currencies
  * @param array $countries Available countries
  * @param array $groups Available users groups
  *
  * @return array
  */
 public function getSpecificPricesList($product, $defaultCurrency, $shops, $currencies, $countries, $groups)
 {
     $content = [];
     $specific_prices = \SpecificPriceCore::getByProductId((int) $product->id);
     $tmp = array();
     foreach ($shops as $shop) {
         $tmp[$shop['id_shop']] = $shop;
     }
     $shops = $tmp;
     $tmp = array();
     foreach ($currencies as $currency) {
         $tmp[$currency['id_currency']] = $currency;
     }
     $currencies = $tmp;
     $tmp = array();
     foreach ($countries as $country) {
         $tmp[$country['id_country']] = $country;
     }
     $countries = $tmp;
     $tmp = array();
     foreach ($groups as $group) {
         $tmp[$group['id_group']] = $group;
     }
     $groups = $tmp;
     if (is_array($specific_prices) && count($specific_prices)) {
         foreach ($specific_prices as $specific_price) {
             $id_currency = $specific_price['id_currency'] ? $specific_price['id_currency'] : $defaultCurrency->id;
             if (!isset($currencies[$id_currency])) {
                 continue;
             }
             $current_specific_currency = $currencies[$id_currency];
             if ($specific_price['reduction_type'] == 'percentage') {
                 $impact = '- ' . $specific_price['reduction'] * 100 . ' %';
             } elseif ($specific_price['reduction'] > 0) {
                 $impact = '- ' . \ToolsCore::displayPrice(\Tools::ps_round($specific_price['reduction'], 2), $current_specific_currency) . ' ';
                 if ($specific_price['reduction_tax']) {
                     $impact .= '(' . $this->translator->trans('Tax incl.', [], 'Admin.Global') . ')';
                 } else {
                     $impact .= '(' . $this->translator->trans('Tax excl.', [], 'Admin.Global') . ')';
                 }
             } else {
                 $impact = '--';
             }
             if ($specific_price['from'] == '0000-00-00 00:00:00' && $specific_price['to'] == '0000-00-00 00:00:00') {
                 $period = $this->translator->trans('Unlimited', [], 'Admin.Global');
             } else {
                 $period = $this->translator->trans('From', [], 'Admin.Global') . ' ' . ($specific_price['from'] != '0000-00-00 00:00:00' ? $specific_price['from'] : '0000-00-00 00:00:00') . '<br />' . $this->translator->trans('to', [], 'Admin.Global') . ' ' . ($specific_price['to'] != '0000-00-00 00:00:00' ? $specific_price['to'] : '0000-00-00 00:00:00');
             }
             if ($specific_price['id_product_attribute']) {
                 $combination = new \CombinationCore((int) $specific_price['id_product_attribute']);
                 $attributes = $combination->getAttributesName(1);
                 $attributes_name = '';
                 foreach ($attributes as $attribute) {
                     $attributes_name .= $attribute['name'] . ' - ';
                 }
                 $attributes_name = rtrim($attributes_name, ' - ');
             } else {
                 $attributes_name = $this->translator->trans('All combinations', [], 'Admin.Catalog.Feature');
             }
             $rule = new \SpecificPriceRuleCore((int) $specific_price['id_specific_price_rule']);
             $rule_name = $rule->id ? $rule->name : '--';
             if ($specific_price['id_customer']) {
                 $customer = new \CustomerCore((int) $specific_price['id_customer']);
                 if (\ValidateCore::isLoadedObject($customer)) {
                     $customer_full_name = $customer->firstname . ' ' . $customer->lastname;
                 }
                 unset($customer);
             }
             if (!$specific_price['id_shop'] || in_array($specific_price['id_shop'], \ShopCore::getContextListShopID())) {
                 $can_delete_specific_prices = true;
                 if (\ShopCore::isFeatureActive()) {
                     $can_delete_specific_prices = count($this->legacyContext->employee->getAssociatedShops()) > 1 && !$specific_price['id_shop'] || $specific_price['id_shop'];
                 }
                 $price = \ToolsCore::ps_round($specific_price['price'], 2);
                 $fixed_price = $price == \ToolsCore::ps_round($product->price, 2) || $specific_price['price'] == -1 ? '--' : \ToolsCore::displayPrice($price, $current_specific_currency);
                 $content[] = ['id_specific_price' => $specific_price['id_specific_price'], 'id_product' => $product->id, 'rule_name' => $rule_name, 'attributes_name' => $attributes_name, 'shop' => $specific_price['id_shop'] ? $shops[$specific_price['id_shop']]['name'] : $this->translator->trans('All shops', [], 'Admin.Global'), 'currency' => $specific_price['id_currency'] ? $currencies[$specific_price['id_currency']]['name'] : $this->translator->trans('All currencies', [], 'Admin.Global'), 'country' => $specific_price['id_country'] ? $countries[$specific_price['id_country']]['name'] : $this->translator->trans('All countries', [], 'Admin.Global'), 'group' => $specific_price['id_group'] ? $groups[$specific_price['id_group']]['name'] : $this->translator->trans('All groups', [], 'Admin.Global'), 'customer' => isset($customer_full_name) ? $customer_full_name : $this->translator->trans('All customers', [], 'Admin.Global'), 'fixed_price' => $fixed_price, 'impact' => $impact, 'period' => $period, 'from_quantity' => $specific_price['from_quantity'], 'can_delete' => !$rule->id && $can_delete_specific_prices ? true : false];
                 unset($customer_full_name);
             }
         }
     }
     return $content;
 }