public function setUp() { parent::setUp(); Category::recalculateProductsCount(); $this->root = Category::getNewInstance(Category::getRootNode()); $this->root->save(); for ($k = 1; $k <= 2; $k++) { $cat = Category::getNewInstance($this->root); $cat->save(); $this->categories[$k] = $cat; } $this->product = Product::getNewInstance($this->categories[1]); $this->product->save(); $this->secondCategory = ProductCategory::getNewInstance($this->product, $this->categories[2]); $this->secondCategory->save(); }
private function importAdditionalCategories(CsvImportProfile $profile, Product $product, array $extraCategories) { $product->deleteRelatedRecordSet('ProductCategory'); foreach ($extraCategories as $names) { ProductCategory::getNewInstance($product, $this->getCategoryByPath($profile, $names))->save(); } }
/** * @todo: doesn't work */ public function testAdditionalCategories() { $customCategory = Category::getNewInstance(Category::getRootNode()); $customCategory->save(); $product = $this->product1; $this->order->addProduct($product, 1, true); $this->order->save(); $condition = DiscountCondition::getNewInstance(); $condition->isEnabled->set(true); $condition->conditionClass->set('RuleConditionContainsProduct'); $condition->save(); DiscountConditionRecord::getNewInstance($condition, $customCategory)->save(); $this->assertEquals(0, count($this->order->getDiscountConditions(true))); ProductCategory::getNewInstance($product, $customCategory)->save(); $condition->loadAll(); //$this->assertEquals(1, count($this->order->getDiscountConditions(true))); }
public function testProductSyncMatchingProductExtraCat() { for ($k = 0; $k <= 1; $k++) { $product = Product::getNewInstance($this->categories['1.2.1']); $product->sku->set($k); $product->save(); } ClonedStoreCategory::getNewInstance($this->categories['1.2.2'], $this->stores[0])->save(); ProductCategory::getNewInstance($product, $this->categories['1.2.1'])->save(); $updater = $this->getUpdater(); $updater->syncAll(); $this->assertRecordCount('Product', 1); }
public function testDiscountByAdditionalCategories() { $product = $this->products[1]; $condition = DiscountCondition::getNewInstance(); $condition->isEnabled->set(true); $condition->save(); $actionCondition = DiscountCondition::getNewInstance(); $actionCondition->isEnabled->set(true); $actionCondition->conditionClass->set('RuleConditionContainsProduct'); $actionCondition->save(); $action = DiscountAction::getNewInstance($condition); $action->actionCondition->set($actionCondition); $action->isEnabled->set(true); $action->type->set(DiscountAction::TYPE_ITEM_DISCOUNT); $action->amount->set(10); $action->actionClass->set('RuleActionPercentageDiscount'); $action->save(); $randomCategory = Category::getNewInstance(Category::getRootNode()); $randomCategory->save(); DiscountConditionRecord::getNewInstance($actionCondition, $randomCategory)->save(); $this->order->addProduct($product, 1, true); $this->order->save(); Category::recalculateProductsCount(); $product->reload(); $this->assertFalse(RuleCondition::create($actionCondition)->isProductMatching($product)); $customCategory = Category::getNewInstance(Category::getRootNode()); $customCategory->save(); ProductCategory::getNewInstance($product, $customCategory)->save(); DiscountConditionRecord::getNewInstance($actionCondition, $customCategory)->save(); Category::recalculateProductsCount(); $product->reload(); $actionCondition->loadAll(); $this->assertTrue(RuleCondition::create($actionCondition)->isProductMatching($product)); $this->assertEquals(count($this->order->getDiscountActions(true)), 1); $this->assertEquals($this->products[1]->getPrice($this->usd) * 0.9, $this->order->getTotal(true)); ActiveRecordModel::clearPool(); $order = CustomerOrder::getInstanceByID($this->order->getID()); $order->loadAll(); $this->assertEquals($this->products[1]->getPrice($this->usd) * 0.9, $this->order->getTotal(true)); }
private function importAdditionalCategories(CsvImportProfile $profile, Product $product, $extraCategories) { $product->deleteRelatedRecordSet('ProductCategory'); $instances = array(); if (is_array($extraCategories)) { foreach ($extraCategories as $names) { $instances[] = $this->getCategoryByPath($profile, $names); } } else { if ($extraCategories instanceof Condition) { $instances = ActiveRecord::getRecordSet('Category', select($extraCategories)); } } foreach ($instances as $cat) { ProductCategory::getNewInstance($product, $cat)->save(); } }