Разработка

Пересчёт вычисляемого поля при обновлении связанной ноды

Задача: пересчитать вычисляемое поле при обновлении связанной ноды.

Пояснение
Есть нода. Условно назовём ей «баланс» и есть ноды «списание с баланса» с указанием, с какого «баланса» списывается.

Структура

Баланс
Тип поля — computed
Имя — field_balance_balance
Computed Code:

$sql='select  sum(field_deduction_summ_value) as sum from content_type_deduction where field_deduction_contract_nid = \''.$node->nid.'\'';
$summ=db_result(db_query($sql));
$node_field[0]['value'] = $node->field_plan_doc_cost[0]['value'] — $summ;

Пояснения к коду:
field_deduction_summ_value — сумма списания
field_deduction_contract_nid — указание, откуда списывать

Списание
Тут проще
сумма field_deduction_summ
и указание на баланс — field_deduction_contract_nid

Организация обновления
Делаем правило
создание нового документа → проверка типа «списание» → выполнить код PHP
код

$load=node_load([node:field_deduction_contract-nid]);
node_save($load);
drupal_set_message('Договор [node:field_deduction_contract-nid] обновлён', 'status');

Тут всё совсем просто — загружаем и сохраняем ноду.

Вопросы, пожелания, благодарности в камменты.

 
 
09.04.2012 — 11:01