IntraVision

Учёт трудозатрат по заявкам, ТМЦ (товарно-материальных ценностей). Склад в Intradesk. Работа со складами и ТМЦ через API

Полезный функционал
В Intradesk в рамках заявок есть возможность:
  • Учитывать (списывать) ТМЦ, которые были затрачены в рамках выполнения заявки.
  • Учитывать услуги (выбор из справочников) по заявке.
  • Учитывать часы, затраченные исполнителем по заявке. Как вручную, так и автоматически. См. также Статья №61178
  • Отчеты:
    • По конкретной заявке — печатная форма всех затрат.
    • По множеству заявок (например, по клиенту за месяц) — затраченных ТМЦ, услуг, часов (с расчетом стоимости при необходимости).
В справочниках хранятся ТМЦ и услуги. При этом, последние представляют собой упрощенный вариант склада. Имеется в виду, что при загрузке данных в справочники есть возможность указывать количество соответствующей номенклатуры на складе и стоимость единицы товара. Соответственно, при списании ТМЦ в заявке есть возможность автоматического контроля наличия остатков.

Используется формулировка «есть возможность» по той причине, что если вы не укажете кол-во в справочнике, то и контролировать Intradesk не будет. Всегда можно прийти к простому варианту использования.

Как это работает?
Покажем на примере.

1. Настройка. Создание и загрузка справочников в ТМЦ. Зайдите "Настройки - Справочники - ТМЦ/Услуг/Склады - Типы"
"Типы" - это категории справочника, например, мы выделяем ТМЦ (материальная единица) и Услуги (работа) (Рис. 1). В этом разделе их можно создавать, переименовывать, удалять. 
В разделе "ТМЦ/Услуги на складе" можно наполнять эти справочники данными. Справочник "ТМЦ/Услуги на складе" по умолчанию пустой — импортируйте из Excel. Когда заполните, будет выглядеть приблизительно как на рисунке ниже:
 
 
Рис. 1.
 
 
Рис. 2.

 
 
 
 
Рис. 3

На странице показываются значения из всех справочников сразу. Это может быть неудобно, для этого воспользуйтесь фильтрами. Например, отделить значения Справочника Услуг от Справочника ТМЦ:

 
 
 
 
Рис. 4.

Как было написано выше:

а) Есть возможность экспортировать, импортировать значения справочников в и из Excel или через API. Поле номер (№) рекомендуется использовать как внешний номер (артикул, серийный номер) в вашей системе, откуда вы импортируете данные ТМЦ/Услуг. Например, номер позиции в 1С. 
Уникальность ТМЦ/Услуги определяется по сочетанию полей "Склад" и "№". Если по этому сочетанию существует ТМЦ/услуга - она будет обновлена, если не существует - будет создана. 
Например, на периодической основе можно загружать остатки по складу из Excel в Intradesk. 
В этом случае в Intradesk будет идти обновление кол-ва единиц, стоимость и даже название (если вы его поменяли) по "номеру и складу". 

б) Имеется возможность ручного изменения значений справочников.


2. Списание ТМЦ на карточке заявки. На карточке заявки есть пункт меню «Затраты». Через звездочку можно вынести кнопку «Затраты» на панель карточки. В версии 2.25 – это была кнопка «Трудозатраты». Мы обобщили решение, т.к. трудозатраты (часы, списанные по заявке) – это частный случай всех затрат.
 
 
Рис. 5.

Для назначения ТМЦ/Услуг на заявки нужно перейти «Настройки — Правила поведения — Правила назначения ТМЦ/Услуг». Задать новое правило, нажав на «+ Назначение типов ТМЦ/Услуг».

С помощью умного поиска выбираем Сервис, Тип заявки и Типы ТМЦ/Услуг. Нажимаем «Сохранить».

 
 
Рис. 6.

Теперь, когда заявка будет создаваться в сервисе "Холодильное оборудование/кассы", по кнопке "Затраты" Вы увидите форму, как на рисунке ниже:

 
 

 
 
Рис. 7.

Если в справочнике ТМЦ/услуги у вас задано кол-во единиц, то при списании в заявке вы увидите уменьшения значения в справочнике. Например, если на складе (задано в справочнике) у вас только 3 блока питания, то и в заявках вы сможете списать только 3 блока питания. При удалении(архивировании) и/или изменении затрат в заявке соответствующее значение остатка на складе обновляется.

Дополнительно. Права на управление списанием затрат определяются по полю «Трудозатраты». Права на поле «Трудозатраты» имеет опции: НЕ ПОКАЗЫВАТЬ, ПРОСМОТР, УПРАВЛЯТЬ СВОИМИ, УПРАВЛЯТЬ ВСЕМИ ТРУДОЗАТРАТАМИ. 
 
3. Отчетность. Использование
Для заявки можно сделать печатную форму,
где будут отображаться Затраты.
Настройки-Справочники-Шаблоны печатных форм.
После того как вы настроили правильный шаблон (в нём должен быть макрос %expenses%), на заявке можно будет получить Отчетный документ. Т.е. по клику на «Печатная форма» на карточке заявки получить WORD документ с таблицей данных затрат по заявке .

В разделе отчеты есть отчет «Отчет по затратам». Можете воспользоваться стандартными инструментариями (сохраненные фильтры, экспорт в Excel), чтобы получить нужный отчет. Например:
«Все затраты, за прошлый месяц, только по закрытым заявкам по конкретному клиенту». С суммированием часов и денег.


Склад в Intradesk
В релизе 3.7.0 были добавлены разные виды складов и возможность перемещения ТМЦ/Услуг между складами. 
1. Виды складов:
  • ОБЩИЙ ДЛЯ ВСЕХ - доступен всем сотрудникам. 
  • ОБЩИЙ ДЛЯ ГРУПП (задается множество групп) - доступен выбранным группам сотрудников
  • ПЕРСОНАЛЬНЫЙ (для конкретного) - доступен конкретному сотруднику
На карточке заявки, доступ к списанию ТМЦ/Услугам для пользователей определяется по правилу назначения ТМЦ/Услуги, по правам к полю Затраты и по складу, к которому относится данное ТМЦ/Услуга. 

Если у пользователей есть права на списание Затрат, есть правило назначения ТМЦ/Услуга на сервис и если эта ТМЦ/Услуга значится на:
  • общем складе - то у всех сотрудников есть доступ к списанию этой ТМЦ/Услуги
  • общем для групп складе - то у сотрудников этой группы есть доступ к списанию этой ТМЦ/Услуги
  • персональном складе - то сотрудника, которому принадлежит этот склад, есть доступ к списанию этой ТМЦ/Услуги

2. Общие склады. 
Для создания общего склада необходимо открыть "Настройки - Справочники - ТМЦ/Услуг/Склады - Склады - Общие", нажать "+Создать", в поле "Права" выбрать "Все сотрудники", если необходимо, чтобы данный склад был доступен всем сотрудникам. 
 
 

Если необходимо, чтобы склад был доступен отдельным группам сотрудников, то в поле "Права" нужно выбрать "Группы сотрудников" и добавить необходимые группы
 
 
3. Персональные склады. 
Для создания персонального склада необходимо открыть "Настройки - Справочники - ТМЦ/Услуг/Склады - Склады - Персональные склады (личное хранение ТМЦ)", нажать "+Создать склад сотрудника", в поле "Пользователь" выбрать сотрудника, которому будет доступен этот склад.
 
 
 

4. Перемещение ТМЦ/Услуг между складами.
Перемещение ТМЦ/Услуг между складами на списке ТМЦ/Услуг. 
Для этого необходимо, открыть "Настройки - Справочники - ТМЦ/Услуг/Склады - ТМЦ/Услуги на складе" и нажать кнопку "Перенос между складами"
 
 
В "Откуда" поле "Склад" выбрать склад, с которого будет перенесена ТМЦ/Услуга, выбрать Тип ТМЦ/Услуги, в поле "№ / Название" при помощи умного поиска выбрать ТМЦ/Услугу для переноса. 
В "Куда", если нужно выполнить перенос на общий склад, то в поле "Перенос на" выбрать "Общий склад" и добавить склад, на который будет осуществлен перенос. Заполнить количество, которое будет перенесено, нажать "Перенести"

 
 
Если нужно выполнить перенос на персональный склад, то в "Куда", в поле "Перенос на" выбрать "Склад сотрудника" и добавить сотрудника, на склад, которого будет осуществлен перенос. Заполнить количество, которое будет перенесено, нажать "Перенести"
 
 
Если ранее такого персонального склада не было, то он будет создан.  

Перемещение ТМЦ/Услуг между складами на карточке ТМЦ/Услуги. 
Открыть карточку ТМЦ/Услуги, нажать кнопку "Переместить на другой склад". 
Заполнить количество и выбрать на какой склад будет выполнен перенос - "Общий" или "Склад сотрудника", нажать "Перенести"
 
 


Работа со складами и ТМЦ через API
Реализована возможность работы со складами и ТМЦ/Услугами через API. 
Ниже добавлены методы по работе со складами и ТМЦ/Услугами через API со ссылками на документацию в формате Swagger.  
При создании склада, в теле запроса можно выбрать, тип склада "type".  
Поле "type" может принимать значения: 
10 - Общий, 20 - Для групп, 30 - Персональный

Пример создания общего склада:
{
"name": "Юго-западный склад",
"description": "Юго-западный склад для автозапчастей",
"type": 10
}
Где:
  • "type" -  Тип склада. Может принимать значения: 10 - Общий, 20 - Для групп, 30 - Персональный
Пример создания общего склада группы:
{
"name": "Склад группы Администраторов",
"description": "Администраторский склад",
"userGroups": [
{
"id": 335912,
"name": "string"
}
],
"type": 20
}
Где:
  • "type" - Тип склада. Может принимать значения: 10 - Общий, 20 - Для групп, 30 - Персональный
  • "userGroups" - используется для склада с типом "Для групп" (Туре = 20). Указание групп сотрудников, которым доступен склад в виде [id: 1, name: "Group1"}, ..., {id: 5, name: "Group5"}] (id обязательно, name - нет) 

Пример создания персонального склада:
{
"description": "Скалд сотрудника Начальникова",
"user": {
"id": 1505705,
"name": "string"
},
"type": 30
}
Где:
  • "type" - Тип склада. Может принимать значения: 10 - Общий, 20 - Для групп, 30 - Персональный
  • "user" - используется для Пользовательского склада (Туре = 30). Указание пользователя в виде {id: 1, name: "my user name"} (id обязательно, name - нет)


Пример запроса на создание 
{
"name": "Ремонт"
}


Пример запроса на создание ТМЦ/Услуг: 
{
"name": "Гвозди",
"number": "gvozdi",
"measureUnit": "ед",
"description": "Гвозди для стройки",
"count": 100,
"price": 1200,
"inventoryType": {
"id": 79246,
"name": "string",
},
"warehouse": {
"id": 13,
"name": "string",
}
}
Где:
  • "number" - поле "№" (номер ТМЦ/услуги)
  • "inventoryType" - Тип, в котором будет создана ТМЦ/Услуга. Указание типа в виде {id: 1, name: "Автозапчасти"}, (id обязательно, name - нет) 
  • "warehouse" - Склад, в котором будет создана ТМЦ/Услуга. Указание склада в виде {id: 1, name: "Общий склад"}, (id обязательно, name - нет)
6. Изменить количество ТМЦ/Услуг на складе (общем или персональном) - https://apigw.intra5.ru/settings_docs/swagger/index.html#/InventoryItems/put_api_v1_InventoryItems_ChangeCount
Определение ТМЦ/Услуг ведется по паре "Склад+ Номер", они уникальны.
Мы исходим из концепции, что на одном складе не должно быть "две записи" с одинаковым номером, даже если у них разный тип ТМЦ/Услуг. 
В теле запроса указывается ID склада (общий или персональный) или ID пользователя (если склад персональный). 
Указывается номер товара и число на которое пополнить или списать: 
  • Если в поле "count" задать положительное число товара, то произойдет пополнение.
  • Если в поле "count" задать отрицательное число товара, то произойдет списание.
Если при операции списания, нет нужного числа на складе, то отобразится ошибка. 
Если задано ID несуществующего склада, то отобразится ошибка. 
Если задан ID пользователя, по которому нет персонального склада, то будет создан персональный склад
Если отправить запрос на изменение количества ТМЦ/Услуг с несуществующем номером или номером, которого нет на складе, то отобразится ошибка. 

Пример запроса на пополнение ТМЦ/Услуг на складе (общий или персональный):
{
"count": 200,
"number": "desk",
"sourceWarehouseId": 13,
}
Где:
  • "count" - Число на которое изменяется количество ТМЦ/Услуг на складе: положительное добавляет, отрицательное вычитает
  • "number" - поле "№". Номер ТМЦ/Услуги, для которой изменяется количество на складе
  • "sourceWarehouseId" - идентификатор склада (общий или персональный), с которого списывается\добавляется тмц/услуга (приоритет поиска склада по этому идентификатору - в первую очередь)

Пример запроса на списание ТМЦ/Услуг на складе (общий или персональный):
{
"count": -10,
"number": "15",
"sourceWarehouseId": 13,
}

Пример запроса на списание ТМЦ/Услуг на персональном складе (когда, персональный склад ищется по ID сотрудника):
{
"count": 50,
"number": "desk",
"sourceUserId": 58881
}
Где:
  • "count" - Число на которое изменяется количество ТМЦ/Услуг на складе: положительное добавляет, отрицательное вычитает
  • "number" - поле "№". Номер ТМЦ/Услуги, для которой изменяется количество на складе
  • "sourceUserId" - идентификатор сотрудника, на личный склад которого добавляется/списывается тмц/услуга (по пользователю ищется его персональный склад). 

Пример запроса на перенос со склада (общий или персональный) на склад (общий или персональный):
{
"count": 15,
"number": "desk",
"sourceWarehouseId": 13,
"targetWarehouseId": 549,
}
Где:
  • "count" - Число для передачи ТМЦ/Услуг (только положительное)
  • "number" - Поле "№" (номер ТМЦ/услуги)
  • "sourceWarehouseId" - Идентификатор склада (общий или персональный), c которого перемещают ТМЦ/Услугу
  • "targetWarehouseId" - Идентификатор склада (общий или персональный), на который перемещают ТМЦ/Услугу

Пример запроса на перенос со склада (общий или персональный) на персональный склад (когда, персональный склад ищется по ID сотрудника):
{
"count": 10,
"number": "pokr01",
"sourceWarehouseId": 549,
"targetUserId": 3473164
}
Где:
  • "count" - Число для передачи ТМЦ/Услуг (только положительное)
  • "number" - Поле "№" (номер ТМЦ/услуги)
  • "sourceWarehouseId" - Идентификатор склада (общий или персональный), c которого перемещают ТМЦ/Услугу
  • "targetUserId" - Идентификатор пользователя, на персональный склад которого перемещают ТМЦ/Услугу (если такого склада нет - создается)
Пример запроса на перенос с персонального склада на персональный склад (когда, персональный склад ищется по ID сотрудника):
{
"count": 10,
"number": "pokr01",
"sourceUserId": 58881,
"targetUserId": 3473164
}
Где:
  • "count" - Число для передачи ТМЦ/Услуг (только положительное)
  • "number" - Поле "№" (номер ТМЦ/услуги)
  • "sourceUserId" - Идентификатор пользователя, с персонального склада которого перемещают ТМЦ/Услугу.
  • "targetUserId" - Идентификатор пользователя, на персональный склад которого перемещают ТМЦ/Услугу (если такого склада нет - создается)

Если нужного числа нет на складе "sourceWarehouseId", то отобразится ошибка. 
Если на складе "targetWarehouseId" есть товар с таким номером, то в этой ТМЦ/Услуге будет изменено кол-во. 
Если на складе "targetWarehouseId" товара с таким номером нет, то будет создана новая запись. 
Если отправить запрос на перенос с несуществующем номером или номером, которого нет на складе "targetWarehouseId", то отобразится ошибка. 

ТМЦ
трудозатраты, активная заявка
API