Перейти к основному контенту

Виды и статусы заявок

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

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

Виды заявок

В меню видов заявок можно попасть из раздела Заявки и персоны в верхнем меню бота, нажав в выпадающем списке на Виды заявок.

Снимок экрана 2023-03-21 181209.png

После перехода к меню видов открывается таблица содержащая все типы заявок бота.

fvOGqbtLyyiMpQHG-image.png

Здесь можно просматривать таблицу, создавать новые виды заявок (1), редактировать информацию о уже существующих и удалять их (2).

При нажатии на кнопку Создать открывается окно настройки вида заявки со следующими полями:

image.png

  • Наименование - имя вида заявки;
  • Заказ в магазине - если включить опцию, заявка с данным видом будет считаться заказом и относиться к функционалу магазина в боте.

После создания вид появится в таблице в меню видов с автоматически заданным ему Id. Тут его можно редактировать и удалить.

Редактирование видов включает в себя те же поля, что при создании.

Статусы заявок

В меню статусов заявок можно попасть из раздела Заявки и персоны в верхнем меню бота, нажав в выпадающем списке на Статусы заявок.

Снимок экрана 2023-03-21 181239.png

После перехода к меню статусов открывается таблица содержащая все статусы заявок бота.

Без имени.png

Здесь можно просматривать таблицу, создавать новые статусы заявок (1), редактировать информацию о уже существующих, перемещать по приоритету и удалять их (2).

При нажатии на кнопку Создать открывается окно настройки статуса заявки со следующими полями:

image.png

  • Наименование - имя статуса заявки;
  • Тип - значение статуса в виде выпадающего списка. По сути это статусы по умолчанию ставящиеся в соответствие созданным статусам.

Поле Тип можно оставить не заполненным, если нет подходящего варианта. Это никак не повлияет на работу статусов.

После создания статус появится в таблице в меню статусов с автоматически заданным ему Id. Тут его можно редактировать и удалить.

Редактирование статусов включает в себя те же поля, что при создании.

JS методы для работы со статусами заявок

К статусам заявок можно обращаться из JS следующими методами:

Название метода Метод
Перезагрузить все статусы из БД ticketStatuses.reload(): bool
Получить Laravel Collection ticketStatuses.getCollection(): ?Collection
Поиск статусов ticketStatuses.find(array|object|null $where, bool $isReturnCollection = false): ?ScriptTicketStatus
Поиск статуса по ID ticketStatuses.findById(string|int|null $id): ?ScriptTicketStatus
Поиск статуса по имени ticketStatuses.findByName(string $name): ?ScriptTicketStatus
Поиск статусов по имени ticketStatuses.findAllByNames(string|array|object|null $names, string $operator = '=', bool $isReturnCollection = false): ?Collection
Поиск статусов по типу статуса ticketStatuses.findAllByTypes(string|array|object|null $types, string $operator = '=', bool $isReturnCollection = false): ?Collection

У каждого объекта ScriptTicketStatus есть свои атрибуты и методы. Они расписаны в конце раздела.

Каждый из методов подробнее расписан ниже.

Перезагрузить все статусы из БД

ticketStatuses.reload()
Описание:

Перезагружает все статусы из БД.

Возвращает:

bool - подтверждение перезагрузки.

Получить Laravel Collection

ticketStatuses.getCollection()
Описание:

Возвращает коллекцию статусов заявок.

Возвращает:

?Collection - данные статусов в виде коллекции.

Пример:
let collection = ticketStatuses.find([['name', 'like', 'СТАТУС']], true);
status = collection.last();
status = status['_object'] ? status['_object'] : null;
lead.setAttr('7_status_from_collection', status ? status.name : null);

collection = collection.reload();

collection = ticketStatuses.getCollection();
statuses = collection.where('name', '=', 'статус 1');
status = statuses.first();
status = (status && status['_object']) ? status['_object'] : null;
lead.setAttr('8_status_from_collection', status ? status.name : null);

Поиск статусов

ticketStatuses.find(array|object|null $where, bool $isReturnCollection = false)
Описание:

Находит статусы соответствующие указанным данным.

Атрибуты:
Имя Тип Описание
where array|object|null Параметр по которому будет проверяться соответствие с найденными статусами
isReturnCollection bool  Параметр позволяющий вернуть значения в виде коллекции
Возвращает:

?ScriptTicketStatus - v8 обертка над моделью

или

Collection - данные статусов в виде коллекции.

Пример:
let statuses = ticketStatuses.find([['name', 'like', 'СТАТУС']]);
lead.setAttr('6_found_ticket_statuses_count', statuses.length);

let collection = ticketStatuses.find([['name', 'like', 'СТАТУС']], true);
status = collection.last();
status = status['_object'] ? status['_object'] : null;
lead.setAttr('7_status_from_collection', status ? status.name : null);

Поиск статуса по ID

ticketStatuses.findById(string|int|null $id)
Описание:

Находит статус соответствующий указанному id.

Атрибуты:
Имя Тип Описание
id string|int|null ID статуса заявки
Возвращает:

?ScriptTicketStatus - v8 обертка над моделью

Пример:
let status = ticketStatuses.findById(1095);
lead.setAttr('2_found_ticket_status_by_id', status ? status.id : null);

Поиск статуса по имени

ticketStatuses.findByName(string $name)
Описание:

Находит статус соответствующий указанному имени.

Атрибуты:
Имя Тип Описание
name string Имя статуса заявки
Возвращает:

?ScriptTicketStatus - v8 обертка над моделью.

Пример:
let status = ticketStatuses.findByName('статус 1');
lead.setAttr('0_found_ticket_status_by_name', status ? status.id : null);

Поиск статусов по имени

ticketStatuses.findAllByNames(string|array|object|null $names, string $operator = '=', bool $isReturnCollection = false)
Описание:

Находит статусы соответствующие указанным именам.

Атрибуты:
Имя Тип Описание
names string|array|object|null Имя статуса
operator string Оператор
isReturnCollection bool Параметр позволяющий вернуть значения в виде коллекции
Возвращает:

Collection - данные статусов в виде коллекции.

Пример:
let statuses = ticketStatuses.findAllByNames('статус', 'like');
lead.setAttr('1_found_ticket_status_by_names_like', statuses.length);

statuses = ticketStatuses.findAllByNames(['статус 1', 'Статус 2'], 'IN');
lead.setAttr('3_found_ticket_statuses_by_names_count', statuses.length);

Поиск статусов по типу статуса

ticketStatuses.findAllByTypes(string|array|object|null $types, string $operator = '=', bool $isReturnCollection = false)
Описание:

Находит статусы соответствующие указанным типам.

Атрибуты:
Имя Тип Описание
types string|array|object|null Тип статуса
operator string Оператор
isReturnCollection bool Параметр позволяющий вернуть значения в виде коллекции

На данный момент поддерживаются следующие типы статусов:

  • NEW
  • ASSIGNED
  • PENDING_CONFIRMATION
  • CONFIRMED
  • CANCELLED
  • CLOSED
  • PENDING_PAYMENT
  • PAYMENT_FAILED
  • PAID
  • PREPARING_ORDER
  • DELIVERY_IN_PROGRESS
  • WAITS_FOR_CUSTOMER_PICK_UP
  • DELIVERED
Возвращает:

Collection - данные статусов в виде коллекции.

Пример:
var statuses = ticketStatuses.findAllByTypes(['ASSIGNED', 'NEW'], 'IN');
lead.setAttr('4_found_ticket_statuses_by_types_in_count', statuses.length);

statuses = ticketStatuses.findAllByTypes('ASSIGNED', 'like');
lead.setAttr('5_found_ticket_statuses_by_types_like_count', statuses.length);

Атрибуты и методы ScriptTicketStatus

После получения ScriptTicketStatus над ним можно работать с помощью следующих методов для получения необходимых значений:

Описание Метод Возвращаемое значение

Получение элемента

  • .last()
  • .first()
  • .where()
?string

Обновление

  • .reload()
bool

Получение даты создания

  • created_at
  • createdAt
  • getCreatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null): ?string
  • createdAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
?string

Получение даты обновления

  • updated_at
  • updatedAt
  • getUpdatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null): ?string
  • updatedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
?string

Получение даты удаления

  • deleted_at
  • deletedAt
  • getDeletedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null): ?string
  • deletedAtFormatted(string $format = 'Y-m-d H:i:s', ?string $timeZone = null)
?string