我是 Prestashop 的初学者,我正在编写一个模块,允许客户对当前购物车应用折扣。
试图了解如何使用 Cart 和 Discount 类来做到这一点。我发现 Cart 类有 addDiscount 方法,而 Discount 类有 de createOrderDiscount 方法。
如何在订购前为购物车创建折扣?
我是在正确的方法中,还是有其他更好的方法?
非常感谢。
我是 Prestashop 的初学者,我正在编写一个模块,允许客户对当前购物车应用折扣。
试图了解如何使用 Cart 和 Discount 类来做到这一点。我发现 Cart 类有 addDiscount 方法,而 Discount 类有 de createOrderDiscount 方法。
如何在订购前为购物车创建折扣?
我是在正确的方法中,还是有其他更好的方法?
非常感谢。
最后,我制作了自己的 add 函数,在这种情况下,从一个钩子中调用,并在 $params 参数中提供 id_customer 和 value:
public function addDiscount($params = array()) {
try {
$params['description'] = "Discount description";
$d = array(
'id_discount_type' => 2,
'behavior_not_exhausted' => 1,
'id_customer' => $params['id_customer'],
'id_group' => 0,
'id_currency' => 1,
'name' => "discount_name",
'value' => $params['value'],
'quantity' => 1,
'quantity_per_user' => 1,
'cumulable' => 1,
'cumulable_reduction' => 1,
'date_from' => date("Y-m-d H:i:s", time()),
'date_to' => date("Y-m-d H:i:s", time() + 86400),
'minimal' => (float) 0.00,
'include_tax' => 1,
'active' => 1,
'cart_display' => 1,
'date_add' => date("Y-m-d H:i:s"),
'date_upd' => date("Y-m-d H:i:s")
);
$this->db->autoExecute('ps_discount', $d, 'INSERT');
$discount_id = $this->db->Insert_ID();
// /* insertar dicount_category */
$this->db->autoExecute('ps_discount_category', array(
'id_category' => 1,
'id_discount' => $discount_id
), 'INSERT');
// /* insertar dicount_lang */
if ($rs_langs = $this->db->executeS("select id_lang from ps_lang")) {
foreach ($rs_langs as $lang) {
$this->db->autoExecute('ps_discount_lang', array(
'id_discount' => $discount_id,
'id_lang' => $lang['id_lang'],
'description' => $params['description']
), 'INSERT');
}
}
} catch (Exception $e) {
$this->Log($e->getTraceAsString());
}
}
该函数基本上在 ps_discount 表中插入一次,在 ps_discount_category 表中插入一次,在 ps_discount_lang 表中为每种语言插入一次。