Текст
                    МИНОБРНАУКИ РОССИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ
ВЫСШЕГО ОБРАЗОВАНИЯ
«ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»
Факультет компьютерных наук
Кафедра информационных технологий управления
Разработка веб-сервиса для формирования коммерческого предложения
ООО «ЧерноземАгромаш»
ВКР Бакалаврская работа
09.03.02 Информационные системы и технологии
Информационные системы и технологии в управлении предприятием
Допущено к защите в ГЭК
Зав. кафедрой М.Г. Матвеев, д. т. н., профессор..2021
Обучающийся А.И. Иванов, 4 курс, д/о
Руководитель А.В. Петров, к.ф.-м.н., доцент
Воронеж 2021

МИНОБРНАУКИ РОССИИ ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «ВОРОНЕЖСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ» Факультет компьютерных наук Кафедра информационных технологий управления УТВЕРЖДАЮ заведующий кафедрой М.Г. Матвеев подпись, расшифровка подписи _.20- ЗАДАНИЕ НА ВЫПОЛНЕНИЕ ВЫПУСКНОЙ КВАЛИФИКАЦИОННОЙ РАБОТЫ ОБУЧАЮЩЕГОСЯ ИВАНОВА АЛЕКСАНДРА ИГОРЕВИЧА 1. Тема работы Разработка веб-сервиса для формирования коммерческого предложения ООО «ЧерноземАгромаш», утверждена решением ученого совета факультета компьютерных наук от_._.20_ 2. Направление подготовки / специальность 09.03.02 Информационные системы и технологии 3. Срок сдачи законченной работы . 20 4. Календарный план: (строится в соответствии со структурой В КР) № Структура ВКР Сроки выполнения Примеча ние 1 Введение 20.11.-22.11.2020 2 Глава 1. Постановка задачи 1.1 Обзор аналогов 23.11-25.12.2020 23.11-25.12.2020 3 Глава 2. Анализ предметной области 2.1 Терминология (глоссарий) предметной области 2.2 Теоретические аспекты предметной области 26.12.2020- 10.01.2021 26.12.2020- 4.01.2021 5.01-7.01.2021 4 Глава 3 Реализация 3.1 Средства реализации 3.1 Реализация логики 3.2 Реализация интерфейса 8.01-10.04.2021 8.01-10.01.2021 10.01-25.01.2021 26.01-10.04.2021 5 Заключение 11.04-12.04.2021 6 Список использованных источников 13.04-14.04.2021 7 Приложения 15.04-16.04.2021 Обучающийся Руководитель Подпись Подпись А.И. Иванов расшифровка подписи А.В. Петров расшифровка подписи 2
Реферат Бакалаврская работа 50 с., 25 рисунков, 3 приложения. ИНФОРМАЦИОННАЯ СИСТЕМА, ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ, ВЕБ-ТЕХНОЛОГИИ, ВЕБ-СЕРВИС, КОММЕРЧЕСКОЕ ПРЕДЛОЖЕНИЕ, БАЗА ДАННЫХ, PYTHON, FLASK, JINJA2, EXCEL. Проблема. В настоящее время руководители организаций стараются экономить на внедрении новых программных продуктов в процесс функционирования организации, опираясь на труд работников и считая, что если сотрудник работает много, то значит он работает хорошо и эффективно, но, к сожалению, это не всегда так и можно даже из средствами свободного ПО дать сотруднику инструмент, который обеспечит более эффективное и менее ресурсозатратное выполнение сотрудником его трудовой функции. Противоречие. В настоящее время существует огромное количество различных программных продуктов, которые имеют излишние для организации функциональные возможности, по мнению руководителя организации, и значительно различаются по цеповому сегменту. Из вышеуказанного следует актуальность работы, целью которой является разработка веб-сервиса для формирования коммерческого предложения, которое направлено на повышение продуктивности работы менеджера по продажам ООО «ЧерноземАгромаш». Задачи, решаемые для достижения цели: - Изучить существующий процесс формирования коммерческого предложения ООО «ЧерноземАгромаш»; - Изучить потребности менеджера по продажам. - Проанализировать существующие в настоящее время системы, которые формируют коммерческое предложение. - Предложить перечень функциональных возможностей программного продукта для формирования коммерческого предложения менеджеру по продажам. 3
- Разработать программный продукт в соответствии с предложенными ранее менеджеру по продажам функциональными возможностями. Объект исследования - деятельность ООО «ЧерноземАгромаш». Предметом исследования является процесс формирования коммерческого предложения менеджером по продажам ООО «ЧерноземАгромаш». Основные разделы - введение, постановка задачи, анализ предметной области, реализация, заключение. Область применения - результаты данной работы будут интересны менеджерам по продажам. 4
Содержание Содержание........................................................5 Определения, обозначения и сокращения.............................6 Введение..........................................................7 1 Постановка задачи...............................................8 1.1 Обзор аналогов.............................................9 1.1.1 1С: Управление торговлей 8.............................9 1.1.2 1С: Предприятие 8. Модуль «Коммерческое предложение»..11 2 Анализ предметной области......................................14 2.1 Теоретические аспекты предметной области..................14 3 Реализация.....................................................20 3.1 Средства реализации.......................................20 3.2 Логика приложения.........................................22 3.2.1 Архитектура приложения................................22 3.2.1.1 Модули веб-сервиса.............................22 3.2.1.2 БД.............................................29 3.3 Реализация интерфейса.....................................33 3.3.1 Простая блок-схема....................................41 3.3.2 Диаграмма вариантов использования.....................42 Заключение.......................................................44 Список использованных источников.................................46 Приложение А.....................................................49 5
Определения, обозначения и сокращения В настоящем отчете о ВКР применяют следующие термины с соответствующими определениями: Коммерческое предложение (КП) - документ с информацией о компании, её товарах и услугах, и предложением сотрудничества [1]. Бриф - соглашение о сотрудничестве, в котором прописываются все детали будущего проекта (медийного, графического, программного или другого) [2]. SMM (Social Media Marketing) - маркетинговая деятельность в социальных медиа, направленная на увеличение популярности бренда/товара/услуги в социальных сетях, повышение доверия к бренду, взаимодействие с лояльными клиентами бренда и пр. [3]. БД - база данных. ООО - общество с ограниченной ответственностью. 6
Введение Неотъемлемой частью не только повседневной, но и профессиональной жизни стали информационные технологии. Они значительно упростили жизнь современного человека: теперь можно полноценно работать из дома, имея под рукой все необходимые инструменты, которые ранее были доступны только в офисе; можно связываться с заказчиком из любой точки мира и обсуждать детали предстоящего проекта. Следовательно, современный человек стал более продуктивен, что крайне важно и для бизнеса: больше произведенных операций человеком - больше прибыль. Но, к сожалению, не все организации хотят облегчить повседневный труд своих работников за счет внедрения информационных технологий в деятельность организации, считая, что если сотрудник работает много, то значит он работает эффективно, а любые траты на программные продукты излишни. Сотрудники некоторых воронежских организаций по-прежнему вынуждены работать с большими объемами данных копируя их из одного документа в другой, что представляет собой очень длительный процесс и влечет за собой ошибки. Каждая такая ошибка и несвоевременность предоставления информации влияет на репутацию организации и может привести к потере заказчика. Из всего вышесказанного следует вывод о том, что использование информационных технологий в тех процессах, где идет работа с данными, является обязательным. Даже на основе свободных программных продуктов можно разработать достойный инструмент для ускорения выполнения трудовой функции сотрудника, который не имеет лишних функциональных возможностей и является максимально доступным для любой организации, о таком программном продукте, который предназначен для деятельности менеджера по продажам, пойдет речь в данной ВКР.
1 Постановка задачи Компания «ЧерноземАгромаш» занимает прочные позиции на российском рынке строительства комплексов для послеуборочной обработки зерна: элеваторов, комбикормовых и крупных заводов, а также комплексов ЗАВ и КЗС. Видами деятельности ООО «ЧерноземАгромаш» являются: - технико-экономическое обоснование проектируемого объекта; - общестроительные и фундаментные работы; - поставка отечественного и импортного оборудования ведущих заводов-производителей для послеуборочной переработки и хранения зерна: транспортное оборудование, силосы, зерносушилки, зерноочистительные линии; - монтаж, пусконаладка, обучение навыкам работы на оборудовании, гарантийное и сервисное обслуживание, консультирование; - реконструкция зерноочистительных комплексов; - реконструкция элеваторов; - автомобильные и вагонные электронные весы, а также модернизация механических автомобильных весов; - семенные линии известных брэндов «Cimbria», «Petkus» и др.; - маслозаводы «Рагте1»различной производительности [4]. Целью данной выпускной квалификационной работы является разработка веб-сервиса, который предназначен для менеджера по продажам ООО «ЧерноземАгромаш» и позволяет ему автоматически формировать коммерческое предложение. К разрабатываемому веб-сервису выдвигаются следующие функциональные требования: 8
- Возможность автоматически генерировать коммерческое предложение путем вставки выбранных данных в шаблон формата .xls. - Наличие единой БД, в которой хранится вся информация по предоставляемым товарам и услугам. - Перерасчет стоимости товаров и услуг в соответствии с актуальным курсом выбранной пользователем валюты. - Автоматическая вставка в шаблон формата .xls текущей даты. - Наличие информационного раздела, который напоминает пользователю правила работы с веб-сервисом, позволяет связаться с разработчиком и предоставляет контакты ООО «ЧерноземАгромаш». 1.1 Обзор аналогов 1.1.1 1С: Управление торговлей 8 «1 С:У правление торговлей 8» - это современный инструмент для повышения эффективности бизнеса торгового предприятия. Программа позволяет в комплексе автоматизировать задачи оперативного и управленческого учета, анализа и планирования торговых операций, обеспечивая тем самым эффективное управление современным торговым предприятием. Одной из главных особенностей «1С:Управления торговлей 8» является универсальность - программа поддерживает все основные виды торговли (розничную, оптовую, в кредит, по предварительному заказу, комиссионную), что позволяет успешно внедрить ее в большинстве торговых организаций. «1С:Управление торговлей 8» рассчитана на любые виды торговых операций. Реализованы функции учета - от ведения справочников и ввода первичных документов до получения различных аналитических отчетов. 9
Решение позволяет вести управленческий учет по торговому предприятию в целом. Для предприятия холдинговой структуры документы могут оформляться от имени нескольких организаций, входящих в холдинг [5]. Для отражения предложения клиенту о покупке товаров с указанием всех необходимых для этого условий предусмотрен документ Коммерческое предложение клиенту (рисунок 1, 2), использование которого позволяет зарегистрировать процесс предварительного взаимодействия с покупателем. Цены, условия оплаты и условия поставки коммерческого предложения регламентированы типовым и индивидуальным соглашением, в рамках которого фиксируется коммерческое предложение. Управление коммерческим предложением осуществляется при помощи соответствующих статусов документа. Окончательное согласование коммерческого предложения осуществляется клиентом. В процессе согласования коммерческого предложения клиенту можно предоставить дополнительную скидку или снизить цену [6]. Порядок работы с коммерческим предложением позволяет использовать несколько итераций при взаимодействии с клиентом. Если потенциального клиента не устроил предоставленный вариант, то на основании него можно сформировать новое, откорректированное коммерческое предложение. * * <JCwepMKcce ГМРСМ1Иоящ ’7ЮМХЮ013 от Л.С4201? 1911:39 Н £ I < ' В ЯОМ.- Рисунок 1 - Интерфейс 1С: Управление торговлей 8. Коммерческое предложение клиенту 10
Тилевое соглашение об условиях лэодаж И-1 от 01.01.2015 0:00:00 П^мукые трт:ен прда».«₽ ^xocoeww Задг* Мои лик/- Затеять и змрыть Загнать • £ Сацгъ и коми • Л • JJ Ом* • t Фйь ^сжж»э» Услсу* продав Проше цспдч* Уц» но ^-мчы грута* Ьачнеин цен па пиру Смцр 'ма^м» ч ном/ савюв^ис |0 ю 42) натр 3 or ЮЖ В Сшус Дйсжугг ^аиееомм №тмы Ttpe« действие с<1012015 в] по г Н С«шмр *»*гсв VP-mawiw • f Эпврацт Рмишцд Сапттмснмлг^ ♦ f jprHuajr ’орпяыядск lomrocmf • £ Мейджер (жгьсо Hwai Фадоровл • _с Рисунок 2 - Интерфейс 1С: Управление торговлей 8. Коммерческое предложение клиенту 1.1.2 1С: Предприятие 8. Модуль «Коммерческое предложение» Данный аналог позволяет: - Напоминать менеджерам по продажам о статусах коммерческого предложения; - Выгружать коммерческое предложение в Word, Excel и PDF; - Рассчитывать прибыльность (рентабельность) сделки; - Выбирать валюту; - Устанавливать ручные скидки на конкретные позиции или на общую сумму сделки; - Предоставлять дополнительную информацию для вывода на печать (сроки, предоплата и прочее); - Отправлять коммерческие предложения по электронной почте; - Вести журнал коммерческих предложений, который позволяет: - В отдельном журнале КП вести реестр документов с возможностью фильтрации по клиентам, менеджерам, статусам; 11
- Создавать коммерческие предложения путем копирования ранее подготовленных предложений [7]. Интерфейс данного модуля представлен на рисунке 3 и рисунке 4. твдлсивме ОСОООСОС021 от 26.102020 * 3 46 51 леи» Сачны.»)ч*-ъ Нод СЮЛСЮ' Кипит. ДсгсарНд 2щи нишювлм Пцши О ,"»ччс>4:а-Г'Ч"«»4' Садп^ах<дай1’ J I ? LW £ЭмСЯ№*СчМ «| Ctmjc £wi 2 ф Орвмця -смет» 00C Tu галя зип;иии Ьф1ДО ДЖГНЧЪ-в 1#.алi ia<i’«h • Kite И hosr^rjfo UUSWAMf )iryV Kmwkw ib'i C|Mta %C*U»* C«Q« К ЩС 1 АЯУЮСМк ’KI SIM Slot 2t5 2 tacpi 1Ш 5» XS 3 Бскш 1KI 5И Я XS Д UwuHfif Hohiw IM lot as R«wj-w -риал ПГ7М: xiwatiiHt Ulttiirwi ОдоЛы* Hvjm • f Рисунок 3 - Интерфейс модуля 1C: Предприятие 8 «Коммерческое предложение» 12
Коммерческое предложение № 00000000001 от 26 октября 2020 г. Поставщик ООО "Конфетпром”, ИНН 7799555550. КПП 779901001,121170, Москва г. 1812 года ул, (Исполнитель) дом N! 1,тел.: +7 (4S5) 5555555 Покупа ель ООО "Автотрейд \ ИНН 7799565720, КПП 779901001,142770, Москва г, МКАД 40-й (п (Заказчик) Сосенское) км, владение № 1, строение 2 Ns Товары (работы, услуги) Кол-во Ед. Цена Сумма 1 Астомобиль 1 шт 50 00 50 00 2 Кснфеты ’Ассорти" 1 шт во: ? 00 3 Ксифеты ’Белочка* 1 шт 5 00 5 00 4 Ими*н1р«*нг 1 шт 902 900 Итого: 69,00 Сумма НДС: 13,80 Всего к оплате: 82,80 Всего наименований 4. на стыну 62,60 руб Восемьдесят два рубля 80 копеек Действительно до 26 11 2020 Оплата данною счета означает согласие с условиями поставки товара Уведэмпенш эб оплате обязательно в противном случае не гарантируется наличие товара на складе Товар отпускается по факту прихода денег на р/с Поставщика самовывозом при наличие доверенности и паспорта Ваш менеджер Лукино Л^дия Петровне Телефон +7499513*316 E-mail luka^id rt Рисунок 4 - Интерфейс модуля 1С: Предприятие 8 «Коммерческое предложение». Вид печатной формы Главным недостатком рассмотренных аналогов является их стоимость и наличие лишних функций, которые совсем не требуются в рамках поставленной задачи. 13
2 Анализ предметной области 2.1 Теоретические аспекты предметной области Коммерческое предложение - это устное или письменное предложение сотрудничества, которое содержит: - коммерческую информацию, - рекламу, - условия будущего партнерства. Передача коммерческого предложения осуществляется: - рассылкой писем потенциальным заказчикам; - передачей во время деловой встречи или после неё. Главной целью коммерческого предложения является привлечение внимания к производимому товару или предоставляемой услуге, результатом которого должно стать совершение сделки. В качестве промежуточных целей выступают: - заказ обратного звонка; - запрос/скачивание прайс-листа; - обращение за консультацией; - оформление заказа; - переход на сайт [9]. Следовательно, клиент, получивший коммерческое предложение, должен сразу понять все его основные аспекты: - смысл, - условия, - выгода. 14
К сожалению, предельная понятность не может гарантировать эффективности. Иногда требуется обратиться и к эмоциям клиента посредством персонализации коммерческого предложения. Коммерческие предложения бывают: - Холодные, которые неперсонализированы: рассылаются всем, кому потенциально может понадобится производимый продукт, ассоциируется со спамом. - Горячие, которые персонализированы под потребности заказчика, высылаются тем заказчикам, с кем был контакт. По содержанию гораздо длиннее холодных, потому как в них описываются подробно все условия сделки. Эффективность такого вида коммерческих предложений гораздо выше [10]. Коммерческие предложения, как холодные, так и горячие, имеют следующую общую структуру: - Заголовок, который привлекает внимание, отражает проблему и её решение. - Лид, где подчёркивается важность проблемы для получателя. - Оффер — предложение продукта для решения проблемы. - Основная часть, где описываются важные особенности продукта. - Контакты —- как можно узнать подробности и сделать заказ [11]. В холодных коммерческих предложениях не указывается никакой информации о стоимости товара или услуги, потому как иначе не будут достигнуты промежуточные цели такие, как: скачивание прайса, переход на сайт, заказ обратного звонка или обращение за консультацией. Но, стоит отметить, что такой мощный инструмент продаж, как коммерческое предложение, подходит далеко не для всех, а используют его в В2В для сложных продаж с длинным циклом сделки. 15
Рассмотрим процесс формирования коммерческого предложения ООО «ЧерноземАгромаш» с помощью диаграмм IDEF0 (рисунок 5-6). Правила сосгеалвмия КП —Требования Сформировать КП KIT АО Менеджер продажей) Рисунок 5 - Контекстная диаграмма IDEF0 процесса формирования коммерческого предложения Грвсмлэ составления ИП Менеджер гс пределам Рисунок 6 - Декомпозиция IDEF0 То есть менеджер по продажам имеет 2 документа: - Пустой предварительно сформированный структурированный оформленный шаблон .xls (рисунок 7). 16
- Сформированные ранее коммерческие предложения в .xls (рисунок 8). Коммерческое предложение МБП Q Наименование оборудования ~ tA ии а - -Q Цена м ед. к», рул Q Сумма, руо 1 ▼ 1 2 • 4 5 6 7 8 9 10 11 12 13 Рисунок 7 - Шаблон коммерческого предложения Г* Г Q На и мю ио иям ня ci рои гяпьно моыожныл paboi D t« И' lQ • nQ Цг«м м e«v ими.руп Q J Сум1М4>уб Ы 1 Лк*Ш)ЬЯ4 П1СЧ)>*JC^/r>tpO5 |«глом0ггт* б себя- сбореу готового тоолслооюного оборудования согчосло uwcmpr* uuu по .молгиож^. Aworoenue Мосубооания с актсян^. сотое уе * б/г<о наладонным рабитсм) urn 1 0,00р. 2 Монтам норий (бн намоет а сев»- сбореу гатооаго тоанс портного обз/г, <X?e<z-u« слглэсю илстпргл цм/ по монтажу. Оюоебемие обор/боеонс/в е гогтоямис, готовое * rv*o- M7w-4jO<n*i4w-.w работам) lum 1 О.ООр. 3 Монтам силосов (етлсости для я ранения, vm/pysmi готолм г^лруицип) {е*люм?ет е лев*’ сбос^а силоса согласно иктргн uaj по лдонгп аж> Приваде чае П&ОруРОРО^ИЯ в СОС'ПОРчие, ?<4«cwe г работам/ и?” 1 0,00р 4 Монтам ИМПОРТНОГО зе^оОЧИСТИТелыю/v оборудоооми! i-ммючэетп б себя- готового зер^ъистигпыъчыо обору^анил. систем acnuoo^u и Оругих лххмнителълуж -* у^по^тог соглосло теА.м&жия.гиело>емм',пр<ж«тг«о|/ д0л>*ие*п?4Л4М1/ Прмроегюе ооорубосани" с состолг*ис, tomoooc «tvrwtr наладочном работам) U/rn 1 О.ООр. 5 Nk?nmcM зграоСУШМынхо оборудовата! | в*.лс «ает? в ггв* упяамхчгу гдаповоео ^мосуилхлъяого аборудовагиаг, сое.’хкю тем адммия.*н/ гхгми,лпое*тмс1й бояумгмтоции fajaederue оборубжания в состояние готовое к п>тко- намдэчнь’м работам) шгп 1 О.ООр. б Монтам anmcMMdtinepavpyiwMi {ряпюнает в себя- (гтачовкр готового оборудования, солтспо тел.уадамил.ти.сяемь1,поае<‘тноС10ояутен1тм»ции ^теевемие оборудования в состояние готовое * луткэ- лолобочмы-я работам) ц/m 1 О.ООр. Рисунок 8 - Документ с готовыми коммерческими предложениями 17
Из второго документа менеджер постоянно копирует данные в первый, дополнительно ища и вставляя информацию по курсу валют па текущую дату. Среди проблем существующего подхода к формированию коммерческого предложения менеджером по продажам ООО «ЧерноземАгромаш» можно выделить следующие: - отсутствие БД, то есть в ручном режиме приходится копировать данные из одной электронной таблицы в другую; - ежедневный поиск информации об актуальном курсе валюты па сайте ЦБ РФ. Перечисленные проблемы приводят к многочисленным ошибкам в работе менеджера по продажам, следствием чего является срыв заключения договоров с потенциальными заказчиками и ухудшение репутации. Проанализировав текущий процесс формирования коммерческого предложения были предложены идеи по его улучшению, которые нашли отражение в диаграмме IDEF0, представленной па рисунке 9. Гржм/азхтзвлмезКП Рисунок 9 - Декомпозиция изменённого процесса формирования коммерческого предложения 18
Таким образом, процесс формирования коммерческого предложения благодаря внедрению веб-сервиса, разработке которого посвящена данная ВКР, стал проще и минимизирует количество допускаемых ошибок менеджером по продажам в результате его работы. 19
3 Реализация 3.1 Средства реализации В качестве средств реализации для разработки веб-сервиса по формированию коммерческого предложения использованы: - Объектно-ориентированный язык Python. - Микрофреймворк Flask. - HTML. - CSS. - Библиотека xlsxwriter. - Библиотека pycbrf. - СУБД SQLite Studio. Язык Python имеет следующие преимущества: - Быстрота изучения языка и простота синтаксических конструкций. - Наличие динамической типизации. - Кроссплатформенность. - Большое количество сервисов, сред разработки, фреймворков, библиотек и документации. - Свободное распространение [12]. Среди преимуществ микрофреймворка Flask можно выделить следующие: простота, гибкость и аккуратность в работе: позволяет пользователю самому выбирать как реализовать ту или иную задачу. Flask вполне пригоден для реализации больших промышленных проектов, несмотря на не столь большие функциональные возможности. 20
Flask использует механизм шаблонов Jinja2 и имеет поддержку Unicode. Считается, что создание шаблонов на Jinja2 имеет больше возможностей, чем создание шаблонов Django. Среди особенностей Jinja2 можно выделить: - мощную автоматическую систему HTML; - наследование шаблонов; - компилирование до оптимального кода python [13]. Преимуществами СУБД SQLite Studio являются: - Кроссплатформенность, то есть возможность работать! на таких ОС, как Windows 9х / 2k / ХР / 2003 / Vista / 7, Linux, MacOS X. - Возможность экспорта в различные форматы. Например, SQL- операторы, CSV, HTML, XML, PDF, JSON. - Многочисленные небольшие дополнения, такие как форматирование кода, история запросов, выполняемых в окнах редактора и многое другое. - Наличие открытого исходного кода, который опубликован под лицензией GPLv3 [14]. 21
3.2 Логика приложения 3.2.1 Архитектура приложения 3.2.1.1 Модули веб-сервиса В результате работы над ВКР был разработан веб-сервис, который состоит из нескольких модулей: - main. - all_models. - db_session. - rates. - search_and_show_org. - validation. - work_with_db. - write_i n_pattem. А также были разработаны следующие шаблоны, содержащиеся в папке templates: - authentification.html. - base.html. - contact.html. - error.html. - help.html. - info.html. - login.html. - refere_to_us.html. - refere_to_us_thanks.html. 22
- register_me.html. - register_me_thanks.html. - search_form.html. - send_form.html. При разработке шаблонов был применен механизм наследования: шаблоны наследованы от base.html. Декораторы в python являются обертками, которые расширяют возможности функций, не изменяя их [17]. Основной модуль main содержит в себе всю логику по работе с веб- страницами, в нем реализован следующий набор декораторов: - @app.errorhandler(400) - @app.route(7’, methods=['GET, 'POST']) - @app.route(71ogin', methods=['GET', 'POST']) - @app.route(7home', methods=['GET', 'POST']) - @app.route(7search', methods=['GET', 'POST']) - @app.route(7contact') - @app.route(7proposal', methods=['GET', 'POST']) - @app.route(7refere_to_us', methods=['GET', 'POST']) - @app. route(7register_me_th an ks') - @app.route(7refer_to_us_thanks') - @app.route(7info') - @app.route(71ogout') @app.errorhandler(400) служит для обработки ошибки с кодом 400 и показывает пользователю страницу error.html с сообщением о том, что данных не найдено. 23
@арр.errorhandler(400) def not found(error): return render_template("error.html", теззаде="Извините, указанных Вами данных не найдено") Шаблон error.html, который наследуется от шаблона base.html имеет следующую реализацию: {% extends "base.html" %} {% block content_menu %} <h2 class="thanks">{{ message }}</h2> {% endblock %} @app.route(7’, methods=['GET', 'POST']) и @app.route(71ogin', methods=['GET', 'POST']) декорируют функцию login(), которая ответственна за прохождение пользователем аутентификации, которая осуществляется с помощью функций модуля validation validation_user_fio(user_fio)H validation_user_pass(password). def validation_user_fio(user_fio): processed_fio = user_fio.split() if ' ' . join (processed_fio) .isalphaO and len(processed_fio) >= 3: return ' '.join(processed_fio) return None def validation_user_pass(password): return password.isalnum() and len(password) > 5 @app.route(7home', methods=['GET', 'POST']) украшает первую главную функцию модуля main, которая начинает генерацию коммерческого 24
предложения, получая от пользователя выбор категории и ввод наименования, а затем перенаправляет на страницу /search (код задекорированной функции представлен в приложении А). @app.route(7search', methods=['GET', 'POST']) работает со страницей /search , с помощью которой продолжается формирование коммерческого предложения, а именно: позволяет выбрать позицию из списка наименований выбранных из БД по указанной ранее категории и введенному неполному наименованию; позволяет выбрать валюту и задать требуемое количество товара или услуги (программный код представлен в приложении В). Сама запись в предварительно сформированный шаблон всей выбранной из БД информации осуществляется функцией write_in_pattem из одноименного модуля, которая в качестве одного из своих аргументов принимает результат работы get_rates(get_currency), которая ответственна за получение актуального курса выбранной пользователем валюты от ЦБ РФ, как показано в [18]. from pycbrf.toolbox import ExchangeRates from datetime import datetime def get_rates(rate): rates = ExchangeRates(datetime.now().strftime("%Y- %m-%d")) return rates[’USD’].value if rate == 'dol’ else rates[’EUR’].value Реализация функции write_in_pattem() представлена в приложении С. Для записи выбранной из БД информации в шаблон коммерческого предложения формата ,xls использована библиотека xlsxwriter, которая позволяет осуществлять только запись данных в существующую электронную таблицу. 25
@app.route(7contact') декорирует функцию contact_me(), которая заполняет шаблон contact.html переданными в ней параметрами: сформированной картой с положением на ней ООО «ЧерноземАгромаш» и полным её адресом. @арр.route('/contact') def contact_me(): return render_template("contact.html", dep_adr=ADRESS_DEPARTMENT, dep_img="static/img/mapl.png") @app.route('/proposar, methods=['GET’, 'POST']) служит для связи с функцией proposal_me(), которая предоставляет незарегистрированному пользователю подать заявку при указании: - ФИО. - Пароля. - Должности. - Пола. - Номера телефона. Валидность введенного номера телефона проверяется функцией validation_user_phone(user_phone) модуля validation, программный код этой функции представлен ниже, def validation_user_phone(user_phone): import re remainder = '' if user_phone.startswith(’+7'): remainder = user_phone[2:] elif user_phone.startswith('8'): remainder = user_phone[1:] else: return False 26
remainder = re.sub(г*[ -]', ' remainder) if re .match (r,/4\(\d{3}\) ' , remainder) : remainder = re.sub(r’\ (', remainder, 1) remainder = re.sub(r’\) ', remainder, 1) return bool(re.match(r’A\d{10}$’, remainder)) @app.route(7refere_to_us’, methods=['GET’, 'POST']) позволяет благодаря функции refere_to_us() оставить пользователю отзыв о работе веб- сервиса. Разметка шаблона refere_to_us.html представлена ниже. {% extends "base.html" %} {% block content_menu %} <form class="ref_me" action="" method=’’post"> <div class="form-group"> <label f or=’’about ">Поделитесь своим мнением о нашем веб-сервисе</1аЬе1> <textarea class="form-control" id="about" rows="10" cols="50" name=’’about"></textarea> <button type="submit" class="btn btn- primary’’>OTnpaBHTb</button> </form> {% endblock %} @app.route(7register_me_thanks') и @app.route(7refer_to_us_thanks') позволяют перейти на страницы, носящие информационный характер. @app.route(7info') декорирует функцию help_me(), благодаря которой осуществляется чтение информации о работе с веб-сервисом из файла help.txt 27
и осуществляется вставка этих прочитанных данных в соответствующий шаблон help.html. def help_me(): user = get_user_name() with open(’static/files/help.txt', 'r', encoding="utf-8’’) as f: help_text = f.read().split(";") return render_template ("help.html’', help_text=help_text, hello=user, image="static/img/agro.png") @app.route(71ogout’) позволяет прекратить работу с веб-сервисом и перейти на страницу аутентификации. @арр.route('/logout') def logout(): return redirect("/") Помимо этого в модуле main реализована функция get_image_of_org(), которая благодаря функциям search() и show() модуля search_and_show_org, позволяет по указанному полному адресу найти географические координаты объекта и отметить их на карте в переданном масштабе, def get_image_of_org(): pt = search([ADRESS_DEPARTMENT]) map_file = "static/img/mapl.png" with open(map_file, "wb") as file: file.write(show(pt, scale="0.003,0.003").content) 28
3.2.1.2 БД В результате работы над веб-сервисом спроектирована также БД, которая представлена на рисунке 11. БД имеет сущности такие как: - users, которая содержит информацию о пользователях, которые имеют доступ к формированию коммерческого предложения. - categories, которая хранит информацию о категориях. - products, которая связана с categories по id_category и содержит информацию обо всех предоставляемых товарах и услугах ООО «ЧерноземАгромаш». - register_me, которая принимает данные о новых пользователях, которые хотели бы пользоваться веб-сервисом. - refer, которая принимает отзывы о работе веб-сервиса от прошедших аутентификацию пользователей. 29
Рисунок 10 - Диаграмма сущность-связь Конкретно для работы с БД служат модули______all models, dbsession, work_with_db, users, categories, products, register_me, refer. В модуле____all models представлены все таблицы БД, которые были описаны выше и представлены на диаграмме «сущность-связь», from . import products from . import users from . import categories from . import register_me 30
from . import refere Модуль db_session служит для создания сессии. Вся логика по работе с БД вынесена в модуль work_with_db, где присутствует подключение к db/KP_base.sqlite и написаны запросы. Так, например, запрос по поиску всей информации по искомому пользователем позиции указанной категории выглядит следующим образом: def get_all_products(input_product): products = session.query(Products).filter(Products.id_category == se[’category_id’])♦all() search_prod_list = [product.title for product in products if input_product.lower() in product.title.lower()] se[’prod_list’] = search_prod_list Заявка на добавление в качестве пользователя веб-сервиса реализован, как: def please_register_me(new_user, position, new_password, new_user_sex, new_phone): new_user = Register_me(fio=new_user, position=position, password=new_password, phone=new_phone, sex=new_user_sex) session.add(new_user) session.commit() В модулях users, categories, products, register_me, refer реализованы одноименные классы, позволяющие организовать структуру таблиц БД. 31
Необходимые часто используемые данные (например, ФИО пользователя и id выбранной категории) сохранены с помощью сессии, которые в отличие от куки, гарантируют, что содержимое не может быть изменено пользователем, если у него нет секретного ключа. Например, в функции verification() для сохранения id и ФИО прошедшего аутентификацию пользователя были использованы сессии, def verification(name, password): user = session.query(Users).filter(Users.password == password, Users.user_name == name).first() if user: se['user_name'] = user.user_name se['user_id'] = user.id return user В качестве системы контроля версий БД KP_base.sqlite была использована alembic, которая обеспечивает создание, управление и вызов сценариев управления изменениями для реляционной БД [19], используя SQLAlchemy в качестве основного механизма. 32
3.3 Реализация интерфейса Пользователь проходит аутентификацию прежде чем воспользоваться всеми разработанными функциональными возможностями: вводит ФИО и пароль (рисунок 12). Формирование коммерческого предложения О Введите ФИО Иванов Петр Петрович Введите пароль 7 Запомнить меня | Войти | Рисунок 1 1 - Аутентификация менеджера по продажам Если пользователь допустил ошибку или не ввел требуемые данные, то ему будет выдано сообщение об этом (рисунок 13). 33
Формирование коммерческого предложения Введите ФИО Иванов Петр Петрович Введите пароль L., Это осязательное попе Войти Неверный логин или пароль Рисунок 12 - Аутентификация. Неверный ввод. Также на странице прохождения аутентификации пользователь может просмотреть информацию о работе сервиса, посмотреть контакты и связаться с разработчиком (оставив отзыв о работе веб-сервиса или задав вопрос) (рисунок 14). О сервисе Контакты Связаться с нами Рисунок 13 - Дополнительная информация на странице аутентификации пользователя 34
Любой незарегистрированный пользователь может отставить заявку перейдя на вкладку «Связаться с нами», где должен ввести: ФИО, - занимаемую в ООО «ЧерноземАгромаш» должность, - пароль, - выбрав пол, - оставив номер телефона. Интерфейс заявки на добавление в качестве пользователя, показан на рисунках 15, 16. О сервисе Контагы Связаться с нами hrttpt; 127ЛРЛ~5ЭОС. ргсрсм) | Осиные <аявку на лобан.инне в качен ве полыователя Страница регистрации пользователя Рисунок 14 - 35
Спасибо, заявка принята и уже обрабатывается! Рисунок 15 - Информационная страница После прохождения аутентификации пользователь попадает на страницу, где ему предлагается выбрать категорию (товары или услуги) и начать вводить название искомой позиции товара или услуги (регистр ввода не важен) (рисунок 17). Здравствуйте. Иванов Иван Иванович! Начните формировать коммерческое предложение! Рисунок 16 - Страница выбора категории При нажатии на кнопку «Выбрать» происходит переход на страницу с перечнем найденных для пользователя наименований позиций, которые содержат введенное им ранее название товара или услуги (рисунок 18). Пользователь также па этой странице вводит количество, выбирает валюту. 36
При неверном вводе количества пользователь снова попадает на эту страницу, где введенные ранее данные будут очищены. Иванов Иван Иванович, какую позицию желаете добавить? Рисунок 17 - Страница выбора товара При нажатии на кнопку «Добавить в шаблон» данные о выбранной позиции товара или услуги добавляются в предварительно сформированный шаблон ,xls. Текущая дата и актуальный курс валюты также будут вставлены автоматически. Итоговый вид сформированного коммерческого предложения представлен на рисунке 19. 37
__________________ Коммерческое предложение JdKOJHWC Адрес oftem: Мямиимь? ООО"Чрр<вжйумммГ 1 doccrgy-ypreeoo S>cS rc 2155 2С21 M°nQ Наименование В Ед«»В Кол-вД Цена вед. иж., ру > В Суш«,рр. D 1 1МП. 5 58250ЙЖ 15 625 Ж ОЙ. г йдвижад шиберюя жктпртмм ЖЗОО шт. 2 я лад. 172mOOD 5 МЬктчтм' зле гтро*сбЪ1ыюй о комп 1 4865 000. 00р. 48б5ОД).0Й 4 шт. 1 ВбЛЮ.Обр. В6000.0Й 5 Систем секции ю ЬЛС-150 шт. 1 710000,00р. ЛОООО.Ой б бетоне роботы 1 ttOOOOOp 1з 300 хол Рисунок 18 - Коммерческое предложение Прошедшему аутентификацию пользователю также доступна возможность обратной связи при переходе на вкладку «Связаться с нами» в разделе «Дополнительная информация» с разработчиками сервиса - пользователь может поделится мнением о работе веб-сервиса или задать вопрос (рисунок 20, 21). 38
О сервисе Контакты Связаться с нами Поделитесь своим мнением о нашем веб-сервисе Стало гораздо удобнее составлять КП. Спасибо! Отпрееитв Рисунок 19 - Страница «Обратная связь» Спасибо, отзыв принят и уже обрабатывается! Рисунок 20 - Информационная страница 39
Перейдя на вкладку «Дополнительная информация. О сервисе» пользователю будет предоставлена полпая информация о работе веб-сервиса (рисунок 22). Рады Вам помочь. Иванов Иван Иванович' Ознакомьтесь с информацией ниже' • Еехда. ’Ткюыирс&ме шмерчесш npeqpixeitf соадж до едт ЭОС' ЧрюздА'рошГ н гризвж алмапшя 'снер^овать шнрюсюе wnceme • Е радае ’Дслолнпелмю тф^иаия 0 серже’ Еь споете гохтететь кгоюгатегь^к жф^ма^э по работе ЖЪ. • Е разделе 'Дсосгнпел^ая имфоршця кнтагы’ Вы допе икгопсгомме ООО ^ел«зеяАгооыа|/«его юнтэль • Е разделе 'Дсттчпельиая жфоршцп. Озязаъся с кам/' Вы wwre вставить жё Ntene о работе веб-сержа • Офинрхаж КП: на нанал^м пранц в/яп ^егорио л введите i»e иэоюй позярт. нюните ча мсгк< ’Влить’ «ысехге гсдхсдянус пои^к из анка введге кп^еспс и влелпе вапсп все дэчзые по «ьсса-ки/ ww э:тазгг.я з шаблон после чахзтю ’ДобэЕггь в шаблон”. Рисунок 21 - Страница о работе веб-сервиса Перейдя на вкладку «Дополнительная информация. Контакты» пользователю будет показано расположение ООО «ЧерноземАгромаш» на карте и даны контакты, такие как: точный адрес организации, её электронная почта, время работы и контактный телефон (рисунок 23). Уважаемый сотрудник, ООО ЧерноземАгромаиГ находится по адресу Воронеж уп Плехановская 53 телефон *7 473 233-03-73 ежедневно с 08 00 до 17 00 почта info@aqrovrn сот. Рисунок 22 - Страница «Контакты» 40
3.3.1 Простая блок-схема Процесс формирования коммерческого предложения менеджером по продажам в виде простой блок-схемы [22, 23] с помощью разработанного веб-сервиса представлен на рисунке 24. Рисунок 23 - Простая блок-схема процесса работы веб-сервиса 41
3.3.2 Диаграмма вариантов использования Рисунок 24 - Диаграмма вариантов использования Таким образом, менеджер по продажам благодаря разработанному веб-сервису получил следующие возможности: - Автоматически формировать коммерческое предложение, предварительно: - Пройдя аутентификацию; - Выбрав категорию товаров и услуг; - Выбрав наименование товаров или услуг; 42
- Задав нужное количество товаров; - Выбрав валюту; Что приведет к автоматическому заполнению предварительно сформированного шаблона в формате ,xls. - Поддерживать обратную связь с разработчиком; - Просматривать информацию о работе веб-сервиса. - Просматривать контакты ООО «ЧерноземАгромаш». 43
Заключение В результате выполнения выпускной квалификационной работы был изучен процесс формирования коммерческого предложения в ООО «ЧерноземАгромаш», который был неоптимальным по следующим причинам: - В ручном режиме приходилось постоянно копировать данные из одной электронной таблицы в другую. - Ежедневно приходилось искать данные об актуальном курсе валют ЦБ РФ. Исходя из выявленных недостатков процесса формирования коммерческого предложения был предложен более оптимальный процесс. Были рассмотрены и проанализированы преимущества и недостатки аналогичных программных продуктов, таких как: 1С: Управление торговлей и модуль «Коммерческое предложение» 1С: Предприятие 8. Указанные программные продукты - аналоги являются очень дорогостоящими и обладают излишними функциональными возможностями. Был разработан веб-сервис, который позволяет менеджеру по продажам ООО «ЧерноземАгромаш» автоматически формировать коммерческое предложение путем вставки выбранных данных в предварительно подготовленный единожды шаблон формата .xls, также были реализованы следующие функциональные требования: - Наличие единой БД, в которой хранится вся информация по предоставляемым товарам и услугам. - Перерасчет стоимости товаров и услуг в соответствии с актуальным курсом выбранной пользователем валюты. - Автоматическая вставка в шаблон формата .xls текущей даты. 44
Наличие информационного раздела, который напоминает пользователю правила работы с веб-сервисом, позволяет связаться с разработчиком и посмотреть контакты организации. 45
Список использованных источников 1. О коммерческом предложении [электронный ресурс]. - Режим доступа: https://skillbox.ru/media/marketing/chto_takoe_kommercheskoe_predloz henie// (Дата обращения: 1.04.2021) 2. Бриф [электронный ресурс]. - Режим доступа: https://www.gd.ru/articles/! 1717-brif (Дата обращения: 1.04.2021) 3. SMM [электронный ресурс]. - Режим доступа: https://www.marketch.ru/marketing_dictionary/marketing_terms_s/social_media_ marketing/ (Дата обращения: 1.04.2021) 4. ООО «ЧерноземАгромаш» [электронный ресурс]. - Режим доступа: https://chemozemagromash.ru (Дата обращения: 25.03.2021) 5. 1 С:Управление торговлей 8 [электронный ресурс]. - Режим доступа: https://v8.lc.ru/trade/ (Дата обращения: 26.03.2021) 6. Коммерческое предложение 1С:У правление торговлей 8 [электронный ресурс]. - Режим доступа: https://v8.lc.ru/trade/upravlenie- prodazhami/ (Дата обращения: 26.03.2021) 7. 1С: Формирование и печать коммерческих предложениий [электронный ресурс]. - Режим доступа: https://lcrm.ru/help/shablony- kommercheskikh-predlozheniy-dogovorov/ (Дата обращения: 26.03.2021) 8. Договор [электронный ресурс]. - Режим доступа: https://yuridicheskaya-konsultaciya.ru/dogovor/dogovor.html (Дата обращения: 1.04.2021) 9. Цель и задачи коммерческих предложений [электронный ресурс] . - Режим доступа: https://texterra.ru/blog/kak-sostavit-kommercheskoye- predlozhenie.html (Дата обращения: 07.04.2021) 46
10. О видах коммерческих предложений [электронный ресурс]. - Режим доступа: https://pro-promotion.ru/articles/help/kommercheskoe-predlozhenie- chto-eto-takoe-i-kak-ego-pravilno-sformirovat (Дата обращения: 07.04.2021) 11. Коммерческое предложение от “А” до “Я’’[электронный ресурс]. - Режим доступа: https://zakupkihelp.ru/raznoe/kommercheskoe-predlozhenie-ot-a- do-ya.html (Дата обращения: 07.04.2021) 12. Преимущества Python [электронный ресурс]. - Режим доступа: https://brainskills.ru/blog/plyusy-i-minusy-python/ (Дата обращения: 10.04.2021) 13. Преимущества flask [электронный ресурс]. - Режим доступа: https://python-scripts.com/flask-vs-django (Дата обращения: 10.04.2021) 14. Менеджер баз данных SQLiteStudio [электронный ресурс]. - Режим доступа: https://progtips.ru/bazy-dannyx/menedzher-baz-dannyx-sqlitestudio.html (Дата обращения: 10.04.2021) 15. Кузнецов, С. Д. Основы баз данных / С.Д. Кузнецов. — 2-е изд. — М.: Интернет-Университет Информационных Технологий; БИНОМ. Лаборатория знаний, 2007. —- 484 с. 16. Методы GET / POST [электронный ресурс]. - Режим доступа: https://htmlacademy.ru/blog/boost/frontend/get-vs-post (Дата обращения: 02.05.2021) 17. Лутц, М. Программирование на Python, том II, 4-е издание. - Пер. с англ./ М. Лутц- СПб.: Символ-Плюс, 2011. - 992 с. 18. PYCBR.F [электронный ресурс]. - Режим доступа: https://pythonz.net/apps/named/pycbrf/ (Дата обращения: 06.05.2021) 19. Дейт, К. Дж. Введение в системы баз данных = Introduction to Database Systems / К. Дж. Дейт. — 8-е изд. -— М.: «Вильямс», 2006. — 1328 с. 20. Стружкин, Н.П. Базы данных: проектирование, практикум: Учебное пособие для академического бакалавриата / Н.П. Стружкин, В.В. Годин. - Люберцы: Юрайт, 2016.-291 с. ч/
21. Маклаков, С.В. BPwin и Erwin. CASE-средства разработки информационных систем/ С.В. Маклаков. - М: ДИАЛОГ-МИФИ, 2009. - 256 с. 22. Буч, Г. Язык UML. Руководство пользователя. Второе издание. / Г. Буч., Д. Рамбо, А. Якобсон. - М: ДМК Пресс, 2006. - 496 с. 23. Простая блок-схема [электронный ресурс]. - Режим доступа: http://www.up-pro.ru/encyclopedia/shema-biznes-processa.html (Дата обращения: 09.05.2021) 48
Приложение А Программный код функции make_KP() def make_KP(): all_category = give_category() user_name = get_user_name() if request.method == 'GET': return render_template("send_form.html", title='', name=user_name, categories=all_category) elif request.method == 'POST': if request.form["choose_param"] == "have_product": choose_category = request.form["category"] category index = all_category.index(choose_category) all_category[0], all_category[category_index] = all_category[category_index], \ all_category[0] get_id_category(choose_category) input_product = request.form["product"] if input product: get_all_products(input_product) return redirect("/search") return render_template("send_form.html", title='Введите название', name=user name, categories=all_category) 49