АРМ кассира – оператора по учету и контролю

0

Дипломная работа

АРМ кассира – оператора по учету и контролю


 
 
 
Содержание
 



Введение. 6
1 Обзорно-постановочная часть. 8
1.1 Краткая истоия лотереи 8
1.1.1 Древняя лотерея 8
1.1.2 Зарождение Европейской лотереи 9
1.2 Характеристика фирмы ООО «СтарБет» 10
1.3 Благотворительная деятельность 12
1.4 Описание функций системы. 12
1.5 Организационная структура АРМ кассира 15
1.6 Обоснование типовых проектных решений по видам обоспечения. 16
1.6.1 По техническому обоспечению. 16
1.6.2 По программному обоспечению. 17
1.6.3 По информационному обоспечению. 19
1.6.4 По технологическому обоспечению. 22
1.7 Постановка цели и задачи на дипломное проектирование 23
2 Проектная часть 24
2.1 Информационное обоспечение комплекса задач. 24
2.1.1 Информационная модель и ее описание 24
2.1.2 Используемые классификаторы и системы кодирования 25
2.1.3 Характеристики входной оперативной и нормативно-справочной информации 27
2.1.4 Характеристика базы данных 27
2.1.5 Характеристика результатной информации 30
2.2 Программное обоспечение задачи 31
2.2.2 Структурная схема пакета 31
2.2.3 Технологическое обоспечение задачи . 32
3 Эксплуатационно-технологическая часть. 33
3.1 Запуск программы. 33
3.2 Функционал главной кассы. 34
3.2.1 Оплата карты. 34
3.2.2 Пополнение карты. 39
3.2.3 Создание новой идентификационной карты. 40
3.2.4 Проверка идентификационной карты. 42
3.2.5 Инкасация терминала. 43
3.2.6 Кассовые операции 46
3.2.7 Отчеты. 51
3.2.8 Терминалы. 55
4 Экономическая часть. 58
4.1 Выбор и обоснование методики расчета экономической эффективности проекта 58
 
4.2 Расчёт показателей экономической эффективности разрабатываемого проекта 59
4.2.1 Уменьшение прямых затрат 59
4.2.2 Капитальные затраты. 60
5 Безопасность труда. 63
5.1 Безопастность жизнедеятельности обслуживающего персонала АРМ кассира – оператора 63
5.2 Расчет количества светильников, необходимх для нормальной зрительной работы. 66
Заключение. 69
Список использованных источников. 70
Приложение А………………………………………72
 
 
 
 
 
 
 
 

Введение
 
Компьютеризация сделала рывок в нашей жизни и изменила ее. Сегодня каждая сторона нашего существования занята машинами. То же касается и работы, бизнеса, торговли. Новые компьютерные технологии упростили работу кассира. Каким образом - об этом и пойдет речь.
Современная автоматизация повысила качество обслуживания, упростила работу, сделала ее приятной, лишенной тех хлопот, которые сопутствовали раньше, наконец, сделала быстрой. Работник, который имеет дело с автоматизацией, следит за движением товара, видит движение денег, остатков. Все это позволяет бухгалтеру и руководству фирмы спланировать дальнейшую деятельность.
На сегодняшний день автоматизация рабочего места кассира (АРМ) - это важный модуль, который включает в себя использование самого разного привлекательного оборудования, а также программ обеспечения, которые разрабатываются на базе платформ Microsoft и работают с помощью уникальных инструментов. АРМ кассира включает в себя: возможность настройки программного обеспечения и уровня доступа, который определяется индивидуальными требованиями клиента, реализовать уровень безопасности, защиту данных, организацию обмена информацией с любым сторонним программным обеспечением, расширить бизнес при подключении сразу нескольких касс в локальную сеть, организовать самостоятельные торговые единицы, улучшить рабочее место, правильно и качественно вести приходованные товара.
Надо сказать, что человек - это не машина, так как он может ошибаться, болеть, уставать. Все это сказывается и на работе оператора. Если допустить такие ошибки, бизнес может пострадать. Важное преимущество автоматизации - интеллектуальный режим работы кассы, автоматическое переключение в различные режимы. Подобная автоматизация розничной торговли позволяет делу добиться дополнительных успехов и высоких результатов.
Автоматизация позволяет осуществить регистрацию пользователей, а также товаров при помощи штрих-кода, контролировать соответствие даты и времени на кассе, печатать нулевые Z-отчеты, заниматься поиском товара, отслеживать остатки, искать продукты и товары по Штрих-коду, по внутреннему Штрих-коду, по прайс-листу, по ценам, корректировать количество товара в чеке, добавлять и удалять позиции в чеке до его пробития. Владелец фирмы получает налаженную рабочую обстановку. Так как можно не только контролировать аппаратные ошибки, но и следить за историей покупок, за печатью отчета, осуществлять снятие итогового Z-отчета.
Целью настоящего дипломного проекта является разработка автоматизированного рабочего места (далее АРМ) кассира – оператора по контролю и учету. Это позволит в значительной степени упростить документооборот, снизить время доступа к информации при составлении отчетов, оптимизировать движение документов между подразделениями и организациями, и, как следствие, повысить общую эффективность хозяйственной деятельности.
К числу задач, решаемых в дипломном проекте можно отнести:
-       изучение ведения вопросов игроков и выявление недостатков существующей организации обработки поступающей информации, определяющих необходимость разработки данного проекта;
-       разработку постановки задачи:
-       обоснование выбора основных проектных решений;
-       разработку всех видов обеспечивающих подсистем;
-       обоснование экономической эффективности проекта;
-       совершенствование информационной базы, применение новых технических средств сбора, передачи, обработки и выдачи информации.
Назначение решения задачи сводится к таким аспектам автоматизации комплекса задач как:
-       упрощение оформления документов, приведение всей выпускаемой документации к единому виду;
-       ведение файлов о действующих договорах и дополнительных соглашениях с игроками;
-       обеспечение синхронизации данных о поступивших платежах и выставленных счетах по оплате услуг.
Дипломный проект состоит из введения, четырех частей и заключения:
-       во введении отражена цель дипломного проекта и обоснована необходимость разработки АРМ кассира – оператора по контролю и учету;
-       в аналитической части дипломного проекта приведено описание объекта управления, краткая история лотереи, характеристика фирмы ООО «Стар Бет», описание функции системы, а так же дается обоснование проектных решений по выбору технического, информационного, программного и технологического обеспечения;
-       проектная часть содержит непосредственную реализацию проектных решений, определенных в первой части. Здесь приведено описание дерева диалога, схемы данных комплекса задач, используемых классификаторов, входной и выходной информации, схемы взаимосвязи модулей и информационных массивов, технологического процесса сбора, передачи, обработки и выдачи информации;
-       в третьей части приводятся результаты расчета показателей экономической эффективности дипломного проекта на основе выбранной методики расчета;
-       в четвертой части, безопасность жизнедеятельности обслуживающего персонала АРМ кассира – оператора.
Объектом исследований дипломной работы является ООО «Бинго Бум».
 
 
 
 
 
 
1       Аналитическая часть
 
1.1 Краткая история лотереи.
 
1.1.1               Древняя лотерея
 
Лотерея, это один из тех видов азартной игры, которую, в сущности, сложно назвать игрой, а уж тем более азартной. Ведь если обратится к древним истокам возникновения и формирования человеческой цивилизации, то можно заметить, что сама по себе игра в лотерею основана скорее на неком судьбоносном решении, на исход которого человек был не в силах повлиять. Единственное, на что он может рассчитывать, это личное везение, присущее по ряду причин некоторым людям, либо на неожиданные подсказки судьбы. Многие ученые утверждают, что первое упоминание о лотерее, как своеобразной форме игры, проистекает из истоков древнегреческой мифологии. В мифологии каждый из древних воинов должен был вытянуть свой жребий, в принципе это так и называлось «бросить жребий», для того, чтобы вступить в поединок с грозным и непобедимым Зевсом. Выглядело это примерно таким образом: в золотой шлем бросали камушки, предварительно решив между собой какой из них будет являться судьбоносным. После того, как все камни в шлеме были тщательно перемешаны, каждый из воинов должен был подойти и не глядя вытянуть свой камень или, если быть точнее, свой жребий. Выбор был невелик, как в прочем и в сегодняшней лотерейной игре. Либо победа, либо проигрыш. Но вот только для мифологических воинов, вытянутый лотерейный билет в виде судьбоносного камушка, давал возможность остаться в живых или умереть с честью. Ну, что поделать, таковы были древние нравы. Хронологические события в различных древних источниках часто приводят к упоминанию о зарождении лотереи. Взять, к примеру, Библию – Книга Числа (глава 26), в ней вы можете увидеть описание, так называемого, диалога между Богом и Моисеем. Моисею было велено сосчитать всех «сынов Израилевых» для того, чтобы по жребию разделить между ними земли, расположенные вдоль реки Иордан. Этот библейский фрагмент историки рассматривают, как Божье поощрение, дарованное израильтянам за перенесенные испытания и лишения. В этом Библейском моменте историки видят некоторую связь с зарождением древней лотереи. Как можно увидеть в Библейском писании, человек получает вознаграждение, за проделанное действие. Аллегорией этому служит принцип действия современной лотереи, получение вознаграждения за победу в лотерейной игре[1].
Древние формы игры в лотерею одновременно зарождаются в Китае и древнем Риме. В 100 году до нашей эры, в Китае, благодаря мудрому правлению династии Хань зародилась игра Кено, очень напоминающая сегодняшнюю игру в лотерею. Вырученные в лотерею средства всегда использовались на благо страны. Ярким примером тому может послужить строительство оборонительного сооружения, известного в наше время как «Великая Китайская стена». Примерно в тоже время, в древнем Риме, стремительно развивались разные формы лотерейных игр. Например, благодаря проведению общественных лотерейных игр, ремонтировались мосты и дороги и муниципальные здания. Лотереи, приуроченные к праздникам, давали возможность бедным горожанам участвовать в них бесплатно и в случае выигрыша получать денежное вознаграждение наравне со всеми[1].
 
1.1.2    Зарождение Европейской лотереи
 
Ранние лотерейные игры, появившиеся в Европе, пользовались большой популярностью и имели широкое распространение. Как утверждают исторические источники, самая первая лотерея состоялась в 1466 году в живописном городе Брюгге (Brugge), расположенном в бельгийской провинции Западной Фландрии. Устроителем лотереи являлась вдова известного художника Яна Ван Эйка (Jan Van Eyck). Принять участие в лотерейных играх, приуроченных ко дню памяти художника, мог каждый горожанин без исключения. Все вырученные с лотереи средства отправлялись в муниципальные фонды для необходимой поддержки малоимущих граждан города. После проведения в Бельгии первой лотереи, все последующие лотерейные игры пользовались невероятной популярностью среди Бельгийских граждан. Благодаря лотерейным играм, собирались не малые средства, направленные на поддержание города, строились водоканалы, часовни и монастыри, а также необходимые портовые сооружения[2].
В 1520 году, король Франции Франциск, основатель Ангулемской династии Валуа, издает первый указ о проведении лотерейных игр в стране. На принятие этого решения повлияла острая необходимость пополнения государственной казны. В лотерейных играх были задействованы многие города Франции, но основными являлись города с большой численностью населения, такие как Лион, Париж, Страсбург, Лиле и Бордо.
Первая Итальянская лотерея, была организована во Флоренции в 1530 году. Эта лотерея считалась по тем временам одной из самых нашумевших лотерей в стране, так как, во-первых, она проводилась впервые, а во-вторых, в ней разыгрывались денежные призы. Лотерея «De Lotto de Firenze» быстро получила всеобщее признание и с рекордной скоростью распространилась по всей Италии. Итальянцы оказались самыми ярыми поклонниками лотерейных игр, и уже в 1863 году в стране был принят указ о регулярном проведении национальной лотереи.
Первые лотерейные игры в Англии связаны с именем великой королевы Елизаветы I. Первые годы правления для Елизаветы I, как впрочем, и для страны в целом, можно назвать самыми тяжелыми. Королевство, по праву доставшееся Елизавете I в 1599 году, находилось в состоянии экономической блокады. Политики, служившие при дворе королевы, считали, что единственным выходом из глубокого кризиса может являться лишь брак с одним из известных иностранных монархов. Королева Елизавета I, в силу своего волевого характера, на отрез отказывалась от вынужденного брака. Такой политический маневр ей казался глупым и невежественным. Благодаря своему не заурядному уму, королева принимает решение о проведении в стране первых лотерейных игр и нужно заметить, это был весьма удачный ход. Запущенные в стране лотерейные игры поражали своим размахом, за время проведения игр было продано почти 40 тысяч лотерейных билетов. Все вырученные от лотереи средства были потрачены на восстановление и общественные нужды.
В Голландии, первые лотерейные игры были проведены в 1726 году. Это были первые в истории лотереи, числовые лотерейные игры, послужившие толчком для развития подобной лотереи по всей Европе[2].
Первым документальным свидетельством, упоминающим лотерею в России, является царский указ Екатерины II о проведении первой государственной лотереи изданный в 1764 году. Екатерина приняла решение монополизировать розыгрыши лотерей и направить доходы от их проведения в государственную казну. Согласно указу и стоимости лотерейных билетов — 11 рублей, что было очень дорого для того времени, розыгрыши лотереи были рассчитаны далеко не на широкие массы, а только на привилегированную публику. Причем постановлением Сената на розыгрышах было запрещено присутствие представителей низших слоев населения, включая солдат и прислугу. Несмотря на благие намерения Екатерины II пополнить государственную казну за счет организации лотереи, первый опыт её проведения оказался неудачным и в конце концов оказалось, что государственная казна произвела инвестиции в участников лотереи. Императорской казне пришлось доплатить 45 тыс. рублей в фонд погашения обязательств по выигрышам.[2] С тех пор императрица крайне негативно относилась к проведению подобных розыгрышей и больше их не организовывала.
 
1.2                      Характеристика фирмы ООО «СтарБет»
 
Предприятие «Стар Бет» учреждено в соответствии с Гражданским кодексом РФ, с Федеральным законом «Об обществах с ограниченной ответственностью» и другими нормативными актами, не противоречащими Гражданскому кодексу РФ и является структурным подразделением ХГ «Бинго-Бум». ООО «Стар Бет» является юридическим лицом и строит свою деятельность на основании Устава и действующего законодательства Российской Федерации.
Предприятие «СтарБет» создано 15 декабря 2011 года, является структурным подразделением ХГ «Бинго-Бум». Место нахождения предприятия: 109052, Россия, г. Москва, ул. Смирновская, д.25, стр. 12, пом. 13.
Основной целью создания предприятия является предоставление полного спектра услуг по организации и проведению игр в букмекерских конторах и тотализаторах и получение от деятельности предприятия прибыли.[3]
Предметом деятельности фирмы является оптимизация решения проблем, связанных с организацией услуг по предоставлению быстрого и качественного интернета.        
Для достижения поставленных задач фирма осуществляет следующие виды деятельности[3]:
-       деятельность по организации лотереи;
-       розничная торговля в неспециализированных магазинах непродовольственными товарами;
-       оказание услуг по предоставлению интернета.
ООО «СтарБет» имеет обширные связи с поставщиками игрового оборудования г. Москвы, Санкт - Петербурга, Екатеринбурга, Самары. Среди партнеров ООО «СтарБет» - ООО «РусЛото», ООО «Афродита», ООО «Меланж», и т.д. Компания является официальным дилером по оказанию букмекерских услуг.
Конечные потребители услуг делятся на 2 категории: корпоративные клиенты и частные клиенты, но 75 % продукции доходит до потребителя через так называемых агентов. В роли агентов выступают организации города - 87 %, частные предприниматели - 13 %.
Организационная структура управления ООО «СтарБет» является линейной. Основой структуры является «шахтной» принцип построения и специализация управленческого процесса по функциональным подсистемам организации (маркетинг, торговля, финансы и т. д.). По каждой подсистеме формируется иерархия служб («шахта»), пронизывающая всю организацию сверху. Результаты работы каждой службы оцениваются показателями, характеризующими выполнение ими своих целей и задач[3]. Соответственно строится и система мотивации и поощрения работников. При этом конечный результат (эффективность и качество работы организации в целом) становится как бы второстепенным, так как считается, что все службы в той или иной мере работают на его получение.
 Преимуществами линейной структуры являются:
-       четкая система взаимных связей функций и подразделений;
-       четкая система единоначалия - один руководитель сосредотачивает в своих руках руководство всей совокупностью процессов, имеющих общую цель;
-       ясно выраженная ответственность;
-       быстрая реакция исполнительных подразделений на прямые указания вышестоящих.
Организационная структура управления в ООО «СтарБет» должна логично отражать функцию каждого из направлений деятельности, управление должно увеличить внимание, уделяемое определенным товарам (услугам), клиентам, рынкам.
Так как ООО «СтарБет» является одной из фирм входящих в ХГ «Бинго-Бум», то возглавляющий предприятие директор назначается учредителями холдинга и выполняет их установки[4].
Директор решает самостоятельно все вопросы деятельности и несет ответственность перед учредителями ХГ «Бинго-Бум» за выполнение основных задач, соблюдение производственной, финансовой, договорной, трудовой дисциплины.
Руководство отдела по финансам контролирует  и осуществляет движение финансовых потоков, осуществляет приём финансовых ресурсов, ведёт бухгалтерию, а также решает все вопросы, связанные с материальными ресурсами[4].
Отдел продаж осуществляет непосредственную продажу товаров, отпуск их покупателям и заказ товаров, если их не имеется в наличии. Отдел продаж оснащён торговым залом, где представлены все образцы предлагаемой продукции. Менеджеры данного зала осуществляют приём заказов от покупателей, оформляя их документально.
1.3 Благотворительная деятельность.
 
В рамках своей лотерейной деятельности компания «Бинго-Бум» ежеквартально перечисляет целевые отчисления в размере 10% от выручки лотереи на социальные нужды. Целевые отчисления от проведения лотереи «Бинго-Бум» поступают в некоммерческий благотворительный фонд «Добрые дела» для финансирования социально-значимых объектов и мероприятий. За время своего существования компания перечислила более 1 млрд. рублей на благотворительность. По словам сотрудников компании, каждая крупная организация может и должна поддерживать социально незащищенные слои населения и участвовать в улучшении качества жизни людей и создании стабильного государства. В 2013 году «Бинго-Бум» выступила генеральным спонсором программы «Большой семье – большие деньги». Совместно с фондом «Добрые дела» был объявлен конкурс на вручение 1 миллиона рублей 10 семьям, где родился десятый (и более) ребенок.[5]
Участие в других мероприятиях:
-       Акция помощи ветеранам «Спасибо Деду за Победу»
-       Строительство храма в честь Иверской иконы Божьей Матери в Москве;
-       Организация международного фестиваля-конкурса детского и молодежного творчества «Невская капель»;
-       Организация благотворительного концерта «Звезды детям!»
-       Организация детской премии «Kinder МУЗ Awards 2013»
 
1.4 Описание функций системы
 
Одним из приоритетных направлений компании является букмекерская деятельность, которую осуществляет ООО «Стар Бет». «Бинго-Бум» - это полноценный букмекерский продукт, включающий широкий выбор событий для заключения пари. «Бинго-Бум» предлагает различные виды ставок на события, происходящие во всем мире. Продукты: «Бинго-Бум», «Рулетка», «Покер-Бум», «Кено-Бум», «Спорт», «Lucky line», «Wezzet». Что бы запустить одну из игр на компьютере, звониться в тех поддержку Бинго Бум, им называется серийный номер системного блока и вид игры.[5]
«Бинго-Бум СТАВКИ»
Игроку предлагается сделать ставку «Бинго» на номера шаров от «1» до «90», в конкретном туре определенного тиража лотереи. Выплата по ставке равна произведению итогового коэффициента на сумму, поставленную игроком. (Рисунок 1.2)
 
                    
                                
Рисунок 1.2 – «Бинго Бум»
 
«AZTEC GOLD ROULE TTE»
Разновидность традиционной рулетки (Рисунок 1.3). Событием служат шары, выпавшие из лототрона. Номер первого выпавшего шара должен совпасть с числом или быть в выбранной игроком комбинации[5].
 

 
Рисунок 1.3 – «Ацтек»
 
«KENO BOOM»
Кено на 80 шаров по правилам классического кено. Перед началом игры игрок выбирает от 2 до 10 не повторяющихся чисел с номерами от 1 до 80.
 Если число или несколько чисел совпадут с первыми выпавшими 20 шарами, ставка считается выигрышной и рассчитывается по таблице в зависимости от выбранного количества номеров. (Рисунок 1.4)
 

 
                                          Рисунок 1.4 – «Кено»
 
«LUCKY LINE»
Игровое поле представляет собой сетку, состоящую из 9 «линий» по 10 чисел в каждом. Из лототрона выпадают шары в случайном порядке, с числами от 1 до 90. Смысл игры состоит в том, чтобы собрать комбинации, состоящие из: 3-х, 4-х, 5-и или 6-и чисел. (Рисунок 1.5)
 

 
Рисунок 1.5 – «Лаки Лайн»
 
«Poker BOOM»
Игра, целью которой является угадать победителя раздачи, идет по правилам техасского холдема и состоит из 4х этапов: «пре-флоп», затем «флоп», «терн» и «ривер». Дилер раздает карты виртуальным игрокам. На первых 3-х этапах для каждой руки назначаются коэффициенты в зависимости от вероятности выигрыша. На «Ривер» – определяется победившая рука[5].
«Wezzet»
Универсальная букмекерская система Premium класса, предлагающая более 10 игр с джекпотом, терминалы самообслуживания и персональные счета игроков.
«Морской бой»
Игроку предлагается сделать ставку «Морской бой» (Рисунок 1.6) на выпадение шаров из лототрона с номерами с 1 по 90 (неповторяющиеся) в конкретном туре конкретного тиража лотереи «Бинго-Бум». Ставка осуществляется на числовые комбинации по 5, 4, 3 и 2 числа (Корабли), по 16 чисел (Флот) и 15 чисел (Бонус-флот), объединенные (совокупность выборов) в одну уникальную комбинацию (квитанция или приложение к ней)[5].
 
                       
 
                                  Рисунок 1.6 – «Морской бой»
 
1.5 Организационная структура АРМ кассира
 
Рассмотрим структуру автоматизированного рабочего места и связи между его составными частями, на рисунке 1.7
 

 
Рисунок 1.7 – Схема автоматизированного рабочего места
 
Как показано на схеме, АРМ состоит из технических и программных средств вычислительной техники, а также необходимой методической документации, позволяющей пользователю эффективно взаимодействовать с данными средствами.[4]
 
1.6 Обоснование типовых проектных решений по видам обеспечения

            1.6.1 По техническому обеспечению
 
Техническое обеспечение (ТО) представляет собой комплекс технических средств, предназначенных для обработки данных в рамках экономической информационной системы. В состав комплекса входят ЭВМ, осуществляющие обработку экономической информации, средства подготовки данных на машинных носителях, средства сбора и регистрации информации, средства накопления, хранения данных и выдачи результатной информации, вспомогательное оборудование и организационная техника.[5]
Для внедрения данного проекта потребуется персональный компьютер со следующими характеристиками, перечисленные в Таблице 1.1:
 
Таблица 1.1 – Аппаратно-технические требования



Модуль
Аппаратная часть
Программная часть
АРМ персонала
Компьютер офисного класса (не ниже Intel Atom 1.7GHz; ОЗУ 1024 MB)
Кардридер RFID Stronglink SL500 или Z2 (опционально)
АРМ персонала
Букмекерские  
терминалы
Варианты:
- Моноблок MSI Wind top AE2050 (AMD E-350 1.6GHz, ОЗУ 2Гб, HD 160GB, видеоадаптер – интегрированный 128MB)
- Системный блок не ниже Intel Atom 1.7GHz, ОЗУ 2Гб, видеоадаптер – интегрированный 128MB. 
Рекомендованное разрешение монитора не менее 1280x1024
*Загрузка и функционирование ПО «Букмекерский терминал» происходит с флеш-диска, объема 4 Гб
Букмекерские   терминалы
 
 
 
Продолжение таблицы 1.1 – Аппаратно-технические требования


Панель визуализации
Системный блок не ниже Intel Atom 1,7GHz; ОЗУ 1Гб
*Загрузка и функционирование ПО «Модуль Визуализации» происходит с флеш-диска, объема 2 Гб
ОС Linux Программа "FBS.Monitor(FBSV)"
Компьютерная сеть зала должна обеспечивать пропускную способность интернет - канала для одного компьютера не ниже 50 кбит/сек и время отклика сервера (ping) не более 100 мсек. Суммарное количество потерь пакетов не должно превосходить 1%
 
1.6.2 По программному обеспечению
 
Обоснование проектных решений по программному обеспечению задачи заключается в формировании требований к системному (общему) и специальному прикладному программному обеспечению и в выборе на основе этих требований соответствующих компонентов программного обеспечения[7].
К общему программному обеспечению (ПО) относятся операционные системы (ОС), средства автоматизации программирования, СУБД, а также комплекс программ технического обслуживания, предназначенных для управления работой процессора, организации доступа к памяти, периферийным устройствам и сети, запуска прикладных программ и управления процессом их выполнения, а также для обеспечения выполнения программ на языках программирования высокого уровня. В их окружении, под их воздействием функционируют прикладные программы.
Операционные системы могут различаться особенностями реализации внутренних алгоритмов управления основными ресурсами компьютера (процессорами, памятью, устройствами), особенностями использованных методов проектирования, типами аппаратных платформ, областями использования и многими       другими свойствами.
К факторам, определяющим выбор конкретного класса ОС и его версии, относятся следующие[7]:
-       число поддерживаемых программных продуктов;
-       требования к аппаратным средствам;
-       возможность использования различных устройств ввода-вывода;
-       поддержка сетевой технологии;
-       наличие справочной службы для пользователя;
-       дружественный интерфейс и простота использования;
-       возможность переконфигурации и быстрой настройки на новые аппаратные средства;
-       быстродействие;
-       совместимость с другими ОС;
-       поддержка новых информационных технологий и другие.
Операционная система Microsoft Windows 7, обеспечивающая надежность (обновленное ядро Windows, усовершенствованные средства проверки драйверов устройств, поддержка нескольких версий библиотеки DLL, защита файлов Windows), быстродействие (многозадачность с вытеснением, масштабируемая поддержка памяти и процессора), безопасность, удобство использования отвечает всем требованиям.[8] Немаловажным фактором при выборе именно этой ОС для разработки данного проекта явилось то, что у организации имеется достаточное количество лицензий на ее использование.
На выбор СУБД при построении системы автоматизации во многом определяет такие ее параметры, как:
-       надежность и устойчивость;
-       быстродействие;
-       масштабируемость;
-       защищенность;
-       наличие средств разработки приложений;
-       совместимость с другими платформами и ОС;
-       поддержка компании-производителя;
-       стоимостные затраты на приобретение лицензий для использования выбранной СУБД.
В качестве средства разработки приложений наиболее подходящим была признана СУБД Access. СУБД Access предназначена для разработки баз данных реляционного типа для локального их использования на персональных компьютерах и для работы с этими базами[8].
Данная СУБД была выбрана по следующим причинам:
-       простота средств реализации;
-       легкость освоения инструментарием разработчика (VBA);
-       наглядность визуализации информации. 
Базы данных созданные с помощью системы управления базами данных «Microsoft Access» полностью реализую реляционную модель построения данных. База данных «Microsoft Access» представляет собой набор групп объектов, таких как таблицы, запросы, формы, отчеты.
Связи между таблицами можно разбить на четыре базовых реляционных типа с отношениями:
-       один-к-одному;
-       один–ко-многим;
-       многие-к-одному;
-       многие-ко-многим.
Структура организации таблиц позволяет создание первичных и внешних ключей. Имеется возможность изменения типа внутренних объединений для связанных таблиц.[9]
Также «Microsoft Access» предоставляет большое количество внутренних средств по оптимизации работы проектируемого приложения. К ним относятся:
-       загрузка модулей по требованию;
-       оптимизация дерева вызовов;
-       использование файлов MDE;
-       автоматическая поддержка компилированного состояния;
-       использование библиотек Windows API;
-       индивидуальная настройка системы;
-       эффективное использование индексов;
-       встроенный оптимизатор запросов.
 
1.6.3 По информационному обеспечению
 
Информационное обеспечение (ИО) подразделяют на 2 вида:
-       внемашинное ИО;
-       внутримашинное ИО.
К внемашинному ИО относится та часть информационного обеспечения, которая воспринимается человеком без каких-либо технических средств. В его состав входят все документы (входные и выходные), классификаторы и справочники, используемые при решении задачи. [9]
Основными носителями информации являются документы. Унифицированная система документации представляет собой рационально организованную систему взаимосвязанных документов, которая обеспечивает полноту информации для процесса управления и ориентирована на ее обработку с использованием ЭВМ.
В проектируемом АРМ используются следующие входные документы:
-       договора на услуги;
-       дополнительные соглашения;
-       удостоверение личности игрока.
В состав выходных документов АРМ входят:
-       ежемесячные, квартальные и полугодовые отчеты;
-       новые договора;
-       новые дополнительные соглашения;
-       счета на оплату оказанных услуг.
Внутримашинное ИО состоит из информационной базы экономической информации, записанной на машинных носителях и программы-справочника по нормативно-правовой поддержке[10].
Информационная база (ИБ) – это организованная определенным способом совокупность данных, которые отражают состояние предметной области.
Более рациональным способом хранения данных представляется использование базы данных.
База данных – это поименованная совокупность взаимосвязанных данных, отображающая состояние объектов и их отношений в рассматриваемой предметной области, организованных определенным образом в виде файлов.
По сравнению с организацией информационной базы в виде локальных файлов при таком способе достигается значительное уменьшение синтаксической и семантической избыточности хранимой информации, и, как следствие – ускорение ее поиска и обработки. Кроме того, обеспечивается соответствие данных реальному состоянию объекта, простота и легкость редактирования, физическая и логическая независимость данных от программ их обработки, снижение затрат на создание и внедрение баз данных[11].
В настоящее время различают три основные модели баз данных: 
-       иерархическая; 
-       сетевая;
-       реляционная. 
Данное деление баз данных по типу модели данных основывается на характере связей между записями. Запись – набор полей определенного формата, описывающих свойства одного элемента или процесса.[11]
Иерархической называют модель, в которой имеется совокупность родственных отношений между набором объектов. Любой узел, исключая корень, связан только с одним узлом на более высоком уровне, который называется исходным. Такая структура удобна для отображения отношений типа "один-ко-многим" в предметной области. Однако вместе тем она имеет ряд существенных недостатков:
-       избыточность хранимых данных и, как следствие, низкая эффективность использования ресурсов для хранения;
-       медлительность доступа к объектам, находящимся на нижних уровнях иерархии;
-       доступ к каждому объекту базы возможен лишь через корневой сегмент, что накладывает дополнительные ограничения на формирование запросов для доступа к определенным данным.
Сетевую модель баз данных можно представить в виде ориентированных графов. Она похожа на иерархическую, но в ней порожденный элемент может иметь более одного исходного[12].
Недостатками такой модели являются:
-       сложность (обилие понятий, вариантов их взаимосвязей и особенностей реализации);
-       необходимость знаний о физической организации базы данных, зависимость прикладных систем от этой организации;
-       перегруженность логики прикладных систем деталями организации доступа к базе данных.
Реляционная модель основана на математической логике и является простейшей и наиболее привычной формой представления данных в виде таблиц. Строка таблицы эквивалентна записи файла базы данных, а столбец – полю записи. Реляционная модель баз данных имеет ряд преимуществ по сравнению с иерархической и сетевой моделями:
-       наибольшая наглядность модели для пользователя: все данные в реляционной модели представлены с помощью всего одной информационной конструкции, формализующей привычное для пользователей табличное их представление;
-       независимость данных от программного продукта для их обработки: изменение в структуре той или иной таблице не ведет к необходимости доработки системы управления базами данных (СУБД);
-       связность данных, так как реляционное представление дает ясную картину взаимодействия атрибутов из разных отношений;
-       наличие теоретически обоснованных методов нормализации отношений позволяет получать базы данных с заранее заданными свойствами (в основном, с гарантией минимальной избыточности представления данных).
При отмеченных достоинствах недостатком реляционной модели является жесткость структуры данных и зависимость скорости ее работы от размера базы данных. Для многих операций, определенных в такой модели, может оказаться необходимым просмотр всех записей базы данных[12]. Тем не менее, в настоящее время реляционные системы лучше всего соответствуют техническим возможностям персональных компьютеров и вполне удовлетворяют требованиям большинства пользователей. Скоростные характеристики этих СУБД поддерживаются при помощи специальных средств ускоренного доступа к информации – индексирования баз данных.
По результатам анализа достоинств и недостатков всех трех моделей построения баз данных, для данного проекта была выбрана последняя, реляционная модель. Информационная база проекта формируется в соответствии со следующими принципами:
-       однократность ввода данных;
-       вся информация вводится только на основе первичной документации;
-       принцип полноты информации (т.е. информационная база должна содержать всю необходимую информацию для решения задач);
-       недопущение информационной избыточности (одна и та же информация не должна храниться в разных таблицах базы данных);
-       принцип целостности информации, то есть в информационном фонде должны быть разработаны средства обеспечения достоверности хранимой информации, средства поддержки непротиворечивости данных, обеспечения своевременности актуализации данных, обеспечения защиты данных от технических сбоев ЭВМ;
-       принцип доступности информации за счет развитых средств диалога пользователя с базой;
-       принцип оперативности выдачи ответов на запросы.
 
 
1.6.4 По технологическому обеспечению
 
Под технологическим процессом обработки экономической информации понимается определенный комплекс операций, выполняемых в строго регламентированной последовательности с использованием определенных методов обработки и инструментальных средств, которые охватывают все этапы обработки данных, начиная с регистрации первичных данных и заканчивая передачей результатной информации пользователю для выполнения функций управления[13].
Под технологической операцией понимается совокупность функционально-связанных действий по преобразованию данных, выполняемых непрерывно на одном рабочем месте.
Весь процесс обработки информации разбивается на несколько этапов. Первый этап: первоначальный сбор информации. Второй этап: регистрация первичной информации. Третий этап: систематизация и организация хранения накопленных данных, для последующего использования, а также осуществлению внутреннего поиска и быстро извлечения нужных документов. Четвертый этап: глубокий анализ информации. Пятый, завершающий этап: формирование отчета.
Технологический процесс обработки данных начинается с их сбора и регистрации. Стоит отметить три основных свойства данных на этом этапе[13]: 
-       полнота;
-       достоверность; 
-       своевременность.
Под полнотой данных понимается достаточность (но не избыточность!) информации для ее использования, то есть наличие всех сведений, необходимых и достаточных для работы. Под достоверностью понимается соответствие имеющихся данных и реального положения вещей. Ошибки могут возникать на различных этапах работы с данными, и эффективность работы напрямую зависит от недопущения попадания в систему ошибочных данных, а в случае, если это все-таки произошло – их оперативного мониторинга и исправления.
Под своевременностью данных понимается то, насколько вовремя полная и достоверная информация поступает кассиру-оператору по контролю и учету. При вводе данных в систему с клавиатуры предусмотрен программный контроль на логику и синтаксис. Он обеспечивает проверку всех логических соотношений и ограничений, накладываемых на вводимые данные. При заполнении экранных форм входных документов автоматически подключаются все необходимые справочники. Таким образом, пользователь системы просто выбирает нужную запись из справочника, и все необходимые данные автоматически заносятся в документ.
1.7 Постановка цели и задач на дипломное проектирование
 
Итак, целью дипломного проектирования является повышение качества и повышение удобства для работы с клиентами за счет разработки автоматизации кассового аппарата  и введение индивидуальных пластиковых карт.
Задачи дипломного проектирования:
-       на основе анализа деятельности фирмы ООО «Бинго Бум» определить основные проблемные места организации для их дальнейшей автоматизации;
-       сформулировать основные требования к информационной системе;
-       разработать автоматизированное рабочее место (АРМ) оператора по оформлению заказов;
-       внедрить систему на предприятии;
-       рассчитать экономическую эффективность от внедрения
-       рассчитать не нарушается ли безопасность жизнедеятельности обслуживающего персонала.
АРМ оператора по оформлению заказов должно отвечать следующим качествам:
-       простота освоения программы и работы с ней;
-       стандартизация интерфейса, т.е. сходства с существующими стандартами;
-       организация удобного диалога ЭВМ и пользователя;
-       качество экранного дизайна;
-       наличие системы парольной защиты.
 
 
 
2 Проектная часть

2.1 Информационное обеспечение комплекса задач
 
2.1.1 Информационная модель и ее описание
 
Информационная модель (ИМ) включает в себя совокупность входных и выходных документов, файлов входной оперативной, постоянной, промежуточной и результатной информации.  Для построения информационной модели необходимо пройти ряд стадий. Процесс, проводимый от "объекта познания" до "формальной конструкции", носит название "формализация", а обратный процесс - "интерпретация" - чаще всего используется в познании мира и обучении[14].
При разработке ИМ используются два подхода:
·        структурный;
·        объектно-ориентированный. 
Сущность структурного подхода к разработке ИС заключается в ее декомпозиции (разбиении) на автоматизируемые функции: система разбивается на функциональные подсистемы, которые в свою очередь делятся на подфункции, подразделяемые на задачи и так далее.
В качестве средств структурного анализа и проектирования, наиболее распространены следующие нотации: 
·        SADT (Structured Analysis and Design Technique). Модель в нотации SADT представляет собой совокупность иерархически упорядоченных и взаимосвязанных диаграмм;
·        DFD (Data Flow Diagrams) диаграммы потоков данных. Диаграммы DFD обычно строятся для наглядного изображения текущей работы системы документооборота организации. Как правило, диаграммы DFD используют в качестве дополнения модели бизнес-процессов, выполненной в SADT;
·        ERD (Entity-Relationship Diagrams) диаграммы "сущность-связь". 
Методология SADT (Structured Analysis and Design Technique). Описание системы с помощью SADT называется моделью. В SADT-моделях используются как естественный, так и графический языки[14]. Для передачи информации о конкретной системе источником естественного языка служат люди, описывающие систему, а источником графического языка - сама методология SADT. Графический язык SADT обеспечивает структуру и точную семантику естественному языку модели. Графический язык SADT организует естественный язык вполне определенным и однозначным образом, за счет чего SADT и позволяет описывать системы, которые до недавнего времени не поддавались адекватному представлению.
С точки зрения SADT модель может быть сосредоточена либо на функциях системы, либо на ее объектах. SADT-модели, ориентированные на функции, принято называть функциональными моделями, а ориентированные на объекты системы - моделями данных, функциональная модель представляет с требуемой степенью детализации систему функций, которые в свою очередь отражают свои взаимоотношения через объекты системы. Модели данных дуальны к функциональным моделям и представляют собой подробное описание объектов системы, связанных системными функциями. Полная методология SADT поддерживает создание множества моделей для более точного описания сложной системы[15].
Диаграммы потоков данных DFD (Data Flow Diagrams) являются основным средством моделирования функциональных требований проектируемой системы. С их помощью эти требования разбиваются на функциональные компоненты (процессы) и представляются в виде сети, связанной потоками данных. Главная цель таких средств продемонстрировать, как каждый процесс преобразует свои входные данные в выходные, а также выявить отношения между этими процессами. Главная цель построения иерархического множества DFD заключается в том, чтобы сделать требования ясными и понятными на каждом уровне детализации, а также разбить эти требования на части с точно определенными отношениями между ними.
Модель Сущность-Связь ERD (Entity-Relationship Diagrams) — это модель данных, позволяющая описывать концептуальные схемы. Она предоставляет графическую нотацию, основанную на блоках и соединяющих их линиях, с помощью которых можно описывать объекты и отношения между ними какой-либо другой модели данных. В этом смысле ER-модель является мета - моделью данных, то есть средством описания моделей данных.[15]
ER-модель удобна при проектировании информационных систем, баз данных, архитектур компьютерных приложений, и других систем (далее, моделей). С её помощью можно выделить ключевые сущности, присутствующие в модели, и обозначить отношения, которые могут устанавливаться между этими сущностями. Важно отметить что сами отношения также являются сущностями (выделяются в отдельные графические блоки), что позволяет устанавливать отношения на множестве самих отношений.
ER-модель является одной из самых простых визуальных моделей данных (графических нотаций). Она позволяет обозначить структуру «крупными мазками», в общих чертах. Это общее описание структуры называется ER-диаграммой или онтологией выбранной предметной области.
На этапе перехода к реализации данной ER-диаграммы в виде реальной информационной системы или программы, происходит отображение ER-модели в более детальную модель данных реляционной (объектной, сетевой, логической, или др.) базы данных, которая называется физической моделью данных по отношению к исходной ER-диаграмм[15].
 
2.1.2 Используемые классификаторы и системы кодирования
 
Система классификации - это совокупность правил распределения объектов множества на подмножества. 
Классифицирование - это процесс распределения объектов данного множества на подмножества. 
Классификация - это результат упорядоченного распределения объектов заданного множества.
В составе информационного обеспечения рассматриваемого комплекса задач важное место отводится классификаторам финансовой информации[16]. 
При проектировании классификаторов предъявляется ряд требований:
-       охват всех объектов, подлежащих кодированию, и их однозначное обозначение; 
-       возможность расширения объектов кодирования без изменения правил их обозначения; 
-       максимальная информативность кода при минимальной его значности. 
Выбор системы кодирования в основном зависит от количества классификационных признаков и разработанной системы классификации. 
Различают иерархическую и многоаспектную системы классификации.
Иерархическая система классификации предполагает разбиение исходного множества на подмножества, между которыми установлены отношения соподчиненности (иерархии). В зависимости от количества классификационных признаков возможно наличие нескольких уровней классификации.
Уровень классификации - это совокупность классификационных группировок, расположенных на одних и тех же ступенях классификации.
В многоаспектных системах классификации применяется параллельно несколько независимых признаков в качестве классификационных, то есть исходное множество рассматривается одновременно в разных аспектах.
Системы кодирования делятся на регистрационные и классификационные. [16]
Регистрационная система кодирования используется для идентификации объектов, которые не требуют предварительной классификации и независимы от существа решаемых задач. Различают порядковую и серийно-порядковую системы кодирования.
Порядковая система кодирования заключается в последовательном порядке регистрации объектов. Признаки классификации отсутствуют, что впоследствии не позволит получать промежуточные итоги. 
Серийно-порядковая система кодирования применяется для кодирования однопризначных номенклатур, находящихся в определенной соподчиненности. Старшему признаку выделяется серия номеров с учетом возможного расширения позиции объекта, а младшему присваиваются порядковые номера в пределах выделенной серии.
В соответствии с приведенными требованиями к кодам в разрабатываемом проекте используется серийная система кодирования, позволяющая кодировать установившееся несложные множества объектов, учитывая возможность расширения кодируемого множества и разбиение по одному признаку классификации[17].
Краткая характеристика классификаторов и систем кодирования, используемых для решения комплекса задач, представлена в таблице 2.1.
 
 
 
 
Таблица 2.1 – Перечень классификаторов, используемых при проектировании







Наименование кодируемого множества объектов
Значность кода
Система кодирования
Система классификации
Вид классификатора
Тип договора
Порядковая
3
Отсутствует
Локальный
Тип игрока
Порядковая
2
Отсутствует
Локальный
Код даты
Порядковая
4
Отсутствует
Локальный
Код оплаты
Порядковая
4
Отсутствует
Локальный
Код начисления
Порядковая
4
Отсутствует
Локальный
Код платежа
Порядковая
1
Отсутствует
Локальный
 
2.1.3 Характеристика входной оперативной и нормативно-справочной
информации.
 
Описание входной оперативной информации. 
К оперативной относится информация, которая меняется для каждого фиксированного случая ее использования.[18] 
Для решения задач контроля оплаты игровых услуг, месячных, квартальных и полугодовых отчетов по оплате и справок по поступившим платежам используется такой входной документ как: лицевой счет игрока (пластиковая карта). Макет размещения информации представлен в таблице 2.2.

Таблица 2.2 – Лицевой счет игрока






№ п/п
Наименование поля
Длина поля
Тип поля
1
Код платежа
Длинное целое
Счетчик
2
Код игрока
50
Текстовый
3
Дата поступления
Краткий формат даты
Дата/время
4
Наименование платежа
1
Текстовый
5
Сумма платежа
Денежный
Денежный
 
2.1.4 Характеристика базы данных
 
2.1.4.1 Характеристика инфологической модели БД
Инфологическая модель базы данных  и «АРМ кассира – оператора по учету и контролю» представлена на рисунке 2.1.

 
Рисунок 2.1 – Инфологическая модель БД
 
Общий вид схемы данных разрабатываемого АРМа кассира – оператора по контролю и учету представлен на рисунке 2.2.



Рисунок 2.2 – Схема данных
 
2.1.4.2 Характеристика даталогической модели БД
Описание таблиц БД, атрибутов и идентификаторов полей, а так же их тип представлено в таблице 2.3.
 
 
 
Таблица 2.3 – Описание таблиц БД «АРМ кассира – оператора по учету и
контролю»


Таблица
Идентификатор таблицы
Атрибут
Идентификатор поля
Тип поля
Физ. Лицо
Физ. Лицо
Код
Код
Текстовый
 
 
ФИО
ФИО
Текстовый
 
 
Дата
рождения
Дата
Дата/время
 
 
Пол
Пол
Текстовый
 
 
Код
договора
Код
договора
Текстовый
 
 
Код карты
Код карты
Числовой
Документ
Документ
Код документа
Код
Текстовый
 
 
Тип
документа
Тип
документа
Текстовый
 
 
Серия
Серия
Числовой
 
 
Номер
Номер
Числовой
Тип
документа
Тип
документа
Код
Код
Текстовый
 
 
Название
Название
Текстовый
Договор
Договор
Код
Код
Числовой
 
 
Номер
договора
Номер
Числовой
 
 
Дата
заключения
Дата
заключения
Дата/время
 
 
Срок
действия
Срок
действия
Числовой
 
 
Наименования игрока
Наименования игрок
Текстовый
Карта
игрока
Карта
игрока
Код карты
Код карты
Числовой
 
 
Код
человека
Код
Числовой
Ставки
Ставки
Код ставки
Код
Текстовый
 
 
Название
Название
Текстовый
 
 
Сумма
Сумма
Денежный
 
 
Код карты
Код карты
Текстовый
 
 
Дата
Дата
Дата/время
 
 
 









Вид
платежей
Вид
платежей
Код
платежа
Код
Текстовый
 
 
Наименование
Наименование
Текстовый
Оплата
Оплата
Код карты
Код
Текстовый
 
 
Сумма
Сумма
Денежный
 
 
Дата
Дата
Дата/время
 
 
Вида платы
Вид платы
Текстовый
Выигрыш
Выигрыш
Код карты
Код карты
Текстовый
 
 
Код ставки
Код ставки
Числовой
 
 
Сумма
Сумма
Денежный
Продолжение таблицы 2.3 – Описание таблиц БД «АРМ кассира – оператора по учету и контролю»
 
2.1.5 Характеристика результатной информации
 
Перечень результатных документов данного проекта включает в себя[18]:
-       списки текущих игроков;
-       сведения по поступившим платежам;
-       справка по поступившим платежам и налогам (в бухгалтерию);
-       квартальный отчет по игрокам и поступившим платежам;
-       полугодовой отчет по игрокам и поступившим платежам.
Отчет «Списки текущих игроков» имеет табличный вид и состоит из следующих полей:
-       номер терминала
-       № карты игрока;
-       наименование терминала;
-       размер ставки;
-       размер выигрыша.
Отчет основан на запросе «Текущие игроки» (Рисунок. 2.3).
 

 
Рисунок 2.3 – Запрос «Текущие игроки»
Сведения по поступившим платежам формируются на основании SQL запроса.
 
2.2 Программное обеспечение задачи (комплекса задач, АРМ)
 
2.2.1 Общие положения (дерево функций и сценарий диалога)
 
На рисунке 2.4 приведено дерево функций обработки данных, которое отражает процесс автоматизации разработанной системы. На схеме выделены и детализированы основные функции: регистрация платежей, регистрация карт и игроков, формирование результатных документов.[19]
Выявление состава и иерархии функций позволяет разработать структуру сценария диалога. Структурная схема, отражающая сценарий диалога АРМ кассира – оператора по учету и контролю приведена на рисунке 2.5.
После запуска программы пользователь попадает в окно авторизации, требующее введения логина и пароля кассира. После прохождения авторизации мы заходим в основное меню программы, содержащее главное меню и панель кнопок для оперативного доступа к входным и результатным документам.
Основное меню программы содержит следующие пункты:
-       счет и карты:
-       информация;
-       пополнить счет;
-       выплатить со счету;
-       закрыть карты;
-       активировать карту;
-       терминалы:
-       касса;
-       журнал действий.
 


Рисунок 2.4 – Дерево функций АРМ кассира – оператора по учету и контролю
2.2.2 Структурная схема пакета (дерево вызова процедур и программ)
 


Рисунок 2.5 – Сценарий диалога АРМ кассира – оператора по учету и контролю


2.2.3 Технологическое обеспечение задачи (комплекса задач, АРМ)
 
Решение комплекса задач осуществляется в режиме меню, не требующего от пользователей специальных знаний в области программного обеспечения и обработки данных.[20] Разработанный технологический процесс позволяет автоматизировать ввод и контроль данных, их централизованное хранение и поиск, а также осуществлять формирование и печать выходных документов и отчетов (рисунок 2.6).
 

 
Рисунок 2.6 – Схема технологического процесса сбора, передачи, обработки и выдачи информации



3      Работа с программой
 
3.1 Запуск программы
 
Для работы с кассой лотерейного клуба, необходимо подключить  кардридер для бесконтактных карт к компьютеру. Кардридер подключается  к компьютеру через USB – порт.
Внимание. Без подключения к компьютеру кардридера программное приложение работать не будет.
Для запуска программного обеспечения кассы, необходимо запустить файл cashdesk.exe, находящийся в папке Cashdesk. Для запуска программного обеспечения второй кассы, необходимо запустить файл СashDeskSmall.exe, находящийся в папке Cashdesk[21].
Перед началом работы должна быть запущена сессия кассира с помощью программного приложения Hall manager. Запускается одна кассовая сессия на обе кассы. Вход кассира в программу CashDeskSmall осуществляется по карте главного кассира.
Карта кассира создается с помощью программного обеспечения Hall Manager.
После запуска приложения необходимо авторизоваться, то есть поместить карточку на контактную площадку  кардридера  и нажать кнопку «Ок». (Рисунок 3.1)
 

 
Рисунок 3.1 – Запуск программы
 
Затем кассир должен ввести PIN-код для доступа к кассе. (Рисунок 3.2)
 

 
Рисунок 3.2 – Инициализация кассира
 
Если авторизация прошла успешно, то на экране отобразится главная страница программы.
Примечание. В работе с приложением Cash Desk не предусмотрено использование функциональной кнопки BackSpace. Для навигации между разделами приложения используйте кнопки меню[21].
 
3.2 Функционал главной кассы
 
3.2.1    Оплата карты
 
Для получения выигрыша в клубе участник предъявляет ИК в кассу. Для выплаты выигрыша, кассир должен нажать на кнопку «Оплата  карты», положить ИК на контактную площадку картридера и нажать на кнопку «Ок». (Рисунок 3.3)
 

 
Рисунок 1.3 – Оплата карты
 
Далее на экране появится следующая информация[22]:
-       номер карты – уникальный номер ИК участника;
-       имя на карте – имя, введенное при регистрации;
-       баланс на карте – баланс денежных средств на карте;
-       тип карты – тип ИК (временная);
-       статус карты – статус соответствующей ИК (активна, закрыта);
-       баланс в кассе – сумма денежных средств, имеющихся в кассе в данный момент.
При нажатии на кнопку «Показать все» отобразится следующая информация по карте, как на рисунку 3.4:
 

 
Рисунок 3.4 – Оплата карты. Полный отчет по карте
 
-       дата, время – дата и время операции с картой;
-       наименование операции – описание операции;
-       номер билета – номер билета, приобретенного по карте;
-       сумма, руб – суммарное количество денег, которое участвовало в операции.
Баланс по ID карте (к выплате) – сумма денежных средств, находящихся на карте и которые участник получит при выплате карты[22].
При формировании отчет по карте может быть разбит на несколько страниц. Для перехода от одной к другой странице необходимо нажимать на ссылки с номерами страниц, которые появятся над таблицей.
 При нажатии на кнопку «Печать отчета» выводится форма отчета по карте для печати на рисунке 3.5. В появившемся окне отобразится бланк отчета и кнопка «Распечатать».  Для печати отчета необходимо нажать на кнопку «Распечатать».
 

 
Рисунок 3.5 – Печатная форма отчета по карте
 
Для выплаты денежных средств участнику кассир должен нажать на кнопку «Выплатить» (Рисунок 3.6). После выплаты баланс ИК становится нулевым, а статус карты становится «закрыта»[23].
 

 
Рисунок 3.6 – Экран после оплаты карты
 
После оплаты карты кассир должен распечатать информацию по операции оплаты, нажав на кнопку «Печать», расположенную на верхней панели окна.
В появившемся окне отобразится бланк ордера и кнопка «Распечатать».  Для печати ордера необходимо нажать на кнопку «Распечатать». (Рисунок 3.7)
 

 
Рисунок 3.2 – Печать Расходного Ордера
 
После оплаты карты доступна функция просмотра полной информации по карте. При нажатии кнопки «Показать все» на экране отобразится полный отчет по карте и доступны функции печати отчета по операциям и квитанций на покупку билетов. (Рисунок 3.8)
 

 
Рисунок 3.3 – Вывод полного отчета по карте
 
При нажатии на кнопку «Печать отчета» выводится форма отчета по карте для печати. В появившемся окне отобразится бланк отчета и кнопка «Распечатать».  Для печати отчета необходимо нажать на кнопку «Распечатать».
При нажатии на кнопку «Печать», расположенную на верхней панели окна, выводится форма для печати квитанций[24]. В появившемся окне отобразится чек по покупкам лотерейных квитанций по данной карте. (Рисунок 3.9)
 

 
Рисунок 3.4 – Печать квитанции
 
Нажав на кнопку «Распечатать», кассир распечатает квитанции.
 
3.2.2             Пополнение карты
 
Если участник лотереи хочет пополнить баланс карты через кассу лотерейного клуба, кассиру необходимо войти в раздел «Пополнение карты», положить идентификационную карточку участника лотереи на контактную основу кардридера и нажать «ОК» в появившемся окне[25]. После чего на экране отобразится интерфейс для данной операции. (Рисунок 3.10)
 

 
Рисунок 3.5 – Пополнение баланса карты через кассу
 
Для пополнения баланса идентификационной карточки необходимо ввести в окно пополнения необходимую сумму и нажать на кнопку «Пополнить». Данное окно предназначено для введения только цифровых, целых чисел. Появится сообщение «Сумма ___ зачислена» и окно с информацией по карте, где в таблице указан общий баланс ID карты, сумма внесенных средств и сумма средств до пополнения баланса. (Рисунок 3.11)
 

 
Рисунок 3.6 – Пополнение карты. Отчет по балансу
 
Далее кассиру необходимо распечатать Приходный ордер, нажав на кнопку «Печать» вверху страницы. Информация по совершенной операции для печати отобразится в новом окне. (Рисунок 3.12)
 

 
Рисунок 3.7 – Приходный ордер по операции «Пополнение карты»
 
Пополнить карту можно, только если статус этой карты «Активна».
 
3.2.3               Создание новой ИК
 
Перед началом розыгрыша участник должен получить идентификационную карточку участника. Для этого кассир должен поместить карту на контактную площадку кардридера, нажать на кнопку «Создание карточки» и ввести имя участника. По умолчанию имя участника – 123. Для создания именной карточки имя участника возможно задавать только числовыми значениями. (Рисунок 3.13)
 

 
Рисунок 3.8 – Создание карты участника
 
Далее кассир должен дважды нажать на кнопку «Ok» в появляющихся окнах.
Внимание. Карточка не должна сниматься с контактной площадки кардридера до окончания записи и активации[25].
В случае успешной записи на экране появится окно, показанное на рисунке ниже.
 

 
Рисунок 3.9 – Создание ИК
 
Если на ИК имеются денежные средства, то запись ИК невозможна. При попытке перезаписать карту на экране появится сообщение «Создание карты невозможно: баланс карты ненулевой»[26].
Если на контактную площадку кардридера будет помещена карточка кассира или менеджера клуба, то на экране появится сообщение «Создание карты невозможно: некорректный номер карты или карта испорчена».
 
3.2.4               Проверка ИК
 
Для проверки ИК кассир должен нажать на кнопку «Проверка карточки», поместить ИК на контактную площадку кардридера и нажать кнопку «Ок». На экране появится следующая информация:
 

 
Рисунок 3.10 – Проверка карты
 
-       номер карты – уникальный номер ИК участника;
-       имя на карте – имя, введенное при регистрации;
-       баланс на карте – баланс денежных средств на карте;
-       тип карты – тип ИК (временная);
-       статус карты – статус соответствующей ИК (активна, закрыта);
-       дата, время – дата и время операции с картой;
-       наименование операции – описание операции;
-       номер билета – номер билета, приобретенного по карте;
-       сумма, руб – количество денег, которое участвовало в операции;
-       стартовая сумма – сумма денежных средств на начало операций с картой в текущий опердень;
-       Итого – итоговая сумма по операциям по карте;
-       Баланс по ID карте (к выплате) – сумма денежных средств, находящихся на карте и которые участник получит при выплате карты.
 
3.2.5               Инкассация терминала
 
Перед закрытием операционного дня необходимо провести инкассацию терминалов.
Опердень не может быть закрыт, если в терминалах есть денежные средства.
После того, как работник лотерейного клуба произведет выемку кассеты купюра-приемника, на экране кассира появится таблица с кодом и названием терминала, по которому необходимо провести инкассацию[27]. Информация по каждому терминалу описана в отдельной строке. Для принятия суммы инкассации необходимо нажать на кнопку «Принять» соответствующую данному терминалу.
Если терминал не был инкассирован, но был отключен от питания или связь с сервером была нарушена, то инкассацию можно произвести в выключенном состоянии. Для выключенных терминалов вместо кнопки «Принять» будет доступна кнопка «Инкассация». Процедура инкассации проходит аналогичным образом, что и для включенных терминалов.
Инкассацию выключенного терминала необходимо проводить на выключенном терминале. После включения терминала запись об инкассации удаляется. Тогда для ее проведения требуется принудительное отключение терминала.
 

 
Рисунок 3.11 – Инкассация терминалов
 
На экране будет указано:
-       инкассация # - идентификатор инкассации;
-       код терминала – идентификатор терминала;
-       название терминала – наименование терминала;
-       дата начала – дата начала инкассации;
-       сумма – сумма денежных средств, инкассированных на данном терминале.
Действие. Нажав на кнопку «Принять» кассир начнет прием денежных средств в кассу клуба.
Далее кассир должен пересчитать и ввести сумму, которую он принял от работника лотерейного клуба, и нажать на кнопку «Принять». Так же в этом разделе будет отображаться сумма, подлежащая инкассации в графе «Сумма, подлежащая инкассации»[27].
 

 
Рисунок 3.12 – Инкассация терминала
 
-       сумма – сумма денежных средств, подлежащая инкассации;
-       заметка – заметку необходимо вводить в случае, если введенная сумма инкассации не совпадает с суммой инкассации, зарегистрированной в системе.
Далее кассир должен подтвердить правильность суммы инкассации. Если введенная сумма соответствует  сумме денежных средств, которая была помещена в соответствующий купюроприемник (происходит сравнение  введенных кассиром данных с информацией, которая хранится в базе данных), то на экране появляется следующая надпись:
 

 
Рисунок 3.13 – Подтверждение инкассации
 
При нажатии на кнопку «ОК» кассир подтверждает и заканчивает процесс инкассации, при нажатии на кнопку «Cancel» кассир возвращается к предыдущему экрану.
Если кассир ввел сумму, несовпадающую с суммой денежных средств, которая была помещена в соответствующий купюроприемник, то на экране появляется следующая надпись:
 

 
Рисунок 3.14 – Предупреждение о несоответствии сумм инкассации
 
Для того, чтобы ввести правильную сумму, необходимо нажать на кнопку «Cancel». Для подтверждения ввода, необходимо ввести заметку в поле «Заметка» и нажать кнопку «ОК».
После проведения инкассации кассиру необходимо распечатать Приходный Ордер, нажав на кнопку «Печать» вверху страницы. Информация по совершенной операции для печати отобразится в новом окне.
 

 
Рисунок 3.15 – Приходный Ордер по операции инкассации
3.2.6               Кассовые операции
 
С помощью этого раздела кассир и менеджер лотерейного клуба могут пополнить кассу или вывести денежные средства из кассы.
3.2.6.1       Приходные операции
Для осуществления приходной операции кассир должен нажать на кнопку «Приходные операции» и затем  выбрать тип операции из выпадающего списка.
 

 
Рисунок 3.16 – Приходные операции
 
Возможно 6 типов операций:
-       Снятие со счета инкассации терминалов в кассу;
-       Возврат подотчета;
-       Возврат недостачи;
-       Поступления из ЦО;
-       Выявленный излишек;
-       Поступления из другого ЛК.
Для проведения приходной операции кассир должен выбрать статью из выпадающего списка, ввести сумму денежных средств и ФИО человека, от которого принята сумма. При необходимости, кассир может ввести комментарий к проводимой операции. Нажав на кнопку «Выполнить»,  кассир проведет соответствующую операцию. Информацию об операции можно увидеть в разделе «Отчет по кассе».
При выполнении операции Снятие со счета инкассации терминалов в кассу кассиру необходимо распечатать Приходный Ордер, нажав на кнопку «Печать» вверху страницы. Информация по совершенной операции для печати отобразится в новом окне.
 

 
Рисунок 3.17 – Печать Приходного Ордера
 
При выполнении остальных операций (кроме «Снятие со счета инкассации терминалов в кассу») кассиру необходимо распечатать Приходный Кассовый Ордер, нажав на кнопку «Печать» вверху страницы. Информация по совершенной операции для печати отобразится в новом окне.
 

 
Рисунок 3.18 – Печать Приходного Кассового Ордера
 
3.2.6.2       Расходные операции
Для осуществления расходной  операции кассир должен нажать на кнопку «Расходные операции» и затем  выбрать тип операции из выпадающего списка.
 

 
Рисунок 3.19 – Расходные операции
 
Возможно 6 типов операций:
-       перемещение в кассу ЦО;
-       пополнение счета инкассации терминалов через кассу;
-       инкассация в Банк;
-       выдача подотчет;
-       выявление недостачи;
-       перемещение в другой ЛК.
Для проведения расходной операции кассир должен выбрать статью из выпадающего списка, ввести сумму денежных средств, ФИО получателя и паспортные данные получателя. При необходимости, кассир может ввести комментарий к проводимой операции. Нажав на кнопку «Выполнить»,  кассир проведет соответствующую операцию. Информацию об операции можно увидеть в разделе «Отчет по кассе».
При выполнении операции Пополнение счета инкассации терминалов через кассу кассиру необходимо распечатать Расходный Ордер, нажав на кнопку «Печать» вверху страницы. Информация по совершенной операции для печати отобразится в новом окне.
 

 
Рисунок 3.20 – Печать Расходного Ордера
 
При выполнении остальных операций (кроме операции Пополнение счета инкассации терминалов через кассу) кассиру необходимо распечатать Расходный Кассовый Ордер, нажав на кнопку «Печать» вверху страницы. Информация по совершенной операции для печати отобразится в новом окне.

 
Рисунок 3.21 – Печать Расходного Кассового Ордера
 
3.2.7               Отчеты
 
В данном разделе находятся отчеты по карточным счетам, терминалам и кассе.
3.2.7.1       Карточные счета
При нажатии на кнопку «Карточные счета» на экране отобразится таблица карточных счетов с информацией по ним. В таблице выводятся активные карточные счета и закрытые за предыдущий и текущий операционный день. Также, в данном отчете есть функция выплаты по картам, которые не были активны (по которым не проводились операции) свыше 183 дней, но сами идентификационные карты имеют статус «активна» и могут иметь не нулевой баланс.
 

Рисунок 3.22 – Карточные счета
 
Кассир может отфильтровать ИК по статусу (заведена, активна, закрыта), поставив флажки рядом с соответствующими надписями.
В таблице выводится следующая информация:
-       номер карточки – уникальный идентификатор ИК;
-       имя карточки – имя владельца ИК, внесенное при регистрации;
-       тип – тип ИК (временная);
-       статус - статус ИК (заведена, активна, закрыта);
-       баланс на карте – сумма баланс денежных средств на карте участника;
-       дата – дата создания ИК;
-       выплата –  нажав на эту кнопку, кассир может осуществить выплату по соответствующей карте. Кнопка выплата автоматически становится активна по истечении определенного срока (183 дня).
Для карт, которые не фигурировали в системе более чем 183 дней, и по которым не было произведено выплаты, в ячейке «Выплата» доступны кнопки «Выплатить». Эта функция позволяет обнулить баланс карточки и изменить ее статус на «закрыта».
Для осуществления выплаты по нужной карте кассир должен нажать на кнопку «Выплата» для соответствующей карты.
На экране отобразится информация по этой карте и кнопка «Выплатить».
 

 
Рисунок 3.23 – Выплата по карте
 
Нажав на кнопку «Выплатить», кассир обнулит и закроет карту.
Если карта имела нулевой баланс, но была со статусом «активна», она не может быть выплачена. Для такой карточки функция «Выплатить» выполняет смену статуса на «закрыта».
3.2.7.2     Отчет по терминалам
В данном разделе представлена статистика по приему денежных средств терминалов, расположенных в лотерейном клубе.
 

 
Рисунок 3.24 – Отчет по терминалам
 
В таблице выводится следующая информация:
-       код терминала – идентификатор терминала;
-       имя терминала – название терминала;
-       купюроприемник – сумма денежных средств, поступивших в терминал;
-       баланс терминала – баланс идентификационной карты участника;
-       № карты – номер идентификационной карты участника, находящейся в кардридере терминала.
В строке Итого  находится суммарная информация о принятых и выплаченных суммах во всех терминалах лотерейного клуба, а также суммарный баланс терминалов лотерейного  клуба.
3.1  
3.2  
3.2.1  
3.2.2  
3.2.3  
3.2.4  
3.2.5  
3.2.6  
3.2.7  
3.2.7.1  
3.2.7.2  
3.2.7.3 Отчет по кассе
В данном разделе находится отчет о проведенных кассовых операциях за период с начала операционного дня по текущий момент.
 

 
Рисунок 3.25 – Отчет по кассе
 
В таблице выводится следующая информация:
-       стартовый баланс – сумма денежных средств, которая была в кассе на начало операционного дня;
-       дата – дата операции;
-       операция # - идентификатор операции;
-       имя операции – название операции;
-       пополнение – сумма, которая была внесена в кассу;
-       снятие – сумма, которая была выведена из кассы;
-       итого – сумма введенных и выведенных из кассы средств;
-       текущий остаток – остаток денежных средств в кассе на текущий момент.
По каждой операции может быть распечатан кассовый ордер. Для этого необходимо в конце строки выбранной операции нажать кнопку «Печать». В открывшемся окне появится форма для печати ордера, соответствующего проведенной операции.
3.2.7.1  
3.2.7.2  
3.2.7.3  
3.2.7.4 Отчет кассира
В данном разделе находится отчет о работе кассы.
 

 
Рисунок 3.26 – Отчет по кассе
 
На странице отчета выводится следующая информация:
-       организация – наименование юридического лица, к которому относится ЛК (берется из справочника).
-       структурное подразделение – адрес ЛК (берется из справочника).
В таблице выводится следующая информация:
-       остаток на начало смены – сумма денежных средств, которая была в кассе на начало операционного дня.
-       основание – основание для проведения операции.
-       приход, руб. – сумма, которая была внесена в кассу.
-       расход, руб. – сумма, которая была выведена из кассы.
-       итого за смену – сумма введенных и выведенных из кассы средств.
-       остаток на конец смены – остаток денежных средств в кассе на конец операционного дня.
Закрытие опердня кассы производится с помощью программы Hall Manager.
 
3.2.8               Терминалы
 
По кнопке «Терминалы» открывается окно системы онлайн оповещений о проблемах в работе лотерейных терминалов клуба.
Системой оповещений отслеживается следующие типы проблем:
-       открыта главная дверь терминала;
-       открыта дверь купюроприемника;
-       снят стэкер;
-       терминал в состоянии Out of Service.
В зависимости от наличия проблем выделяются три статуса состояния лотерейного терминала:
-       все нормально – проблем не обнаружено, лотерейный терминал находится в работе
-       проблема в работе терминала – обнаружена одна или несколько проблем первых 3 типов.
-       Out of Service – лотерейный терминал находится в состоянии Out of Service.
При возникновении проблемы любого из указанных типов на рабочем месте кассира лотерейного клуба возникает список лотерейных терминалов, в котором:
-      строка с лотерейным терминалом поднимается вверх списка,
-      проблема подсвечивается красным цветом и мигает,
-      после того как проблема перестанет мигать, выделение цветом будет сохранено до устранения проблемы.
Таким образом, кассир оповещается о возникших и существующих проблемах в работе лотерейных терминалов клуба.
3.2.8.1       Работа с системой оповещения
Для работы с системой оповещения необходимо запустить приложение Cash Desk и авторизоваться в нем. После авторизации окно системы оповещения появится автоматически на рабочем месте кассира. (Рисунок 3.32)
 

 
Рисунок 3.27 – Окно системы оповещений о работе терминалов
 
-       терминал – имя терминала в списке терминалов;
-       статус – статус терминала;
-       дверь – состояние главной двери терминала;
-       дверь купюроприемника – состояние двери купюроприемника;
-       стэкер – состояние стэкера.
Для того, чтобы закрыть список терминалов воспользуйтесь крестиком в верхнем правом углу окна системы. Для того, чтобы открыть окно системы оповещений, нажмите на кнопку «Терминалы» на функциональной панели приложения Cash Desk.
Окно списка терминалов открывается автоматически, если была обнаружена проблема в работе одного из лотерейных терминалов. Также, если окно было неактивным, то при возникновении проблемы оно появляется на переднем плане рабочего места кассира.
После устранения проблемы с соответствующей ячейки выделение красным цветом снимается, и строка с лотерейным терминалом перемещается вниз.
 
  
4 Экономическая часть
 
4.1 Выбор и обоснование методики расчета экономической
эффективности проекта
 
Экономический эффект от внедрения средств автоматизации может быть лишь косвенным, так как внедренные средства автоматизации не являются прямым источником дохода, а являются либо вспомогательным средством организации получения прибыли, либо помогают минимизировать затраты.
Оценить экономический эффект от использования программы можно двумя способами: простым и сложным (более трудоемкий способ, но более точный). Простой способ это некоторое упрощение сложного способа с учетом различных «оговорок». Например, если материальные затраты не меняются после внедрения программы, то их можно исключить из расчета, тем самым его упростив. Полная оценка по сложному алгоритму, как правило, проводится квалифицированными специалистами по итогам обследования бизнес-процессов предприятия. Но если необходимо быстро и приблизительно оценить эффективность внедрения средства автоматизации, то можно в представленные формулы подставлять оценочные значения затрат. Конечно, при использовании оценок затрат, а не их фактических значений, экономический эффект будет посчитан не точно, но тем не менее позволит оценить выгодность и необходимость автоматизации.
Главный экономический эффект от внедрения средств автоматизации заключается в улучшении экономических и хозяйственных показателей работы предприятия, в первую очередь за счет повышения оперативности управления и снижения трудозатрат на реализацию процесса управления, то есть сокращения расходов на управление. Для большинства предприятий экономический эффект выступает в виде экономии трудовых и финансовых ресурсов, получаемой от :
-       снижения трудоемкости расчетов;
-       снижение трудозатрат на поиск и подготовку документов;
-       сокращение затрат на проведение вычислительных операций.
-       сокращения служащих предприятия.
Снижение же трудозатрат на предприятии возможно за счет автоматизации работы с документами, снижения затрат на поиск информации.
 Базой для оценки экономической эффективности автоматизированной системы может служить сокращение расходов на фонд оплаты труда персонала
Критерием эффективности создания и внедрения новых средств автоматизации является ожидаемый экономический эффект.
 
4.2 Расчет показателей экономической эффективности разрабатываемого проекта.
 
К основным обобщающим показателям экономической эффективности           относятся:
-       годовой экономический эффект от разработки и внедрения автоматизированной системы;
-       срок окупаемости автоматизированной системы;
 Рассмотрим расчет экономической эффективности автоматизации АРМ кассира-оператора.
 
3.2.1 Уменьшение прямых затрат
 
Выбор метода расчета по уменьшению прямых затрат.
Основой для расчета годового экономического эффекта является методика, которая предусматривает сопоставление приведенных затрат по базовому и внедряемому вариантам.
Годовой экономических эффект определяется по формуле 4.1:
 
Эг = ((Тб+Ен×Кб)-(Тв+Ен×Кв))*В,                           (4.1)
 
где Тб, Тв –  годовые текущие затраты в базовом и внедряемом варианте;
 
Кб, Кв – капитальные вложения  в базовом и внедряемом варианте;
Ен –нормативный коэффициент эффективности капитальных вложений, равный 0,3;
В –число единиц ПП, внедренного в текущем году.
Срок окупаемости затрат в годах определяется по формуле 4.2:
 
Ток= (Кв –Кб)/Эг,                                             (4.2)
 
При определении экономического эффекта, в расчете капитальных и текущих затрат, учитываются только те статьи затрат, которые имеют различия в  базовом и внедряемом вариантах.
При расчете экономического эффекта  в качестве базового варианта принят ручной метод обработки  документации.
При внедрении автоматизации, обработку документации будут вести два человека, которые  будут работать на персональном компьютере, используя специально разработанную программу и 50% времени.
 
3.2.2 Капитальные затраты
 
Капитальные затраты представляют как разовые затраты, необходимые для приобретения программного продукта, оборудования, производственных помещений, требуемого инвентаря и т.д.
Капитальные затраты в базовом варианте определяются затратами на организацию рабочих мест (офисная мебель, оборудование). Суммарная стоимость составляет 25 000 руб.
Кб=25000 руб.
Капитальные затраты во внедряемом варианте определяются в Таблице 4.1:
 
Таблица 4.1 - Затраты




Показатели
Единица измерения
Значение
1.    Стоимость электронно-вычислительных машин и всех периферийных средств:
-     системный блок – 24000 руб.;
-     клавиатура – 400 руб.;
-     мышь – 300 руб.;
-     принтер – 13000 руб.;
-     монитор – 5300 руб.
-     картридер – 2000
Руб.
45000
2. Стоимость лицензионного программного обеспечения
Руб.
15000
3. Страховые взносы во внебюджетные фонды
  %
30
 
Кв = 15 000 + 45 000= 60 000 руб.
 
3.2.3 Текущие затраты
 
Текущие расходы складываются из заработной платы работников и других расходов, связанных обслуживанием выполнением проводимых работ.
Заработная плата определяется как сумма основной заработной платы и отчислений на социальное страхование.
Текущие расходы, связанные с затратами на обслуживание выполняемых работ (организация работ, амортизация и ремонт оборудования, использование производственных площадей, обеспечение энергией и другие статьи затрат) могут рассматриваться как конкретные статьи затрат или как накладные расходы, составляющие определенный процент от заработной платы.
В выполнение указанных расчетов заняты 4 человека с заработной платой в 6000 руб. каждый, в среднем на выполнение данной задачи используют 50% рабочего времени. Их годовая заработная плата равна:
Зоб= 4×6000×12×0.5=144 000 руб.
Зсб= 0.3×Зоб=43200 руб.
Зб=Зоб+Зсб=144 000+43200=187200
Накладные расходы приняты равными 50% заработной платы:
Нб=187200×0.5=93600 руб.
Текущие расходы в базовом варианте составляют:
Тб=187200+93600 =280800 руб.
При внедрении АРМ Кассира будет занято 2 человека с заработной платой 8000 руб, выполняют работу с использованием программы за 50% времени. Их годовая заработная плата за аналогичный период равна:
Зов=2×8000×12×0.5=96000 руб.
Звс=0.3×96000=28800 руб.
Зв=96000+28800= 124800 руб.
Накладные расходы приняты равными 50% заработной платы:
Нв=124800×0.5=62400 руб.
Текущие расходы в базовом варианте составляют:
Тв=124800+62400 =187200 руб.
Расчет экономического эффекта.
Предполагается, что годовой эффект использования автоматизированной системы расчетов составит:
Эг=(280800+0.3×25000) –(187200+0.3×60000)=288300-205200=83100 руб.
Уменьшение трудоемкости числа работников дает возможность получить годовой экономический эффект при использовании разработанной программы 83100 руб.
Срок окупаемости затрат на автоматизацию данной задачи (в годах):
Ток=(60000-25000)/83100=0.42, т.е приблизительно 4 месяца.
Внедрение на предприятии  ООО «Стар Бет» программного продукта автоматизации кассового аппарата экономически целесообразно и принесет данному предприятию годовой экономический эффект 83100 (руб.).
 Из полученных цифр можно сделать вывод, что даже при приблизительном расчете экономическая эффективность от внедрения программного средства получилась значительной. Такой она получилась за счет увеличения производительности труда сотрудника.
По результатам расчета экономической эффективности проектирования и внедрения средства автоматизации можно сделать вывод , что это выгодно. Хоть выгода и косвенная, но, как правило, заметная в средне и долгосрочной перспективе. Внедрение средств автоматизации может привести к корректированию самого бизнес-процесса, так как задачи выполняются быстрее. Сотрудники могут обрабатывать большие объемы информации за свое рабочее время, что можно использовать или для уменьшения затрат на персонал или для быстрого развития бизнеса при неизменности количества сотрудников, занятых обработкой информации.
Как показывает практика автоматизация бизнес процессов, в особенности таких как расчет себестоимости продукции, подготовка регламентированной отчетности по результатам деятельности, учет взаиморасчетов с контрагентами, формирование и учет печатных документов несет в себе большой потенциал для развития и материальную выгоду с течением времени. 
В процессе расчета экономической эффективности необходимо учитывать одно свойство автоматизации. Заключается оно в следующем: чем больше средств и времени потрачено на автоматизацию тем выше экономический эффект от внедрения. Объясняется это довольно просто: если качественно подойти к выбору программного продукта, качественно проработать все бизнес-процессы на этапе проектирования и внедрения, все описать и отладить, то в последующем будет потрачено гораздо меньше средств на эксплуатацию программы.  
Важно отметить, что в случае если одним программным средством автоматизируются различные подразделения и сотрудники, то уменьшаются затраты на организацию документооборота между ними. Уменьшаются как временные, так и материальные затраты.


 
5 Безопасность труда.
 
5.1 Безопасность жизнедеятельности обслуживающего персонала АРМ кассира – оператора.
 
Рабочее место оператора-это место человека в системе «человек-машина», оснащенное средствами отображения информации, органами управления и вспомогательным оборудованием, на котором осуществляется его трудовая деятельность. Рабочее место может быть индивидуальным или коллективным (для двух и более операторов).
Организация рабочего места зависит в основном от характера труда оператора (труд умственный или физический, разнообразный или монотонный) и условий труда (комфортные или неблагоприятные).
Комфортные условия труда – состояние внешней среды на рабочем месте оператора, обеспечивающее оптимальную динамику работоспособности оператора. Хорошее самочувствие и сохранение его здоровья.
Комфортность труда и высокая производительность на рабочем месте оператора зависит также от правильного выбора основного технологического оборудования, которое должно отвечать эргономическим требованиям по ГОСТ 12.2.049-80
Рабочее место должно обеспечивать возможность удобного выполнения работ в положении сидя или стоя или и в положениях и сидя и стоя в соответствии с ГОСТ 12.2.032-78 при работе сидя  ГОСТ12.2.033-78 при работе стоя.
Рабочее место включает в себя информационное поле (пространство со средствами отображения информации) и моторное поле (пространство с органами управления).
В информационном поле зоны зрительного наблюдения различат три    зоны.
В зоне 1 располагаются очень часто использованные средства отображения информации, требующие точного и быстрого считывания показателей.
В зоне 2 – часто используемые средства отображения информации, требующие менее точного и быстрого считывания.
В зоне 3 – редко используемые средства отображения информации.
В моторном поле также различают три зоны. Зоны оптимальной досягаемости 1 –очень часто использованные органы управления и наиболее важные – 2 раза в минуту и более. Зона легкой досягаемости 2 –часто используемые органы управления – 2 раза в минуту. Зона досягаемости 3 – редко используемые органы управления – менее 2 раз в час.
Важным моментом в организации рабочего места является также определение занимаемой им производственной площади. Необходимость в этом диктуется  тем, чтобы эта площадь позволяла удобно с наименьшей затратой энергии безопасно и производительно вести трудовой процесс, т.е. соответствовала нормам технологического проектирования, и, во-вторых, чтобы эта площадь по величине была не менее 4,5м2 на одного работающего, предусмотренной санитарными нормами проектирования промышленных предприятий ( СП 2.2.1.1312-03). Рабочие места с дисплеями должны располагаться между собой на расстоянии не менее 1,5 м, от стен – расстояние не менее 1 м. С целью снижения или устранения нервнопсихического,  зрительного и мышечного напряжения необходимо проводить производственную гимнастику, сеансы  психофизической разгрузки во время регламентированных перерывов и после окончания  рабочего дня.
 К работе на ПЭВМ допускаются лица прошедшие, производственное обучение и инструктаж по безопасным приемам работы непосредственно на  рабочем месте в течение первых 2-5 смен, изучившие инструкции по эксплуатации этих машин и допущенные к самостоятельной работе распоряжением по подразделению.
Основными опасными и вредными производственными факторами являются:
- печатающее устройство;
- устройство воздушного охлаждения;
- падающие предметы;
- действие рентгеновского, ультрафиолетового  излучений, напряженность электромагнитного и электростатических полей;
- недостаточная освещенность;
- психоэмоциональное напряжение.
Кассир-оператор обязан:
- изучать и совершенствовать методы безопасной работы;
- выполнять только порученную работу;
- иметь отчетливое представление об опасности поражения электрическим током и опасности приближения к токоведущим частям (опасное напряжение, опасная сила тока,  величина сопротивления заземления);
- иметь практические навыки оказания первой до врачебной помощи пострадавшим от электротока;
- при  получении травмы на производстве немедленно обратиться в медицинское учреждение и сообщить руководителю о происшедшем несчастном случае.
При эксплуатации электрооборудования опасным производственным фактором является электрический ток. Предельно допустимая величина переменного тока 0,3 мА.
Работник обязан соблюдать требования по обеспечению пожарной безопасности, знать место нахождения средств пожаротушения, уметь пользоваться первичными средствами пожаротушения, в том числе огнетушителями углекислотными марки ОУ-5, ОУ-10 или порошковыми марки ОП-5, ОП-10.
Перед началом работы оператор должен:
Осмотреть и привести в порядок рабочее место. Отрегулировать освещенность на рабочем месте, убедиться в достаточности освещенности, отсутствии отражений на экране;
Проверить путем внешнего осмотра исправность  электро-розетки, вилки  сетевого кабеля машины,  убедиться в отсутствии оголенных проводов. Рабочее место должно быть оборудовано двухполюсной розеткой с заземляющим контактом, подключенным к заземляющему контуру.
Проверить правильность установки стола, стула, подставки для ног, положения оборудования, угла наклона экрана, положение клавиатуры, положение «мыши» на специальном коврике, при необходимости произвести регулировку рабочего стола и кресла, а также расположение элементов компьютера в соответствии с требованиями эргономики и в целях исключения неудобных поз и длительных напряжений тела.
 Удалить пыль с поверхности машины и печатающего устройства сухим материалом.
 Садиться  так,  чтобы линия взора приходилась в центр экрана дисплея на расстоянии от 50 до 100 см от глаз оператора. Яркость свечения экрана должна быть не менее 100 кд/кв.м (светлый фон). Яркость символов на экране 22-32 кд/кв.м. Контрастность изображения знака не менее 0,8.  Количество строчек на строке не менее 640. Экран должен иметь антибликовое покрытие.
Производя пуск машины, убедиться в отсутствии напряжения. При появлении ощущения пощипывания при прикосновении к металлу отключить оборудование и сообщить об этом руководителю.
Во время работы не снимать крышек, кожухов.
Для исключения влияния статического электричества не дотрагиваться руками до экрана,  не работать во влажной одежде и влажными руками.
Средства видеотерминальных устройств должны быть защищены от воздействия прямых солнечных лучей.
При  появлении посторонних запахов,  звуков,  резком повышении температуры оборудования, появлении вибрации отключить оборудование и поставить в известность руководителя.
В целях предотвращения вредного влияния на организм работающих пылинок  с  аэроионами необходимо проводить влажную уборку помещений и не реже 1 раза в смену удалять пыль с экранов при выключенном оборудовании.
Для нормализации ионного состава  воздушной  среды необходимо проводить в любое время года естественное проветривание длительностью не менее 10 минут после каждых 2 часов работы.
Работнику при работе на ПК запрещается:
-       касаться одновременно экрана монитора и клавиатуры;
-       прикасаться к задней панели системного блока (процессора) при включенном питании;
-       переключать разъемы интерфейсных кабелей периферийных устройств при включенном питании;
-       допускать попадание влаги на поверхность системного блока (процессора), монитора, рабочую поверхность клавиатуры, дисководов, принтеров и других устройств;
-       производить самостоятельное вскрытие и ремонт оборудования.
-       в случае сигнала аварии работы должны быть прекращены.
Во всех случаях обнаружения обрыва проводов питания, неисправности заземления и других повреждений электрооборудования, появления гари немедленно отключить питание и сообщить об аварийной ситуации руководителю.
 При возгорании отключить приборы, приступить к тушению пожара имеющимися на рабочем месте средствами.
 
5.2 Расчёт количества светильников, необходимых для нормальной зрительной работы.
 
Правильно спроектированное и выполненное освещение обеспечивает возможность нормальной работы, сохранность зрения человека, его центральной нервной системы. Освещение влияет на производительность труда и качество выполняемой работы. Чрезмерно яркое освещение вызывает ослепление, раздражение и резь  в глазах. Недостаточность освещения приводит к напряжению зрения, преждевременной усталости и ослаблению внимания. Неправильное направление света на рабочее место может создавать резкие тени и блики
При освещении помещений используется естественное освещение, создаваемое светом солнца, которое может достигать величины 100 000 люкс., искусственное освещение, осуществляемое электрическими лампами, и совмещенное, при котором в светлое время суток недостаточное по нормам освещение добавляется искусственным освещением. В спектре естественного света больше необходимых для человека ультрафиолетовых лучей, высокая диффузия (рассеянность) света, но оно подвержено колебаниям от различных условий: метеорологических, времени года, времени дня, загрязненных окон и т.п.
Естественное освещение подразделяется на боковое, осуществляемое через световые проемы в  наружных стенах и верхнее, осуществляемое через прозрачные проемы в перекрытиях, а также комбинированное, когда к верхнему освещению добавляется боковое.
Работа в любое время суток, включая ночной период, обеспечивается только применением искусственного освещения.  Оно должно обеспечивать достаточную яркость рабочей поверхности и благоприятное распределение яркости в поле зрения, должно быть достаточно равномерным, потому что при неравномерном освещении происходит частая, незаметная для человека, переадаптация зрения, что приводит к его утомлению и в перспективе к снижению зрения.
По конструктивному исполнению искусственное освещение бывает двух систем: общее и комбинированное, когда к общему освещению добавляется местное. Общее освещение - когда светильники, расположенные в верхней части помещения, создают полную нормируемую освещенность на рабочей поверхности. Общее освещение делиться на общее равномерное освещение и на общее локализованное освещение. Одно местное освещение применять внутри зданий не допускается. Комбинированное освещение,  это когда светильники, расположенные в верхней части помещения. Создают меньшую часть нормируемой освещенности (10-20%), а основную часть освещения создают местные светильники на рабочих местах. Комбинированное освещение имеет ряд преимуществ перед общим освещением: уменьшает общий расход электроэнергии за счет уменьшения установленной мощности источников света из-за близкого расположения местных светильников к рабочей поверхности  и выключения светильников местного освещения на свободных рабочих местах, повышают видимость и ограничивают тени и блики на рабочих местах. Но смотря на ряд экономических преимуществ системы комбинированного освещения используется значительно реже, чем система общего освещения.
Проектируемое освещение должно удовлетворять следующим основным требованиям:
-       обеспечить нормативный уровень освещенности на рабочих местах, соответствующий характеру выполняемой работы;
-       исключать блёскость и тени;
-       быть равномерным, обеспечивать правильный спектр излучения и оптимальное направление светового потока;
-       быть экономичным, безопасным, оказывать благоприятное биологическое воздействие.
Основным документом при выборе систем освещения является СНиП 23-05-95 ’Естественное и искусственное освещение’.
Рабочее место кассира расположено внутри здания. В целях безопасности используется только искусственное освещение, представленное люминесцентными лампами дневного света с мощностью 40 Вт, тип светильника ОДР.
Целью расчета искусственного освещения является определение требуемой мощности, необходимой для создания на рабочих местах нормированной освещенности.
Для расчета искусственного освещения применяются три метода. Для расчета общего равномерного освещения при горизонтальной рабочей поверхности основным является метод светового потока. Точечный метод применяют для расчета локализованного и комбинированного освещения, освещения наклонных и вертикальных поверхностей. Метод удельной мощности является наиболее простым, но и наименее точным, его применяют только при ориентированных расчетах.
Воспользуемся методом светового потока для того, чтобы рассчитать количество светильников, необходимых для нормальной зрительной работы кассира в букмекерском клубе.
Световой поток определяется по формуле:
Fл = (Eн × K × S × Z) / (N×Q) , где
Fл – световой поток лампы, лм;
Eн – минимальная освещенность, лк;
К – коэффициент запаса, принимаемый для люминесцентных ламп 1,5.
S – площадь освещаемого помещения, м2;
Z – коэффициент минимальной освещенности, равный отношению средней освещенности к минимальной (Z=1.1 для люминесцентных ламп);
N – потребное число ламп, шт.;
Q – коэффициент использования светового потока, равный отношению потока падающего на рабочую поверхность к общему потоку ламп;
Выразим из этой формулы потребное число ламп (N).
N = (Eн × K × S × Z) / (Fл × Q)
Данные рабочего места кассира в букмекерском клубе:
-длина кабины В = 4 м;
-ширина кабины А = 3 м;
-высота кабины Н = 2.5 м
-высота подвеса светильника от потолка Нс = 0 м;
-высота рабочего места Нрм = 0.8 м;
Согласно СниП 23-05-95 зрительные работы относятся к 4 разряду с освещенностью Ен = 400 лк.
Источник света – ЛД 40 со световым потоком Fл = 2225 лм. Светильник ОДР с двумя лампами. Стены и потолок окрашены в светлый тон с коэффициентом отражения соответственно Gп =70 % и Gc = 50 %.
 
Решение:
Для определения необходимого числа ламп найдем величины, входящие в формулы:
Нр – высота подвеса светильника над рабочей поверхностью
Нр = Н – Нс – Нрм = 2.5 – 0 – 0.8 =1.7
i = величина показателя помещения
i = ( А × В ) / ( Нр × ( А + В )) = ( 3 × 4 ) / ( 1.7 × ( 3 + 4 )) = 0.92
По таблице ’Коэффициенты использования светового потока светильника’ найдем Q = 0.49.
Таким образом, число ламп, необходимых для освещения равно:
N = ( 400 × 1.5 × 12 × 1.1 ) / ( 2225 × 0.49 ) = 8 ламп ( или 4 светильника).


 
 
Заключение
 
В настоящем дипломном проекте выполнены проектные работы по автоматизации кассового аппарата на предприятии ООО «Бинго Бум».
Итогом выполненной работы является АРМ кассира – оператора по учету и контролю. Система полностью отвечает требованиям, сформулированным при постановке задачи. Это означает, что специфическая цель, поставленная в рамках данной работы, достигнута.
В ходе разработки АРМ были осуществлены следующие работы:
-       сформулированы основные задачи, которые необходимо автоматизировать;
-       обоснован выбор программного обеспечения, технического обеспечения, информационного обеспечения и технология проектирования;
-       разработаны проектные решения по информационному, программному, техническому и технологическому обеспечению комплекса задач;
-       спроектирована БД для централизованного хранения необходимой информации по оказанным услугам;
-       обоснована методика и выполнен расчет показателей экономической эффективности от внедрения АРМ кассира – оператора по учету и контролю, а также обоснована целесообразность внедрения данного проекта.
Внедрение АРМа кассира – оператора по учету и контролю позволит существенно сократить затраты квалифицированного труда на обслуживания клиентов.
Срок окупаемости затрат на разработку и внедрение проекта составляет приблизительно 5 месяцев.
Систему можно усовершенствовать, разработав дополнительный модуль «Бухгалтерия» позволяющий уменьшить затраты на организацию документооборота между ними, уменьшаются как временные, так и материальные затраты.
 
 
  
 
Список литературы
 
1              Акофф, Р.Л. Планирование будущего корпорации. – М.: Сирин, 2008. – 256 с.
2              Ансофф, И. Новая корпоративная стратегия. – СПб.: Питер Ком, 2009. – 416 с.
3              Бакаев, А.А., Гриценко, В.И., Козлов, Д.Н. Методы организации и обработки баз знаний // Наукова думка. – Киев. – 1993.
4              Бестенс, Д., В. Ван ден Берг, Д. Вуд. Нейронные сети и финансовые рынки. Принятие решений в торговых операциях. – М.: ТВП, 2007.
5              Благодатских, В.А. Стандартизация разработки программных средств: учебное пособие. – М.: Финансы и статистика, 2005.
6              Бойко, В.В., Савинков, В.М. Проектирование информационной базы автоматизированной системы на основе СУБД. – М.: Финансы и статистика, 1982.
7              Боровиков, В.П. Прогнозирование в системе STATISTICA в среде Windows. Основы теории и интенсивная практика на компьютере: учебное пособие. – М.: Финансы и статистика, 2009. – 384 с.
8              Браун, М.Г. Сбалансированная система показателей: на маршруте внедрения. – М.: Альпина Бизнес Букс, 2005. – 226 с.
9              Буч, Г. Объектно-ориентированное программирование с примерами применения. – Киев: Диалектика, 1992.
10         Вендров, А.М. Практикум по проектирование программного обеспечения экономических информационных систем. – М.:  Финансы и статистика, 2006.
11         Вендров, А.М. Практикум по проектированию программного обеспечения экономических информационных систем: учебное пособие. – М.: Финансы и статистика, 2002.
12         Вендров, А.М. Проектирование программного обеспечения экономических информационных систем: учебник. — М.: Финансы и статистика, 2000.
13         Вендров, А.М. Проектирование программного обеспечения экономических информационных систем: учебник. – М.: Финансы и статистика, 2006.
14         Глицкий, А.Б. Применение автоматизированных систем бухгалтерского учета на предприятии. – М.: Финансы и статистика, 2002. – 320 с.
15         Дадько А.С. Бухгалтерский учет на компьютере. – М.: Амика-пресс, 2004. – 107 с.
16         Гончарук, В.А. Развитие предприятия. – М.: Дело, 2000. – 208 с.
17         Грекул, В. И. Проектирование информационных систем: курс лекций : учебное пособие / В.И. Грекул, Г.Н. Денищенко, Н.Л. Коровкина. – М.: Интернет-Университет Информационных Технологий, 2005. – 299 с.
18         Гудман, С. Введение в разработку и анализ алгоритмов. – М.: Мир, 1981.
19         Дюбуа, Д., Прад,  А. Теория возможностей. Приложение к представлению знаний в информатике. – М.: Радио и связь, 1990. – 288 с.
20         Емельянова, Н. З., Партыка, Т. Л., Попов, И. И. Основы построения автоматизированных информационных систем: учебное пособие. – М.: Инфра-М, 2008. – 260 с.
21         Жоголев, Е.А. Технология программирования. – М.: Научный мир, 2004 - 216 с.
22         Иванова, Г.С. Технология программирования: Учебник для вузов.-  М.: Изд-во МГТУ им. Н.Э. Баумана, 2002.
23         Ивлиев, М.К. Пошаговая методика обучения автоматизации бухгалтерского учета. – М.: Интеллект-Сервис, 2003. – 123 с.
24         Суворова, Е. Автоматизация предприятия: когда и как // Бухгалтер и компьютер. – 2004. – №1. – 15-21 с.
25         Безопасность жизнедеятельности. Учебник для вузов / К.Б. Кузнецов, В.К. Васин, В.И. Купаев, Е.Д. Чернов; Под. ред. К.Б. Кузнецова. – М.: Маршрут, 2005. – 576 с.
26         Информационные технологии в экономике и управлении / Под ред. В.В.Трофимова. – М.: Высшее образование, 2007.
27         Основы экономической информатики: Учебное пособие/А.Н. Морозевич и др. – Мн.: ООО Мисанта, 2010.
28         Калачанов, В.Д. Экономическая эффективность внедрения информационных технологий: учебное пособие / В.Д. Калачанов, Л.И. Кобко. – М.: МАИ, 2006.
29         Калянов, Г.Н. Моделирование, анализ, реорганизация и автоматизация бизнес-процессов: Учебное пособие. – М.: Финансы и статистика, 2006.
30         Карминский, А.М., Нестеров, П.В. Информатизация бизнеса. – М.: Финансы и статистика, 1997.
31         Майерс, Г. Искусство тестирования программ. – М.: Финансы и статистика, 1982.
32         Майерс, Г. Надежность ПО. – М.: Мир, 1980
33         Маклаков, С.В. Саsе - средства разработки информационных систем. – М.: Диалог-Мифи, 1999.
34         Мацяшек, Л. Анализ требований и проектирование информационных систем. Разработка информационных систем с использованием UML. – М.: Вильямс, 2002.
35         Мелихов, А.Н., Бернштейн, Л.С., Коровин, С.Я. Ситуационные советующие системы с нечеткой логикой. – М.: Наука, 1990. – 272 с.
36         Организация кассовой работы/ под ред. М.Г. Ульченко. –  М.: Финансы и статистика, 1994г.
37         Смирнова, Г.Н. Проектирование экономических информационных систем: Учебник / под ред. Ю.Ф. Тельнова. – М.: Финансы и статистика, 2001. – 512 с.
 
 
Приложение А
(обязательное)
 
Листинг программного обеспечения
 


unit uKKMClass;
 
interface
uses
  Classes, COMObj, Forms, SysUtils, Variants;
type
  TCheck = class;
  TChecks = class;
  TCheckGoods = class;
  TKKM = class;
  TKKMErrors =
    ( kkmeNoErrors,
      kkmeNoConnection,
      kkmeErrorCashierPasswordSet,
      kkmeErrorAdminPasswordSet,
      kkmeErrorSysAdminPasswordSet,
      kkmeErrorClosingOpenedCheck,
      kkmeErrorPaymentLessThenCheckSum,
      kkmeErrorRegistration,
      kkmeErrorReturn,
      kkmeErrorPercentDiscountPerPosition,
      kkmeErrorSumDiscountPerPosition,
      kkmeErrorPercentDiscountPerCheck,
      kkmeErrorSumDiscountPerCheck,
      kkmeErrorPayment0,
      kkmeErrorPayment1,
      kkmeErrorPayment2,
      kkmeErrorPayment3,
      kkmeErrorCloseCheck,
      kkmeErrorXReport,
      kkmeErrorZReport,
      kkmeErrorIncome,
      kkmeErrorOutcome
      );
  TRegType = (rtSell, rtReturn);
  TCheckGood = class(TCollectionItem)
  private
    FGoodPrice: Double;
    FGoodCaption: String;
    FGoodAmount: Double;
    FGoods: TCheckGoods;
    FSumDiscount: Double;
    FPercentDiscount: Double;
    FDepartment: Integer;
    function GetCheck: TCheck;
    function GetGoodSum: Double;
  public
    constructor Create(Collection: TCollection);override;
  published
    property Goods: TCheckGoods read FGoods;
    property Check: TCheck read GetCheck;
    property GoodCaption: String read FGoodCaption write FGoodCaption;
    property GoodAmount: Double read FGoodAmount write FGoodAmount;
    property GoodPrice: Double read FGoodPrice write FGoodPrice;
    property SumDiscount: Double read FSumDiscount write FSumDiscount;
    property PercentDiscount: Double read FPercentDiscount write FPercentDiscount;
    property Department: Integer read FDepartment write FDepartment;
    property GoodSum: Double read GetGoodSum;
  end;
  TCheckGoods = class(TCollection)
    FCheck: TCheck;
  private
    function GetGoods(Index: Integer): TCheckGood;
  published
  public
    function AddGood: TCheckGood;
    constructor Create(ACheck: TCheck);
    property Check: TCheck read FCheck;
    property Goods[Index: Integer]: TCheckGood read GetGoods;default;
  end;
  TCheck = class(TCollectionItem)
  private
    FGoods: TCheckGoods;
    FChecks: TChecks;
    FDepartment: Integer;
    FPercentDiscount: Double;
    FSumDiscount: Double;
    FChange: Double;
    FKKMNumber: Integer;
    FRegType: TRegType;
    FSuccess: Boolean;
    function GetKKM: TKKM;
    procedure SetDepartment(const Value: Integer);
    function GetCheckSum: Double;
  public
    constructor Create(Collection: TCollection);override;
    destructor Destroy;override;
    property Goods: TCheckGoods read FGoods;
    property Checks: TChecks read FChecks;
    property KKM: TKKM read GetKKM;
    property Department: Integer read FDepartment write SetDepartment;
    property SumDiscount: Double read FSumDiscount write FSumDiscount;
    property PercentDiscount: Double read FPercentDiscount write FPercentDiscount;
    property CheckSum: Double read GetCheckSum;
    property Change: Double read FChange write FChange;
    property KKMNumber: Integer read FKKMNumber write FKKMNumber;
    property RegType: TRegType read FRegType write FRegType;
    property Success: Boolean read FSuccess write FSuccess;
  end;
  TChecks = class(TCollection)
  FKKM: TKKM;
  private
    function GetCheck(Index: Integer): TCheck;
  public
    constructor Create(AKKM: TKKM);
    function AddCheck: TCheck;
    property Checks[Index: Integer]: TCheck read GetCheck;default;
    property KKM: TKKM read FKKM;
  end;
  TKKM = class(TComponent)
  private
    FChecks: TChecks;
    FActive: Boolean;
    FCashierPassword: String;
    FAdministratorPassword: String;
    FSystemAdministratorPassword: String;
    FEnabled: Boolean;
    FLastError: TKKMErrors;
    FIgnoreErrors: Boolean;
    procedure SetActive(const Value: Boolean);virtual;
  public
    constructor Create(AOwner: TComponent);override;
    function Sell(Check: TCheck): Boolean;overload;virtual;
    function Sell(Check: TCheck; Cash: Double; Cashless1: Double = 0; Cashless2: Double = 0; Cashless3: Double = 0): Boolean;overload;virtual;
    function Return(Check: TCheck): Boolean;overload;
    function Return(Check: TCheck; Cash: Double; Cashless1: Double = 0; Cashless2: Double = 0; Cashless3: Double = 0): Boolean;overload;virtual;
    function Income(Sum: Double): Boolean;virtual;
    function Outcome(Sum: Double): Boolean;virtual;
    function XReport: Boolean;virtual;
    function ZReport: Boolean;virtual;
    function ValueByName(ValueName: String): Variant;virtual;
    function SetValueByName(ValueName: String; Value: Variant): Boolean;virtual;
    function SetDeviceProperties: Boolean;virtual;abstract;
  published
    property Active: Boolean read FActive write SetActive;
    property Enabled: Boolean read FEnabled;
    property CashierPassword: String read FCashierPassword write FCashierPassword;
    property AdministratorPassword: String read FAdministratorPassword write FAdministratorPassword;
    property SystemAdministratorPassword: String read FSystemAdministratorPassword write FSystemAdministratorPassword;
    property Checks: TChecks read FChecks;
    property LastError: TKKMErrors read FLastError write FLastError;
    property IgnoreErrors: Boolean read FIgnoreErrors write FIgnoreErrors;
  end;
 
  TFelixFRKKM = class(TKKM)
  private
    ECR: OleVariant;
    procedure SetActive(const Value: Boolean);override;
  public
    constructor Create(AOwner: TComponent);override;
    destructor Destroy;override;
    function Sell(Check: TCheck; Cash: Double; Cashless1: Double = 0; Cashless2: Double = 0; Cashless3: Double = 0): Boolean;overload;override;
    function Return(Check: TCheck; Cash: Double; Cashless1: Double = 0; Cashless2: Double = 0; Cashless3: Double = 0): Boolean;overload;override;
    function Income(Sum: Double): Boolean;override;
    function Outcome(Sum: Double): Boolean;override;
    function XReport: Boolean;override;
    function ZReport: Boolean;override;
    function ValueByName(ValueName: String): Variant;override;
    function SetValueByName(ValueName: String; Value: Variant): Boolean;override;
    function SetDeviceProperties: Boolean;override;
  end;
implementation
 
{ TCheckGood }
 
constructor TCheckGood.Create(Collection: TCollection);
begin
  inherited;
  FGoodPrice:=0;
  FGoodCaption:='';
  FGoodAmount:=0;
  FGoods:=TCheckGoods(Collection);
end;
 
function TCheckGood.GetCheck: TCheck;
begin
  Result:=Goods.Check;
end;
 
function TCheckGood.GetGoodSum: Double;
begin
  Result:=GoodPrice*GoodAmount*(1-PercentDiscount/100)-SumDiscount;
end;
 
{ TCheckGoods }
 
function TCheckGoods.AddGood: TCheckGood;
begin
  Result:=TCheckGood.Create(Self);
end;
 
constructor TCheckGoods.Create(ACheck: TCheck);
begin
  inherited Create(TCheckGood);
  FCheck:=ACheck;
end;
 
function TCheckGoods.GetGoods(Index: Integer): TCheckGood;
begin
  Result:=TCheckGood(inherited Items[Index]);
end;
 
{ TCheck }
 
constructor TCheck.Create(Collection: TCollection);
begin
  inherited;
  FChecks:=TChecks(Collection);
  FGoods:=TCheckGoods.Create(Self);
end;
 
destructor TCheck.Destroy;
begin
  FGoods.Free;
  inherited;
end;
 
function TCheck.GetCheckSum: Double;
var
  i: Integer;
begin
  Result:=0;
  for i := 0 to Goods.Count - 1 do
  begin
    Result:=Result+Goods[i].GoodSum;
  end;
  Result:=Result*(1-PercentDiscount/100)-SumDiscount;
  Result:=Round(Result*100)/100;
end;
 
function TCheck.GetKKM: TKKM;
begin
  Result:=Checks.KKM;
end;
 
procedure TCheck.SetDepartment(const Value: Integer);
var
  i: Integer;
begin
  FDepartment := Value;
  for i := 0 to Goods.Count - 1 do
    Goods[i].Department:=Value;
end;
 
{ TChecks }
 
function TChecks.AddCheck: TCheck;
begin
  Result:=TCheck.Create(Self);
end;
 
constructor TChecks.Create(AKKM: TKKM);
begin
  inherited Create(TCheck);
  FKKM:=AKKM;
end;
 
function TChecks.GetCheck(Index: Integer): TCheck;
begin
  Result:=TCheck(inherited Items[Index]);
end;
 
{ TKKM }
 
constructor TKKM.Create(AOwner: TComponent);
begin
  inherited;
  FChecks:=TChecks.Create(Self);
  FEnabled:=True;
end;
 
function TKKM.Income(Sum: Double): Boolean;
begin
  Result:=False;
  if not Active then
    Active:=True;
  if not Active then
  begin
    LastError:=kkmeNoConnection;
    Exit;
  end;
  LastError:=kkmeNoErrors;
end;
 
function TKKM.Outcome(Sum: Double): Boolean;
begin
  Result:=False;
  if not Active then
    Active:=True;
  if not Active then
  begin
    LastError:=kkmeNoConnection;
    Exit;
  end;
  LastError:=kkmeNoErrors;
end;
 
function TKKM.Return(Check: TCheck; Cash, Cashless1, Cashless2,
  Cashless3: Double): Boolean;
begin
  Result:=False;
  Check.Success:=False;
  if not Active then
    Active:=True;
  if not Active then
  begin
    LastError:=kkmeNoConnection;
    Exit;
  end;
  LastError:=kkmeNoErrors;
  Check.RegType:=rtReturn;
end;
 
function TKKM.Return(Check: TCheck): Boolean;
begin
  Result:=Return(Check, Check.CheckSum);
end;
 
function TKKM.Sell(Check: TCheck): Boolean;
begin
  Result:=Sell(Check, Check.CheckSum);
end;
 
function TKKM.Sell(Check: TCheck; Cash: Double; Cashless1: Double = 0; Cashless2: Double = 0; Cashless3: Double = 0): Boolean;
var
  SumCashlessIncome:Double;
  SumIncome:Double;
begin
  Result:=False;
  Check.Success:=False;
  if not Active then
    Active:=True;
  if not Active then
  begin
    LastError:=kkmeNoConnection;
    Exit;
  end;
  LastError:=kkmeNoErrors;
  SumCashlessIncome:=Cashless1+Cashless2+Cashless3;
  SumIncome:=Cash+SumCashlessIncome;
  Result:=SumIncome>Check.CheckSum; //сумма оплаты должна быть больше суммы чека
  if not Result then
  begin
    LastError:=kkmeErrorPaymentLessThenCheckSum;
    if not IgnoreErrors then Exit;
  end;
  Check.RegType:=rtSell;
end;
 
procedure TKKM.SetActive(const Value: Boolean);
begin
  if not Enabled then
    FActive:=False
  else
    FActive := Value;
end;
 
function TKKM.SetValueByName(ValueName: String; Value: Variant): Boolean;
begin
  Result:=False;
  if not Active then
    Active:=True;
  if not Active then
  begin
    LastError:=kkmeNoConnection;
    Exit;
  end;
  LastError:=kkmeNoErrors;
end;
 
function TKKM.ValueByName(ValueName: String): Variant;
begin
  Result:=NULL;
  if not Active then
    Active:=True;
  if not Active then
  begin
    LastError:=kkmeNoConnection;
    Exit;
  end;
  LastError:=kkmeNoErrors;
end;
 
function TKKM.XReport: Boolean;
begin
  Result:=False;
  if not Active then
    Active:=True;
  if not Active then
  begin
    LastError:=kkmeNoConnection;
    Exit;
  end;
  LastError:=kkmeNoErrors;
end;
 
function TKKM.ZReport: Boolean;
begin
  Result:=False;
  if not Active then
    Active:=True;
  if not Active then
  begin
    LastError:=kkmeNoConnection;
    Exit;
  end;
  LastError:=kkmeNoErrors;
end;
 
{ TFelixFRKKM }
 
constructor TFelixFRKKM.Create(AOwner: TComponent);
begin
  inherited;
  // создаем объект общего драйвера  
  // если объект создать не удается генерируется исключение, по которому завершается работа приложения
  try
    ECR := CreateOleObject('AddIn.FprnM45');
    ECR.ApplicationHandle := Application.Handle; // необходимо для корректного отображения окон драйвера в контексте приложения
  except
    FEnabled:=False;
  end;
end;
 
destructor TFelixFRKKM.Destroy;
begin
  ECR:=0;
  inherited;
end;
 
function TFelixFRKKM.Income(Sum: Double): Boolean;
begin
  Result:=inherited Income(Sum);
  if LastError <> kkmeNoErrors then
  begin
    if IgnoreErrors then Exit;
  end;
  ECR.Summ := Sum;
  Result:=ECR.CashIncome=0;
  if not Result then
    LastError:=kkmeErrorIncome;
end;
 
function TFelixFRKKM.Outcome(Sum: Double): Boolean;
begin
  Result:=inherited Outcome(Sum);
  if LastError <> kkmeNoErrors then
  begin
    if IgnoreErrors then Exit;
  end;
  ECR.Summ := Sum;
  Result:=ECR.CashOutcome=0;
  if not Result then
    LastError:=kkmeErrorOutcome;
end;
 
function TFelixFRKKM.Return(Check: TCheck; Cash: Double; Cashless1: Double = 0; Cashless2: Double = 0; Cashless3: Double = 0): Boolean;
var
  i: Integer;
  SumCashlessIncome: Double;
  SumIncome: Double;
begin
  Result:=inherited Return(Check, Cash, Cashless1, Cashless2, Cashless3);
  if LastError <> kkmeNoErrors then
  begin
    if IgnoreErrors then Exit;
  end;
  Result:=ECR.CheckState=0; //открытый чек
  if not Result then
    Result:=ECR.CancelCheck=0; //пытаемся отменить
  if not Result then
  begin
    LastError:=kkmeErrorPaymentLessThenCheckSum;
    if not IgnoreErrors then Exit;
  end;
  SumCashlessIncome:=Cashless1+Cashless2+Cashless3;
  SumIncome:=Cash+SumCashlessIncome;
  if SumIncome>Check.CheckSum then
  begin
    if Cash>SumIncome-Check.CheckSum then
      Cash:=Check.CheckSum-SumCashlessIncome
    else
    begin
      LastError:=kkmeErrorPaymentLessThenCheckSum;
      if not IgnoreErrors then Exit;
    end;
  end;
// входим в режим регистрации
  // устанавливаем пароль кассира
  ECR.Password := StrToInt(CashierPassword);
  // входим в режим регистрации
  ECR.Mode := 1;
  Result:=ECR.SetMode=0;
  if not Result then
  begin
    LastError:=kkmeErrorCashierPasswordSet;
    if not IgnoreErrors then Exit;
  end;
// возврат
  for i := 0 to Check.Goods.Count - 1 do
  begin
    if Result then
    begin
    // регистрация выигрыша
      ECR.Name := Check.Goods[i].GoodCaption;
      ECR.Price := Check.Goods[i].GoodPrice;
      ECR.Quantity := Check.Goods[i].GoodAmount;
      ECR.Department := Check.Goods[i].Department;
      Result:=ECR.Return=0;
      if not Result then
      begin
        LastError:=kkmeErrorReturn;
        if not IgnoreErrors then Exit;
      end;
    end;
    if Result then
    begin
      if Check.Goods[i].PercentDiscount<>0 then
      begin
        ECR.Percents := Abs(Check.Goods[i].PercentDiscount);
        ECR.Destination := 1;//на позицию
        if Check.Goods[i].PercentDiscount>0 then
          Result:=ECR.PercentsDiscount=0
        else
          Result:=ECR.PercentsCharge=0;
        if not Result then
        begin
          LastError:=kkmeErrorPercentDiscountPerPosition;
          if not IgnoreErrors then Exit;
        end;
      end;
    end;
    if Result then
    begin
      if Check.Goods[i].SumDiscount<>0 then
      begin
        ECR.Summ := Abs(Check.Goods[i].SumDiscount);
        ECR.Destination := 1;//на позицию
        if Check.Goods[i].SumDiscount>0 then
          Result:=ECR.SummDiscount=0
        else
          Result:=ECR.SummCharge=0;
        if not Result then
        begin
          LastError:=kkmeErrorSumDiscountPerPosition;
          if not IgnoreErrors then Exit;
        end;
      end;
    end;
  end;
  if Result then
  begin
    if Check.PercentDiscount<>0 then
    begin
      ECR.Percents := Abs(Check.PercentDiscount);
      ECR.Destination := 0;//на весь чек
      if Check.PercentDiscount>0 then
        Result:=ECR.PercentsDiscount=0
      else
        Result:=ECR.PercentsCharge=0;
      if not Result then
      begin
        LastError:=kkmeErrorPercentDiscountPerCheck;
        if not IgnoreErrors then Exit;
      end;
    end;
  end;
  if Result then
  begin
    if Check.SumDiscount<>0 then
    begin
      ECR.Summ := Abs(Check.SumDiscount);
      ECR.Destination := 0;//на весь чек
      if Check.SumDiscount>0 then
        Result:=ECR.SummDiscount=0
      else
        Result:=ECR.SummCharge=0;
      if not Result then
      begin
        LastError:=kkmeErrorSumDiscountPerCheck;
        if not IgnoreErrors then Exit;
      end;
    end;
  end;
  if Result then
  begin
    if Cashless1<>0 then
    begin
      ECR.Summ:=Cashless1;
      ECR.TypeClose:=1;//тип оплаты 1
      Result:=ECR.StornoPayment;
      if not Result then
      begin
        LastError:=kkmeErrorPayment1;
        if not IgnoreErrors then Exit;
      end;
    end;
  end;
  if Result then
  begin
    if Cashless2<>0 then
    begin
      ECR.Summ:=Cashless2;
      ECR.TypeClose:=2;//тип оплаты 2
      Result:=ECR.StornoPayment;
      if not Result then
      begin
        LastError:=kkmeErrorPayment2;
        if not IgnoreErrors then Exit;
      end;
    end;
  end;
  if Result then
  begin
    if Cashless3<>0 then
    begin
      ECR.Summ:=Cashless3;
      ECR.TypeClose:=3;//тип оплаты 3
      Result:=ECR.StornoPayment;
      if not Result then
      begin
        LastError:=kkmeErrorPayment3;
        if not IgnoreErrors then Exit;
      end;
    end;
  end;
  if Result then
  begin
    ECR.Summ:=Cash;
    ECR.TypeClose:=0;//наличные
    Result:=ECR.StornoPayment;
    if not Result then
    begin
      LastError:=kkmeErrorPayment0;
      if not IgnoreErrors then Exit;
    end;
    Check.Change:=ECR.Change;
  end;
  if Result then
  begin
    Check.KKMNumber:=ECR.CheckNumber;
  end;
  if Result then
  begin
    Result:=ECR.CloseCheck;//закрытие чека
    if not Result then
    begin
      LastError:=kkmeErrorCloseCheck;
      if not IgnoreErrors then Exit;
    end;
  end;
  Check.Success:=Result;
end;
 
function TFelixFRKKM.Sell(Check: TCheck; Cash: Double; Cashless1: Double = 0; Cashless2: Double = 0; Cashless3: Double = 0): Boolean;
var
  i: Integer;
begin
  Result:=inherited Sell(Check, Cash, Cashless1, Cashless2, Cashless3);
  if LastError <> kkmeNoErrors then
  begin
    if IgnoreErrors then Exit;
  end;
  Result:=ECR.CheckState=0; //открытый чек
  if not Result then
    Result:=ECR.CancelCheck=0; //пытаемся отменить
  if not Result then
  begin
    LastError:=kkmeErrorPaymentLessThenCheckSum;
    if not IgnoreErrors then Exit;
  end;
 
   // входим в режим регистрации
  // устанавливаем пароль кассира
  ECR.Password := StrToInt(CashierPassword);
  // входим в режим регистрации
  ECR.Mode := 1;
  Result:=ECR.SetMode=0;
  if not Result then
  begin
    LastError:=kkmeErrorCashierPasswordSet;
    if not IgnoreErrors then Exit;
  end;
  // регистрация игрока
  for i := 0 to Check.Goods.Count - 1 do
  begin
    if Result then
    begin
      ECR.Name := Check.Goods[i].GoodCaption;
      ECR.Price := Check.Goods[i].GoodPrice;
      ECR.Quantity := Check.Goods[i].GoodAmount;
      ECR.Department := Check.Goods[i].Department;
      Result:=ECR.Registration=0;
      if not Result then
      begin
        LastError:=kkmeErrorRegistration;
        if not IgnoreErrors then Exit;
      end;
    end;
    if Result then
    begin
      if Check.Goods[i].PercentDiscount<>0 then
      begin
        ECR.Percents := Abs(Check.Goods[i].PercentDiscount);
        ECR.Destination := 1;//на позицию
        if Check.Goods[i].PercentDiscount>0 then
          Result:=ECR.PercentsDiscount=0
        else
          Result:=ECR.PercentsCharge=0;
        if not Result then
        begin
          LastError:=kkmeErrorPercentDiscountPerPosition;
          if not IgnoreErrors then Exit;
        end;
      end;
    end;
    if Result then
    begin
      if Check.Goods[i].SumDiscount<>0 then
      begin
        ECR.Summ := Abs(Check.Goods[i].SumDiscount);
        ECR.Destination := 1;//на позицию
        if Check.Goods[i].SumDiscount>0 then
          Result:=ECR.SummDiscount=0
        else
          Result:=ECR.SummCharge=0;
        if not Result then
        begin
          LastError:=kkmeErrorSumDiscountPerPosition;
          if not IgnoreErrors then Exit;
        end;
      end;
    end;
  end;
  if Result then
  begin
    if Check.PercentDiscount<>0 then
    begin
      ECR.Percents := Abs(Check.PercentDiscount);
      ECR.Destination := 0;//Ќа весь чек
      if Check.PercentDiscount>0 then
        Result:=ECR.PercentsDiscount=0
      else
        Result:=ECR.PercentsCharge=0;
      if not Result then
      begin
        LastError:=kkmeErrorPercentDiscountPerCheck;
        if not IgnoreErrors then Exit;
      end;
    end;
  end;
  if Result then
  begin
    if Check.SumDiscount<>0 then
    begin
      ECR.Summ := Abs(Check.SumDiscount);
      ECR.Destination := 0;//на весь чек
      if Check.SumDiscount>0 then
        Result:=ECR.SummDiscount=0
      else
        Result:=ECR.SummCharge=0;
      if not Result then
      begin
        LastError:=kkmeErrorSumDiscountPerCheck;
        if not IgnoreErrors then Exit;
      end;
    end;
  end;
  if Result then
  begin
    if Cashless1<>0 then
    begin
      ECR.Summ:=Cashless1;
      ECR.TypeClose:=1;//тип оплаты 1
      Result:=ECR.Payment;
      if not Result then
      begin
        LastError:=kkmeErrorPayment1;
        if not IgnoreErrors then Exit;
      end;
    end;
  end;
  if Result then
  begin
    if Cashless2<>0 then
    begin
      ECR.Summ:=Cashless2;
      ECR.TypeClose:=2;//тип оплаты 2
      Result:=ECR.Payment;
      if not Result then
      begin
        LastError:=kkmeErrorPayment2;
        if not IgnoreErrors then Exit;
      end;
    end;
  end;
  if Result then
  begin
    if Cashless3<>0 then
    begin
      ECR.Summ:=Cashless3;
      ECR.TypeClose:=3;//тип оплаты 3
      Result:=ECR.Payment;
      if not Result then
      begin
        LastError:=kkmeErrorPayment3;
        if not IgnoreErrors then Exit;
      end;
    end;
  end;
  if Result then
  begin
    ECR.Summ:=Cash;
    ECR.TypeClose:=0;//наличные
    Result:=ECR.Payment;
    if not Result then
    begin
      LastError:=kkmeErrorPayment0;
      if not IgnoreErrors then Exit;
    end;
    Check.Change:=ECR.Change;
  end;
  if Result then
  begin
    Check.KKMNumber:=ECR.CheckNumber;
  end;
  if Result then
  begin
    Result:=ECR.CloseCheck;//закрытие чека
    if not Result then
    begin
      LastError:=kkmeErrorCloseCheck;
      if not IgnoreErrors then Exit;
    end;
  end;
  Check.Success:=Result;
end;
 
procedure TFelixFRKKM.SetActive(const Value: Boolean);
begin
  inherited;
  if Value then
  begin
    // занимаем порт
    ECR.DeviceEnabled := true;
    if ECR.ResultCode <> 0 then
      FActive:=False;
  end
  else
  begin
    // занимаем порт
    ECR.DeviceEnabled := false;
    FActive:=False;
  end;
end;
 
function TFelixFRKKM.SetDeviceProperties: Boolean;
begin
  ECR.ShowProperties;
end;
 
function TFelixFRKKM.SetValueByName(ValueName: String; Value: Variant): Boolean;
begin
  Result:=inherited SetValueByName(ValueName, Value);
  if LastError <> kkmeNoErrors then
  begin
    if IgnoreErrors then Exit;
  end;
  if ValueName = 'IsFiscal' then
    Result:=False
  else
  begin
    ECR.ValuePurpose:=StrToInt(ValueName);
    ECR.Value:=Value;
    Result:=ECR.SetValue=0;
  end;
end;
 
function TFelixFRKKM.ValueByName(ValueName: String): Variant;
begin
  Result:=inherited ValueByName(ValueName);
  if LastError <> kkmeNoErrors then
  begin
    if IgnoreErrors then Exit;
  end;
  if ValueName = 'IsFiscal' then
    Result:=ECR.IsFiscal
  else
  begin
    ECR.ValuePurpose:=StrToInt(ValueName);
    ECR.GetValue;
    Result:=ECR.Value;
  end;
end;
 
function TFelixFRKKM.XReport: Boolean;
begin
  Result:=inherited XReport;
  if not Result then
    if IgnoreErrors then
    begin
      // устанавливаем пароль администратора
      ECR.Password := StrToInt(AdministratorPassword);
      // входим в режим отчетов
      ECR.Mode := 2;
      Result:=ECR.SetMode=0;
      if not Result then
      begin
        LastError:=kkmeErrorAdminPasswordSet;
        if not IgnoreErrors then Exit;
      end;
      // снимаем отчет
      ECR.ReportType := 2;
      Result:=ECR.Report=0;
      if not Result then
        LastError:=kkmeErrorXReport;
      ECR.ResetMode;
    end;
end;
 
function TFelixFRKKM.ZReport: Boolean;
begin
  Result:=inherited ZReport;
  if not Result then
    if IgnoreErrors then
    begin
      // устанавливаем пароль администратора
      ECR.Password := StrToInt(AdministratorPassword);
      // входим в режим отчетов
      ECR.Mode := 3;
      Result:=ECR.SetMode=0;
      if not Result then
      begin
        LastError:=kkmeErrorSysAdminPasswordSet;
        if not IgnoreErrors then Exit;
      end;
      // снимаем отчет
      ECR.ReportType := 12;
      Result:=ECR.Report=0;
      if not Result then
        LastError:=kkmeErrorZReport;
      ECR.ResetMode;
    end;
end;
 
end.
 
 
Скачать дипломную работу: Diplom.docx

Категория: Дипломные работы / Дипломные работы по компьютерам

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.