2013-10-01 3 views
1

Я начинаю на Prestashop, и я программирую модуль, который позволяет клиенту применять скидку на текущую корзину.prestashop добавить скидку в корзину по коду - prestashop 1.4

Попытка понять, как это сделать, используя Cart и Discount clases. Я обнаружил, что класс Cart имеет метод addDiscount, а класс Discount имеет метод createOrderDiscount.

Как я могу создать скидку на тележку, прежде чем было заказано?

Я в порядке, или есть другой лучший способ?

Большое спасибо.

ответ

1

Наконец, я сделал Мюи собственный добавить функцию, называется, в этом случае, внутри крюка, а также предоставление id_customer и значение в $ Params параметра:

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.

Смежные вопросы