/** * @param Ess_M2ePro_Model_Listing_Product $listingProduct * @return bool * @throws Ess_M2ePro_Model_Exception_Logic */ public function isMeetReviseGeneralRequirements(Ess_M2ePro_Model_Listing_Product $listingProduct) { if (!$listingProduct->isListed()) { return false; } if (!$listingProduct->isRevisable() || $listingProduct->isHidden()) { return false; } /** @var Ess_M2ePro_Model_Ebay_Listing_Product $ebayListingProduct */ $ebayListingProduct = $listingProduct->getChildObject(); if (!$ebayListingProduct->isSetCategoryTemplate()) { return false; } return true; }
private function inspectReviseQtyRequirements(Ess_M2ePro_Model_Listing_Product $listingProduct) { // Is checked before? //-------------------- if (in_array($listingProduct->getId(), $this->_checkedQtyListingsProductsIds)) { return false; } else { $this->_checkedQtyListingsProductsIds[] = $listingProduct->getId(); } //-------------------- // Prepare actions params //-------------------- $actionParams = array('only_data' => array('qty' => true, 'variations' => true)); //-------------------- // eBay available status //-------------------- if (!$listingProduct->isListed()) { return false; } if (!$listingProduct->isRevisable() || $listingProduct->isHidden()) { return false; } if ($this->_runnerActions->isExistProductAction($listingProduct, Ess_M2ePro_Model_Connector_Ebay_Item_Dispatcher::ACTION_REVISE, $actionParams)) { return false; } //-------------------- // Correct synchronization //-------------------- if (!$listingProduct->getChildObject()->isSetCategoryTemplate()) { return false; } if (!$listingProduct->getChildObject()->getEbaySynchronizationTemplate()->isReviseWhenChangeQty()) { return false; } //-------------------- // Check filters //-------------------- $isVariationProduct = $listingProduct->getChildObject()->isVariationMode() && count($listingProduct->getVariations()) > 0; $isMaxAppliedValueModeOn = $listingProduct->getChildObject()->getEbaySynchronizationTemplate()->isReviseUpdateQtyMaxAppliedValueModeOn(); $maxAppliedValue = $listingProduct->getChildObject()->getEbaySynchronizationTemplate()->getReviseUpdateQtyMaxAppliedValue(); if (!$isVariationProduct) { $ebayListingProduct = $listingProduct->getChildObject(); $productQty = $ebayListingProduct->getQty(); $channelQty = $ebayListingProduct->getOnlineQty() - $ebayListingProduct->getOnlineQtySold(); //-- Check ReviseUpdateQtyMaxAppliedValue if ($isMaxAppliedValueModeOn && $productQty > $maxAppliedValue && $channelQty > $maxAppliedValue) { return false; } if ($productQty > 0 && $productQty != $channelQty) { $this->_runnerActions->setProduct($listingProduct, Ess_M2ePro_Model_Connector_Ebay_Item_Dispatcher::ACTION_REVISE, $actionParams); return true; } } else { $totalQty = 0; $hasChange = false; $variations = $listingProduct->getVariations(true); foreach ($variations as $variation) { /** @var $variation Ess_M2ePro_Model_Listing_Product_Variation */ $ebayVariation = $variation->getChildObject(); $productQty = $ebayVariation->getQty(); $channelQty = $ebayVariation->getOnlineQty() - $ebayVariation->getOnlineQtySold(); if ($productQty != $channelQty) { //-- Check ReviseUpdateQtyMaxAppliedValue (!$isMaxAppliedValueModeOn || $productQty <= $maxAppliedValue || $channelQty <= $maxAppliedValue) && ($hasChange = true); } $totalQty += $productQty; } if ($totalQty > 0 && $hasChange) { $this->_runnerActions->setProduct($listingProduct, Ess_M2ePro_Model_Connector_Ebay_Item_Dispatcher::ACTION_REVISE, $actionParams); return true; } } //-------------------- return false; }
public function getRunnerRelistDataByListingProduct(Ess_M2ePro_Model_Listing_Product $listingProduct) { $data = array(); if ($listingProduct->isHidden()) { $data['action'] = Ess_M2ePro_Model_Listing_Product::ACTION_REVISE; $data['params'] = array('replaced_action' => Ess_M2ePro_Model_Listing_Product::ACTION_RELIST, 'all_data' => true); } else { if ($listingProduct->getChildObject()->getEbaySynchronizationTemplate()->isRelistSendData()) { $tempParams = array('all_data' => true); } else { $tempParams = array('only_data' => array('base' => true)); } $data['action'] = Ess_M2ePro_Model_Listing_Product::ACTION_RELIST; $data['params'] = $tempParams; } return $data; }
public function getRunnerData(Ess_M2ePro_Model_Listing_Product $listingProduct) { $data = array(); /** @var Ess_M2ePro_Model_Ebay_Listing_Product $ebayListingProduct */ $ebayListingProduct = $listingProduct->getChildObject(); if ($listingProduct->isHidden()) { $data['action'] = Ess_M2ePro_Model_Listing_Product::ACTION_REVISE; if ($ebayListingProduct->getEbaySynchronizationTemplate()->isRelistSendData()) { $data['params'] = array('all_data' => true); } else { $data['params'] = array('only_data' => array('qty' => true, 'variations' => true)); } $data['params']['replaced_action'] = Ess_M2ePro_Model_Listing_Product::ACTION_RELIST; } else { $data['action'] = Ess_M2ePro_Model_Listing_Product::ACTION_RELIST; if ($ebayListingProduct->getEbaySynchronizationTemplate()->isRelistSendData()) { $data['params'] = array('all_data' => true); } else { $data['params'] = array('only_data' => array('base' => true)); } } return $data; }
private function prepareConfigurator(Ess_M2ePro_Model_Listing_Product $listingProduct, Ess_M2ePro_Model_Ebay_Listing_Product_Action_Configurator $configurator, $action) { if ($action != Ess_M2ePro_Model_Listing_Product::ACTION_RELIST) { $configurator->setParams(array('replaced_action' => Ess_M2ePro_Model_Listing_Product::ACTION_RELIST)); } /** @var Ess_M2ePro_Model_Ebay_Listing_Product $ebayListingProduct */ $ebayListingProduct = $listingProduct->getChildObject(); if ($ebayListingProduct->getEbaySynchronizationTemplate()->isRelistSendData()) { return; } if (!$listingProduct->isHidden() && $action == Ess_M2ePro_Model_Listing_Product::ACTION_RELIST) { $configurator->setEmptyMode(); return; } $configurator->setPartialMode(); $configurator->allowQty()->allowVariations(); }
private function isMeetStopRequirements(Ess_M2ePro_Model_Listing_Product $listingProduct) { // Is checked before? //-------------------- if (in_array($listingProduct->getId(), $this->_checkedListingsProductsIds)) { return false; } else { $this->_checkedListingsProductsIds[] = $listingProduct->getId(); } //-------------------- // eBay available status //-------------------- if (!$listingProduct->isListed()) { return false; } if (!$listingProduct->isStoppable() || $listingProduct->isHidden()) { return false; } $tempActionAndParams = $this->getActionAndParamsFromListingProduct($listingProduct); if ($this->_runnerActions->isExistProductAction($listingProduct, $tempActionAndParams['action'], $tempActionAndParams['params'])) { return false; } //-------------------- $productsIdsForEachVariation = NULL; // Check filters //-------------------- if ($listingProduct->getChildObject()->getEbaySynchronizationTemplate()->isStopStatusDisabled()) { if ($listingProduct->getMagentoProduct()->getStatus() == Mage_Catalog_Model_Product_Status::STATUS_DISABLED) { return true; } else { if (is_null($productsIdsForEachVariation)) { $productsIdsForEachVariation = $listingProduct->getProductsIdsForEachVariation(); } if (count($productsIdsForEachVariation) > 0) { $tempStatuses = $listingProduct->getVariationsStatuses($productsIdsForEachVariation); // all variations are disabled if ((int) min($tempStatuses) == Mage_Catalog_Model_Product_Status::STATUS_DISABLED) { return true; } } } } if ($listingProduct->getChildObject()->getEbaySynchronizationTemplate()->isStopOutOfStock()) { if (!$listingProduct->getMagentoProduct()->getStockAvailability()) { return true; } else { if (is_null($productsIdsForEachVariation)) { $productsIdsForEachVariation = $listingProduct->getProductsIdsForEachVariation(); } if (count($productsIdsForEachVariation) > 0) { $tempStocks = $listingProduct->getVariationsStockAvailabilities($productsIdsForEachVariation); // all variations are out of stock if (!(int) max($tempStocks)) { return true; } } } } if ($listingProduct->getChildObject()->getEbaySynchronizationTemplate()->isStopWhenQtyHasValue()) { $productQty = (int) $listingProduct->getChildObject()->getQtyTotal(true); $ebaySynchronizationTemplate = $listingProduct->getChildObject()->getEbaySynchronizationTemplate(); $typeQty = (int) $ebaySynchronizationTemplate->getStopWhenQtyHasValueType(); $minQty = (int) $ebaySynchronizationTemplate->getStopWhenQtyHasValueMin(); $maxQty = (int) $ebaySynchronizationTemplate->getStopWhenQtyHasValueMax(); 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; }
private function getActionAndParamsFromListingProduct(Ess_M2ePro_Model_Listing_Product $listingProduct) { $actionAndParams = array(); if ($listingProduct->isHidden()) { $actionAndParams['action'] = Ess_M2ePro_Model_Connector_Ebay_Item_Dispatcher::ACTION_REVISE; $actionAndParams['params'] = array('replaced_action' => Ess_M2ePro_Model_Connector_Ebay_Item_Dispatcher::ACTION_RELIST, 'all_data' => true); } else { if ($listingProduct->getChildObject()->getEbaySynchronizationTemplate()->isRelistSendData()) { $tempParams = array('all_data' => true); } else { $tempParams = array('only_data' => array('base' => true)); } $actionAndParams['action'] = Ess_M2ePro_Model_Connector_Ebay_Item_Dispatcher::ACTION_RELIST; $actionAndParams['params'] = $tempParams; } return $actionAndParams; }