Создает и запускает новый рейс, используя форму для создания рейса с отдельными точками (voyages / create).
В метод есть необязательное поле delivering_type
Возможные варианты значения:
По умолчанию ставим значение "simple".
Так же добавляем необязательное поле direction_key, тип строка от 0 до 255 символов.
Описание способов распределения рейсов в зависимости от значения delivering_type:
simple. Метод отрабатывает по аналогии с методом createAndStart
intercity. Для корректной работы необходимо запросить в тех. поддержке включение Расширенного режима Направлений. В таком режиме система проверяем уникальность направлений не только по маршрут, тип ТС, срок действия, но и по Названию. При этом распределяются рейсы из интерфейса или другими методами АПИ только по последнему подходящему направлению.
Система проверяет поле direction_key. Если поле пустое или отсутствует вовсе, то метод отрабатывает также как createAndStart.
Если поле не пустое, то при запуске рейса подбираем все направление которые подходят по стандартному подбору (маршрут, тип ТС, срок действия), и выбираем первое по id подходящее направление, в конце названия которого есть значение из поля direction_key. Например:
Рейс едет City1- City2. Обычное направление называется "City1-City2-20т"
Если direction_key = '3 точки', то рейс запускаем по направлению с названиями: "City1-City2-20т 3 точки". Так же возможны варианты: "City1-City2-20т тут может быть любой текст 3 точки", "Название может быть вообще другое 3 точки"
movements. При этом типе будет передаваться параметр "Перевозчик" (уже есть в методе), для назначения рейса сразу на перевозчика, но без цены (тоже есть в методе). При этом типе рейсов система находит подходящее направление для рейса, и перебирая этапы по порядку ищет указанного в запросе Перевозчика. Если находит, берет цену и назначает по этой цене на перевозчика. Если не находит, рейс создается и остается в неактивных.
incity. Метод будет использоваться как ручное назначение (уже реализовано), но цена и валюта может не указываться, тогда система ставит 1 руб.
Команда voyages/createAndStartByDeliveringType
Метод POST
Пример запроса
https://api.logist-pro.su/api/voyages/createAndStartByDeliveringType
[ { "delivering_type":"intercity", "direction_key":"3 точки", "carrier_code": "010505464530", "car_confirm": "00:01", "currency": "USD", "price": 2000, "number":"voyage_number", "shipper_code":1, "edit":false, "additional_field_1":"voyage_number_1", "additional_field_2":"Дополнительно поле 2", "additional_field_3":"Дополнительно поле 3", "additional_field_4":"Дополнительно поле 4", "additional_field_5":"Дополнительно поле 5", "additional_field_6":true, "comment":"Комментарий к рейсу общий", "carcase":{ "name":"Лесовоз 1,5 тонны", "code":"D115", "weight_code":"1_5", "type_code":"lesovoz" }, "points":[ { "point_code":"point_1", "address":"Адрес точки погрузки", "point_zone":"zone_1", "city":"City", "point_type":"load", "point_date":"2021-01-01 12:00:00", "point_date_till":"2021-01-02 15:00:00", "point_pallets":"20", "point_volume":"20", "point_weight":"20", "point_weight_units":"т", "point_lenght":"20", "ftl":false, "loading_methods":["back","top"], "cargo_type":["готовая продукция"], "comment":"Комментарий к первой точке" },{ "point_code":"point_2", "address":"Адрес точки выгрузки", "point_zone":"zone_2", "city":"City", "point_type":"unload", "point_date":"2021-01-03 13:00:00", "point_date_till":"2021-01-04 16:00:00", "point_pallets":"20", "point_volume":"20", "point_weight":"20", "point_weight_units":"т", "point_lenght":"20", "ftl":false, "loading_methods":["back","top"], "cargo_type":["готовая продукция"], "comment":"Комментарий ко второй точке" } ]} ]
Пример ответа
Успешный запрос: { "status": "success", "errors": [], "updates": [], "voyages": { "0.voyage": [ { "number": "voyage_number", "message": [ "success" ] } ] } } Ошибка: { "status": "failed", "errors": { "0.number": [ "already_exists" ] }, "updates": [], "voyages": { "0.voyage": [ { "number": "voyage_number", "message": [ "already_exists" ] } ] } } Обновление: { "status": "success", "errors": [], "updates": { "0.voyage": true }, "voyages": { "0.voyage": [ { "number": "voyage_number", "message": [ "success" ] } ] } }
Поля в запросе | Обязательное поле | Описание | Тип поля | Пример\комментарий |
---|---|---|---|---|
delivering_type | тип доставки, определяет алгоритм распределения | string (1..255) | simple, intercity, incity, movements | |
direction_key | ключ для типа доставки intercity | string (1..255 | ||
price | Цена рейса | double | ||
currency | Валюта | string (1..255 | EUR, RUR, USD, UAH, RUR_WITH_VAT, RUR_WITHOUT_VAT, UAH_WITH_VAT, UAH_WITHOUT_VAT, KZT | |
car_confirm | Номер рейса | string (1..255) | Формат "HH:ii" | |
carrier_code | Обязательное при delivering_type "incity" или "movements" | ИНН перевозчика / SAP-код | string (1..255) | SAP-код заводится в партнерстве |
number | обязательно | Номер рейса | string (1..100) | Уникальный код рейса |
shipper_code | обязательно | Значение кода (ID) грузоотправителя | numeric | Предоставляется после регистрации |
edit | обязательно | Значение для редактирование рейса | boolean | Если true - то обновляет поля рейса и точек, false - создается новый рейс |
additional_field_1 | Дополнительное поле 1 | string (1..255) | Задается в настройках филиала | |
additional_field_2 | Дополнительное поле 2 | string (1..255) | Задается в настройках филиала | |
additional_field_3 | Дополнительное поле 3 | string (1..255) | Задается в настройках филиала | |
additional_field_4 | Дополнительное поле 4 | string (1..255) | Задается в настройках филиала | |
additional_field_5 | Дополнительное поле 5 | string (1..255) | Задается в настройках филиала | |
additional_field_6 | Дополнительное поле 6 | boolean (0..1) | Задается в настройках филиала | |
comment | Комментарий к рейсу | string (1..255) | ||
carcase | транспортное средство | array[] | ||
carcase.name | учитывается при создании нового ТС | Название нового Типа ТС | string (1..255) | |
carcase.code | обязательно | Код Тип ТС | string (1..255) | |
carcase.weight_code | обязательно при создании нового ТС | Код грузоподъемности | string (1..255) | Типы описаны в справочнике |
carcase.type_code | обязательно при создании нового ТС | Код типа подвижного состава | string (1..255) | Типы описаны в справочнике |
points | точки маршрута | array[] | ||
points.point_code | обязательно | Уникальный код точки | string (1..255) | |
points.address | обязательно при создании новой точки | Адрес точки | string (1..255) | |
points.point_zone | учитывается при создании новой точки | Зона точки | string (1..255) | |
points.city | учитывается при создании новой точки | Город точки | string (1..255) | |
points.point_type | обязательно | Тип точки (загрузка\выгрузка) | string (1..255) | load / unload |
points.point_date | обязательно | Дата\время прибытия на точку | string (19) | Формат: “2021-01-01 12:00:00” |
points.point_date_till | Крайние дата\время прибытия на точку при диапазоне даты и время | string (19) | Формат: “2021-01-01 12:00:00” | |
points.point_pallets | Количество паллет | Integer | ||
points.point_volume | Объем груза | Integer | ||
points.point_weight | Вес груза | Integer | ||
points.point_weight_units | Единица измерения веса груза | string (1..255) | т - тонны , кг - килограммы | |
points.point_lenght | Погонные метры | Integer | ||
points.ftl | Полная загрузка ТС | boolean | ||
points.loading_methods | Массив список типов погрузки | array() | Типы описаны в справочнике | |
points.cargo_type | Массив список типов характера груза | array() | массив свободных значений. Можно получить ранее используемые значения в справочнике, или передать новые. | |
points.comment | Комментарий к точке | string (1..255) |
Поля в ответе | Описание | Тип поля | Пример\комментарий |
---|---|---|---|
status | Статус запроса | string (1..100) | success/failed |
errors | Блок ошибок | array() | |
errors.0.number | номер рейса, поле с ошибкой и описание ошибки | array() | 0 - номер рейса в запросе, number - поле с ошибкой |
updates | Блок обновления рейса | array() | |
updates.0.voyage | номер и статус обновления рейса | array() | |
voyages | Блок статусов по каждому рейсу с его номером | array() |