Нужно переписать commerce_order_total.
Делаю стандартным способом, потом устаревшим способом - не получается. Очевидно что есть проблема но не могу понять в чем.
$order_wrapper = entity_metadata_wrapper('commerce_order', $order);
$order_wrapper->commerce_order_total->amount = 4200;
$order_wrapper->save();
или так:
$order->commerce_order_total['und'][0]['amount'] = 4200;
$order->commerce_order_total['und'][0]['data']['components'][0]['price']['amount'] = 4200;
commerce_order_save($order);
В обеих случаях после сохранения commerce_order_total->amount равен нулю.
ТО есть даже существующее значение в базе данных сбрасывавется в "0".
И где искать лекарство?
Комментарии
Все верно. Может где то еще хук некий задействован?
<?php
$order_wrapper = entity_metadata_wrapper('commerce_order', $order);
$order_wrapper->commerce_order_total->amount = round(4200);
$order_wrapper->save();
dpm($order, 'Order affter save');
?>
Посмотри данные сразу после сохранения.
Ну да, я вижу что сразу после сохранения происходит обновление объекта и сумма равно 0.
Пришлось идти в обход хуков, через field_sql_storage_field_storage_write
Ну как вариант решения "по быстрому" подойдет, а так надо разобраться где он обнуляет.
Попробуй этот код
<?php
$order_wrapper = entity_metadata_wrapper('commerce_order', $order);
$order_wrapper->commerce_order_total->amount = round(4200);
?>
без ->save
записать в hook_entity_presave. Должон нормально отработать.