Как создать скидку программно на ордер в commerce?

Аватар пользователя Evil0o

Через хук работает но если пишу свою функцию, скидка не встает

<?php

/**
 * Implements hook_commerce_order_presave().
 */
function mymodule_commerce_order_presave($order) {

    

$order_wrapper entity_metadata_wrapper('commerce_order'$order);
        
$discount_decimal = -500;
        
$discount_currency_code 'RUB';

        

$order_total $order_wrapper->commerce_order_total->value();
        
$discount_amount commerce_currency_decimal_to_amount($discount_decimal$discount_currency_code);
        
$discount_amount commerce_currency_convert($discount_amount$discount_currency_code$order_total['currency_code']);

        

$order_wrapper->commerce_order_total->amount $order_total['amount'] - $discount_amount;
        
$order_wrapper->commerce_order_total->data commerce_price_component_add($order_total'discount', array(
            
'amount' => $discount_amount,
            
'currency_code' => $order_total['currency_code'],
            
'data' => array(),
        ), 
TRUE);
}

?>
Модули и темы:
Версия Drupal:
0 Thanks

Комментарии

Аватар пользователя Evil0o
Evil0o 11 месяцев назад

если возможно примером, читал не помогло)

Аватар пользователя deadie
deadie 11 месяцев назад

Может проще тогда через Rules UI?

Аватар пользователя Evil0o
Evil0o 11 месяцев назад

Проблема актуальна. Через рулес не хочу)

Аватар пользователя dgastudio
dgastudio 11 месяцев назад

вам уже указали 2 варианта решения проблемы
1. програмно
2. через rules

других вариантов нет