Максимальное количество работ, которое может быть выполнено по заказу, задается с помощью параметра:
Чтобы отключить ограничение на количество работ, то дополнительно необходимо указать параметр:
Если указан параметр jobs_unlimit со значением "1", заказ будет выполняться, пока на балансе есть средства.
-----
Контроль выполнения заказа
Количество работ, выполненных или оставшихся для выполнения заказа, можно узнать с помощью метода advego.getOrders, указав в параметре id_order номер заказа.
В ответе система отдает следующие параметры:
Во процессе выполнения работа принимает последовательно следующие состояния:
Если заказчик отправляет работу на доработку, то она перестает учитываться в числе работ jobs_wait, только в jobs_active.
Таким образом, работы, ожидающие модерации, всегда учитываются в числе активных работ, пока не будут оплачены - в этот момент они учитываются только в оплаченных:
jobs_active = jobs_wait + взятые, но еще не присланные исполнителями работы.
Если в оплате работы отказано на этапе модерации заказчиком, то она перестает учитываться в числе каких-либо работ (уменьшаются на единицу счетчики jobs_active и jobs_wait и увеличивается на единицу счетчик jobs_available).
Если работа была оплачена, и по ней произведен возврат средств администрацией, то уменьшаются на единицу счетчики jobs_accepted и jobs_accepted_total, и увеличивается на единицу счетчик jobs_available.
-------
Значение jobs_available уменьшается на единицу с каждой взятой исполнителями работой.
Например, если по заказу задано 10 работ (jobs_total = 10), то сразу после запуска значение параметров будет следующим:
После того, как в работу будет взяла одна работа, значения станут следующими:
Таким образом, исполнители могут взять в работу еще 9 работ.
Соответственно, если по заказу из 10 доступных будет взято в работу 8 работ, значения параметров станут следующими:
Если из 8 взятых работ 5 будут присланы на модерацию, значения параметров станут следующими:
Можно заметить, что значение jobs_active не изменилось, так как число jobs_wait входит в jobs_active.
Если из присланных 5 работ заказчик оплатит 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
Например, в последнем примере:
Таким образом, заказчику осталось получить 10 - 4 = 6 работ.
2. Исходя из количества активных работ (jobs_active) и оставшихся доступных для выполнения (jobs_available).
x = jobs_active + jobs_available
Например, в последнем примере:
Таким образом, заказчику осталось получить 4 + 2 = 6 работ.
-------
Важно, что остановка и перезапуск заказа, пока не будут выполнены все заданные работы (jobs_total), не влияет на параметры заказа, то есть остановив заказ на 10 работ посредине выполнения, например, после оплаты 5 работ, и перезапустив его, заказчик получит еще 5 работ, так как система хранит значения jobs_accepted, а значит, и jobs_available сохранится тоже (10 - 5 = 5):
И только после выполнения всех работ по заказу, их оплаты и остановки заказа следующий его запуск обнулит jobs_available, и он снова станет равен jobs_total, чтобы исполнители могли выполнить новый набор работ.
Заметим, что jobs_accepted станет равен 0, чтобы система остановила заказ, как только он станет равен jobs_total:
После этого заказ автоматически остановится, все заданные работы выполнены.