Министерство образованиея и науки РФ Федерального государственного автономного образовательного учреждения высшего образования

"Национальный исследовательский технологический университет МИСиС"

Студент: Дырков А.В.

Руководитель: Пантелев С.В.

Курсовой проект

Разработка онлайн-кассы для мобильных устройств на базе Android

Разработать приложение онлайн-кассы

Цель курсового проекта

54-ФЗ: Новый порядок применения ККТ

С 1 февраля 2017 года контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных — новые правила установлены в 54-ФЗ ст.2 п.2.

 

Шифровальное (криптографическое) средство защиты фискальных данных, является программно-аппаратным средством криптографической защиты фискальных данных (СКЗФД) и предназначен для обеспечения противодействия угрозам безопасности информации (фискальных данных) в составе контрольно-кассовой техники.

Фискальный накопитель

Фискальный Накопитель

Терминалы Эвотор

Алгоритм регистрации

1. Подача заявления в ИФНС через nalog.ru

2. Получение карточки регистрации ККТ из ФНС

3. Регистрация кассы в личном кабинете ОФД.

Требования к функциональности

  • Печать корпоративных и фискальных чеков по «54-ФЗ»;
  • Поддержка системы лояльности;
  • Поддержка маркетинговых акций;
  • Поддержка online и offline режима;

Средства реализации

  • Язык программирования - JavaScript
  • Система управления состоянием - Redux
  • Интерфейс - ReactNative и React
  • База данных на устройстве - AsyncStorage

Состояние приложения

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

Состояние приложения

const  state = {
    applicationReducer: {
        name: 'cashbox',
        version:  '1.0.0',
        ...
    }
}

Изменение состояния Reducer

const  applicationReducer = (state, action) => {
    switch(action.type) {
        case 'CHANGE_VERSION': {
            return {
                ...state,
                name: action.payload
            }
        }
        default: {
            return state;
        }
    }
}

Изменение состояния

Action

const  changeName = (newName) => {
    return {
        type: 'CHANGE_NAME',
        payload: newName
    }
}

store.dispatch(changeName('cashBox'))

Взаимодействие между слоями приложения

Взаимодействие терминалов c API

BACHVARA

By AndreyDyrkov

BACHVARA

Курсовой проект

  • 117