Установка статусов состояния заказа

Материал из ADGroupWiki
Перейти к навигации Перейти к поиску

Каждый заказ условно разделяется на 16-ть этапов выполнения заказа. Любой из них может иметь следующие предопределенные состояния - "не установлен" (0), "нужен" (1), "в работе" (2), "завершен" (3).

Приведенный ниже скрипт показывает возможность установки каждого из этапов в определенное состояние путем указания кода (значение в скобках).

uses SysUtils;
var
 zk: TZakaz; // объект заказа
 state_old, state_new: integer;
 // коды статуса (0 - не установлен, 1 - нужен, 2 - в работе, 3 - выполнен)
 id: TId32; // номер изменяемого состояния (1..16 - соответствуют номерам в списке)
begin
  zk := gd.Zakazes.Items.GetById(1); // получаем объект заказа по номеру
  if assigned(zk) then // если заказ найден
  begin
    gd.Zakazes.ReloadNew2(zk, true); // загружаем заказ в полном виде из базы 
    id := 6; // определяем номер устанавливаемого состояния
    state_new := 1; // задаем значение кода статуса
    state_old := zk.ZakazState.GetStateById(id);
    // получаем из заказа код статуса нашего состояния
    if (state_old <> state_new) then // если они отличаются
    begin
      zk.ZakazState.SetStateById(id, state_new); // установим новый статус
      gd.Zakazes.Items.Update(zk); // сохраним изменения в базу
      ShowMessage('Done'); // отрапортуем о завершении работы
    end else // если пытаемся поставить такой, который уже установлен
      ShowMessage('States are equal.'); // просто сообщим о недоразумении
  end else // а вот если заказ не нашелся
    ShowMessage('Order not assigned :('); // сообщаем о проблеме
end.