Ответить Новая тема Новый опрос 
 Добавление правила корзины
savvato11


Cпециалист
Сообщений: 289
Регистрация: 01-09-2012


23-04-2015 02:29
Доброго времени суток, ув. форумчане.
Пытаюсь создать правило корзины, а именно добавление подарка к товару, используя штатный метод престы через CartRule.php

Код:
$cart_rule = new CartRule();

$languages = Language::getLanguages();

foreach($languages as $key => $language){
$array[$language['id_lang']] = "Gift";
                        }

$cart_rule->name = $array;

$cart_rule->description = "Gift";

$cart_rule->partial_use = 1;

$cart_rule->reduction_currency = intval(Configuration::get('PS_CURRENCY_DEFAULT'));
                        
$cart_rule->active = 1;

$cart_rule->date_from = "$startdate";
$cart_rule->date_to = "$enddate";

$cart_rule->minimum_amount = '1';
$cart_rule->minimum_amount_currency = '1';

$cart_rule->quantity = '1';

$cart_rule->quantity_per_user = '1';
$cart_rule->product_restriction = '1';
$cart_rule->reduction_percent = '';
$cart_rule->priority = '1';
$cart_rule->reduction_product = '';
$cart_rule->gift_product = $id_gift;
$cart_rule->date_add = 'NOW()';
$cart_rule->date_upd = 'NOW()';
//d($cart_rule);
$cart_rule->add();


переменные $startdate, $enddate, $id_gift естественно определены.
В таблицах cart_rule и cart_rule_lang записи создаются, а вот в таблицах http://joxi.ru/XYmEM0gsMzQ3m6
пусто...

Где что я упустил в вызове класса?
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


23-04-2015 03:14
Цитата:( savvato11 @ 23-04-2015 03:29 Смотреть сообщение )
$cart_rule->date_add = 'NOW()';
$cart_rule->date_upd = 'NOW()';

:confus:

Код:
$cart_rule = new CartRule();
foreach(Language::getLanguages() as $language)
    $cart_rule->name[$language['id_lang']] = "Gift";
$cart_rule->description = "Gift";
$cart_rule->partial_use = 1;
$cart_rule->reduction_currency = (int)Configuration::get('PS_CURRENCY_DEFAULT');
$cart_rule->active = 1;
$cart_rule->date_from = $startdate;
$cart_rule->date_to = $enddate;
$cart_rule->minimum_amount = 1;
$cart_rule->minimum_amount_currency = 1;
$cart_rule->quantity = 1;
$cart_rule->quantity_per_user = 1;
$cart_rule->product_restriction = 1;
$cart_rule->priority = 1;
$cart_rule->gift_product = $id_product;
$cart_rule->add();
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
savvato11


Cпециалист
Сообщений: 289
Регистрация: 01-09-2012


23-04-2015 03:37
Цитата:
$cart_rule->date_add = 'NOW()';
$cart_rule->date_upd = 'NOW()';

Ну можно сказать да, хрень сморозил))

Но все равно не помогло.
http://joxi.ru/XYmEM0gsMzQ3m6
пусто тут, записей нет.
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


23-04-2015 04:27
Цитата:( savvato11 @ 23-04-2015 04:37 Смотреть сообщение )
пусто тут, записей нет.

Их и не должно быть там!
Кодом указанным выше вы создаете подарок при размещении любого товара в корзину будет добавлен товар указанный в $id_product!
В таблицу ПРЕФИКС_cart_rule будет добавлена информация по данному правилу.
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
savvato11


Cпециалист
Сообщений: 289
Регистрация: 01-09-2012


23-04-2015 13:30
Я неверно сформулировал вопрос. Нужно добавить подарок (с $id_gift) к конкретному товару ( с $id_product). Добавляя через админку, в указаных таблицах записи добавляются.
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


23-04-2015 14:23
Цитата:( savvato11 @ 23-04-2015 14:30 Смотреть сообщение )
добавить подарок (с $id_gift) к конкретному товару ( с $id_product).


Код:
$cart_rule = new CartRule();
foreach(Language::getLanguages() as $language)
    $cart_rule->name[$language['id_lang']] = "Gift";
$cart_rule->description = "Gift";
$cart_rule->partial_use = 1;
$cart_rule->reduction_currency = (int)Configuration::get('PS_CURRENCY_DEFAULT');
$cart_rule->active = 1;
$cart_rule->date_from = $startdate;
$cart_rule->date_to = $enddate;
$cart_rule->minimum_amount = 1;
$cart_rule->minimum_amount_currency = 1;
$cart_rule->quantity = 1;
$cart_rule->quantity_per_user = 1;
$cart_rule->product_restriction = 1;
$cart_rule->priority = 1;
$cart_rule->gift_product = $id_gift;

if ($cart_rule->add())
{
    Db::getInstance()->execute('INSERT INTO `'._DB_PREFIX_.'cart_rule_product_rule_group` (`id_cart_rule`, `quantity`)
    VALUES ('.(int)$cart_rule->id.', 1)');
    $id_product_rule_group = Db::getInstance()->Insert_ID();
    Db::getInstance()->execute('INSERT INTO `'._DB_PREFIX_.'cart_rule_product_rule` (`id_product_rule_group`, `type`)
    VALUES ('.(int)$id_product_rule_group.', "products")');
    $id_product_rule = Db::getInstance()->Insert_ID();
    Db::getInstance()->execute('INSERT INTO `'._DB_PREFIX_.'cart_rule_product_rule_value` (`id_product_rule`, `id_item`) VALUES ('.(int)$id_product_rule.', '.(int)$id_product.')');
}
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
savvato11


Cпециалист
Сообщений: 289
Регистрация: 01-09-2012


23-04-2015 15:30
Цитата:
Код:
Db::getInstance()->execute('INSERT INTO `'._DB_PREFIX_.'cart_rule_product_rule_group` (`id_cart_rule`, `quantity`)
    VALUES ('.(int)$cart_rule->id.', 1)');
    $id_product_rule_group = Db::getInstance()->Insert_ID();
    Db::getInstance()->execute('INSERT INTO `'._DB_PREFIX_.'cart_rule_product_rule` (`id_product_rule_group`, `type`)
    VALUES ('.(int)$id_product_rule_group.', "products")');
    $id_product_rule = Db::getInstance()->Insert_ID();
    Db::getInstance()->execute('INSERT INTO `'._DB_PREFIX_.'cart_rule_product_rule_value` (`id_product_rule`, `id_item`) VALUES ('.(int)$id_product_rule.', '.(int)$id_product.')');
}


Впринципе так уже и хотел делать, но может думал чето не досмотрел в классе, и есть кошерней способ. Но все равно Алекс большое спс за участие и помощь)
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Ответить Новая тема Новый опрос