Beispiel #1
0
 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();
 }
Beispiel #3
0
 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
 }
Beispiel #5
0
 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);
 }
Beispiel #6
0
 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;
 }
Beispiel #8
0
 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();
 }
Beispiel #9
0
 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;
 }
Beispiel #10
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();
 }
Beispiel #11
0
 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;
 }
Beispiel #12
0
 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();
 }
Beispiel #13
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;
 }
Beispiel #14
0
 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();
 }
Beispiel #17
0
 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>&nbsp;
    <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>&nbsp;
    <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>&nbsp;
    <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;
 }
Beispiel #21
0
 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();
     }
     //-----------------------------
 }
Beispiel #22
0
 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);
     }
 }
Beispiel #23
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();
     }
     //-----------------------------
 }