Beispiel #1
0
 public function inspectRevisePriceRequirements(Ess_M2ePro_Model_Listing_Product $listingProduct)
 {
     // Is checked before?
     //--------------------
     if (in_array($listingProduct->getId(), $this->_checkedPriceListingsProductsIds)) {
         return false;
     } else {
         $this->_checkedPriceListingsProductsIds[] = $listingProduct->getId();
     }
     //--------------------
     // Prepare actions params
     //--------------------
     $actionParams = array('only_data' => array('price' => true));
     //--------------------
     // Amazon available status
     //--------------------
     if (!$listingProduct->isListed() || $listingProduct->isBlocked()) {
         return false;
     }
     if (!$listingProduct->isRevisable()) {
         return false;
     }
     if ($this->getRunner()->isExistProduct($listingProduct, Ess_M2ePro_Model_Listing_Product::ACTION_REVISE, $actionParams)) {
         return false;
     }
     if ($listingProduct->isLockedObject(NULL) || $listingProduct->isLockedObject('in_action')) {
         return false;
     }
     //--------------------
     /* @var $amazonSynchronizationTemplate Ess_M2ePro_Model_Amazon_Template_Synchronization */
     $amazonSynchronizationTemplate = $listingProduct->getChildObject()->getAmazonSynchronizationTemplate();
     // Correct synchronization
     //--------------------
     if (!$amazonSynchronizationTemplate->isReviseWhenChangePrice()) {
         return false;
     }
     if ($listingProduct->getChildObject()->isVariationProduct() && !$listingProduct->getChildObject()->isVariationMatched()) {
         return false;
     }
     //--------------------
     // Check filters
     //--------------------
     $currentPrice = $listingProduct->getChildObject()->getPrice();
     $onlinePrice = $listingProduct->getChildObject()->getOnlinePrice();
     if ($currentPrice != $onlinePrice) {
         $this->getRunner()->addProduct($listingProduct, Ess_M2ePro_Model_Listing_Product::ACTION_REVISE, $actionParams);
         return true;
     }
     $currentSalePriceInfo = $listingProduct->getChildObject()->getSalePriceInfo();
     $currentSalePrice = $currentSalePriceInfo['price'];
     $onlineSalePrice = $listingProduct->getChildObject()->getOnlineSalePrice();
     if (is_null($currentSalePrice) && !is_null($onlineSalePrice) || !is_null($currentSalePrice) && is_null($onlineSalePrice) || (double) $currentSalePrice != (double) $onlineSalePrice) {
         $this->getRunner()->addProduct($listingProduct, Ess_M2ePro_Model_Listing_Product::ACTION_REVISE, $actionParams);
         return true;
     }
     //--------------------
     //--------------------
     $currentSalePriceStartDate = $currentSalePriceInfo['start_date'];
     $onlineSalePriceStartDate = $listingProduct->getChildObject()->getOnlineSalePriceStartDate();
     $currentSalePriceEndDate = $currentSalePriceInfo['end_date'];
     $onlineSalePriceEndDate = $listingProduct->getChildObject()->getOnlineSalePriceEndDate();
     if ($currentSalePriceStartDate != $onlineSalePriceStartDate || $currentSalePriceEndDate != $onlineSalePriceEndDate) {
         $this->getRunner()->addProduct($listingProduct, Ess_M2ePro_Model_Listing_Product::ACTION_REVISE, $actionParams);
         return true;
     }
     //--------------------
     return false;
 }
 /**
  * @param Ess_M2ePro_Model_Listing_Product $listingProduct
  * @return bool
  * @throws Ess_M2ePro_Model_Exception
  * @throws Ess_M2ePro_Model_Exception_Logic
  */
 public function isMeetReviseGeneralRequirements(Ess_M2ePro_Model_Listing_Product $listingProduct)
 {
     /** @var Ess_M2ePro_Model_Amazon_Listing_Product $amazonListingProduct */
     $amazonListingProduct = $listingProduct->getChildObject();
     if (!$amazonListingProduct->isAfnChannel() && (!$listingProduct->isListed() || $listingProduct->isBlocked())) {
         return false;
     }
     if (!$listingProduct->isRevisable()) {
         return false;
     }
     $variationManager = $amazonListingProduct->getVariationManager();
     if ($variationManager->isVariationProduct()) {
         if ($variationManager->isRelationParentType()) {
             return false;
         }
         if ($variationManager->isPhysicalUnit() && !$variationManager->getTypeModel()->isVariationProductMatched()) {
             return false;
         }
     }
     if ($listingProduct->isLockedObject('in_action')) {
         return false;
     }
     return true;
 }
Beispiel #3
0
 public function inspectRevisePriceRequirements(Ess_M2ePro_Model_Listing_Product $listingProduct)
 {
     // Is checked before?
     //--------------------
     if (in_array($listingProduct->getId(), $this->_checkedPriceListingsProductsIds)) {
         return false;
     } else {
         $this->_checkedPriceListingsProductsIds[] = $listingProduct->getId();
     }
     //--------------------
     // Prepare actions params
     //--------------------
     $actionParams = array('only_data' => array('price' => true));
     //--------------------
     // Amazon available status
     //--------------------
     if (!$listingProduct->isListed() || $listingProduct->isBlocked()) {
         return false;
     }
     if (!$listingProduct->isRevisable()) {
         return false;
     }
     if ($this->_runnerActions->isExistProductAction($listingProduct, Ess_M2ePro_Model_Connector_Server_Amazon_Product_Dispatcher::ACTION_REVISE, $actionParams)) {
         return false;
     }
     if ($listingProduct->isLockedObject(NULL) || $listingProduct->isLockedObject('in_action')) {
         return false;
     }
     //--------------------
     // Correct synchronization
     //--------------------
     if (!$listingProduct->getChildObject()->getAmazonSynchronizationTemplate()->isReviseWhenChangePrice()) {
         return false;
     }
     //--------------------
     // Check filters
     //--------------------
     $currentPrice = $listingProduct->getChildObject()->getPrice();
     $onlinePrice = $listingProduct->getChildObject()->getOnlinePrice();
     if ($currentPrice != $onlinePrice) {
         $this->_runnerActions->setProduct($listingProduct, Ess_M2ePro_Model_Connector_Server_Amazon_Product_Dispatcher::ACTION_REVISE, $actionParams);
         return true;
     }
     $currentSalePrice = $listingProduct->getChildObject()->getSalePrice();
     $onlineSalePrice = $listingProduct->getChildObject()->getOnlineSalePrice();
     if (is_null($currentSalePrice) && !is_null($onlineSalePrice) || !is_null($currentSalePrice) && is_null($onlineSalePrice) || (double) $currentSalePrice != (double) $onlineSalePrice) {
         $this->_runnerActions->setProduct($listingProduct, Ess_M2ePro_Model_Connector_Server_Amazon_Product_Dispatcher::ACTION_REVISE, $actionParams);
         return true;
     }
     //--------------------
     return false;
 }