예제 #1
0
 public function isAddedNewVariationsAttributes(Ess_M2ePro_Model_ListingsProducts $listingProduct)
 {
     if (!$listingProduct->isListingTypeFixed() || !$listingProduct->getListingTemplate()->isVariationMode() || $listingProduct->getMagentoProduct()->isSimpleTypeWithoutCustomOptions()) {
         return false;
     }
     $magentoVariations = $this->prepareMagentoVariations($listingProduct->getMagentoProduct()->getProductVariations());
     $currentVariations = $this->prepareCurrentVariations($listingProduct->getListingsProductsVariations(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;
 }
예제 #2
0
 private function updateListingsProductsChanges(Ess_M2ePro_Model_ListingsProducts $listingProduct)
 {
     // STATUS changes
     //--------------------------------
     $tempStatus = $listingProduct->getMagentoProduct()->getStatus();
     if (!$listingProduct->isListed() && $tempStatus == Mage_Catalog_Model_Product_Status::STATUS_ENABLED) {
         $this->addProductChange($listingProduct->getProductId(), 'status', Mage_Catalog_Model_Product_Status::STATUS_DISABLED, Mage_Catalog_Model_Product_Status::STATUS_ENABLED);
     }
     if ($listingProduct->isListed() && $tempStatus == Mage_Catalog_Model_Product_Status::STATUS_DISABLED) {
         $this->addProductChange($listingProduct->getProductId(), 'status', Mage_Catalog_Model_Product_Status::STATUS_ENABLED, Mage_Catalog_Model_Product_Status::STATUS_DISABLED);
     }
     //--------------------------------
     // IN STOCK changes
     //--------------------------------
     $tempStockAvailability = $listingProduct->getMagentoProduct()->getStockAvailability();
     if (!$listingProduct->isListed() && $tempStockAvailability) {
         $this->addProductChange($listingProduct->getProductId(), 'stock_availability', 0, 1);
     }
     if ($listingProduct->isListed() && !$tempStockAvailability) {
         $this->addProductChange($listingProduct->getProductId(), 'stock_availability', 1, 0);
     }
     //--------------------------------
     // PRICE changes
     //--------------------------------
     if ($listingProduct->isListed()) {
         $this->addPriceProductChange($listingProduct, 'getBuyItNowPrice', 'getEbayBuyItNowPrice', 'getBuyItNowPriceSource');
         if ($listingProduct->isListingTypeAuction()) {
             $this->addPriceProductChange($listingProduct, 'getReservePrice', 'getEbayReservePrice', 'getReservePriceSource');
             $this->addPriceProductChange($listingProduct, 'getStartPrice', 'getEbayStartPrice', 'getStartPriceSource');
         }
     }
     //--------------------------------
     // QTY changes
     //--------------------------------
     if ($listingProduct->isListingTypeFixed()) {
         if ($listingProduct->isListed()) {
             $productQty = $listingProduct->getQty();
             $ebayQty = $listingProduct->getEbayQty() - $listingProduct->getEbayQtySold();
             if ($productQty != $ebayQty) {
                 $attribute = '';
                 $src = $listingProduct->getSellingFormatTemplate()->getQtySource();
                 if ($src['mode'] == Ess_M2ePro_Model_SellingFormatTemplates::QTY_MODE_PRODUCT) {
                     $attribute = 'qty';
                 }
                 if ($src['mode'] == Ess_M2ePro_Model_SellingFormatTemplates::QTY_MODE_ATTRIBUTE) {
                     $attribute = $src['attribute'];
                 }
                 $attribute != '' && $this->addProductChange($listingProduct->getProductId(), $attribute, $ebayQty, $productQty);
             }
         }
     }
     //--------------------------------
 }
 public function updateAfterAction(Ess_M2ePro_Model_ListingsProducts $listingProduct, $saveEbayQtySold = false)
 {
     if (!$listingProduct->isListingTypeFixed() || !$listingProduct->getListingTemplate()->isVariationMode() || $listingProduct->getMagentoProduct()->isSimpleTypeWithoutCustomOptions()) {
         return;
     }
     // Delete Variations
     //-----------------------------
     $productVariations = $listingProduct->getListingsProductsVariations(true);
     foreach ($productVariations as $variation) {
         /** @var $variation Ess_M2ePro_Model_ListingsProductsVariations */
         $variation->isDelete() && $variation->deleteInstance();
     }
     //-----------------------------
     // Update Variations
     //-----------------------------
     $productVariations = $listingProduct->getListingsProductsVariations(true);
     foreach ($productVariations as $variation) {
         /** @var $variation Ess_M2ePro_Model_ListingsProductsVariations */
         $dataForUpdate = array('ebay_price' => $variation->getPrice(), 'add' => Ess_M2ePro_Model_ListingsProductsVariations::ADD_NO, 'delete' => Ess_M2ePro_Model_ListingsProductsVariations::DELETE_NO, 'status' => Ess_M2ePro_Model_ListingsProducts::STATUS_LISTED);
         if ($saveEbayQtySold) {
             $dataForUpdate['ebay_qty_sold'] = is_null($variation->getEbayQtySold()) ? 0 : $variation->getEbayQtySold();
             $dataForUpdate['ebay_qty'] = $variation->getQty() + $dataForUpdate['ebay_qty_sold'];
         } else {
             $dataForUpdate['ebay_qty_sold'] = 0;
             $dataForUpdate['ebay_qty'] = $variation->getQty();
         }
         if ($dataForUpdate['ebay_qty'] <= $dataForUpdate['ebay_qty_sold']) {
             $dataForUpdate['status'] = Ess_M2ePro_Model_ListingsProducts::STATUS_SOLD;
         }
         if ($dataForUpdate['ebay_qty'] <= 0) {
             $dataForUpdate['status'] = Ess_M2ePro_Model_ListingsProducts::STATUS_NOT_LISTED;
         }
         $variation->addData($dataForUpdate)->save();
     }
     //-----------------------------
 }
예제 #4
0
 protected function addShippingData(Ess_M2ePro_Model_ListingsProducts $listingProduct, array &$requestData)
 {
     $requestData['shipping'] = array();
     if ($listingProduct->getListingTemplate()->isLocalShippingEnabled()) {
         $requestData['shipping']['local'] = array();
         if ($listingProduct->getListingTemplate()->isLocalShippingFreightEnabled()) {
             $requestData['shipping']['local']['type'] = Ess_M2ePro_Model_ListingsTemplates::EBAY_SHIPPING_TYPE_FREIGHT;
         }
         if ($listingProduct->getListingTemplate()->isLocalShippingLocalEnabled()) {
             $requestData['shipping']['local']['type'] = Ess_M2ePro_Model_ListingsTemplates::EBAY_SHIPPING_TYPE_LOCAL;
         }
         if ($listingProduct->getListingTemplate()->isLocalShippingFlatEnabled()) {
             $requestData['shipping']['local']['type'] = Ess_M2ePro_Model_ListingsTemplates::EBAY_SHIPPING_TYPE_FLAT;
         }
         if ($listingProduct->getListingTemplate()->isLocalShippingCalculatedEnabled()) {
             $requestData['shipping']['local']['type'] = Ess_M2ePro_Model_ListingsTemplates::EBAY_SHIPPING_TYPE_CALCULATED;
             $requestData['shipping']['local']['handing_fee'] = $listingProduct->getLocalHandling();
             $requestData['shipping']['calculated'] = array('measurement_system' => $listingProduct->getListingTemplate()->getCalculatedShipping()->getMeasurementSystem(), 'package_size' => $listingProduct->getPackageSize(), 'originating_postal_code' => $listingProduct->getListingTemplate()->getCalculatedShipping()->getPostalCode(), 'dimensions' => $listingProduct->getDimensions(), 'weight' => $listingProduct->getWeight());
             if ($requestData['shipping']['calculated']['measurement_system'] == Ess_M2ePro_Model_ListingsTemplatesCalculatedShipping::MEASUREMENT_SYSTEM_ENGLISH) {
                 $requestData['shipping']['calculated']['measurement_system'] = Ess_M2ePro_Model_ListingsTemplatesCalculatedShipping::EBAY_MEASUREMENT_SYSTEM_ENGLISH;
             }
             if ($requestData['shipping']['calculated']['measurement_system'] == Ess_M2ePro_Model_ListingsTemplatesCalculatedShipping::MEASUREMENT_SYSTEM_METRIC) {
                 $requestData['shipping']['calculated']['measurement_system'] = Ess_M2ePro_Model_ListingsTemplatesCalculatedShipping::EBAY_MEASUREMENT_SYSTEM_METRIC;
             }
         }
         if ($listingProduct->getListingTemplate()->isLocalShippingFlatEnabled() || $listingProduct->getListingTemplate()->isLocalShippingCalculatedEnabled()) {
             $requestData['shipping']['get_it_fast'] = $listingProduct->getListingTemplate()->isGetItFastEnabled();
             $requestData['shipping']['dispatch_time'] = $listingProduct->getListingTemplate()->getDispatchTime();
             $requestData['shipping']['local']['discount'] = $listingProduct->getListingTemplate()->isLocalShippingDiscountEnabled();
             $requestData['shipping']['local']['cash_on_delivery'] = $listingProduct->getListingTemplate()->isLocalShippingCashOnDeliveryEnabled();
             $requestData['shipping']['local']['cash_on_delivery_cost'] = $listingProduct->getLocalShippingCashOnDeliveryCost();
             $requestData['shipping']['local']['methods'] = array();
             $tempShippingsMethods = $listingProduct->getListingTemplate()->getListingsTemplatesShippings(true);
             foreach ($tempShippingsMethods as $tempMethod) {
                 if (!$tempMethod->isShippingTypeLocal()) {
                     continue;
                 }
                 $tempMethod->setMagentoProduct($listingProduct->getMagentoProduct());
                 $tempDataMethod = array('service' => $tempMethod->getShippingValue());
                 if ($listingProduct->getListingTemplate()->isLocalShippingFlatEnabled()) {
                     $tempDataMethod['cost'] = $tempMethod->getCost();
                     $tempDataMethod['cost_additional'] = $tempMethod->getCostAdditional();
                 }
                 if ($listingProduct->getListingTemplate()->isLocalShippingCalculatedEnabled()) {
                     $tempDataMethod['is_free'] = $tempMethod->isCostModeFree();
                 }
                 $requestData['shipping']['local']['methods'][] = $tempDataMethod;
             }
         }
     }
     if ($listingProduct->getListingTemplate()->isInternationalShippingEnabled() && !$listingProduct->getListingTemplate()->isLocalShippingFreightEnabled() && !$listingProduct->getListingTemplate()->isLocalShippingLocalEnabled()) {
         $requestData['shipping']['international'] = array();
         if ($listingProduct->getListingTemplate()->isInternationalShippingFlatEnabled()) {
             $requestData['shipping']['international']['type'] = Ess_M2ePro_Model_ListingsTemplates::EBAY_SHIPPING_TYPE_FLAT;
         }
         if ($listingProduct->getListingTemplate()->isInternationalShippingCalculatedEnabled()) {
             $requestData['shipping']['international']['type'] = Ess_M2ePro_Model_ListingsTemplates::EBAY_SHIPPING_TYPE_CALCULATED;
             $requestData['shipping']['international']['handing_fee'] = $listingProduct->getInternationalHandling();
             if (!isset($requestData['shipping']['calculated'])) {
                 $requestData['shipping']['calculated'] = array('measurement_system' => $listingProduct->getListingTemplate()->getCalculatedShipping()->getMeasurementSystem(), 'package_size' => $listingProduct->getPackageSize(), 'originating_postal_code' => $listingProduct->getListingTemplate()->getCalculatedShipping()->getPostalCode(), 'dimensions' => $listingProduct->getDimensions(), 'weight' => $listingProduct->getWeight());
                 if ($requestData['shipping']['calculated']['measurement_system'] == Ess_M2ePro_Model_ListingsTemplatesCalculatedShipping::MEASUREMENT_SYSTEM_ENGLISH) {
                     $requestData['shipping']['calculated']['measurement_system'] = Ess_M2ePro_Model_ListingsTemplatesCalculatedShipping::EBAY_MEASUREMENT_SYSTEM_ENGLISH;
                 }
                 if ($requestData['shipping']['calculated']['measurement_system'] == Ess_M2ePro_Model_ListingsTemplatesCalculatedShipping::MEASUREMENT_SYSTEM_METRIC) {
                     $requestData['shipping']['calculated']['measurement_system'] = Ess_M2ePro_Model_ListingsTemplatesCalculatedShipping::EBAY_MEASUREMENT_SYSTEM_METRIC;
                 }
             }
         }
         $requestData['shipping']['international']['discount'] = $listingProduct->getListingTemplate()->isInternationalShippingDiscountEnabled();
         $requestData['shipping']['international']['methods'] = array();
         $tempShippingsMethods = $listingProduct->getListingTemplate()->getListingsTemplatesShippings(true);
         foreach ($tempShippingsMethods as $tempMethod) {
             if (!$tempMethod->isShippingTypeInternational()) {
                 continue;
             }
             $tempMethod->setMagentoProduct($listingProduct->getMagentoProduct());
             $tempDataMethod = array('service' => $tempMethod->getShippingValue(), 'locations' => $tempMethod->getLocations());
             if ($listingProduct->getListingTemplate()->isInternationalShippingFlatEnabled()) {
                 $tempDataMethod['cost'] = $tempMethod->getCost();
                 $tempDataMethod['cost_additional'] = $tempMethod->getCostAdditional();
             }
             $requestData['shipping']['international']['methods'][] = $tempDataMethod;
         }
     }
 }