Содержание

Работа с заявками

Базовым методом по работе с заявками является order/update:

С чего начать?

Создание/изменение заявки

svc=order/update&params={"itemId":<long>,	/* id ресурса */
			 "id":<long>,		/* id заявки внутри ресурса (0 при создании) */
			 "n":<text>,		/* имя заявки */
			 "oldOrderId":<long>,	/* id старой заявки на основе которой создать новую */
			 "oldOrderFiles":[<text>], 	/* массив файлов старой заявки для создания новой */
			 "p":{			/* произвольный JSON, можно подать пустым */
			     "n":<text>,	/* имя клиента */
			     "p":<text>,	/* телефонный номер */
			     "p2":<text>,	/* второй телефонный номер */
			     "e":<text>,	/* email */
			     "a":<text>,	/* адрес */
			     "v":<uint>,	/* объем */
			     "w":<uint>,	/* вес, кг */
			     "c":<uint>,	/* стоимость */
			     "ut":<long>,	/* время разгрузки, сек */
			     "t":<text>,	/* тип ТС */
			     "d":<text>,	/* описание */
			     "uic":<text>,	/* ТТН */
			     "cid":<text>,	/* произвольный идентификатор */
			     "r": {		/* информация по маршруту (если нет - заказ не привязан к маршруту) */
				 "id":<uint>,	/* id маршрута */
				 "i":<uint>,	/* порядковый номер (0..) */
				 "m":<uint>,	/* пробег с предыдущей точки по плану, м */
				 "t":<uint>,	/* время с предыдущей точки по плану, сек */
				 "vt":<uint>,	/* время посещения по плану, UNIX_TIME */
				 "ndt":<uint>  /* время, за которое должно прийти уведомление, с */
			     },
			     "aff":<text>,	/* [ СКЛАД ] список ID юнитов, закрепленных за складом ("123,456,...") */
			     "z":<text>,	/* [ СКЛАД ] список геозон, закрепленных за складом ("resId_geofenceId,...") */
			     "ntf":<uint>,	/* флаги уведомлений: 0x1 - sms на первый телефон; 0x2 - sms на второй телефон; 0x10 - email */
			     "cm":<text>,	/* комментарий из confirm/reject */
			     "pr":<uint>,	/* приоритет заявки (больше значение - выше приоритет) */
			     "tags":[<uint>]	/* тэги заявки */
			 },
			 "rp":<text>,		/* маршрут заявки */
			 "f":<uint>,		/​* флаги заявки */
			 "tf":<uint>,		/​* начальное разрешенное время доставки */
			 "tt":<uint>,		/​* последнее разрешенное время ​доставки ​ */
			 "trt":<uint>, 		/​* допустимое опережение, сек */ 
			 "r":<uint>,		/​* радиус точки заявки */ 
			 "y":<double>,		/​* широта */
			 "x":<double>,		/​* долгота */
			 "u":<long>,		/​* id объекта */
			 "ej":<JSON>,		/* произвольный JSON */
			 "tz":<int>,		/* временная зона пользователя */
			 "dp":"[<uint>]",	/* массив ID зависимых заявок */
			 "cf":	/* произвольные поля заявки */
			    {"key1":"key1_value","key2":"key2_value"},.....},
			 "callMode":<text>	/* "create"/"update" для создания/изменения соответственно */
}

Удаление заявки

svc=order/update&params={"itemId":<long>,	/* id ресурса */
			 "id":<long>,		/* id заявки внутри ресурса */
			 "callMode":"delete"}

Перенос заявки в историю

svc=order/update&params={"itemId":<long>,	/* id ресурса */
			 "id":<long>,		/* id заявки внутри ресурса */
			 "callMode":"register"}

Прикрепление объекта к заявке

svc=order/update&params={"itemId":<long>,	/* id ресурса */
			 "id":<long>,		/* id заявки внутри ресурса */
			 "u":<long>,		/* id объекта */
			 "callMode":"assign"}

Отмена заявки

svc=order/update&params={"itemId":<long>,	/* id ресурса */
			 "id":<long>,		/* id заявки внутри ресурса */
			 "callMode":"reject"}

Завершение заявки

svc=order/update&params={"itemId":<long>,	/* id ресурса */
			 "id":<long>,		/* id заявки внутри ресурса */
			 "callMode":"confirm"}

Флаги (f)

ЗначениеОписание
0x1 заявка будет выполнен, если было зарегистрировано хотя бы одно сообщение внутри области заявки с нулевой скоростью
0x2 заявка будет выполнен после выхода из области заявки
0x4 начальный склад
0x8 конечный склад
0x10 склад перезагрузки
0x20 постоянная заявка
0x40 подтверждение только в радиусе заявки
0x80 не изменять статус после автоматического завершения
0x100 в случае автозавершения маршрута будет создана копия непосещенной заявки


:!: Флаги 0x8,0x10 учитываются при оптимизации, только если указывать склады в «warehouses».

Возвращаемый результат

callMode=create:

[<​uint>,{ 	
	"​id":<​uint>,	/* id заявки внутри ресурса */
	"​n":<​text>,/* имя ​заявки */
	"​p":{		/​* пользовательский объект */
	    "n":<text>,		/* имя клиента */
	    "p":<text>,		/* телефонный номер */
	    "p2":<text>,	/* второй телефонный номер */
	    "e":<text>,         /* email */
	    "a":<text>,         /* адрес */
	    "v":<uint>,         /* объем */
	    "w":<uint>,         /* масса, кг */
	    "c":<uint>,         /* стоимость */
	    "ut":<uint>,        /* время разгрузки, с */
	    "t":<text>,         /* тип ТС */
	    "d":<text>,         /* описание */
	    "uic":<text>,       /* ТТН */
	    "cid":<text>,       /* произвольный идентификатор */
	    "cm":<text>,        /* комментарий из confirm/reject */
	    "aff":<text>,       /* [ СКЛАД ] список ID юнитов, закрепленных за складом ("123,456") */
	    "z":<text>,         /* [ СКЛАД ] список геозон, закрепленных за складом ("resId_geofenceId,...") */
	    "ntf":<uint>,       /* Флаги нотификации об изменении статуса заявки */
	    "pr":<uint>,        /* приоритет заявки (больше значение - выше приоритет) */
	    "tags":[<uint>],	/* тэги заявки */
	    "r": {	/* информация по маршруту (если нет - заявка не привязана к маршруту) */
		 "id":<uint>,   /* id маршрута */
		 "i":<uint>,    /* порядковый номер [0..] */
		 "m":<uint>,    /* пробег с предыдущей точки по плану, м */
		 "t":<uint>,    /* время с предыдущей точки по плану, с */
		 "ndt":<uint>,  /* время, за которое должно прийти уведомление, с */
		 "vt":<uint>    /* время посещения по плану, UNIX_TIME */
	    },
	"cmp":{unitRequirements: {values: []}}, /* требования к заявке */
        "gfn":{},   /* привязанные геозоны */
        "crt":<uint>,   /* время подтверждения/отклонения заявки */
        "ct":<uint>,   /* время создания */
        "mt":<uint>,   /* время редактирования */
	"rp":<text>,    /* маршрут заявки, google polyline encoding формат*/	
	"​f":<​uint>,/​* флаги заявки */ 	
	"tf":<​uint>,/​* начальное разрешенное время доставки */ 	
	"​tt":<​uint>,/​* последнее разрешенное время ​доставки ​ */ 	
	"​trt":<​uint>,/​* допустимое опережение, сек */ 	
	"​uid":<​uint>,/​* уникальный id (нужен для уникальности заявки в истории) */ 	
	"​r":<​uint>,/​* радиус точки заявки */ 	
	"​y":<​double>,/​* широта */ 	
	"​x":<​double>,/​* долгота */ 	
	"​u":<​long>,/​* id объекта */ 	
	"​s":<​uint>,/​* статус:​ 0 - неактивный (не привязан объект),​ 1 - активный,​ 2 - завершен вовремя, 3 - завершен с опозданием, 4  отклонён, 5 - объект в области ​заявки. */ 	
	"​sf":<​uint>,/​* статус флаг заявки (0x100 - отменён,​ 0x200 - подтверждён, 0x800 - следующий для выполнения, 0x1000 - просрочен, 0x2000 - переназначен) */ 	
	"​st":<​uint>,/​* время последней смены статуса */ 	
	"tz":<uint>,	/* временная зона пользователя */
        "eta":<uint>, /* остаток времени, рассчитанный по роутингу(или по прямой). считается раз в  180 секунд, при наличии следующей заявки и если есть уведомление по контролю времени/пробег*/
        "rd":<​double>, /* пробег к моменту времени eta */
        "cnm":<​uint>, /* счетчик пробега из объекта */
        "nt":<uint>, /* next_time - время когда заявка стала следующей */
        "ds":<uint>, /* статус завершенности - число передаваемое в confirm, например % */
        "dp":<uint>, /* список uid заявок от которых зависит данная заявка: заявка не будет посещаться, пока не будут посещены перечисленные */
	"cf":{"key1":"key1_value","key2":"key2_value"},.....}, /* произвольные поля заявки */
        "stt":<uint>, /* start_transfer_time - время заезда на заявку */
        "dtt":<uint>, /* done_transfer_time  - время выезда */
        "if":<uint> /* internal_flags -внутренние флаги, ниже пояснения по значениям */
	}	
]

callMode=update:

[<uint>]		/* значение "id" изменённой заявки */

callMode=delete:

[
	<uint>,		/* значение "id" удаленной заявки */
	null
]

callMode=assign,register,reject:

{ }	/* если всё успешно */

или

{"error":4}	/* если не удалось прикрепить объект к заявке */

Флаги внутренние (if - internal_flags)

ЗначениеОписание
0x1 заявка в процессе доставки
0x2 водитель получил уведомление об отклонении маршрута
0x4 водитель уведомлен, что заявка не подтверждена
0x8 клиент уведомлен о задержки заявки
0x10 клиент уведомлен о времени выполнения заявки
0x20 клиент уведомлен о пробег к заявке