Добавление в базу данных только первого изменения ноды

Главные вкладки

Аватар пользователя _Maxim_ _Maxim_ 9 мая 2016 в 13:44

Доброго времени суток! Столкнулся с проблемой, пожалуйста, помогите решить. Есть на сайте страница с таблицей, в которой выводятся данные о продажах. В таблице следующие поля: номер заказа, время создания заказа, время изменения заказа, время простоя, менеджер. Нужно, чтобы время простоя вычислялось только один раз и записывалось в базу данных и не изменялось.

Принцип работы:
После того, как заказ появляется на сайте, по умолчанию в поле "Статус" стоит значение "Невыполнен". Менеджер изменяет статус на "Выполняется". Промежуток между этими действиями называется временем простоя. В данный момент время простоя вычисляется по принципу: время изменения заказа - время создания заказа = время простоя. Проблема начинается, когда заказчик хочет внести изменения в заказ. Тогда время простоя сбивается. Как сделать, чтобы при изменении менеджером статуса заказа на "Выполняется" в базу данных 1 раз вносилась дата этого действия и при последующем изменении заказа не менялась?
Все поля (в том числе статус заказа) сделаны через CCK.

Можно добавить поле, например "downtime", к типу "заказ" и, если оно пустое, туда записывать время изменения. Но тогда менеджер сможет "халтурить" и изменять это время вручную. Поэтому нужно, чтобы поле менялось только при первом изменении заказа.

Пожалуйста, подскажите, как это сделать.

Комментарии

Аватар пользователя sergeybelya sergeybelya 9 мая 2016 в 16:52

Если время простоя у вас сделано отдельным полем, то вы можете изменять его значения только в хуке https://api.drupal.org/api/drupal/modules!node!node.api.php/function/hoo... - т.е. при создании ноды. Вы вероятно, используете hook_node_update.
А, невнимательно прочел. Вариант с _insert не пойдет. Тогда вам нужно добавить еще одно поле-флаг, сделать его скрытым, заполнять один раз при изменении статуса заказа и по нему определять.