[-] MO loyalty : categories are now taken into account when creating discount vouchers

#PNM-1492
#PNM-1191
#PNM-1223
This commit is contained in:
Fabio Chelly
2013-07-15 19:36:32 +02:00
parent f6ef6f5d0e
commit b67ffb1a50
+33 -4
View File
@@ -106,10 +106,39 @@ class LoyaltyDefaultModuleFrontController extends ModuleFrontController
$cart_rule->name[(int)$language['id_lang']] = $text ? strval($text) : strval($default_text);
}
if (is_array($categories) && count($categories))
$cart_rule->add(true, false, $categories);
else
$cart_rule->add();
$contains_categories = is_array($categories) && count($categories);
if ($contains_categories)
$cart_rule->product_restriction = 1;
$cart_rule->add();
//Restrict cartRules with categories
if ($contains_categories)
{
//Creating rule group
$id_cart_rule = (int)$cart_rule->id;
$sql = "INSERT INTO "._DB_PREFIX_."cart_rule_product_rule_group (id_cart_rule, quantity) VALUES ('$id_cart_rule', 1)";
Db::getInstance()->execute($sql);
$id_group = (int)Db::getInstance()->Insert_ID();
//Creating product rule
$sql = "INSERT INTO "._DB_PREFIX_."cart_rule_product_rule (id_product_rule_group, type) VALUES ('$id_group', 'categories')";
Db::getInstance()->execute($sql);
$id_product_rule = (int)Db::getInstance()->Insert_ID();
//Creating restrictions
$values = array();
foreach ($categories as $category) {
$category = (int)$category;
$values[] = "('$id_product_rule', '$category')";
}
$values = implode(',', $values);
$sql = "INSERT INTO "._DB_PREFIX_."cart_rule_product_rule_value (id_product_rule, id_item) VALUES $values";
Db::getInstance()->execute($sql);
}
// Register order(s) which contributed to create this voucher
if (!LoyaltyModule::registerDiscount($cart_rule))