# Расширенное ПО

В документе описаны состав и принципы работы расширенного программного обеспечения, которое интегрируется с платформой Global System ERP для реализации специализированных функций.

## GlobalAtolPrint 

Утилита служит для взаимодействия системы Global System ERP с фискальным регистратором (ККТ АТОЛ) — кассой, которая печатает чеки.

- Утилита (AtolPrint) — принимает команды от расширения и отправляет их на ККТ.
- ККТ, подключённая по USB — исполняет команду и печатает чек.

**Пример**:
1. Пользователь в Global создаёт документ чека и нажимает **«Распечатать»**.  
2. Через плагин браузера запускается AtolPrint.
3. Утилита формирует команду и отправляет её на кассу.
4. ККТ печатает чек.
5. Возвращает результат, пишет его в файл.
6. Плагин считывает файл и отправляет результаты в Global.

[Подробная информация и формат заданий](https://integration.atol.ru/api/?cpp#proverka-json-zadaniya).

### Принцип работы
Ввод-вывод работает через текстовые файлы формата JSON. Обязательно передаётся файл с заданием и имя файла для записи результата. Опционально можно передать третий файл с настройками драйвера:  
`AtolPrint.exe task.json output.json [settings.json]`

### Установка

1. Скачайте [утилиту](https://repo.global-system.ru/artifactory/common/ru/bitec/gs-desktop-tools/atol-print/windows/latest/atol-print-latest.zip).
2. Разархивируйте содержимое архива (включая динамические библиотеки: `.dll` для Windows, `.so` для Linux) в папку с установленным плагином.

## КриптоПро DSS

Утилита обеспечивает получение токена доступа через механизм SSO: пользователь аутентифицируется в ADFS, после чего на стороне сервера Global System ERP токен ADFS автоматически обменивается на токен доступа КриптоПро DSS для последующего вызова защищённых методов API.

### Принцип работы

Подписание документов выполняется внешним сервисом КриптоПро DSS. Чтобы веб-интерфейс мог инициировать подпись от имени пользователя, требуется безопасная передача учётных данных через цепочку токенов.

1. Подготовка данных — Global формирует пакет данных, который необходимо подписать.
2. Получение токена ADFS — утилита запрашивает и получает токен авторизации через ADFS от текущего пользователя ОС.
3. Обмен токена — утилита обменивает токен ADFS на специализированный токен доступа КриптоПро.
4. Подписание — полученный токен используется как Bearer-авторизация в API КриптоПро, где и выполняется криптографическое подписание данных.

[Инструкция по получению кода авторизации (токена)](https://dss.cryptopro.ru/docs/articles2/authentication/oauth/token-exchange.html#пример-1-oauth-20-код-авторизации).

### Установка

1. Скачайте утилиту: 
    - Для Windows: https://repo.global-system.ru/artifactory/common/ru/bitec/gs-desktop-tools/adfs-tool/windows/sng-adfs-tool/1.2.4/GetADFSAuthToken.exe 
    - Для Linux: https://repo.global-system.ru/artifactory/common/ru/bitec/gs-desktop-tools/adfs-tool/linux/sng-adfs-tool/1.2.4/GetADFSAuthToken.
2. Убедитесь, что: 
    - используется ADFS;
    - КриптоПро зарегистрирован в ADFS.
3. Переместите утилиту в папку с установленным плагином.