private static function _loadVariations($product, $context, $ebay_category) { $variations = array(); if (version_compare(_PS_VERSION_, '1.5', '>')) { $combinations = $product->getAttributeCombinations($context->cookie->id_lang); } else { $combinations = $product->getAttributeCombinaisons($context->cookie->id_lang); } foreach ($combinations as $combinaison) { $price = Product::getPriceStatic((int) $combinaison['id_product'], true, (int) $combinaison['id_product_attribute']); $variation = array('id_attribute' => $combinaison['id_product_attribute'], 'reference' => $combinaison['reference'], 'quantity' => $combinaison['quantity'], 'price_static' => $price, 'variation_specifics' => EbaySynchronizer::_getVariationSpecifics($combinaison['id_product'], $combinaison['id_product_attribute'], $context->cookie->id_lang), 'variations' => array(array('name' => $combinaison['group_name'], 'value' => $combinaison['attribute_name']))); $price_original = $price; if (preg_match('#[-]{0,1}[0-9]{1,2}%$#is', $ebay_category->getPercent())) { $price *= 1 + $ebay_category->getPercent() / 100; } else { $price += $ebay_category->getPercent(); } $variation['price'] = round($price, 2); if ($ebay_category->getPercent() < 0) { $variation['price_original'] = round($price_original, 2); $variation['price_percent'] = round($ebay_category->getPercent()); } $variation_key = $combinaison['id_product'] . '-' . $combinaison['id_product_attribute']; $variations[$variation_key] = $variation; } // Load Variations Pictures $combination_images = $product->getCombinationImages($context->cookie->id_lang); if (!empty($combination_images)) { foreach ($combination_images as $combination_image) { foreach ($combination_image as $image) { // If issue, it's because of https/http in the url $link = EbaySynchronizer::_getPictureLink($product->id, $image['id_image'], $context->link, 'large'); $variations[$product->id . '-' . $image['id_product_attribute']]['pictures'][] = $link; } } } return $variations; }
private static function _loadVariations($product, $ebay_profile, $context, $ebay_category) { $variations = array(); if (version_compare(_PS_VERSION_, '1.5', '>')) { $combinations = $product->getAttributeCombinations($context->cookie->id_lang); } else { $combinations = $product->getAttributeCombinaisons($context->cookie->id_lang); } foreach ($combinations as $combinaison) { $price = Product::getPriceStatic((int) $combinaison['id_product'], true, (int) $combinaison['id_product_attribute']); $price_original = Product::getPriceStatic((int) $combinaison['id_product'], true, (int) $combinaison['id_product_attribute'], 6, null, false, false); // convert price to destination currency $currency = new Currency((int) $ebay_profile->getConfiguration('EBAY_CURRENCY')); $price *= $currency->conversion_rate; $price_original *= $currency->conversion_rate; $variation = array('id_attribute' => $combinaison['id_product_attribute'], 'reference' => $combinaison['reference'], 'ean13' => $combinaison['ean13'], 'quantity' => $combinaison['quantity'], 'price_static' => $price, 'variation_specifics' => EbaySynchronizer::_getVariationSpecifics($combinaison['id_product'], $combinaison['id_product_attribute'], $context->cookie->id_lang, $ebay_profile->ebay_site_id, $ebay_category), 'variations' => array(array('name' => $combinaison['group_name'], 'value' => $combinaison['attribute_name']))); if (preg_match('#[-]{0,1}[0-9]{1,2}%$#is', $ebay_category->getPercent())) { $price *= 1 + $ebay_category->getPercent() / 100; } else { $price += $ebay_category->getPercent(); } $variation['price'] = round($price, 2); if ($ebay_category->getPercent() < 0) { $variation['price_original'] = round($price_original, 2); } else { if ($price_original > $price) { $variation['price_original'] = round($price_original, 2); } } if (isset($variation['price_original'])) { $variation['price_percent'] = round(($price_original - $price) / $price_original * 100.0); } $variation_key = $combinaison['id_product'] . '-' . $combinaison['id_product_attribute'] . '_' . $ebay_profile->id; $variations[$variation_key] = $variation; } // Load Variations Pictures $combination_images = $product->getCombinationImages($context->cookie->id_lang); $large = new ImageType((int) $ebay_profile->getConfiguration('EBAY_PICTURE_SIZE_BIG')); if (!empty($combination_images)) { foreach ($combination_images as $combination_image) { foreach ($combination_image as $image) { // If issue, it's because of https/http in the url $link = EbaySynchronizer::_getPictureLink($product->id, $image['id_image'], $context->link, $large->name); $variations[$product->id . '-' . $image['id_product_attribute'] . '_' . $ebay_profile->id]['pictures'][] = $link; } } } return $variations; }
public function displayEbayListingsAjax($id_employee = null) { $ebay = new EbayRequest(); $employee = new Employee($id_employee); $this->context->employee = $employee; $link = $this->context->link; $id_lang = $this->context->language->id; $products_ebay_listings = array(); $products = EbayProduct::getProductsWithoutBlacklisted($id_lang, $this->ebay_profile->id, false); $data = array('id_lang' => $id_lang, 'titleTemplate' => $this->ebay_profile->getConfiguration('EBAY_PRODUCT_TEMPLATE_TITLE')); foreach ($products as $p) { $data['real_id_product'] = (int) $p['id_product']; $data['name'] = $p['name']; $data['manufacturer_name'] = $p['manufacturer_name']; $data['reference'] = $p['reference']; $data['ean13'] = $p['ean13']; $reference_ebay = $p['id_product_ref']; $product = new Product((int) $p['id_product'], true, $id_lang); if ((int) $p['id_attribute'] > 0) { // No Multi Sku case so we do multiple products from a multivariation product $combinaison = $this->_getAttributeCombinationsById($product, (int) $p['id_attribute'], $id_lang); $combinaison = $combinaison[0]; $data['reference'] = $combinaison['reference']; $data['ean13'] = $combinaison['ean13']; $variation_specifics = EbaySynchronizer::_getVariationSpecifics($combinaison['id_product'], $combinaison['id_product_attribute'], $id_lang, $this->ebay_profile->ebay_site_id); foreach ($variation_specifics as $variation_specific) { $data['name'] .= ' ' . $variation_specific; } $products_ebay_listings[] = array('id_product' => $combinaison['id_product'] . '-' . $combinaison['id_product_attribute'], 'quantity' => $combinaison['quantity'], 'prestashop_title' => $data['name'], 'ebay_title' => EbayRequest::prepareTitle($data), 'reference_ebay' => $reference_ebay, 'link' => method_exists($link, 'getAdminLink') ? $link->getAdminLink('AdminProducts') . '&id_product=' . (int) $combinaison['id_product'] . '&updateproduct' : $link->getProductLink((int) $combinaison['id_product']), 'link_ebay' => EbayProduct::getEbayUrl($reference_ebay, $ebay->getDev())); } else { $products_ebay_listings[] = array('id_product' => $data['real_id_product'], 'quantity' => $product->quantity, 'prestashop_title' => $data['name'], 'ebay_title' => EbayRequest::prepareTitle($data), 'reference_ebay' => $reference_ebay, 'link' => method_exists($link, 'getAdminLink') ? $link->getAdminLink('AdminProducts') . '&id_product=' . (int) $data['real_id_product'] . '&updateproduct' : $link->getProductLink((int) $data['real_id_product']), 'link_ebay' => EbayProduct::getEbayUrl($reference_ebay, $ebay->getDev())); } } $this->smarty->assign('products_ebay_listings', $products_ebay_listings); echo $this->display(__FILE__, 'views/templates/hook/ebay_listings_ajax.tpl'); }