# MiniKassir change log

## [1.5.X] - 2017-XX-XX XX:XX
### Added
### Changed
### Fixed
### Coded

* [todo] Добавлена возможность просмотра статуса обмена с ОФД.

## [1.5.12] - 2017-04-03 12:00
### Added
  * Загрузка справочника с ftp или из сетевой папки:
    теперь перед скачиванием файл переименовывается в уникальный. После скачивания удаляется.
  * Загрузка справочника с ftp, выгрузка ТР-ций на ftp:
    * добавлен более подробный вывод ошибок от ftp
    * добавлена возможность подключения без указания логина и/или пароля
  * Добавлена возможность изменения логического номера кассы.
### Changed
  * 'Сетевой обмен' переименован в 'Статус сетевого обмена'.
  * 'Настройки регистрации' переименованы в 'Общие настройки'.
  * При загрузке справочника через файл, если родительская группа у сущности была не числом, то преобразовывалась в пустую строку.
    Теперь в пустую строку преобразуется только строка из одного нуля. Т.е. строка вида "0" означает, что код не указан.
    Это сделано для совместимости со множеством уже существующих справочников (это же касается кода товара и группы).
### Fixed
  * Если в настройках ЕГАИС в реквизитах нажать не поддерживаемую цифру программа перезагружается.

## [1.5.11] - 2017-03-31 16:50
### Added
  * Загрузка справочника в spr-формате, числа с плавающей точкой:
    * поддержка переменного числа знаков после разделителя (поддерживалось фиксированное число знаков)
    * поддержка двух разделителей: '.' и ',' (поддерживалась только точка)
    Чтобы изменения вступили в силу, необходима перезагрузка справочника.
  * Загрузка справочника в spr-формате, налоги:
    теперь налоги и налоговые группы могут быть указаны в spr-файле в любом порядке.
  * Добавлена возможность просмотра статуса обмена с фин. сервером.
### Fixed
  * Загрузка товаров от фин. сервера: исправлена неверная загрузка родительской группы. Поэтому подбор работал некорректно.
  * Исправлен порт по умолчанию для мон. сервера (был 4950, стал 4243). 
    Проявлялось, начиная с версии 1.5.9, если удалить MiniKassirState.ini
  * Исправлена ошибка открытия ком-порта при нажатии на плюс в режиме регистрации.
    Не учитывалась настройка "Использовать весы".
### Coded
  * Исправлены некоторые строки логирования, ставшие некорректными при переходе на новый spdlog.

## [1.5.10] - 2017-03-28 19:20
### Added
  * Загрузка справочника в spr-формате: 
    теперь в поле 'Код группы налога' можно указать ставку налога (формат: 0.00%).
    В таком случае при загрузке справочника код налога будет искаться в таблице КЯ.
### Fixed
  * Загрузка справочника в spr-формате: 
    если код группы не был указан у товара или группы, то такая сущность не отображалась в визуальном подборе.
      * Следствие исправления: товары или группы со значением род. группы = '0' не будут отображаться в подборе,
        для их отображения необходимо загрузить справочник снова.
### Coded
  * Обновлена система логирования до последней версии spdlog.

## [1.5.9] - 2017-03-22 16:50
### Fixed
  * При выгрузке отчета в его заголовке не учитывался номер кассы, заданный в MiniKassir.ini (PosNumber), а выгружался всегда 0.
### Changed
  * Файловый обмен, USB.
    Теперь не нужно указывать префикс '/mnt/'. Например, если было '/mnt/Pos.spr', то теперь этот путь следует записывать так: 'Pos.spr'
      * При загрузке старых настроек в usb-путях префикс '/mnt/' удаляется.
      * Если путь является абсолютным, то такой путь используется без изменений;
        в противном случае, к указанному пути добавляется префикс '/mnt/'.
  * MiniKassir.ini: удалены секции Skok и SkokMon 
   (не нужны; дефолтные значения зашиты в программу; значения, отредактированные пользователем, сохраняются в MiniKassirState.ini).

## [1.5.8] - 2017-03-21 19:45
### Added
  * Добавлена опция: настройки регистрации -> выгрузка отчёта (транзакций) после выполнения z-отчёта.
  * Добавлена опция: настройки регистрации -> использовать весы (зависимость от libQtSerialPort.so).
  * Добавлена возможность смены пароля администратора.
### Changed
  * Скок таймауты переведены в секунды и по умолчанию увеличены до 5 минут 
    (значения применяются только если MiniKassirState.ini не создан на момент запуска приложения).

## [1.5.7a] - 2017-03-20 15:10
### Fixed
  * Исправлено падение программы при включении режима внешнего соединения 
    (падение связано с получением заряда устройства через КЯ при выключенном соединении с КЯ).
    
## [1.5.7] - 2017-03-16 18:15
### Added
  * Добавлены опции выключения устройства: если заряд акк. < X%; никогда.
### Changed
  * Операция 'Возврат*' переименована в 'Возвр расх'.

## [1.5.6] - 2017-03-15 21:00
### Added
  * Добавлены ещё два типа чека: покупка (расход), возврат покупки (возврат расхода).
  * Добавлен режим регистрации по умолчанию (в меню 'Настройки регистрации'). Значения: Приход, Расход.
  * Добавлен индикатор заряда аккумулятора на верхнюю панель (в окне авторизации и регистрации).
### Changed
  * Максимальное число вводимых символов в поле ввода увеличено с 16 до 18 символов (для возможности вводить 18-символьные штрихкоды).
  * Режимы регистрации 'Продажа' и 'Покупка' заменены на 'Приход' и 'Расход'.
### Coded
  * Локальная верхняя панель заменена глобальной верхней панелью. Теперь есть возможность вывести эту панель в любое окно.

## [1.5.5] - 2017-03-13 22:35
### Added
  * Добавлена возможность ввести реквизиты покупателя при открытом чеке. Реквизиты передаются в КЯ(ФН) и печатаются на чеке.
  * Добавлена возможность ввода данных в диалоге с клавиатурой через сканер.
### Changed
  * При открытии диалога ввода с клавиатуры теперь выделен текущий текст.
### Fixed
  * В режиме регистрации по свободной цене теперь, если смена закрыта, шлется команда открытия смены.
  * В режиме регистрации по свободной цене теперь в качестве названия товара передается 1 пробел.
    Раньше передавалась пустая строка, что в новой версии КЯ приводило к ошибке 'Некорректные параметры в команде'.
  * В режиме регистрации по свободной цене, если при вводе секции отменить чек, то после отмены касса по прежнему останется в режиме запроса секции.
    Теперь переходит в режим ввода цены.
  * Программа падала, если печатаемая строка была больше 40 символов. Исправлено в оболочке kktlib.

## [1.5.4] - 2017-03-13 16:35
### Fixed
  * Налоги, номера которых не укладываются в диапазон от 1 до 4, теперь игнорируются.
    Раньше такой налог приводил к ошибке КЯ 'Некорректные параметры в команде'.
  * Теперь, если в реквизитах товара не указан 'Текст для печати' и не указано 'Название', то в КЯ такой товар передается как 1 пробел.
    Раньше такой товар приводил к ошибке КЯ 'Некорректные параметры в команде'.

## [1.5.3] - 2017-03-11 16:15
### Changed
  * Пункт меню 'Аутентификация' заменен на 'Авторизация'.
### Fixed
  * Не работала докачка частей при обновлении с сервера.

## [1.5.2] - 2017-03-10 20:30
### Added
  * Добавлена возможность тестирования устройства.
### Changed
  * В меню 'Выгрузка транзакций' переименована в 'Выгрузка отчёта'.
### Fixed
  * Вынимание сканера из usb-порта приводило к перезагрузке программы.
  * ЕГАИС: добавлена посылка отмены чека, если чек не удалось закрыть в ККТ.
  * Настройки файлового обмена зависили от предыдущего состояния клавиатуры, установленного на других экранах настроек.
    Для воспроизведения: сначала нужно отредактировать настройки файлового обмена (файл выгрузки), затем порт егаис, 
    затем вернуться в настройки файлового обмена. Название файла отчета меняется на введенный до этого порт егаис.

## [1.5.1] - 2017-03-09 13:40
### Added
  * Добавлена возможность редактировать настройки ЕГАИС.
  * Добавлена поддержка налогов.
  * Добавлена возможность выгрузки ТР-ций за указанный период.
  * Добавлена возможность ввода цены товара, если она равна 0.
### Changed
  * Добавлен вызов команды umount (размонтирование) сетевой папки при файловом обмене через сетевую папку после завершения обмена.
### Fixed
  * Bug: Невозможно продать товар, если текст для печати пустой, а заполнено только название.
    Теперь, если текст для печати отсутствует, то используется название товара.
  * При загрузке справочника товаров в БД писались реквизиты 'Макс. процент скидки' и 'Макс. процент бонуса' всегда равными 0.
  * Исправлена работа с usb-hid. Теперь должно поддерживаться большее число сканеров.
### Coded
  * Большой рефакторинг кода, организующего работу с БД товаров и других справочников кассира.

## [1.5.0] - 2017-02-10 18:40
### Added
  * Добавлены вызовы sync() при обновлении.

## [1.4.9] - 2017-02-10 02:30
### Fixed
  * Исправлена команда перемещения папки. Вместо qt используется linux-shell. Теперь работает экспорт таблиц КЯ.
  * Пароль админа для редактирования настроек работает теперь и вслучае ошибки КЯ при логине.
  * При экспорте таблиц теперь команда закрытия смены подается только в случае, если смена открыта.

## [1.4.7] - 2017-02-09 18:20
### Fixed
  * Исправлена ошибка в пути, определяющим нужна ли миграция КЯ.

## [1.4.6] - 2017-02-09 16:20
### Changed
  * Уменьшено замусоривание лога от gprs-демона.
### Fixed
  * При обмене со скок-серверами использовался неверный uin: брались последние 8 цифр от зав. номера. Теперь берутся все цифры.

## [1.4.5] - 2017-02-08 23:00
### Added
  * Добавлена выгрузка таблиц КЯ.
  * Добавлена обработка флага $$$CLR при распарсивании файла справочника (очистка справочника перед его загрузкой).
### Changed
  * Теперь нулевые байты от usb-hid устройства игнорируются.
  * Теперь просмотр/редактирование настроек доступно только для администратора (за исключением первого экрана настроек).
### Fixed
  * Теперь, если транзакции не удалось выгрузить в сетевую папку, то выдается ошибка.

## [1.4.4] - 2017-02-03 16:00
### Added
  * Теперь при обновлении после его распаковки выводится сообщение о текущей версии ПО и о новой версии 
    и запрашивается подтверждение обновления от пользователя.
### Fixed
  * При возврате по номеру чека в чек возврата пападали ТР-ции отмены, если имели номер чека равный оригинальному номеру чека для возврата.
  * Не работал возврат по номеру чека, следующего сразу за открытием смены.
    Это было следствием того, что при записи ТР-ций в БД испольозовался номер чека, принадлежащий чеку открытия смены.

## [1.4.3] - 2017-02-01 17:45
### Changed
  * Загрузка справочника и выгрузка транзакций вынесены на первый экран меню. Повышена стабильность скачиваня файлов по ftp.
  * Изменена настройка типа сети по умолчанию: была Wi-Fi, стала - Ethernet.
  * Теперь при старте в зависимости от текущих настроек сети MiniKassir оставляет включенным только один сетевой интерфейс (eth0 или wlan0 или ppp0).

## [1.4.2] - 2017-01-30 17:40
### Added
  * Добавлена отправка пакета АРМИ на мон. сервер, если ещё не был успешно отправлен.

## [1.4.1] - 2017-01-27 19:20
### Fixed
  * Теперь перед выгрузкой транзакций в файл сначала создаются все родительские папки.
  * Fixed regression bug. При возврате (и сторно) производилась продажа вместо соотв. действия.

## [1.4.0] - 2017-01-18 17:15
### Added
  * Обновление ПО с мон. сервера.
  * Добавлена запись в БД транзакции 'Акцизный товар'
  * Добавлено сканирование акцизных товаров при возврате по номеру чека.
  * Добавлены настройки файлового обмена. Добавлена поддержка ещё двух видов: сетевая папка, ftp.
### Changed
  * Теперь при работе с фин. и мон. серверами в качестве uin используется заводской номер кассы.
  * Теперь при работе с фин. и мон. серверами номер кассы слева дополняется пробелами, а не нулями.
  * Теперь при выключенном дисплее нажатие клавиш на устройстве включает дисплей, но не изменяет текущее состояние в программе.

## [1.3.0] - 2016-12-22 11:45
### Added
  * Обновление ПО с флешки.
  * Загрузка признака 'Акцизный товар' с фин. сервера
  * Добавлена запись ТР-ции сторнирования в БД, а также её выгрузка в фин. сервер.
  * Добавлена загрузка акцизных товаров из spr-файла.
  * Добавлена опция в настройки регистрации 'Объединение товаров в одну позицию чека при подборе товара с одинаковым кодом'.
  * Реализован новый механизм чтения usb-клавиатуры - через /dev/input/event1 вместо /dev/tty1.
    Теперь можно использовать сканер с настройками по умолчанию (конец ввода - '\n').
  * В фин. сервер при возврате по номеру чека теперь отсылается номер оригинального чека.
### Changed
  * MiniKassirD: изменены условия перезапуска MiniKassir. 
    Было, если exitCode == 0 || exitCode >= 100, то выходим, в остальных случаях - перезапуск.
    Однако segfault приводит к exitCode==139 и перезапуска нет.
    Поэтому теперь, если exitCode == 0 || exitCode == 143 (when kill app), то выходим, в остальных случаях - перезапуск.
  * По умолчанию, теперь экран никогда не выключается.
### Fixed
  * В фин. сервер не выгружался номер смены при отмене чека, теперь выгружается.
  * При проведении чека в КЯ передавалась сумма покупки вместо цены товара.
  * В БД теперь все ТР-ции выгружаются с корректным знаком суммы при продаже/возврате.
  * "Если в документ Выплата или документ Внесение подобрать товар и нажать "ОК" происходит перезагрузка программы."
    В этих режимах убрана кнопка 'Подбор' и кнопка смены режима подбора. Теперь в этих режимах нельзя подбирать товар.
  * Теперь при закрытии чека, если все товары отсторнированы, выводится ошибка. Такой чек не закрывается и не передается в КЯ.
  * Bug #2092. ECR Name нужно использовать для передачи в кассовое ядро как название товара.
  * Bug. На фин. сервер ТР-я возврата по номеру чека выгружалась как отд. товар.
### Coded
  * Масштабный рефакторинг кода. Выделена доменная сущность Register (касса), а также её другие виды в зависимости от контекста использования.
    Уменьшено число зависимостей в бизенес-логике регистрации товара.
  
## [1.2.4] - 2016-12-01 21:00
### Added
  * Task #2070. Добавлена возможность менять режим регистрации из меню (по свободной цене или с подбором товара).
  * Реализовано сканирование акцизной марки при продаже, возврате. 
    (При возврате по номеру чека сканирование марки пока не поддерживается).
### Changed
  * Изменена кодировка данного файла на utf-8 (with windows line endings).
### Fixed
  * Не задавался номер смены при отмене чека и соответственно не выгружался в фин. сервер. Теперь задается.
  * Исправлена загрузка товаров с фин. сервера: товары не загружались из-за некорректной обработки 
    неизвестных приложению tlv-тегов длиной 0 байт (новый тег - дробное кол-во).
  * Исправлено падение в режиме продажи по свободной цене при выборе пункта меню 'Конфигурация', если при этом
    при компиляции не была задана ни одна из существующих конфигураций. Теперь просто ничего не происходит.
  * Исправлено падение при внесении или выплате.
  * При возврате в фин. сервер уходили отриц. суммы и поэтому отвергались сервером. Исправлено, теперь уходят положительные суммы.
  
## [1.2.3] - 2016-11-30 16:30
### Added
  * Добавлена загрузка артикула с фин. сервера.
  * Доработан egais. В БД создана таблица с признаком того, является ли товар акцизным (необходимо удалить старую БД).
    (Пока не реализована загрузка признака акцизного товара из spr-файла.)
### Changed
  * Изменен таймаут бездействия, используемый для отключения экрана: был 30сек, а теперь - 300сек.
  
## [1.2.2] - 2016-11-28 15:30
### Added
  * Task 2060, 2061. Для отправки в фин. сервер: реализовать запрос deposit – внесение, реализовать запрос payment – выплата.
### Changed
  * В режиме регистрации и оплаты теперь можно ввести 16 символов. Раньше было 13.
  * Скрипт запуска MiniKassirD.sh изменен так, чтобы MiniKassir можно было убить одной командой killall MiniKassir,
    а не двумя (приходилось сначала убивать демон, а затем само приложение).
  * Изменен алгоритм возврата по номеру чека (история возвратов не учитывается).  
### Fixed
  * Bug. При снятии Z-отчета в БД писалась ТР-я, где выручка всегда равнялась 0. Также в БД теперь пишется 'Наличность в кассе'.
  * Bug. В режиме регистрации и оплаты нельзя было ввести только один ведущий ноль, только два и более.
  * Bug. Фин. сервер: при возврате по номеру чека в поле 'Код товара' писалась дата вместо кода товара.
  
## [1.2.1] - 2016-11-23 15:35
### Fixed
  * Восстановлен старый механизм проверки пароля пользователя, т.к. иначе при тех. обнулении все пароли становятся некорректными
    из-за невозможности считать таблицу пользователей из КЯ.
    
## [1.2.0] - 2016-11-23 10:45
### Added
  * Добавлена загрузка ШК товара при необходимости (например, при отправке чека в ЕГАИС или фин. сервер).
  * Теперь при загрузке приложения считывается таблица всех возможных пользователей (пароль, имя) из КЯ.
  * Task 2062. В поле ввода для поиска нужно иметь возможность вводить лидирующие нули.
  * Task 2067. Реализовать отправку отмены на фин. сервер.
  * Теперь транзакции выплаты и внесения добавляются в БД.
### Changed
  * Task 2059. Передавать в финансовый сервер имя кассира вместо его пароля.
  * Task 2063. В фильтре при подборе теперь показано минимальное число символов, необходимое для применения фильтра.
  * Теперь по умолчанию для ввода фильтра используется русский, а не английский.
### Fixed
  * Теперь в фин. сервер передается inn из запроса состояния ККТ, вместо константы '123456789012'.
    Если инн не задан, то передается строка из 12 нулей.
  * Bug. При загрузке товаров с фин. сервера некорректно грузились в БД штрихкоды (не задавался код ШК, только владелец).
  * Bug. При возврате по коду через форму оплаты режим возврата не переключался обратно на режим продажи.
  * Bug. На фин. сервер в чеках не выгружались ШК товаров.
  * Bug 2064. Переключение режима ввода клавиатуры. Если зайти в настройки яркости экрана, где вводятся цифры, а потом открыть настройку точки доступа wifi, то там тоже только цифры дает вводить - клавиатура не переключается.
  
## [1.1.0] - 2016-11-16 13:00
### Added
  * Task 2056. Реализовать запрос shift_open – открытие смены.
  * Task 2057. Реализовать запрос shift_close – закрытие смены.
### Fixed
  * Bug 2055. Выгружать в финансовый сервер правильный номер смены.
  * Теперь, если смена была закрыта и её не удалось открыть, то дальше чек не передается в КЯ. Раньше всё равно передавался.

## [1.0.6] - 2016-11-08 20:15
### Changed
  * 'СКоК' в настройках заменено на 'Финансовый сервер'

## [1.0.5] - 2016-11-07 19:50
### Added
  * Добавлена возможность редактировать настройки СКоК через главное меню.
  * Добавлена возможность генерации СКоК-токена и отправки его на сервер, а также его можно распечатать.
  * Добавлен пункт меню 'Перезагрузка MiniKassir'.
  * Добавлен MiniKassirD.sh в папку MiniKassir. 
  * Служит в качестве демона, который перезапускает MiniKassir в случае его падения или выхода из него.
   (Теперь, чтобы убить MiniKassir необходимо убить сначала MiniKassirD.sh)
### Fixed
  * Выбор пункта меню при помощи цифр теперь выделяет этот пункт, как и в случае выбора пункта меню стрелками.