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; }
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(); } //----------------------------- }
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; } } }