示例#1
0
 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();
 }
示例#2
0
 private function importAdditionalCategories(CsvImportProfile $profile, Product $product, array $extraCategories)
 {
     $product->deleteRelatedRecordSet('ProductCategory');
     foreach ($extraCategories as $names) {
         ProductCategory::getNewInstance($product, $this->getCategoryByPath($profile, $names))->save();
     }
 }
示例#3
0
 /**
  *	@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)));
 }
示例#4
0
 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);
 }
示例#5
0
 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));
 }
示例#6
0
 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();
     }
 }