Параметры заказов и количество работ по API

Максимальное количество работ, которое может быть выполнено по заказу, задается с помощью параметра:

  • jobs_total - фиксированное количество работ.

Чтобы отключить ограничение на количество работ, то дополнительно необходимо указать параметр:

  • jobs_unlimit - неограниченное количество работы (тип boolean).

Если указан параметр jobs_unlimit со значением "1", заказ будет выполняться, пока на балансе есть средства.

-----

Контроль выполнения заказа

Количество работ, выполненных или оставшихся для выполнения заказа, можно узнать с помощью метода advego.getOrders, указав в параметре id_order номер заказа.

В ответе система отдает следующие параметры:

  • jobs_total - необходимое количество работ
  • jobs_wait - количество работ, ожидающих модерации
  • jobs_active - количество работ, выполняющихся исполнителями (в т. ч. на модерации у заказчика)
  • jobs_available - количество работ, доступных для выполнения (еще не взятых в работу)
  • jobs_accepted - количество оплаченных работ с момента запуска заказа.
  • jobs_accepted_total - общее количество оплаченных по заказу работ за все время его работы (может быть несколько перезапусков заказа, из-за чего значения jobs_accepted и jobs_accepted_total станут различаться, но последний всегда только увеличивается).

Во процессе выполнения работа принимает последовательно следующие состояния:

  1. Выполняется (учитывается только в jobs_active)
  2. Выполнена, и находится на модерации у заказчика (учитывается в jobs_active и jobs_wait)
  3. Оплачена заказчиком (учитывается только в jobs_accepted)

Если заказчик отправляет работу на доработку, то она перестает учитываться в числе работ jobs_wait, только в jobs_active.

Таким образом, работы, ожидающие модерации, всегда учитываются в числе активных работ, пока не будут оплачены - в этот момент они учитываются только в оплаченных:

jobs_activejobs_wait + взятые, но еще не присланные исполнителями работы.

Если в оплате работы отказано на этапе модерации заказчиком, то она перестает учитываться в числе каких-либо работ (уменьшаются на единицу счетчики jobs_active и jobs_wait и увеличивается на единицу счетчик jobs_available).

Если работа была оплачена, и по ней произведен возврат средств администрацией, то уменьшаются на единицу счетчики jobs_accepted и jobs_accepted_total, и увеличивается на единицу счетчик jobs_available.

-------

Значение jobs_available уменьшается на единицу с каждой взятой исполнителями работой.

Например, если по заказу задано 10 работ (jobs_total = 10), то сразу после запуска значение параметров будет следующим:

  • jobs_total - 10
  • jobs_wait - 0
  • jobs_active - 0
  • jobs_available - 10
  • jobs_accepted - 0
  • jobs_accepted_total - 0

После того, как в работу будет взяла одна работа, значения станут следующими:

  • jobs_total - 10
  • jobs_wait - 0
  • jobs_active - 1
  • jobs_available - 9
  • jobs_accepted - 0
  • jobs_accepted_total - 0

Таким образом, исполнители могут взять в работу еще 9 работ.

Соответственно, если по заказу из 10 доступных будет взято в работу 8 работ, значения параметров станут следующими:

 

  • jobs_total - 10
  • jobs_wait - 0
  • jobs_active - 8
  • jobs_available - 2
  • jobs_accepted - 0
  • jobs_accepted_total - 0

Если из 8 взятых работ 5 будут присланы на модерацию, значения параметров станут следующими:

  • jobs_total - 10
  • jobs_wait - 5
  • jobs_active - 8
  • jobs_available - 2
  • jobs_accepted - 0
  • jobs_accepted_total - 0

Можно заметить, что значение jobs_active не изменилось, так как число jobs_wait входит в jobs_active.

Если из присланных 5 работ заказчик оплатит 4 работы, значения параметров станут следующими:

  • jobs_total - 10
  • jobs_wait - 1
  • jobs_active - 4
  • jobs_available - 2
  • jobs_accepted - 4
  • jobs_accepted_total - 4

Итак, после оплаты 4 работ на это число увеличились два показателя: jobs_accepted и jobs_accepted_total.

Одновременно с этим на это число уменьшились jobs_wait и jobs_active.

Одна работа осталась на модерации (jobs_wait = 1), и всего активных работ осталось четыре (jobs_active = 4, из них одна на модерации, как мы помним, и три выполняются исполнителями, но еще не присланы на модерацию).

-------

В процессе выполнения заказа может понадобиться оценить, сколько работ осталось получить по заказу.

Это число можно рассчитать двумя способами:

1. Исходя из количества заданных работ (jobs_total) и оплаченных (jobs_accepted):

x = jobs_total - jobs_accepted

Например, в последнем примере:

  • jobs_total - 10
  • jobs_accepted - 4

Таким образом, заказчику осталось получить 10 - 4 = 6 работ.

2. Исходя из количества активных работ (jobs_active) и оставшихся доступных для выполнения (jobs_available).

x = jobs_active + jobs_available

Например, в последнем примере:

  • jobs_active - 4
  • jobs_available - 2

Таким образом, заказчику осталось получить 4 + 2 = 6 работ.

-------

Важно, что остановка и перезапуск заказа, пока не будут выполнены все заданные работы (jobs_total), не влияет на параметры заказа, то есть остановив заказ на 10 работ посредине выполнения, например, после оплаты 5 работ, и перезапустив его, заказчик получит еще 5 работ, так как система хранит значения jobs_accepted, а значит, и jobs_available сохранится тоже (10 - 5 = 5):

  • jobs_total - 10
  • jobs_wait - 0
  • jobs_active - 0
  • jobs_available - 5
  • jobs_accepted - 5
  • jobs_accepted_total - 5

И только после выполнения всех работ по заказу, их оплаты и остановки заказа следующий его запуск обнулит jobs_available, и он снова станет равен jobs_total, чтобы исполнители могли выполнить новый набор работ.

  • jobs_total - 10
  • jobs_wait - 0
  • jobs_active - 0
  • jobs_available - 10
  • jobs_accepted - 0
  • jobs_accepted_total - 10

Заметим, что jobs_accepted станет равен 0, чтобы система остановила заказ, как только он станет равен jobs_total:

  • jobs_total - 10
  • jobs_wait - 0
  • jobs_active - 0
  • jobs_available - 0
  • jobs_accepted - 10
  • jobs_accepted_total - 20

После этого заказ автоматически остановится, все заданные работы выполнены.