public function isAddedNewVariationsAttributes(Ess_M2ePro_Model_Listing_Product $listingProduct) { if ($listingProduct->getMagentoProduct()->isProductWithoutVariations()) { return false; } // Prepare Magento Variations //----------------------------- $tempMagentoVariations = $listingProduct->getMagentoProduct()->getProductVariations(); $tempMagentoVariations = $this->validateChannelConditions($tempMagentoVariations, false); //----------------------------- // Get Variations //----------------------------- $magentoVariations = $this->prepareMagentoVariations($tempMagentoVariations); $currentVariations = $this->prepareCurrentVariations($listingProduct->getVariations(true)); //----------------------------- if (!isset($magentoVariations[0]) && !isset($currentVariations[0])) { return false; } if (!isset($magentoVariations[0]) || !isset($currentVariations[0])) { return true; } if (count($magentoVariations[0]['options']) != count($currentVariations[0]['options'])) { return true; } return false; }
public function process() { if (is_null($this->listingProduct)) { throw new Exception('Listing Product was not set.'); } $this->listingProduct->getMagentoProduct()->enableCache(); foreach ($this->getSortedProcessors() as $processor) { $this->getProcessorModel($processor)->process(); } $this->listingProduct->setData('variation_parent_need_processor', 0); $this->listingProduct->save(); }
public function updateVariations(Ess_M2ePro_Model_Listing_Product $listingProduct) { if (!$listingProduct->getMagentoProduct()->isProductWithVariations()) { return; } $rawMagentoVariations = $listingProduct->getMagentoProduct()->getProductVariations(); $rawMagentoVariations = $this->validateLimitsConditions($rawMagentoVariations, $listingProduct); $magentoVariations = $this->prepareMagentoVariations($rawMagentoVariations); $currentVariations = $this->prepareCurrentVariations($listingProduct->getVariations(true)); $addedVariations = $this->getAddedVariations($magentoVariations, $currentVariations); $deletedVariations = $this->getDeletedVariations($magentoVariations, $currentVariations); $this->addNewVariations($listingProduct, $addedVariations); $this->markAsDeletedVariations($deletedVariations); $this->saveVariationsSets($listingProduct, $rawMagentoVariations); }
public function updateAfterAction(Ess_M2ePro_Model_Listing_Product $listingProduct) { if ($listingProduct->getMagentoProduct()->isProductWithoutVariations()) { return; } // TODO next release }
public function process(Ess_M2ePro_Model_Listing_Product $listingProduct) { if (!$listingProduct->getMagentoProduct()->isProductWithVariations()) { return; } $rawMagentoVariations = $listingProduct->getMagentoProduct()->getVariationInstance()->getVariationsTypeStandard(); $rawMagentoVariations = Mage::helper('M2ePro/Component_Ebay')->reduceOptionsForVariations($rawMagentoVariations); $rawMagentoVariations = $this->validateExistenceConditions($rawMagentoVariations, $listingProduct); $rawMagentoVariations = $this->validateLimitsConditions($rawMagentoVariations, $listingProduct); $magentoVariations = $this->prepareMagentoVariations($rawMagentoVariations); $currentVariations = $this->prepareCurrentVariations($listingProduct->getVariations(true)); $addedVariations = $this->getAddedVariations($magentoVariations, $currentVariations); $deletedVariations = $this->getDeletedVariations($magentoVariations, $currentVariations); $this->addNewVariations($listingProduct, $addedVariations); $this->markAsDeletedVariations($deletedVariations); $this->saveVariationsSets($listingProduct, $rawMagentoVariations); }
public function getRequestData(Ess_M2ePro_Model_Listing_Product $listingProduct, array &$requestData) { /** @var $categoryTemplate Ess_M2ePro_Model_Ebay_Template_Category */ $categoryTemplate = $listingProduct->getChildObject()->getCategoryTemplate(); $categoryTemplate->setMagentoProduct($listingProduct->getMagentoProduct()); /** @var $otherCategoryTemplate Ess_M2ePro_Model_Ebay_Template_OtherCategory */ $otherCategoryTemplate = $listingProduct->getChildObject()->getOtherCategoryTemplate(); if (!is_null($otherCategoryTemplate)) { $otherCategoryTemplate->setMagentoProduct($listingProduct->getMagentoProduct()); } $this->addMainCategoriesData($categoryTemplate, $otherCategoryTemplate, $requestData); $this->addStoreCategoriesData($otherCategoryTemplate, $requestData); $this->addMotorsSpecificsData($listingProduct, $listingProduct->getListing()->getMarketplace(), $categoryTemplate, $requestData); $this->addItemSpecificsData($listingProduct, $categoryTemplate, $requestData); $this->addCustomItemSpecificsData($listingProduct, $categoryTemplate, $requestData); $this->clearConflictedItemSpecificsData($requestData); $this->addAttributeSetData($listingProduct, $categoryTemplate, $requestData); }
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; }
public function getSpecifics(Ess_M2ePro_Model_Listing_Product $listingProduct) { $attributeCode = Mage::helper('M2ePro/Module')->getConfig()->getGroupValue('/ebay/motor/', 'motors_specifics_attribute'); if (empty($attributeCode)) { return false; } $attributeValue = $listingProduct->getMagentoProduct()->getAttributeValue($attributeCode); if (empty($attributeValue)) { return array(); } $epids = explode(self::VALUE_SEPARATOR, $attributeValue); return Mage::getModel('M2ePro/Ebay_Motor_Specific')->getCollection()->addFieldToFilter('epid', array('in' => $epids))->getItems(); }
protected function filterReceivedItemsFullTitleMatch($receivedItems) { $return = array(); $magentoProductTitle = $this->listingProduct->getMagentoProduct()->getName(); $magentoProductTitle = trim(strtolower($magentoProductTitle)); foreach ($receivedItems as $item) { $itemTitle = trim(strtolower($item['title'])); if ($itemTitle == $magentoProductTitle) { $return[] = $item; } } return $return; }
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(); }
public function isAddedNewVariationsAttributes(Ess_M2ePro_Model_Listing_Product $listingProduct) { if (!$listingProduct->getChildObject()->isListingTypeFixed() || !$listingProduct->getChildObject()->isVariationMode()) { return false; } if ($listingProduct->getMagentoProduct()->isProductWithoutVariations()) { return false; } $rawMagentoVariations = $listingProduct->getMagentoProduct()->getProductVariations(); $rawMagentoVariations = $this->validateLimitsConditions($rawMagentoVariations, NULL); $magentoVariations = $this->prepareMagentoVariations($rawMagentoVariations); $currentVariations = $this->prepareCurrentVariations($listingProduct->getVariations(true)); if (!isset($magentoVariations[0]) && !isset($currentVariations[0])) { return false; } if (!isset($magentoVariations[0]) || !isset($currentVariations[0])) { return true; } if (count($magentoVariations[0]['options']) != count($currentVariations[0]['options'])) { return true; } return false; }
private function calculateCurrentData() { if (!empty($this->currentQuery) || $this->currentStep > self::STEP_MAGENTO_TITLE) { return; } switch ($this->currentStep) { case self::STEP_GENERAL_ID: $tempQuery = $this->listingProduct->getChildObject()->getGeneralId(); empty($tempQuery) && ($tempQuery = $this->listingProduct->getChildObject()->getAddingGeneralId()); !empty($tempQuery) && ($this->currentStep = self::STEP_GENERAL_ID); !empty($tempQuery) && ($this->currentQuery = (string) $tempQuery); break; case self::STEP_MAGENTO_TITLE: $tempQuery = ''; if ($this->listingProduct->getGeneralTemplate()->getChildObject()->isSearchByMagentoTitleModeEnabled()) { $tempQuery = $this->listingProduct->getMagentoProduct()->getName(); } !empty($tempQuery) && ($this->currentStep = self::STEP_MAGENTO_TITLE); !empty($tempQuery) && ($this->currentQuery = (string) $tempQuery); break; } empty($this->currentQuery) && $this->currentStep++; $this->calculateCurrentData(); }
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; }
public function getRequestData(Ess_M2ePro_Model_Listing_Product $listingProduct, array &$requestData) { $requestData['shipping'] = array(); /** @var $shippingTemplate Ess_M2ePro_Model_Ebay_Template_Shipping */ $shippingTemplate = $listingProduct->getChildObject()->getShippingTemplate(); $shippingTemplate->setMagentoProduct($listingProduct->getMagentoProduct()); $accountId = $listingProduct->getListing()->getAccountId(); $this->addLocalShippingData($shippingTemplate, $accountId, $requestData); $this->addInternationalShippingData($shippingTemplate, $accountId, $requestData); $this->addGlobalShippingProgramData($shippingTemplate, $requestData); $this->addExcludedLocationsData($shippingTemplate, $requestData); if ($shippingTemplate->isLocalShippingFlatEnabled() && $shippingTemplate->isLocalShippingRateTableEnabled() && !$shippingTemplate->isInternationalShippingCalculatedEnabled() && !isset($requestData['shipping']['calculated'])) { $calculatedData = $this->getCalculatedData($shippingTemplate, $listingProduct); unset($calculatedData['package_size']); unset($calculatedData['originating_postal_code']); unset($calculatedData['dimensions']); $requestData['shipping']['calculated'] = $calculatedData; } $this->addAdditionalData($shippingTemplate, $requestData); $this->addLocationData($shippingTemplate, $requestData); $this->addInternationalTradeData($shippingTemplate, $requestData); }
private function checkVariationStructureChanges(Ess_M2ePro_Model_Listing_Product $listingProduct) { /** @var Ess_M2ePro_Model_Amazon_Listing_Product_Variation_Manager $variationManager */ $variationManager = $listingProduct->getChildObject()->getVariationManager(); if ($variationManager->isRelationParentType()) { $this->parentListingsProductsForProcessing[$listingProduct->getId()] = $listingProduct; return; } /** @var Ess_M2ePro_Model_Amazon_Listing_Product_Variation_Manager_PhysicalUnit $typeModel */ $typeModel = $variationManager->getTypeModel(); if (!$listingProduct->getMagentoProduct()->isSimpleType()) { $typeModel->inspectAndFixProductOptionsIds(); } if (!$typeModel->isActualProductAttributes()) { if ($variationManager->isRelationChildType()) { /** @var Ess_M2ePro_Model_Amazon_Listing_Product_Variation_Manager_Type_Relation_Child $typeModel */ $this->parentListingsProductsForProcessing[$typeModel->getParentListingProduct()->getId()] = $typeModel->getParentListingProduct(); return; } /** @var Ess_M2ePro_Model_Amazon_Listing_Product_Variation_Manager_Type_Individual $typeModel */ $typeModel->resetProductVariation(); return; } /** @var Ess_M2ePro_Model_Amazon_Listing_Product_Variation_Manager_PhysicalUnit $typeModel */ if ($typeModel->isVariationProductMatched() && !$typeModel->isActualProductVariation()) { if ($variationManager->isRelationChildType()) { /** @var Ess_M2ePro_Model_Amazon_Listing_Product_Variation_Manager_Type_Relation_Child $typeModel */ $this->parentListingsProductsForProcessing[$typeModel->getParentListingProduct()->getId()] = $typeModel->getParentListingProduct(); return; } $typeModel->unsetProductVariation(); } /** @var Ess_M2ePro_Model_Amazon_Listing_Product_Variation_Manager_Type_Relation_Child $typeModel */ if ($variationManager->isRelationChildType() && $typeModel->getParentTypeModel()->getVirtualChannelAttributes()) { if (!$typeModel->getParentTypeModel()->isActualVirtualChannelAttributes()) { $this->parentListingsProductsForProcessing[$typeModel->getParentListingProduct()->getId()] = $typeModel->getParentListingProduct(); } } }
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(); }
protected function updateProduct(Ess_M2ePro_Model_Listing_Product $listingProduct, array $response) { $productData = array(); $descriptionTemplate = $listingProduct->getChildObject()->getDescriptionTemplate(); $oldDescriptionTemplateId = $descriptionTemplate->getId(); if (!isset($this->descriptionTemplatesIds[$oldDescriptionTemplateId]) && (trim($descriptionTemplate->getData('title_template')) != '#ebay_translated_title#' || trim($descriptionTemplate->getData('subtitle_template')) != '#ebay_translated_subtitle#' || trim($descriptionTemplate->getData('description_template')) != '#ebay_translated_description#')) { $data = $descriptionTemplate->getDataSnapshot(); unset($data['id'], $data['update_date'], $data['create_date']); $data['title'] = $data['title'] . Mage::helper('M2ePro')->__(' (Changed because Translation Service applied.)'); $data['title_mode'] = Ess_M2ePro_Model_Ebay_Template_Description::TITLE_MODE_CUSTOM; $data['title_template'] = '#ebay_translated_title#'; $data['subtitle_mode'] = Ess_M2ePro_Model_Ebay_Template_Description::SUBTITLE_MODE_CUSTOM; $data['subtitle_template'] = '#ebay_translated_subtitle#'; $data['description_mode'] = Ess_M2ePro_Model_Ebay_Template_Description::DESCRIPTION_MODE_CUSTOM; $data['description_template'] = '#ebay_translated_description#'; $data['is_custom_template'] = 1; $newDescriptionTemplate = Mage::getModel('M2ePro/Ebay_Template_Manager')->setTemplate(Ess_M2ePro_Model_Ebay_Template_Manager::TEMPLATE_DESCRIPTION)->getTemplateBuilder()->build($data); $this->descriptionTemplatesIds[$oldDescriptionTemplateId] = $newDescriptionTemplate->getId(); } if (isset($this->descriptionTemplatesIds[$oldDescriptionTemplateId])) { $productData['template_description_custom_id'] = $this->descriptionTemplatesIds[$oldDescriptionTemplateId]; $productData['template_description_mode'] = Ess_M2ePro_Model_Ebay_Template_Manager::MODE_CUSTOM; } $this->checkAndCreateMagentoAttributes(array('ebay_translated_title' => 'Ebay Translated Title', 'ebay_translated_subtitle' => 'Ebay Translated Subtitle'), 'text'); $this->checkAndCreateMagentoAttributes(array('ebay_translated_description' => 'Ebay Translated Description'), 'textarea'); $this->checkAndCreateMagentoProductAttributes($listingProduct->getMagentoProduct(), array('ebay_translated_title', 'ebay_translated_subtitle', 'ebay_translated_description')); $listingProduct->getMagentoProduct()->setAttributeValue('ebay_translated_title', $response['title'])->setAttributeValue('ebay_translated_subtitle', $response['subtitle'])->setAttributeValue('ebay_translated_description', $response['description']); //------------------------------ $categoryPath = !is_null($response['category']['primary_id']) ? Mage::helper('M2ePro/Component_Ebay_Category_Ebay')->getPath((int) $response['category']['primary_id'], $this->params['marketplace_id']) : ''; $response['category']['path'] = $categoryPath; if ($categoryPath) { $data = Mage::getModel('M2ePro/Ebay_Template_Category')->getDefaultSettings(); $data['category_main_id'] = (int) $response['category']['primary_id']; $data['category_main_path'] = $categoryPath; $data['marketplace_id'] = $this->params['marketplace_id']; $data['specifics'] = $this->getSpecificsData($response['item_specifics']); $productData['template_category_id'] = Mage::getModel('M2ePro/Ebay_Template_Category_Builder')->build($data)->getId(); } else { $response['category']['primary_id'] = null; } $additionalData = $listingProduct->getAdditionalData(); $additionalData['translation_service']['to'] = array_merge($additionalData['translation_service']['to'], $response); $productData['additional_data'] = json_encode($additionalData); $listingProduct->addData($productData)->save(); $listingProduct->getChildObject()->addData(array('translation_status' => Ess_M2ePro_Model_Ebay_Listing_Product::TRANSLATION_STATUS_TRANSLATED, 'translated_date' => Mage::helper('M2ePro')->getCurrentGmtDate()))->save(); }
/** * @param Ess_M2ePro_Model_Listing_Product $listingProduct * @return bool * @throws Ess_M2ePro_Model_Exception_Logic */ public function isMeetStopRequirements(Ess_M2ePro_Model_Listing_Product $listingProduct) { if (!$listingProduct->isListed()) { return false; } if (!$listingProduct->isStoppable() || $listingProduct->isHidden()) { return false; } /** @var Ess_M2ePro_Model_Ebay_Listing_Product $ebayListingProduct */ $ebayListingProduct = $listingProduct->getChildObject(); $ebaySynchronizationTemplate = $ebayListingProduct->getEbaySynchronizationTemplate(); if (!$ebayListingProduct->isSetCategoryTemplate()) { return false; } $variationResource = Mage::getResourceModel('M2ePro/Listing_Product_Variation'); if ($ebaySynchronizationTemplate->isStopStatusDisabled()) { if (!$listingProduct->getMagentoProduct()->isStatusEnabled()) { return true; } else { if ($ebayListingProduct->isVariationsReady()) { $temp = $variationResource->isAllStatusesDisabled($listingProduct->getId(), $listingProduct->getListing()->getStoreId()); if (!is_null($temp) && $temp) { return true; } } } } if ($ebaySynchronizationTemplate->isStopOutOfStock()) { if (!$listingProduct->getMagentoProduct()->isStockAvailability()) { return true; } else { if ($ebayListingProduct->isVariationsReady()) { $temp = $variationResource->isAllDoNotHaveStockAvailabilities($listingProduct->getId(), $listingProduct->getListing()->getStoreId()); if (!is_null($temp) && $temp) { return true; } } } } if ($ebaySynchronizationTemplate->isStopWhenQtyMagentoHasValue()) { $productQty = (int) $listingProduct->getMagentoProduct()->getQty(true); $typeQty = (int) $ebaySynchronizationTemplate->getStopWhenQtyMagentoHasValueType(); $minQty = (int) $ebaySynchronizationTemplate->getStopWhenQtyMagentoHasValueMin(); $maxQty = (int) $ebaySynchronizationTemplate->getStopWhenQtyMagentoHasValueMax(); if ($typeQty == Ess_M2ePro_Model_Ebay_Template_Synchronization::STOP_QTY_LESS && $productQty <= $minQty) { return true; } if ($typeQty == Ess_M2ePro_Model_Ebay_Template_Synchronization::STOP_QTY_MORE && $productQty >= $minQty) { return true; } if ($typeQty == Ess_M2ePro_Model_Ebay_Template_Synchronization::STOP_QTY_BETWEEN && $productQty >= $minQty && $productQty <= $maxQty) { return true; } } if ($ebaySynchronizationTemplate->isStopWhenQtyCalculatedHasValue()) { $productQty = (int) $ebayListingProduct->getQty(); $typeQty = (int) $ebaySynchronizationTemplate->getStopWhenQtyCalculatedHasValueType(); $minQty = (int) $ebaySynchronizationTemplate->getStopWhenQtyCalculatedHasValueMin(); $maxQty = (int) $ebaySynchronizationTemplate->getStopWhenQtyCalculatedHasValueMax(); if ($typeQty == Ess_M2ePro_Model_Ebay_Template_Synchronization::STOP_QTY_LESS && $productQty <= $minQty) { return true; } if ($typeQty == Ess_M2ePro_Model_Ebay_Template_Synchronization::STOP_QTY_MORE && $productQty >= $minQty) { return true; } if ($typeQty == Ess_M2ePro_Model_Ebay_Template_Synchronization::STOP_QTY_BETWEEN && $productQty >= $minQty && $productQty <= $maxQty) { return true; } } return false; }
public function callbackColumnActions($value, $row, $column, $isExport) { $assignText = Mage::helper('M2ePro')->__('Assign'); $iconWarningPath = $this->getSkinUrl('M2ePro/images/warning.png'); $iconHelpPath = $this->getSkinUrl('M2ePro/images/i_notice.gif'); if (!$this->listingProduct->getChildObject()->getVariationManager()->isVariationProduct() || $this->listingProduct->getChildObject()->getVariationManager()->isIndividualType()) { if (!$row->getData('is_variation_product')) { return <<<HTML <a href="javascript:void(0);" onclick="ListingGridHandlerObj.productSearchHandler.mapToGeneralId( {$this->productId}, '{$row->getData('general_id')}');">{$assignText}</a> HTML; } if (!$row->getData('bad_parent')) { $msg = Mage::helper('M2ePro')->__('Please select necessary Options for this Amazon Product to be able to assign ASIN/ISBN.'); return <<<HTML <span> <span id="map_link_{$row->getId()}"><span style="color: #808080">{$assignText}</span></span> <img id="map_link_error_icon_{$row->getId()}" class="tool-tip-image" style="vertical-align: middle; display: none;" src="{$iconWarningPath}"> <span class="tool-tip-message tool-tip-warning tip-left" style="display:none;"> <img src="{$iconHelpPath}"> <span>{$msg}</span> </span> </span> <div id="template_map_link_{$row->getId()}" style="display: none;"> <a href="javascript:void(0);" onclick="ListingGridHandlerObj.productSearchHandler.mapToGeneralId( {$this->productId}, '%general_id%', '%options_data%' );">{$assignText}</a> </div> HTML; } } if ($row->getData('is_variation_product') && !$row->getData('bad_parent')) { $msg = Mage::helper('M2ePro')->__('Please map Amazon and Magento Attributes for this Amazon Product to be able to assign ASIN/ISBN.'); $variations = $row->getData('variations'); $destinationAttributes = array_keys($variations['set']); $this->matcherAttributes->setMagentoProduct($this->listingProduct->getMagentoProduct()); $this->matcherAttributes->setDestinationAttributes($destinationAttributes); if ($this->matcherAttributes->isSourceAmountGreater()) { $msg = Mage::helper('M2ePro')->__('Please map Magento and Amazon Attributes for this Amazon Product to be able to assign ASIN/ISBN. Be careful, as the number of Magento Attributes is more than the number of Attributes in Amazon Parent Product. Thus you should select fixed Value for unmatched Magento Variational Attribute.'); } else { if ($this->matcherAttributes->isDestinationAmountGreater()) { $msg = Mage::helper('M2ePro')->__('Please map Magento and Amazon Attributes for this Amazon Product to be able to assign ASIN/ISBN. Be careful, as the number of Attributes in Amazon Parent Product is more than the number of Magento Attributes. Thus you should select fixed Value for unmatched Amazon Variational Attribute.'); } } return <<<HTML <span> <span id="map_link_{$row->getId()}"><span style="color: #808080">{$assignText}</span></span> <img id="map_link_error_icon_{$row->getId()}" class="tool-tip-image" style="vertical-align: middle;" src="{$iconWarningPath}"> <span class="tool-tip-message tool-tip-warning tip-left" style="display:none;"> <img src="{$iconHelpPath}"> <span>{$msg}</span> </span> </span> <div id="template_map_link_{$row->getId()}" style="display: none;"> <a href="javascript:void(0);" onclick="ListingGridHandlerObj.productSearchHandler.mapToGeneralId( {$this->productId}, '{$row->getData('general_id')}', '%options_data%' );">{$assignText}</a> </div> HTML; } $msg = Mage::helper('M2ePro')->__('This ASIN/ISBN cannot be assigned to selected Magento Product. <br/> This Amazon Product has no Variations. <br/> Only Amazon Parent/Child Products can be assigned in "All Variations" Mode.'); if ($row->getData('is_variation_product') && $row->getData('bad_parent')) { $msg = Mage::helper('M2ePro')->__('This ASIN/ISBN cannot be assigned to selected Magento Product. <br/> Amazon Service (API) does not return all required information about this Amazon Product.'); } return <<<HTML <span> <span id="map_link_{$row->getId()}"><span style="color: #808080">{$assignText}</span></span> <img id="map_link_error_icon_{$row->getId()}" class="tool-tip-image" style="vertical-align: middle;" src="{$iconWarningPath}"> <span class="tool-tip-message tool-tip-warning tip-left" style="display:none;"> <img src="{$iconHelpPath}"> <span>{$msg}</span> </span> </span> HTML; }
/** * @param Ess_M2ePro_Model_Listing_Product $listingProduct * @return bool * @throws Ess_M2ePro_Model_Exception * @throws Ess_M2ePro_Model_Exception_Logic */ public function isMeetStopRequirements(Ess_M2ePro_Model_Listing_Product $listingProduct) { if (!$listingProduct->isListed() || $listingProduct->isBlocked()) { return false; } if (!$listingProduct->isStoppable()) { return false; } /** @var Ess_M2ePro_Model_Amazon_Listing_Product $amazonListingProduct */ $amazonListingProduct = $listingProduct->getChildObject(); $variationManager = $amazonListingProduct->getVariationManager(); if ($variationManager->isVariationProduct()) { if ($variationManager->isRelationParentType()) { return false; } } if ($listingProduct->isLockedObject('in_action')) { return false; } $amazonSynchronizationTemplate = $amazonListingProduct->getAmazonSynchronizationTemplate(); $variationResource = Mage::getResourceModel('M2ePro/Listing_Product_Variation'); if ($amazonSynchronizationTemplate->isStopStatusDisabled()) { if (!$listingProduct->getMagentoProduct()->isStatusEnabled()) { return true; } else { if ($variationManager->isPhysicalUnit() && $variationManager->getTypeModel()->isVariationProductMatched()) { $temp = $variationResource->isAllStatusesDisabled($listingProduct->getId(), $listingProduct->getListing()->getStoreId()); if (!is_null($temp) && $temp) { return true; } } } } if ($amazonSynchronizationTemplate->isStopOutOfStock()) { if (!$listingProduct->getMagentoProduct()->isStockAvailability()) { return true; } else { if ($variationManager->isPhysicalUnit() && $variationManager->getTypeModel()->isVariationProductMatched()) { $temp = $variationResource->isAllDoNotHaveStockAvailabilities($listingProduct->getId(), $listingProduct->getListing()->getStoreId()); if (!is_null($temp) && $temp) { return true; } } } } if ($amazonSynchronizationTemplate->isStopWhenQtyMagentoHasValue()) { $productQty = (int) $amazonListingProduct->getQty(true); $typeQty = (int) $amazonSynchronizationTemplate->getStopWhenQtyMagentoHasValueType(); $minQty = (int) $amazonSynchronizationTemplate->getStopWhenQtyMagentoHasValueMin(); $maxQty = (int) $amazonSynchronizationTemplate->getStopWhenQtyMagentoHasValueMax(); if ($typeQty == Ess_M2ePro_Model_Amazon_Template_Synchronization::STOP_QTY_LESS && $productQty <= $minQty) { return true; } if ($typeQty == Ess_M2ePro_Model_Amazon_Template_Synchronization::STOP_QTY_MORE && $productQty >= $minQty) { return true; } if ($typeQty == Ess_M2ePro_Model_Amazon_Template_Synchronization::STOP_QTY_BETWEEN && $productQty >= $minQty && $productQty <= $maxQty) { return true; } } if ($amazonSynchronizationTemplate->isStopWhenQtyCalculatedHasValue()) { $productQty = (int) $amazonListingProduct->getQty(false); $typeQty = (int) $amazonSynchronizationTemplate->getStopWhenQtyCalculatedHasValueType(); $minQty = (int) $amazonSynchronizationTemplate->getStopWhenQtyCalculatedHasValueMin(); $maxQty = (int) $amazonSynchronizationTemplate->getStopWhenQtyCalculatedHasValueMax(); if ($typeQty == Ess_M2ePro_Model_Amazon_Template_Synchronization::STOP_QTY_LESS && $productQty <= $minQty) { return true; } if ($typeQty == Ess_M2ePro_Model_Amazon_Template_Synchronization::STOP_QTY_MORE && $productQty >= $minQty) { return true; } if ($typeQty == Ess_M2ePro_Model_Amazon_Template_Synchronization::STOP_QTY_BETWEEN && $productQty >= $minQty && $productQty <= $maxQty) { return true; } } return false; }
public function updateAfterAction(Ess_M2ePro_Model_Listing_Product $listingProduct, array $nativeRequestData = array(), array $params = array(), $saveEbayQtySold = false) { if (!$listingProduct->getChildObject()->isListingTypeFixed() || !$listingProduct->getGeneralTemplate()->getChildObject()->isVariationMode() || $listingProduct->getMagentoProduct()->isProductWithoutVariations()) { return; } // Delete Variations //----------------------------- $productVariations = $listingProduct->getVariations(true); foreach ($productVariations as $variation) { /** @var $variation Ess_M2ePro_Model_Listing_Product_Variation */ $variation->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' => Ess_M2ePro_Model_Listing_Product_Variation::ADD_NO, 'delete' => Ess_M2ePro_Model_Listing_Product_Variation::DELETE_NO, '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(); } //----------------------------- }
protected function addAttributeSetData(Ess_M2ePro_Model_Listing_Product $listingProduct, array &$requestData) { $requestData['attribute_set'] = array('attribute_set_id' => 0, 'attributes' => array()); $filters = array('mode' => Ess_M2ePro_Model_Ebay_Template_General_Specific::MODE_ATTRIBUTE_SET); $tempListingSpecifics = $listingProduct->getGeneralTemplate()->getChildObject()->getSpecifics(true, $filters); foreach ($tempListingSpecifics as $tempSpecific) { $tempSpecific->setMagentoProduct($listingProduct->getMagentoProduct()); $tempAttributeData = $tempSpecific->getAttributeData(); $tempAttributeValues = $tempSpecific->getValues(); $requestData['attribute_set']['attribute_set_id'] = $tempSpecific->getModeRelationId(); $requestData['attribute_set']['attributes'][] = array('id' => $tempAttributeData['id'], 'value' => $tempAttributeValues); } }
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(); } //----------------------------- }