Встановлення статусів стану замовлення

Матеріал з 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.