Диплом: Автоматизация обработки заявок в Центре оказания финансовых услуг ООО "ИБМ ВЕА"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
56
Структура программного модуля Mailer
Начало
Импорт функций из
стандартных библиотек
Цикл перебора писем
for item in folder.all()
подключение к серверу
Exchange
обьявление рабочих папок
на Share Drive
Импорт функций из
модулей
Импорт функций из
библиотеки exchangelib
запись данных в массив
query
вызов
функции
автозаполнения
autofill_query
очистка рабочих папок на
Share Drive
обьявление рабочих
папок в Outlook
Цикл проверки
вложений
for attachment in
item.attachments
чтение файлов шаблонов
цикл на сбор данных
запросов 1 и 2 типа
цикл на сбор данных
запросов 3 типа
запись данных в массив
query2
вызов
функции
автозаполнения
autofill_query
группировка значений в
массиве query
группировка значений в
массиве query2
конец
цикл
а
на
сбор
данных запросов 1 и 2
типа
конец
ц
икл
а
на
сбор
данных запросов 3
типа
Конец цикла
проверки вложений
for attachment in
item.attachments
Конец ц
икл
а
перебора писем
for item in folder.all()
А
А
Б
Б
вызов функции main_func
- анализ результатов SAP
фильтрация
собранных
ошибок
sum_errors_extend
группировка
положительных
результатов
sap_data
очистка рабочих папок на
Share Drive
сборка директории
местонахождения PDF
файла на основе
положительных
результатов
В
Вызов функции
unzip
_
dir
для поиска и
формирования PDF
Запуск сессии SAP
вызов
функции
SAP_get_date_and_numbe
r_formats
57
Импортируем функции из стандартных библиотек Python – os, time,
datetime, xlrd, collections. Функция os необходима для работы с Explorer, через
который происходит стандартный запуск и подключение сессии SAP, xlrd
используется для чтения файлов Excel, функция collections - для группировки
коллекций и списков массивов, time и datetime - для управления датами и
временем.
Для работы с Exchange-сервером Outlook импортированы методы из
библиотеки exchangelib. Exchange Web Services (EWS) — это специальный
протокол, разработанный MS, и предназначенный для управления почтой и
другими компонентами составляющими MS Exchange. В основе протокола
лежит XML. Методы, необходимые для реализации модуля:
Credentials,
Account,
Configuration,
DELEGATE,
цикл на определение
текста автоответа
В
конец
цикл
а
на
определение текста
автоответа
создание
ответ
ного
письма
прикрепление вложения
к
письму
отправка письма
Конец
58
FileAttachment,
HTMLBody.
Далее импортируем функции, описанные в других модулях. Описание
каждой функции будет описано ниже по мере вызова ее в коде программы.
Обьявление рабочих папок на Share Drive. Обьявлена переменная
working_directory с определением пути, где находятся файлы проекта.
Переменная main_path определяет путь на диске, где хранятся файлы банковских
выписок с платежными поручениями, данный путь является неизменным.
Переменная output_dir определяет место на диске, куда будут временно
сохранятся найденные извлеченные файлы PDF перед отправкой инициатору.
Переменная tmpl_xls определяет путь нахождения чистого шаблона. Переменная
output_folder задает путь сохранения полученного шаблона от инициатора
заявки.
Подключение к серверу Exchange. Задается новая переменная со значением
имени сервера Outlook, и далее посредством credentials, config и account
происходит подключение к общему ящику.
Очистка рабочих папок на Share Drive. Перед началом обработки первого
запроса очищаем рабочие папки с шаблоном и файлами PDF от предыдущих
запросов через os.remove(os.path.join(output_folder, file)).
Обьявление рабочих папок в Outlook. Заданы папка входящих писем,
папкаа черновиков и папка с необработанными запросами, куда будут
перемещаться запросы с ошибкой.
Цикл перебора писем for item in folder.all(). Осуществляется проверка всех
писем в папке на ряд условий. Если письмо не прочитано, выполняется проверка
на наличие вложения. Если вложение имеется запускается вложенный цикл
проверки вложения.
Цикл проверки вложений for attachment in item.attachments. Если вложение
имеет расширение файлов excel, то сохраняем вложение в рабочую папку, путь
которой обьявлен в переменной output_folder. Если в папке уже имеется файл с
59
таким же названием, присваиваем файлу уникальное имя, чтобы не затереть
ранее сохраненные шаблоны. Конец цикла.
Чтение файлов шаблонов. Запускается чтение строк каждого шаблона и
далее происходит поочередно запуск циклов на сбор данных для запросов 1,2 и
3 типов.
Цикл на сбор данных запросов 1 и 2 типа. Если в строке заполнены данные
по колонке РО, то осуществить запись данной строки в массив query. Если
инициатор заполнил данные в двух колонках – и РО и ВО, то считать данные в
колонке РО нулевыми. Эта строка будет отнесена к типу запроса 3 и записана в
следующем цикле во второй массив данных – query2.
Вызов функции autofill. Функция описана в модуле setup и является
вспомогательной. В случаях, когда инициатор заполнил шаблон, указав
кредитора только в первой строке и несколько номеров РО, относящихся к нему,
функция производит дозаполнение пустых строк для их последующей записи в
массив. Данная функция позволяет в большинстве случаев не возвращать
шаблон инициатору для корректировки данных, а направлять запрошенные
платежные поручения с первого раза. В случае же реальной ошибки в данных
инициатор получит уведомление, какие строки в его заявке не были обработаны.
Группировка значений в массиве query. Производится вызов функции
grouping_query из модуля setup. Все строки записанные в массив группируются
по типу свода (Pivot), удаляются лишние дубликаты, если таковые имеют место,
что позволяет функции, работающей с поиском файлов PDF отрабатывать
меньшее количество раз. Конец цикла на сбор данных запросов 1 и 2 типа.
Цикл на сбор данных запросов 3 типа. Осуществляется проверка на
заполненные данные в колонке ВО, если данные не пустые, то происходит запись
строки в массив query2. В данном цикле также повторно вызывается функция
автозаполнения строк. После наполнения массива данными по аналогии с
первым циклом для query2 также производится группировка данных. Конец
цикла.
60
Запуск сессии SAP. Если сессия не запущена (sap_is_started is False), то
производим вызов функции CREATE_SAP_CONNECTION() из модуля main.
Функция запускает сессию SAP.
Вызов функции SAP_get_date_and_number_formats. Ввиду того, что у
разных пользователей могут быть установлены разные настройки формата дат и
чисел, и для дальнейшей корректной работы автореспондера, все данные,
полученные из SAP должны иметь те же настройки, что и данные в шаблонах
excel. Для установки соответствия форматов данных вызывается функция
SAP_get_date_and_number_formats() , описанная в модуле main. Функция
запускает транзакцию SU3 и меняет настройки, отмеченные на рисунке:
Вызов функции main_func. Функия описана в модуле main и выполняет
полный сбор данных из SAP по собранным запросам - возвращает
положительные результаты и ошибки по не найденным строкам. Запускается
транзакция FBL1N по данным, собранным в массивах query и query2. По каждой
строке массивов происходит поиск недостающих данных - тип банка, сумма,
дата платежа. Результаты поиска возвращаются в массив sap_data.
Фильтрация собранных ошибок sum_errors_extend. Из всех данных
sap_data фильтруются ненайденные данные и записываются в переменную
sum_errors_extend.
Группировка положительных результатов sap_data. Вызов функции
groupping_outcome_sap выполняется из модуля setup, промежуточные данные
группируются по аналогии с группировкой входных данных.
Очистка рабочих папок на Share Drive. Выполнение очистки папок от
предыдущих данных, в случае если инструмент отрабатывает не первый цикл за
день и первоначальная очистка, описанная в начале модуля уже не сработает.
Сборка директории местонахождения PDF файла на основе
положительных результатов. Построение директории происходит методом
присоединения os.path.join к директории, обьявленной в переменной main_path
дополнительного пути, указывающего на местонахождение искомого файла
PDF. Для этого дата платежа, полученная из SAP конвертируется в путь на диске
61
методом datetime.datetime.strptime(a, "%d.%m.%Y").strftime("%Y-%m-%d").
Например дата 13.12.2019 на диске имеет название папки 2019-12-13, что и
прибавляется к основной директории. Название следующих папок определяется
исходя из балансовой единицы и типа банка.
Вызов функции unzip_dir для поиска и формирования PDF. Функция
описана в модуле run_sap, выполняет сканирование файла PDF по страницам –
ищет страницу в файле с данными ИНН кредитора и суммой, указанной в
промежуточных данных sap_data. Номер найденной страницы является искомым
файлом с платежным поручением, который формируется в отдельный новый
PDF файл и сохраняется в рабочую папку. Если поиск платежного поручения
завершился неудачно при имеющихся данных из SAP, данные об ошибке
сохраняются в переменную not_found_pdf.
Цикл на определение текста автоответа. На основе данных в sap_data и
not_found_pdf определяется тело автоответа и текст ошибки, если данные были
не найдены или найдены частично. Текст ошибки определяется по следующим
приницпам:
Если указанный в заявке кредитор не был найден в SAP, это говорит о том,
что данные в шаблоне были указаны некорректно, текст ошибки -
некорректные данные в шаблоне,
если кредитор был найден, но не найдены суммы в SAP, то текст ошибки
- не найдена сумма/нет платёжного поручения,
если данные в SAP найдены, но не найден документ PDF, то текст ошибки
- оплата по запрашиваемому документу еще не произведена.
Тело письма определяется по следующим принципам:
если все строки в заявке успешно обработаны то в тело письма
вставляется текст переменной body_OK
Если не была обработана только часть строк, то выбирается
переменная body_partly_OK
Если запрос не был обработан полностью, то для ответа используется
переменная body_NOT_OK
62
Конец цикла на определение текста автоответа.
Создание ответного письма. Методом item.create_reply создается ответ
инициатору.
Прикрепление вложения к письму. Если данные в output_dir не пусты,
прикрепить вложение из рабочей папки методом reply.attach.
Отправка письма. Отправка ответа инициатору через reply.send.
2.4. Контрольный пример реализации проекта и его описание
Пример реализации проекта представляет собой ряд шагов для запуска
инструмента автоматизации, выполняемых ежедневно сотрудником,
ответственным за обработку поступающих заявок. Обычно, инструмент
запускается во второй половине дня, когда все вчерашние банковские выписки
уже разнесены в системе SAP. Это необходимо для покрытия всех заявок,
поступающих на общий ящик.
1. Запустить сессию Citrix ( либо убедиться перед запуском инструмента,
что сессия уже была запущена) – данный шаг выполняется независимо
от внедренной автоматизации, он необходим для выполнения всех
задач, связанных с предоставлением сервисных услуг для PepsiCo. Для
запуска необходимо пройти по ссылке, ввести логин и пароль (рисунок
2.7).
63
Рисунок 2.7. Окно запуска сессии Citrix
2. Запустить MS Outlook - данный шаг также выполняется независимо от
автоматизации, так как MS Outlook является основным инструментом
для отправки почтовых сообщений в рабочих целях (рисунок 2.8).
Рисунок 2.8. Ярлык запуска MS Outlook
3. Открыть файловое хранилище Drive Russia (Share Drive) , кликнув на
иконку (рисунок 2.9)
Рисунок 2.9. Ярлык файлового хранилища
4. Запустить команду включения инструмента, хранящуюся на файловом
хранилище Share Drive (рисунок 2.10). Запуск инструмента
осуществляется через команду, которая запускает код программы.
Рисунок 2.10. Запуск автореспондера через Batch
64
5. Все новые непрочитанные письма в общем ящике в специальной папке
начинают обрабатываться (рисунок 2.11)
Рисунок 2.11. Поступившие и необработанные заявки
6. После отработки инструмента все письма в папке прочитаны, ответы на
заявки инициаторам отправлены (рисунки 2.12 и 2.13).
Рисунок 2.12. Необработанные заявки отсутствуют
65
Рисунок 2.13. Пример ответа автоматически обработанной
заявки
В данной главе была представлена программно-техническая часть
реализации инструмента автоматизации, были рассмотрены возможные риски,
соблюдены процедуры безопасности, определены потоки входящей и исходящей
информации, описана реализация программных модулей. По итогу реализации
и внедрения данной автоматизации мы имеем полное сокращение рабочего
времени сотрудника, ранее выполнявшего данный подпроцесс вручную. После
внедрения инструмента сотрудник только запускает команду и происходит
автоматическая обработка входящих заявок, инструмент автоматически
обрабатывает письмо, автоматически находит информацию о платеже в SAP,
автоматически ищет в файловом хранилище платежное поручение,
автоматически формирует ответ инициатору, создает вложение и отправляет
ответ.

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
IPO - инструмент финансирования деятельности организации. На примере ПАО «Нефтяная компания «Лукойл»
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)