/** * @return array * @throws \Ess\M2ePro\Model\Exception\Logic */ public function getVariationsData() { $data = array(); $qtyMode = $this->getEbayListingProduct()->getEbaySellingFormatTemplate()->getQtyMode(); $variations = $this->getListingProduct()->getVariations(true); $productsIds = array(); $variationIdsIndexes = array(); foreach ($variations as $variation) { /** @var $variation \Ess\M2ePro\Model\Listing\Product\Variation */ /** @var $ebayVariation \Ess\M2ePro\Model\Ebay\Listing\Product\Variation */ $ebayVariation = $variation->getChildObject(); if (isset($this->validatorsData['variation_fixed_price_' . $variation->getId()])) { $variationPrice = $this->validatorsData['variation_fixed_price_' . $variation->getId()]; } else { $variationPrice = $ebayVariation->getPrice(); } $item = array('_instance_' => $variation, 'price' => $variationPrice, 'qty' => $ebayVariation->isDelete() ? 0 : $ebayVariation->getQty(), 'sku' => $ebayVariation->getSku(), 'add' => $ebayVariation->isAdd(), 'delete' => $ebayVariation->isDelete(), 'specifics' => array()); if (($qtyMode == \Ess\M2ePro\Model\Template\SellingFormat::QTY_MODE_PRODUCT_FIXED || $qtyMode == \Ess\M2ePro\Model\Template\SellingFormat::QTY_MODE_PRODUCT) && !$item['delete']) { $options = $variation->getOptions(); foreach ($options as $option) { $productsIds[] = $option['product_id']; } } if ($this->getEbayListingProduct()->isPriceDiscountStp()) { $priceDiscountData = array('original_retail_price' => $ebayVariation->getPriceDiscountStp()); if ($this->getEbayMarketplace()->isStpAdvancedEnabled()) { $priceDiscountData = array_merge($priceDiscountData, $this->getEbayListingProduct()->getEbaySellingFormatTemplate()->getPriceDiscountStpAdditionalFlags()); } $item['price_discount_stp'] = $priceDiscountData; } if ($this->getEbayListingProduct()->isPriceDiscountMap()) { $priceDiscountMapData = array('minimum_advertised_price' => $ebayVariation->getPriceDiscountMap()); $exposure = $ebayVariation->getEbaySellingFormatTemplate()->getPriceDiscountMapExposureType(); $priceDiscountMapData['minimum_advertised_price_exposure'] = \Ess\M2ePro\Model\Ebay\Listing\Product\Action\Request\Selling::getPriceDiscountMapExposureType($exposure); $item['price_discount_map'] = $priceDiscountMapData; } $variationDetails = $this->getVariationDetails($variation); if (!empty($variationDetails)) { $item['details'] = $variationDetails; } $options = $variation->getOptions(true); foreach ($options as $option) { /** @var $option \Ess\M2ePro\Model\Listing\Product\Variation\Option */ $item['specifics'][$option->getAttribute()] = $option->getOption(); } $data[] = $item; $variationIdsIndexes[$variation->getId()] = count($data) - 1; } $this->addMetaData('variation_ids_indexes', $variationIdsIndexes); $this->checkQtyWarnings($productsIds); return $data; }
/** * @return array */ public function getPriceDiscountMapData() { if (!$this->getConfigurator()->isPriceAllowed() || $this->getIsVariationItem()) { return array(); } if (!$this->getEbayListingProduct()->isListingTypeFixed() || !$this->getEbayListingProduct()->isPriceDiscountMap()) { return array(); } $data = array('minimum_advertised_price' => $this->getEbayListingProduct()->getPriceDiscountMap()); $exposure = $this->getEbaySellingFormatTemplate()->getPriceDiscountMapExposureType(); $data['minimum_advertised_price_exposure'] = \Ess\M2ePro\Model\Ebay\Listing\Product\Action\Request\Selling::getPriceDiscountMapExposureType($exposure); return array('price_discount_map' => $data); }