Skip to main content

API: Упаковка /packing

1. Получение заказа на упаковку

/packing/order/{order_id}/start

Для получения заказа, необходимо выполнить запрос вида /packing/order/LT1234567890/start

 

В ответ возвращается

Успех

{
  "success": true,
  "order": {
    "id": "LT123456",
    "operationType": "PACKAGING_B2B",
    "relabelingType": "BOXES",
    "maxBoxesWithoutPallet": 10,
    "date": "2021-07-15T14:23:11",
    "packing_state": "awaiting_packing",
    "require_place_weight": true,
    "global_shipping_guidelines": "...общее описание отгрузки",
    "order_shipping_comments": "...комментарий клиента к заказу",
    "preferred_barcode_type": "WILDBERRIES",
    "merchant": {
      "id": "some-id",
      "title": "ООО Зингер",
      "trade_title": "Zinger.com"
    },
    "shipping_form": [
      {
        "id": "shipping_num",
        "title": "Номер поставки",
        "value": "120721-001"
      },
      {
        "id": "instruction",
        "title": "Инструкция по сборке",
        "value": "Текст инструкции в html c html-escape разметкой"
      }
    ],
    "delivery": {
      "logo": "https://..russian_post.svg",
      "title": "Почта России",
      "contract_title": "Курьер Онлайн",
      "sorting_center_acceptance_date": "2021-07-17",
      "maximum_place_weight": 30000,
      "maximum_places_count": 1
    },
    "items": [
      {
        "id": "some-item-id",
        "article": "A0121202",
        "title": "Норвежская лесная Эдалт 2 кг",
        "quantity": 5,
        "image": "https://..image.jpg",
        "image_preview": "https://..image_preview.jpg",
        "require_weight": true,
        "require_dimensions": true,
        "kit_id": 102012,
        "kit_title": "Большой набор разных товаров",
        "barcodes": [
          {
            "type": "COMMON",
            "barcode": "40010030040"
          },
          {
            "type": "WILDBERRIES",
            "barcode": "1122334455"
          }
        ],
        "scan_serial_numbers": [
          {
            "code": "imei",
            "title": "IMEI код",
            "template": "some-template"
          },
          {
            "code": "chestniy_znak",
            "title": "Честный знак",
            "template": "some-template"
          }
        ]
      }
    ],
    "ad_attachments": [
      {
        "name": "Салфетка",
        "quantity": 1,
        "note": "примечание"
      }
    ],
    "places": [
      {
        "id": "5646564",
        "packaging_id": "4445566633211",
        "sequence_num": 1,
        "weight": 567,
        "items": [
          {
            "id": "some-item-id",
            "barcode_used": "40010030040",
            "quantity": 1,
            "serial_numbers": [
              {
                "code": "imei",
                "value": "821821291291929"
              },
              {
                "code": "chestniy_znak",
                "value": "010460370285702421"
              }
            ]
          }
        ]
      }
    ],
    "pallets": [
    {
      "id": "12345",
      "num": "1",
      "places": [
        "placeId1",
        "placeId2"
      ],
      "weight": 567,
      "dimensions": {
        "width": 10,
        "height": 10,
        "depth": 10
      }
    }
  ]
  },
  "packagings": [
    {
      "id": "some-id",
      "title": "Коробка 50х30х20",
      "barcodes": [
        "BX-503020",
        "BX*503020"
      ]
    },
    {
      "id": "some-id-2",
      "title": "Коробка 50х30х10",
      "barcodes": [
        "BX-503010"
      ]
    }
  ]
}

Описание полей

Поле Тип Описание
success Boolean true - заказ успешно получен, false - заказ получить не удалось, в массиве errors набор ошибок
errors Array Массив объектов ошибок
order Object Объект заказа
id Text Номер заказа
operationType enum

Перечисление:

  • PACKAGING_B2B - заказ Озон ФБО или Wildberries ФБО, статус "На сборке"
  • PACKAGING_B2C - не (Озон ФБО или Wildberries ФБО), статус "На сборке"
  • RELABELING - перемаркировка, т.е. статус "Упакован и Документы"
relabelingType enum

Перечисление:

  • BOXES - Wildberries_ФБО или Озон_ФБО и maxBoxesWithoutPallet < Заказ.фф_УпаковкиЗаказов.Количество()
  • PALLETS - Озон_ФБО и maxBoxesWithoutPallet >= Заказ.фф_УпаковкиЗаказов.Количество()
  • BOXES_AND_PALLETS - в остальных случаях
maxBoxesWithoutPallet integer

Количество коробов, с которого обязательна палета.

preferred_barcode_type string

Для FBO заказов - предпочтительный тип ШК товара. Если сосканирован не такой - запрос стикера. Значения - из ENUM Тип штрихкода

date Datetime Дата и время заказа
packing_state enum

Статус упаковки заказа

  • awaiting_packing - ожидает упаковки, упаковка не начата
  • on_packing - упаковка начата, в процессе
  • packed - упаковка завершена
require_place_weight Boolean

Требуется снятие веса места

shipping_guidelines string Общее описание отгрузки (на весь аккаунт клиента))
shipping_comments string Пожелания клиента к отгрузке данного заказа
shippingOptions
Object Опции доставки
monopackingsOnly
Boolean Признак упаковки только монокоробами
shipping_form Array Массив вопросов и ответов анкеты отгрузки
id string Идентификатор вопроса
title string Наименование вопроса
value string Ответ клиента на вопрос
delivery Object Информация о доставке
logo string Ссылка на логотип. 
title string Наименование способа доставки, например "Почта России"
contract_title string Наименование продукта, например "Курьер Онлайн"
sorting_center_acceptance_date Date Планируемая дата приемки в сортировочном центре. В первую очередь, для Почты России.
maximum_place_weight integer Максимальный вес одного места в граммах
maximum_places_count integer Максимальное количество мест в заказе. Ограничение некоторых курьерских служб.
items Array Массив объекта товаров
id string Идентификатор
title string Наименование товара
article string Артикул
quantity integer Количество товара к упаковке
image string Ссылка на картинку товара в полном размере
image_preview string Ссылка на картинку товара (с низким разрешением, уровня "иконка")
require_weight boolean Для данной номенклатуры надо измерить вес
require_dimensions boolean Для данной номенклатуры надо измерить габариты
barcodes Array Массив штрихкодов
type string Тип штрихкода. COMMON - без специфики, общий шаблон.
barcode string Значение штрихкода
scan_serial_numbers Array Задания на сканирование серийных номеров, массив
code string Код
title string Наименование
template string Шаблон для проверки (если есть)
options Object Дополнительные опции упаковки для данной позиции 
label_with_barcode string

Если не пустое значение, задание наклеить этикетку с указанным штрихкодом, при условии, что товар при отгрузке имеет иной штрихкод, чем указано в данном параметре. 

 

Этикетка и параметры передаются в отдельном блоке label.

label_all_items boolean Если передан true, необходимо наклеить этикетку на каждую позицию. Этикетка и параметры передаются в отдельном блоке label.
ad_attachments Array Массив дополнительных вложений
name string Наименование
quantity integer Количество
note string Примечание
places Array Массив упакованных мест заказа
packagings Array Массив упаковочной тары
id string Идентификатор
title string Наименование упаковки
barcodes Array of string Штрихкоды упаковки

 

Ошибка:

{
"success": false,
"errors": [
 {
 "code": "ORDER_NOT_FOUND",
 "message": "Заказ с номером LT1234567890 не найден",
 "errorsticker":{"content":"base64 pdf","printer": "STICKER_6x6"}
 }
]
}

Типовые ошибки:

Code Message
ORDER_NOT_FOUND Заказ с номером LT1234567890 не найден
ORDER_ON_PACKING Упаковка заказа LT1234567890 уже начала на рабочем столе DM-13
ORDER_ALREADY_PACKED Заказ LT1234567890 уже упакован (рабочее место DM-13, оператор Оператор 12)

 

 

2. Получение заказа

/packing/order/{order_id}

Метод полностью аналогичен методу /packing/order/{order_id}/start по части возвращаемых полей, за следующим исключением:

  • Метод не инициирует начало упаковки
  • Получить заказ возможно в любом статусе

 

3. Получение последних упакованных заказов

/packing/orders/last

Пример вызова:

GET /packing/orders/last?limit=10

Параметр вызова limit отвечает за количество возвращаемых заказов. Если не передан, по умолчанию возвращается 10 заказов.

Сервер возвращает заказы, упакованные данным оператором.

{
  "success": true,
  "orders": [
    {
      "id": "LT123456",
      "packing_state": "packed",
      "packed_at": "2021-07-15T14:23:11"
    }
  ]
}

 

4. Продолжение упаковки заказа

/packing/order/{order_id}/resume

Для продолжения упаковки заказа, необходимо выполнить запрос вида /packing/order/LT1234567890/resume

Метод требует расширенных прав. Данный метод вызывает на бэкенде следующие действия у заказа:

  • обновляется оператор,
  • обновляется текущий рабочий стол

Бэкенд возвращает текущее состояние заказа - включая уже упакованные места (places)

Успех

{
  "success": true,
  "order": {объект Упаковка заказа как в методе POST /start}
}

 

 

 

5. Сброс упаковки заказа

/packing/order/{order_id}/reset

Для сброса упаковки заказа, необходимо выполнить запрос вида /packing/order/LT1234567890/reset

На бэкенде метод:

  • Очищает все места, присвойки, упакованные товары
  • Очищает все места в DLV
  • Удаляет информацию по видеонарезке
  • Удаляет информацию по старте упаковки, рабочему месту старта упаковки и т.д.

 

6. Добавление/редактирование места к заказу

/packing/order/{order_id}/place

Метод создает или обновляет место к заказу.

Для создания нового места вызов: /packing/order/{order_id}/place, для редактирования места к заказу: /packing/order/{order_id}/place/{place_id}

При создании нового места - возвращает стикер в формате pdf (base64).

Пример вызова

{
  "place": {
    "packaging_id": "some-id",
    "sequence_num": 4,
    "is_final": false,
    "weight": 567,
    "dimensions": {
      "width": 10,
      "height": 10,
      "depth": 10
    },
    "items": [
      {
        "id": "some-item-id",
        "packed_at": "2021-07-18T12:21:22",
        "barcode_used": "40010030040",
        "quantity": 1,
        "serial_numbers": [
          {
            "code": "imei",
            "value": "821821291291929"
          },
          {
            "code": "chestniy_znak",
            "value": "010460370285702421"
          }
        ]
      }
    ]
  }
}

Описание

Поле Тип Описание
place Object Объект места
packaging_id string ID упаковочной тары
sequence_num integer Порядковый номер места (нумерация начинается с 1)
is_final boolean Признак последнего места, устанавливается в true, когда отсканированы все позиции, и данное место - последнее
weight integer Вес в граммах
dimensions Object Размеры (габариты) места - передаются только в случае нестандартной упаковки (packaging_id: "oversize")
items Array Массив отсканированных товаров для данного места
id string ID товара
packed_at datetime Дата и время сканирования товара
barcode_used string Использованный штрихкод (какой именно штрихкод был отсканирован для данного товара). 
serial_numbers Array Массив серийных номеров
code string ID серийного номера
value string Значение отсканированного серийного номера

 

Успех

{
  "success": true,
  "place_id": "ID созданного или обновленного места",
  "sticker": {
    "content":"base64 pdf",
    "printer": "STICKER_6x6"
  }
}

 

Ошибка:

{
"success": false,
"errors": [
 {
 "code": "ERROR",
 "message": "Описание ошибки",
 "errorsticker": {"content":"base64 pdf","printer": "STICKER_6x6"}
 }
]
}

Коды ошибок:

Code Message
INCORRECT_WEIGHT Введенный вес места (5000 грамм) существенно отличается от планового
OTHER_ERROR Прочая ошибка

7. Получение стикера места

/packing/order/{order_id}/place/{place_id}/sticker

Для получения стикера места, необходимо выполнить запрос вида: /packing/order/LT1234567890/place/43043403404/sticker

Опциональный параметр operationType - передается для печати стикера в операциях перемаркировки. Значение брать из operationType  заказа.

В ответ возвращается стикер в pdf, закодированный в base64

Успех

{
  "success": true,
  "sticker": {
    "content":"base64 pdf",
    "printer": "STICKER_6x6"
  }
}

 

Ошибка:

{
"success": false,
"errors": [
 {
 "code": "NOT_FOUND",
 "message": "Стикера с указанным местом 4030004403040 не существует"
 }
]
}

8. Добавление/редактирование палеты

/packing/pallet

Метод создает или обновляет палету.

Для создания нового места вызов: /packing/pallet, для редактирования места к заказу: /packing/pallet/{pallet_id}

При создании нового места - возвращает стикер в формате pdf (base64).

Пример вызова

{
  "pallet": {
    "pallet_num": 1,
    "weight": 567,
    "dimensions": {
      "width": 10,
      "height": 10,
      "depth": 10
     },
    "places": [{"placeId":"978020137962","orderId":"KK23423"}, {"placeId":"978020137964","orderId":"KK23423"}]
  }
}

Успех

{
  "success": true,
    "pallet_id": "0000000008",
    "pallet_num": 1,
    "sticker": {
        "content": "base64 pdf",
    	"printer": "STICKER_6x6"
    }
}

Описание запроса

pallet Object Объект палеты
pallet_num Integer Порядковый номер палеты в сценарии упаковки, определяется на стороне front-end
weight Integer Все палеты в граммах
dimensions Object Измерения палеты (см. описание объекта в п.8 Таблица 2)
width Integer Ширина в мм
height Integer Высота в мм
depth Integer Глубина в мм
places Array Массив объектов отсканированных мест в составе палеты
placeId String Штрихкод отсканированного места
orderId String Номер заказа (в случае наличия такой информации, это ускорит процесс поиска в back-end)

Описание ответа

success Boolean Признак успешного выполнения операции
pallet_id String Идентификатор (номер документа) палеты в back-end. По этому номеру можно вызывать команду редактирования палеты
pallet_num Integer Порядковый номер палеты в сценарии упаковки, возвращается без изменений.
sticker Object Объект для печати стикера
content String Стикер в pdf в формате base64
printer String Формат печати этикетки

9. Получение стикера палеты

/packing/pallet/{pallet_id}/sticker

Опциональный параметр operationType - передается для печати стикера в операциях перемаркировки. Значение брать из operationType  заказа.

В ответ возвращается стикер в pdf, закодированный в base64

Успех

{
  "success": true,
  "sticker": {
    "content":"base64 pdf",
    "printer": "STICKER_6x6"
  }
}

10. Перевод заказа в статус Упакован (packed) после перемаркировки

/packing/order/{order_id}/packed

Метод переводит заказ с номером {order_id} в статус Упакован.

11. Присвоение нового ШК места при перемаркировке

/packing/order/{order_id}/place/{place_id}/barcode/new

{
  "id": "123456",   //id места
  "new_barcode" : "ABCD1245"
}

Метод добавляет основной ШК месту при перемаркировке по FBO заказам

Успех

{
  "success": true,
   "place": {
     	"id": "ABCD1245"
        "packaging_id": "fsdf",
        "sequence_num": 1,
        "weight": 567,
        "items": [
          {
            "id": "some-item-id",
            "packed_at": "2021-07-18T12:21:22",
            "barcode_used": "40010030040",
            "quantity": 1,
            "serial_numbers": [
              {
                "code": "imei",
                "value": "821821291291929"
              },
              {
                "code": "chestniy_znak",
                "value": "010460370285702421"
              }
            ]
          }
        ]
      }
}

12. Присвоение нового ШК паллеты при перемаркировке

/packing/pallet/{pallet_id}/barcode/new

{
  "id": "123456",   //id паллеты
  "new_barcode" : "ABCD1245"
}

Метод добавляет основной ШК паллете при перемаркировке по FBO заказам

Успех

{
  "success": true,
   "pallet": {
      "id": "ABCD1245",
      "num": "1",
      "places": [
        "placeId1",
        "placeId2"
      ],
      "weight": 567,
      "dimensions": {
        "width": 10,
        "height": 10,
        "depth": 10
      }
    }
}

13. Получение палетного листа

/packing/pallet/{pallet_id}/form

 

В ответ возвращается печатная форма в pdf, закодированная в base64

Успех

{
  "success": true,
  "sticker": {
    "content":"base64 pdf",
    "printer": "STICKER_6x6"
  }
}

14. Получение дополнительных документов для печати по заказу

/packing/order/{order_id}/docs_for_print

В ответ возвращается массив файлов, закодированных в base64.

Успех

{
   "success": true,
   "files": [
       {
           "name": "Счёт__31_от_14.pdf",
           "url": "static-eu.insales.ru/order_files/165623972/Счёт__31_от_14.04.2021.pdf",
           "file": "Base64строка"
       },
       {
           "name": "Счёт__31_от_14.pdf",
           "url": "static-eu.insales.ru/order_files/165623972/Счёт__31_от_14.04.2021.pdf",
           "file": "Base64строка"
       },
       {
           "name": "d58871ee-f6a8-11eb-7d8e-002590357b68_lk.pdf",
           "url": "static-eu.insales.ru/order_files/169271248/Счёт__60_от_05.07.2021.pdf",
           "file": "file": "Base64строка"
       }
   ]
}