protected function processAddedListingProduct(Ess_M2ePro_Model_Listing_Product $listingProduct, array $params)
 {
     if (!empty($params['template_category_id'])) {
         $listingProduct->setData('template_category_id', $params['template_category_id']);
     }
     if (!empty($params['template_other_category_id'])) {
         $listingProduct->setData('template_other_category_id', $params['template_other_category_id']);
     }
     $listingProduct->save();
 }
 public function process()
 {
     if (is_null($this->listingProduct)) {
         throw new Ess_M2ePro_Model_Exception('Listing Product was not set.');
     }
     $this->getTypeModel()->enableCache();
     foreach ($this->getSortedProcessors() as $processor) {
         $this->getProcessorModel($processor)->process();
     }
     $this->listingProduct->setData('variation_parent_need_processor', 0);
     $this->listingProduct->save();
 }
Esempio n. 3
0
 private function checkChangeAsNotVariationProduct(Ess_M2ePro_Model_Listing_Product $listingProduct)
 {
     /** @var Ess_M2ePro_Model_Amazon_Listing_Product_Variation_Manager $variationManager */
     $variationManager = $listingProduct->getChildObject()->getVariationManager();
     $isVariationMagentoProduct = $listingProduct->getMagentoProduct()->isProductWithVariations();
     if ($isVariationMagentoProduct || !$variationManager->isVariationProduct()) {
         return false;
     }
     $variationManager->getTypeModel()->clearTypeData();
     if ($variationManager->isRelationParentType()) {
         $listingProduct->setData('general_id', NULL);
         $listingProduct->setData('is_general_id_owner', Ess_M2ePro_Model_Amazon_Listing_Product::IS_GENERAL_ID_OWNER_NO);
         $listingProduct->setData('status', Ess_M2ePro_Model_Listing_Product::STATUS_NOT_LISTED);
         $listingProduct->deleteInstance();
     } else {
         $variationManager->setSimpleType();
     }
     return true;
 }
Esempio n. 4
0
 protected function saveVariationsSets(Ess_M2ePro_Model_Listing_Product $listingProduct, $variations)
 {
     if (!isset($variations['set'])) {
         return;
     }
     $additionalData = $listingProduct->getData('additional_data');
     $additionalData = is_null($additionalData) ? array() : json_decode($additionalData, true);
     $additionalData['variations_sets'] = $variations['set'];
     $listingProduct->setData('additional_data', json_encode($additionalData))->save();
 }
 private function checkChangeAsNotVariationProduct(Ess_M2ePro_Model_Listing_Product $listingProduct)
 {
     /** @var Ess_M2ePro_Model_Buy_Listing_Product_Variation_Manager $variationManager */
     $variationManager = $listingProduct->getChildObject()->getVariationManager();
     $isVariationMagentoProduct = $listingProduct->getMagentoProduct()->isProductWithVariations();
     if ($isVariationMagentoProduct || !$variationManager->isVariationProduct()) {
         return false;
     }
     $variationManager->clearVariationData();
     $listingProduct->setData('is_variation_product', 0)->save();
     return true;
 }
Esempio n. 6
0
 protected function saveVariationsData(Ess_M2ePro_Model_Listing_Product $listingProduct, $variationsData)
 {
     $additionalData = $listingProduct->getData('additional_data');
     $additionalData = is_null($additionalData) ? array() : (array) json_decode($additionalData, true);
     if (isset($variationsData['set'])) {
         $additionalData['variations_sets'] = $variationsData['set'];
     }
     if (isset($variationsData['additional']['attributes'])) {
         $additionalData['configurable_attributes'] = $variationsData['additional']['attributes'];
     }
     $listingProduct->setData('additional_data', json_encode($additionalData))->save();
 }
Esempio n. 7
0
 public function updateVariations(Ess_M2ePro_Model_Listing_Product $listingProduct)
 {
     $options = array();
     if ($listingProduct->getMagentoProduct()->isProductWithoutVariations()) {
         $listingProduct->setData('is_variation_product', Ess_M2ePro_Model_Play_Listing_Product::IS_VARIATION_PRODUCT_NO)->save();
         if ($listingProduct->getChildObject()->isVariationMatched()) {
             $listingProduct->getChildObject()->updateVariationOptions($options);
             $listingProduct->getChildObject()->unsetMatchedVariation();
         }
         return;
     }
     $listingProduct->setData('is_variation_product', Ess_M2ePro_Model_Play_Listing_Product::IS_VARIATION_PRODUCT_YES)->save();
     $magentoVariations = $listingProduct->getMagentoProduct()->getProductVariations();
     foreach ($magentoVariations['set'] as $attribute => $value) {
         $options[] = array('attribute' => $attribute, 'option' => NULL);
     }
     if (!$listingProduct->getChildObject()->isVariationMatched()) {
         $listingProduct->getChildObject()->updateVariationOptions($options);
         return;
     }
     // observe variation removal in Magento
     $currentVariation = $this->prepareCurrentVariations($listingProduct->getVariations(true));
     if (!isset($currentVariation[0]) || !isset($currentVariation[0]['options'])) {
         return;
     }
     $currentVariation = reset($currentVariation);
     $magentoVariations = $this->prepareMagentoVariations($magentoVariations);
     foreach ($magentoVariations as $magentoVariation) {
         if ($this->isEqualVariations($magentoVariation['options'], $currentVariation['options'])) {
             return;
         }
     }
     foreach ($listingProduct->getVariations(true) as $variation) {
         $variation->deleteInstance();
     }
     $listingProduct->getChildObject()->updateVariationOptions($options);
     $listingProduct->getChildObject()->unsetMatchedVariation();
 }
 protected function processAddedListingProduct(Ess_M2ePro_Model_Listing_Product $listingProduct, array $params)
 {
     if (empty($params['template_description_id'])) {
         return;
     }
     /** @var Ess_M2ePro_Model_Amazon_Listing_Product $amazonListingProduct */
     $amazonListingProduct = $listingProduct->getChildObject();
     if (!$amazonListingProduct->getVariationManager()->isRelationParentType()) {
         $listingProduct->setData('template_description_id', $params['template_description_id']);
         $listingProduct->setData('is_general_id_owner', Ess_M2ePro_Model_Amazon_Listing_Product::IS_GENERAL_ID_OWNER_YES);
         $listingProduct->save();
         return;
     }
     $processor = $amazonListingProduct->getVariationManager()->getTypeModel()->getProcessor();
     if ($listingProduct->getMagentoProduct()->isBundleType() || $listingProduct->getMagentoProduct()->isSimpleTypeWithCustomOptions()) {
         $processor->process();
         return;
     }
     $detailsModel = Mage::getModel('M2ePro/Amazon_Marketplace_Details');
     $detailsModel->setMarketplaceId($listingProduct->getListing()->getMarketplaceId());
     /** @var Ess_M2ePro_Model_Template_Description $descriptionTemplate */
     $descriptionTemplate = Mage::helper('M2ePro/Component_Amazon')->getModel('Template_Description')->load($params['template_description_id']);
     /** @var Ess_M2ePro_Model_Amazon_Template_Description $amazonDescriptionTemplate */
     $amazonDescriptionTemplate = $descriptionTemplate->getChildObject();
     $possibleThemes = $detailsModel->getVariationThemes($amazonDescriptionTemplate->getProductDataNick());
     $productAttributes = $amazonListingProduct->getVariationManager()->getTypeModel()->getProductAttributes();
     foreach ($possibleThemes as $theme) {
         if (count($theme['attributes']) != count($productAttributes)) {
             continue;
         }
         $listingProduct->setData('template_description_id', $params['template_description_id']);
         $listingProduct->setData('is_general_id_owner', Ess_M2ePro_Model_Amazon_Listing_Product::IS_GENERAL_ID_OWNER_YES);
         break;
     }
     $listingProduct->save();
     $processor->process();
 }
Esempio n. 9
0
 public function updateAfterStopAction(Ess_M2ePro_Model_Listing_Product $listingProduct, array $nativeRequestData = array(), array $params = array())
 {
     // Update Listing Product
     //---------------------
     $dataForUpdate = array('status' => Ess_M2ePro_Model_Listing_Product::STATUS_STOPPED);
     if (isset($params['status_changer'])) {
         $dataForUpdate['status_changer'] = (int) $params['status_changer'];
     }
     if (isset($params['end_date_raw'])) {
         $dataForUpdate['end_date'] = Ess_M2ePro_Model_Connector_Server_Ebay_Abstract::ebayTimeToString($params['end_date_raw']);
     }
     $listingProduct->addData($dataForUpdate)->save();
     //---------------------
     // Save additional info
     //---------------------
     $additionalData = $listingProduct->getAdditionalData();
     $additionalData['ebay_item_fees'] = array();
     $listingProduct->setData('additional_data', json_encode($additionalData))->save();
     //---------------------
     // Update Variations
     //---------------------
     $productVariations = $listingProduct->getVariations(true);
     foreach ($productVariations as $variation) {
         /** @var $variation Ess_M2ePro_Model_Listing_Product_Variation */
         $dataForUpdate = array('add' => 0);
         if ($variation->getChildObject()->isListed()) {
             $dataForUpdate['status'] = Ess_M2ePro_Model_Listing_Product::STATUS_STOPPED;
         }
         $variation->addData($dataForUpdate)->save();
     }
     //---------------------
 }
Esempio n. 10
0
 private function matchEmptyChannelOptionsChild(Ess_M2ePro_Model_Listing_Product $listingProduct)
 {
     /** @var Ess_M2ePro_Model_Amazon_Listing_Product_Variation_Manager_Type_Relation_Child $typeModel */
     $typeModel = $listingProduct->getChildObject()->getVariationManager()->getTypeModel();
     $channelOptions = array_merge($this->getProcessor()->getTypeModel()->getUnusedChannelOptions(), $this->getProcessor()->getTypeModel()->getUsedChannelOptions(true));
     if (empty($channelOptions)) {
         return;
     }
     if (!$typeModel->isVariationProductMatched()) {
         return;
     }
     $matcher = $this->getOptionMatcher();
     $matcher->setDestinationOptions($channelOptions);
     $generalId = $matcher->getMatchedOptionGeneralId($typeModel->getProductOptions());
     if (is_null($generalId)) {
         return;
     }
     $existChild = $this->findChildByChannelOptions($channelOptions[$generalId]);
     if (!is_null($existChild)) {
         $this->getProcessor()->tryToDeleteChildListingProduct($existChild);
     }
     $listingProduct->setData('general_id', $generalId);
     $typeModel->setChannelVariation($channelOptions[$generalId]);
 }
Esempio n. 11
0
 public function updateAfterAction(Ess_M2ePro_Model_Listing_Product $listingProduct, array $nativeRequestData = array(), array $params = array(), $saveEbayQtySold = false)
 {
     if (!$listingProduct->getChildObject()->isListingTypeFixed() || !$listingProduct->getChildObject()->isVariationMode() || $listingProduct->getMagentoProduct()->isProductWithoutVariations()) {
         return;
     }
     $isImagesUploadError = isset($params['is_images_upload_error']) ? $params['is_images_upload_error'] : false;
     if (isset($nativeRequestData['variation_image']) && !$isImagesUploadError) {
         $additionalData = $listingProduct->getAdditionalData();
         $additionalData['ebay_product_variation_images_hash'] = sha1(json_encode($nativeRequestData['variation_image']));
         $listingProduct->setData('additional_data', json_encode($additionalData))->save();
     }
     // Delete Variations
     //-----------------------------
     $productVariations = $listingProduct->getVariations(true);
     foreach ($productVariations as $variation) {
         /** @var $variation Ess_M2ePro_Model_Listing_Product_Variation */
         $variation->getChildObject()->isDelete() && $variation->deleteInstance();
     }
     //-----------------------------
     // Update Variations
     //-----------------------------
     $productVariations = $listingProduct->getVariations(true);
     foreach ($productVariations as $variation) {
         /** @var $variation Ess_M2ePro_Model_Listing_Product_Variation */
         $dataForUpdate = array('online_price' => $variation->getChildObject()->getPrice(), 'add' => 0, 'delete' => 0, 'status' => Ess_M2ePro_Model_Listing_Product::STATUS_LISTED);
         if ($saveEbayQtySold) {
             $dataForUpdate['online_qty_sold'] = is_null($variation->getChildObject()->getOnlineQtySold()) ? 0 : $variation->getChildObject()->getOnlineQtySold();
             $dataForUpdate['online_qty'] = $variation->getChildObject()->getQty() + $dataForUpdate['online_qty_sold'];
         } else {
             $dataForUpdate['online_qty_sold'] = 0;
             $dataForUpdate['online_qty'] = $variation->getChildObject()->getQty();
         }
         if ($dataForUpdate['online_qty'] <= $dataForUpdate['online_qty_sold']) {
             $dataForUpdate['status'] = Ess_M2ePro_Model_Listing_Product::STATUS_SOLD;
         }
         if ($dataForUpdate['online_qty'] <= 0) {
             $dataForUpdate['status'] = Ess_M2ePro_Model_Listing_Product::STATUS_NOT_LISTED;
         }
         $variation->addData($dataForUpdate)->save();
     }
     //-----------------------------
 }