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(); }
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; }
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; }
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(); }
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(); }
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(); } //--------------------- }
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]); }
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(); } //----------------------------- }