getWritableDatabase()
В приложении необходимо создать собственный класс, наследуемый от SQLiteOpenHelper. В этом классе необходимо реализовать указанные обязательные методы, описав в них логику создания и модификации вашей базы.
В этом же классе принято объявлять открытые строковые константы для названия таблиц и полей создаваемой базы данных, которые клиенты могут использовать для определения столбцов при выполнении запросов к базе данных.
.4 Интерфейс приложения
Интерфейс приложения - элементы и компоненты приложения, обеспечивающие быстрый и удобный и интуитивно-понятный доступ к информации.
Интерфейсом по сути является material-дизайн. Если дизайн приложения привлекает больше внимания, чем услуги, предложенные на нем, то приложение становится неэффективным, не приносящим прибыль.
Цветовая гамма приложения должна радовать, вызывать приятные ассоциации у пользователей, а не отталкивать или вызывать у них дискомфорт. Чересчур яркие цвета могут отвлекать пользователей от содержимого.
Интерфейс приложения составляют: система навигации, компоновка меню, палитра цветов и вспомогательная цветовая палитра сайта, типы и размеры основных шрифтов.
На этом этапе весь функционал распределяется по экранам, принимается решение, где именно будут находиться кнопки и текстовая информация. Определяются, каким образом будут сгруппированы элементы, продумываются поведение элементов. В итоге должно получиться динамичный прототип будущего приложения.
Качественно разработанный макет делает материал упорядоченным, легко-читаемым и удобным для зрительного восприятия.
1.5 Инструкция пользователю
Инструкция мобильного приложения «ОПТ СЕРВИС»
Установка программы «ОПТ СЕРВИС» на мобильное устройство
Вариант 1. Новое оборудование
1. Включите мобильное устройство.
. По шагам, которые вам будет предлагать мобильное устройство выполните все действия. Для использования мобильного устройства важно создать аккаунт Google, если он не будет создан, не возможно будет установка программы на мобильное устройство.
. Найдите на рабочем столе мобильного устройства кнопку и нажмите ее.
. Когда откроется программа «Google Play» нажмите кнопку «Поиск» или знак «лупа» для активации режима поиска в программе и введите в поисковом поле без кавычек название программы на русском языке ОПТ СЕРВИС. После ввода этой записи нажмите кнопку «Поиск» ил и «Лупа». Через некоторое время устройство покажет вам программы, которые имеют указанные вами поисковые данные.
. Выбирете программу «ОПТ СЕРВИС» разработчик ООО «ЛАЙКСОФТ» (эта программы обычно стоит первой в списке) и коснитесь данной записи в списке программ для выбора.
. Устройство откроет описание программы и в верхней левой части экрана появится кнопка «Установить», нажмите ее для активации режима установки и подтвердить разрешения для этой программы, после этого начнется процесс загрузки и установки программы в мобильное устройство.
. По окончании загрузки и установки программы устройство Вам сообщит об окончании установки и в правом верхнем углу экрана появятся две кнопки «ОТКРЫТЬ» или «УДАЛИТЬ», нажимаете «ОТКРЫТЬ».
Вариант 2. Оборудование включено и имеет аккаунт Google
Выполняются пункты с 3 по 7 Варианта 1.
Активация программы «ОПТ СЕРВИС»
После того как вы нажали кнопку «ОТКРЫТЬ» у вас появится окно активации программы «ОПТ СЕРВИС»
Для продолжения активации вы должны получить лицензионный номер у ответственного сотрудника вашей компании или взять его в «Личном кабинете» на сайте #"justify">Лицензионный ключ вводится только латинскими буквами и цифрами, закончив ввод лицензионного номера, нажмите кнопку «ОК».
Если вы ввели правильный лицензионный номер, то устройство напишет об успешной регистрации и откроет «Главное меню» программы.
В случаях, если программа выдаст иные сообщения, необходимо проверить правильность ввода лицензионного номера и проверить доступность подключение к сети Интернет
Для активации программы необходимо подключение к сети Интернет.
Главное меню программы «ОПТ СЕРВИС»
Изображено главное меню программы. Кнопки имеют следующее назначение:
«СВЯЗЬ» - в одно касание запускает режим обмена данными между мобильным устройством и сервером «ОПТ СЕРВИС».
«ДОКУМЕНТЫ» - позволяет просмотреть документы созданные на мобильном устройстве с возможностью настройки периода просмотра документов, а так же по типам документов (ЗАКАЗ, ВОЗРАТ, ПКО, ФОТО) и статусу документов (ОТПРАВЛЕН, ЧЕРНОВИК или ждет Отправки).
«НАСТРОЙКИ» - позволяют производить дополнительные пользовательские настройки. В частности: менять цветовую схему, устанавливать за сколько дней предупреждать о наступлении срока оплаты, управлять режимом отправки фото (только Wi-Fi или Wi-Fi и мобильный интернет). Данная функция управляет только отправкой фотографий, загрузка фотопрезентера осуществляется только по каналуWi-Fi.
Разделы «ЗАДАЧИ» и «ОТЧЕТЫ» находятся в разработке
«Помощь» - содержит краткие инструкции по оформлению документов в программе «ОПТ СЕРВИС».
«СТАТИСТИКА» - содержит информацию об ID мобильного устройства, версии программного обеспечения, дате и времени последней синхронизации, размере базы данных и объеме хранящихся фото на мобильном устройстве для программы «ОПТ - СЕРВИС».
«СООБЩЕНИЯ» - хранится информация о сообщениях, полученных от руководителя из личного кабинета программы «ОПТ-СЕРВИС».
«МАРШРУТЫ» - основное рабочее окно торгового представителя в котором находится список торговых точек, которые необходимо посетить в течение рабочего дня.
Данное сообщение выходит после входа в главное меню и нажатия кнопки «СВЯЗЬ», когда устройство не может получить данные которые необходимо загрузить в мобильное устройств.
Решение: связаться с ответственным сотрудником вашей фирмы или с сотрудником технической поддержки разработчика, после того как этими сотрудниками будут выполнены необходимые действия, вам необходимо нажать кнопку «СВЯЗЬ» для загрузки информации в ваше мобильное устройство.
Подтверждение наличия данных является процесс загрузки, который у вас будет происходить с отображением информации на экране вашего мобильного устройства.
Маршруты и как оформить документы
После нажатия кнопки «МАРШРУТЫ» откроется окно
Здесь в режиме слайдера вы можете просматривать списки торговых точек распределенные по дням недели. С помощью движения пальца вправо или влево вы можете переключать дни недели.
Внимание! По умолчанию всегда открывается текущий день недели.
В правом верхнем углу нарисована «ЛУПА» для поиска клиента в текущем дне или при настройке все во всем списке торговых точек.
Справа, от названия и адреса торговой точки имеется информация об наличие задолженности у клиента.
Первая строка с суммой обозначает общий долг клиента.
Вторая строка обозначает красным цветом сумму просроченной задолженности и количество дней просрочки. Желтым цветом подсвечивается в случае, если настроен режим предупреждения (Устанавливается в «НАСТРОЙКАХ» за какое количество дней предупреждать о наступлении срока оплаты).
Если обе суммы белые, то срок оплаты не наступил.
Если сведения отсутствуют, то у клиента нет долга.
Для выхода из этого режима необходимо нажать стрелку в верхнем левом углу экрана.
Для планшетов, состояние задолженности отображается так же, как и на смартфонах.
При выборе торговой точки, справа в отдельном окне появляется контактная информация о торговой точке. В правом окне, при движении пальцем влево отображается информация о состоянии задолженности клиента. И детализированные данные по не оплаченным документа, а так же кнопки для настройки отображения информации.
Для выбора торговой точки коснитесь необходимой записи торговой точки, у вас откроется следующее окно.
В этом окне три закладки «Клиент», «Задачи», «Результаты».
«КЛИЕНТ» содержит информацию о названии клиента, названии торговой точки и адресе торговой точки. Поля «Задолженность» и «Просрочка» активные, при касании этих записей вы получаете информацию со списком неоплаченных документов с указание даты номера и суммы долга по документу и суммы поступившей оплаты по документу (если документ оплачен частично).
«ЗАДАЧИ» здесь вы можете сформировать следующие документы:
«Собрать GPS координату» - выполняется 1 раз, на расстоянии 20-50 метров от торговой точки на улице, сохраняется в базе данных для обеспечения доставки товара.
«СОБРАТЬ ЗАКАЗ» - позволяет оформить заказ в торговой точке. Обеспечивает возможность доступа к списку товаров, остаткам, ценам и вводу данных для оформления заказа.
«ПРИНЯТЬ ОПЛАТУ» - позволяет при наличных расчетах с торговой точкой сформировать документ ПКО с возможностью частичной или полной оплаты по выбранной накладной.
«ОФОРМИТЬ ВОЗВРАТ» - позволяет оформить документ возврат от покупателя. Работает так же, как заказ покупатель.
Особенностью данного документа является то, что в списке товаров не отображается остаток на складе, сумма возврата рассчитывается из прайса действующего для данной торговой точки на момент оформления возврата.
«СДЕЛАТЬ ФОТО» - позволяет сделать фотографию торговой точки или полки в торговой точке. Можно сделать до 5 фотографий прикрепленных к визиту.
«РЕЗУЛЬТАТЫ» - здесь вы можете посмотреть, какие результаты визит достигнуты, то есть документы, сформированные в мобильном устройстве.
Оформление «ЗАКАЗА»
В закладке «ЗАДАЧИ» выбираете касанием пункт «ОФОРМИТЬ ЗАКАЗ». У вас откроется окно «ПРАЙС». Со списком товарных групп расположенных, в том порядке, как на бумажном прайс-листе и в вашей учетной системе. Необходимо открывая по порядку необходимые папки, дойти до уровня товара, где будет показано наименование товара, остаток на складе и цена предусмотренная для данного клиента.
При касании необходимого товара на экране появится клавиатура для ввода необходимого количества товара. После ввода количества, на клавиатуре необходимо нажать в правом нижнем углу клавиатуры ЗЕЛЕНУЮ КНОПКУ СО СТРЕЛКОЙ, действие этой кнопки идентично действию кнопки «Enter» на клавиатуре компьютера.
Внимание!
Для изменения введенных данных необходимо выбрать необходимую позицию товара и при появлении данных на клавиатуре нажать СТРЕЛОЧКУ С КРЕСТИКОМ для стирания записи о количестве или ввести необходимое количество и нажать кнопку с ЗЕЛЕНОЙ СТРЕЛОЧКОЙ для подтверждения изменений.
В товарах так же, как и в маршрутах используются механизмы слайдера для получения или отображения информации.
Пример: строка «ИТОГИ» «ПРАЙС» «ИСТОРИЯ»
Находясь в «ПРАЙС» при движении пальцем в право - вы попадете на экран «ИТОГ», где у вас будет отображена собранная информация по товарам которые вы оформили в заказ, его количество и стоимость по каждой товарной позиции.
В нижней части экрана отображается информация и Итоговыми значениями по сумме, весу, количеству в шт. и кг.
Находясь в «ПРАЙС» при движении пальцем в лево во попадаете в режим - «ИСТОРИЯ ПРОДАЖ», где отображается список товаров по последним четырем продажам. Представлена информация по Заказам, Реализациям, Возвратам и остатку товара на полке, с указанием дат оформления заказа.
В этом режиме вы также можете оформлять заказ, работая только со списком товаров, которые уже поставлялись в торговую точку. Для добавления товаров, которые вы планируете отгрузить впервые, необходимо работать через «ПРАЙС», так как в этом режиме вы имеете доступ к списку всех товаров, которые имеются в наличие на складе вашей фирмы.
Описание знаков и функций, расположенных в верхней строке, справа от надписи «ЗАКАЗ».
«ЛУПА» - позволяет искать товары по любым сочетаниям букв и цифр (обеспечивая поиск товаров при большом их количестве. Активируется нажатием на этот знак и после ввода букв или цифр нажать «ПОИСК» или «ЛУПУ» (в разных моделях телефоны и версиях системы Андроид используются разные кнопки).
«ВОРОНКА» (фото. 1) - это фильтр по товарам, активируется нажатием на данную кнопку.
По умолчанию зеленые галочки с права, от надписи «НАЛИЧИЕ» и «ЦЕНА» установлены, что позволяет мобильному устройству убрать из списка товары, которые отсутствуют на складе и на которые не установлены цены. При снятии галочек, будут показаны товары отсутствующие на складе или без цены. Данная настройка работает как вместе, так и раздельно.
Фото.1
Знак, находящийся справа от «ВОРОНКИ» - это режим отображения по товарам, активируется нажатием на данную кнопку.
По умолчанию всегда товары отображаются режим «Списком с папками», при выборе режима «Список», товары будут показаны списком в алфавитном порядке без папок.
Фото.2
При выборе режима «ПРЕЗЕНТОР» информация на экране устройства отображается в виде фотографий товара малого формата с информацией по названию, остатку и цене за единицу товара.
При касании поля фотография и удержании более 2 сек. Происходит увеличение фото по размеру экрана мобильного устройства. Для возврата обратно, необходимо нажать кнопку «СТРЕЛОЧКА НАЗАД».
В этом режиме так же возможен ввод данных для оформления количества заказываемого товара, путем короткого касания желтого поля наименования товара.
Появится клавиатура для ввода данных. Дальнейшие действия такие же, как при оформлении в режиме «Список с папками».
Выход из режима оформления ЗАКАЗ.
Для выхода из режима «ЗАКАЗ» необходимо нажать стрелочку слева от надписи «ЗАКАЗ» в верхней части экрана. После этого появится диалоговое окно как на фото ниже.
ВЫ можете выбрать ТИП ОПЛАТЫ, если предусмотрено учетной политикой вашей организации.
ДАТУ ДОСТАВКИ, по умолчанию подставляется следующий день от текущей даты. Если вам необходимо изменить дату, то коснитесь поля дата, откроется календарь, где вы сможете выбрать нужную дату и он исчезнет.
Ввести комментарий, для активации коснитесь слова Комментарий. Появится штатная клавиатура для ввода необходимой информации. Объем комментария до 1000 знаков с учетом пробелов.
Действия кнопок: «Не охранять», «Черновик», «Отправить».
Режим «Не охранять» - предназначен для выхода из режима оформления «ЗАКАЗ» без сохранения данных.
Режим «Черновик» - предназначен для сохранения ЗАКАЗа в документах на мобильном устройстве, с возможностью последующего редактирования, но без отправки в офис.
Режим «Отправить» предназначен для сохранения ЗАКАЗа и последующей отправки в офис для оформления операторами.
ВАЖНО!!!
После сохранения вы попадаете в «ЗАДАЧИ», для выполнения других задач.
Для выхода из режима «ВИЗИТ», после выполнения всех или одной, нажмите стрелку слева от надписи «ВИЗИТ». Вы вернетесь в меню «МАРШРУТЫ» для продолжения оформления документов в других торговых точках по маршруту.
Для выхода из режима «МАРШРУТЫ», нажмите стрелку слева от надписи «МАРШРУТ» в попадете в главное меню программы.
Для отправки данных и получения обновленных сведений по остаткам и дебиторской задолженности из учетной системы вашего предприятия нажмите кнопку СВЯЗЬ».
Оформление документа «ВОЗВРАТ»
Оформление документа «ВОЗВРАТ» аналогично оформлению документа «ЗАКАЗ».
Сохранение и выход из документа «ВОЗВРАТ» аналогично выходу из документа «ЗАКАЗ».
Сделать Фото.
Нажимаете в окне задач «Сделать фото». После этого происходит активация режима фотоаппарата вашего мобильного устройства. Вы производите фотографирование и сохраняете фотографии в мобильном устройстве. При активации режима «СВЯЗЬ» происходит отправка фотографий на сервер.
ВАЖНАЯ ИНФОРМАЦИЯ,
Срок хранения фотографий на мобильном устройстве составляет 10 дней, для исключения случаев переполнения памяти мобильного устройства.
Загрузка фотографий для фото-презентора осуществляется только по каналу связи Wi-Fi.
2. Листинг программы
программа приложение интерфейс
package com.likesoft.shop;
import android.app. Activity;android.app. Application;android.content. Intent;android.content. SharedPreferences;android.content. SharedPreferences. Editor;android.os. Environment;android.preference. PreferenceManager;android.view. ViewConfiguration;
com.crittercism.app. Crittercism;com.google.android.gcm.GCMRegistrar;com.likesoft.shop.services. SendService;com.likesoft.shop.theming. Theming;com.likesoft.shop.utils. Preparings;
java.lang.reflect. Field;
class MerkuryApplication extends Application {
static final int THUMBNAILS_SIZE = 150;
// public static String OPTServiceFolder = Environment.getExternalStorageDirectory().toString()+»/optservice»;static final String PhotosFolder = Environment.getExternalStorageDirectory().toString() + «/optservice/photos»;static final String ExternalDbFolder = Environment.getExternalStorageDirectory().toString() + «/optservice/database»;
public static SharedPreferences pref;
@Overridevoid onCreate() {.onCreate();
// Настройка по умолчаниюprefDef = PreferenceManager.getDefaultSharedPreferences(this);(! prefDef.getBoolean («Default_setting», false)) {ed = prefDef.edit();.putString («GPS_ALLOWED», «0»);.putBoolean («Default_setting», true);.commit();
}
.setDefaultUncaughtExceptionHandler (Log.getInstance(this));
//GCM.checkDevice(this);.checkManifest(this);
//Crittercism.initialize (getApplicationContext(), «afd8389a692f411698b4ff089678219900555300»);{config = ViewConfiguration.get(this);menuKeyField = ViewConfiguration.class(«sHasPermanentMenuKey»);(menuKeyField!= null) {.setAccessible(true);.setBoolean (config, false);
}
} catch (Exception e) {.printStackTrace();
}
gcmId = GCMRegistrar.getRegistrationId(this);
if (gcmId.equals(«»)) { // Если отсутствует, то регистрируемся
GCMRegistrar.register (this, GCMConfig.SENDER_ID);
} else {.i (this, «GCM: Already registered:» + gcmId);
}
= PreferenceManager.getDefaultSharedPreferences(this);ed = pref.edit();.putString («opened_visit», «»);.commit();
// Копируем базу с флешки в приложуху
// File f = new File (Environment.getExternalStorageDirectory().toString()+»/db.sqlite»);
// try {
// FileManagement.copy (f, new File (DbOpenHelper.getPath(this)));
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// Отправка данныхi = new Intent (this, SendService.class);(i);
}
@Overridevoid onTerminate() {.onTerminate();
}
static boolean PrepareActivity (Activity a) {.switchStyle(a);
(! Preparings.checkVersion(a)) {
return false;
}
if (! Preparings.checkGPS(a)) {false;
}
Preparings.checkGPRS(a);
}
}
package com.likesoft.shop.db;
import android.content. Context;android.content. SharedPreferences;android.database. Cursor;android.database.sqlite.SQLiteDatabase;android.database.sqlite.SQLiteOpenHelper;android.os. Environment;android.preference. PreferenceManager;android.util. Log;
com.likesoft.shop. MerkuryApplication;com.likesoft.shop.utils. PhotosManagement;
java.io. File;
class DbOpenHelper extends SQLiteOpenHelper {
static final String TAG = «DbOpenHelper»;static final String DATABASE_NAME = «db.db»;static final int DATABASE_VERSION = 23;
static DbOpenHelper mInstance;static SQLiteDatabase db;
// Структура описана по след. ссылке:
//https://docs.google.com/a/mobexpert.ru/document/d/1oe5RmmOkxxHxypKRv_4DAn8kROQ7GlC3_9IisIo0Cec/edit#
private static final String[] CREATE_SCRIPT = new String[] {
«CREATE TABLE tabstates (name text PRIMARY KEY,» +
«md float)»,
«CREATE TABLE customers (_id int PRIMARY KEY,» +
«name text,» +
«searchname text,» +
«customertype_id int)»,
«CREATE TABLE customertypes (_id int PRIMARY KEY,» +
«name text,» +
«receivableviewmode int,» +
«image_texttext,» +
«image_urltext)»,
«CREATE TABLE shops (_id int PRIMARY KEY,» +
«name text,» +
«searchname text,» +
«address text,» +
«customer_id int,» +
«phone text,» +
«latitude float,» +
«longitude float,» +
«status int,» +
«shopclass_id int,» +
«list_visited text,» +
«class_trade_point text)»,
«CREATE TABLE shopclasses (_id int PRIMARY KEY,» +
«name text,» +
«image_texttext,» +
«image_urltext)»,
«CREATE TABLE contactfaces(_id text PRIMARY KEY,» +
«name text,» +
«position text,» +
«customer_id int,» +
«shop_id int,» +
«state int)»,
«CREATE TABLE contactdata(_id text PRIMARY KEY,» +
«type int,» +
«value text,» +
«contactface_id int,» +
«customer_id int,» +
«shop_id int,» +
«state int)»,
«CREATE TABLE routes (_id int PRIMARY KEY,» +
«shop_id int,» +
«ord int,» +
«weekday int)»,
«CREATE TABLE receivable (_id int PRIMARY KEY,» +
«customer_id int,» +
«shop_id int,» +
«agent_id int,» +
«receivable_sum float,» +
«overdue_sum float,» +
«overdue_days int)»,
«CREATE TABLE debtdocs (_id int PRIMARY KEY,» +
«customer_id int,» +
«shop_id int,» +
«agent_id int,» +
«agent_name text,» +
«doc_uid text,» +
«doc_name text,» +
«doc_date datetime,» +
«doc_type int,» +
«doc_firm_id int,» +
«doc_contract_id int,» +
«debt float,» +
«payment_date datetime)»,
«CREATE TABLE docs (_id text PRIMARY KEY,» +
«type int,» +
«stateint)»,
«CREATE TABLE docproperties (doc_id text,» +
«property int,» +
«value text)»,
«CREATE TABLE docitems(doc_id text,» +
«multirow_id int,» +
«object_id