Диплом: Автоматизация процесса взаимодействия с клиентами (CRM) в филиале компании DNS

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
87
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. DNSгруппа компаний [Электронный ресурс]. – Режим
доступа:https://www.dns-shop.ru/about/
2. Дубейковский В.И. Практика функционального моделирования с
AllFusion Process Modeler 4.1. Где? Зачем? Как? Москва. «ДИАЛОГ-
МИФИ». 2014.
3. Калянов Г.Н. Моделирование, анализ, реорганизация и автоматизация
бизнес-процессов / Г. Н. Калянов. – М.: Финансы и статистика, 2016. –
267 c.
4. Акулич М. Управление взаимоотношениями с клиентами (CRM).
Издательские решения, 2019. – 102 с.
5. Обзор CRM «BPM'ONLINE» [Электронный ресурс]. – Режим доступа:
https://habr.com/ru/company/trinion/blog/281192/
6. CRM «SALESFORCE» [Электронный ресурс]. – Режим доступа:
https://www.salesforce.com/crm/
7. CRM «MS DYNAMICS» [Электронный ресурс]. – Режим доступа:
https://dynamics.microsoft.com/en-us/crm/what-is-crm/
8. Агапов В. Профессиональная разработка программного обеспечения. –
Символ-Плюс, 2013. – 240 с.
9. Емельянова Н. Проектирование информационных систем. – М.: Форум,
2014. – 432 с.
10. Маклафлин Б. PHP и MySQL. Исчерпывающее руководство. – Изд.
Питер, 2016. – 544 с.
11. Тарасов С. СУБД для программиста. Базы данных изнутри. – Омск:
«Соломон», 2015. – 320 с.
12. Советов Б.Я. Архитектура информационных систем: учебник для студ.
учреждений высш. проф. образования. – М.: Издательский центр
«Академия», 2012. – 288 с.
88
13. Пищикова Е., Комличенко В.Н. Техники выявления требований к
разработке по // Естественные и математические науки в современном
мире: сб. ст. по матер. XXVI междунар. науч.-практ. конф. № 1(25). –
Новосибирск: СибАК, 2015.
14. Ипатова Э. Методологии и технологии системного проектирования
информационных систем. Учебник. – М.: «Флинта», 2014. – 192 с.
15. Род С. Алгоритмы. Теория и практическое применение. – М.: «Эксмо»,
2017. – 544 с.
89
ПРИЛОЖЕНИЕ А − ЛИСТИНГИ ПРОГРАММНЫХ МОДУЛЕЙ
Модуль отображения заявок
<?php
$s_pref = $_SESSION['site_prefix'];
$type = $_SESSION['utype'];
if(isset($_POST['btneditrequest']))
$arr = filterAndListRequests($_POST['statuses'], $_POST['priorities'],
$_POST['types'], $_POST['dF'], $_POST['dT'], $_POST['repairers'], $_POST['contacts'], $type,
$_SESSION['id_user']);
else
$arr = null;
$data = array('lst' => $arr, 'search' => getDataForSearch());
//print_r($data);
?>
<h3>Заявки на ремонт и техническое обслуживание</h3>
<form class="form-horizontal text-left" method="post">
<fieldset>
<legend>Фильтрация заявок</legend>
<div class="row">
<div class="col-md-5">
<div class="form-group">
<label class="col-md-4 control-label" for="statuses">Статус заявки</label>
<div class="col-md-8">
<?php
echo "<select size='1' name='statuses' class='form-control'>";
echo "<option value='0'>любой</option>";
foreach($data['search']['statuses'] as $i => $status)
echo "<option
value='".$status['id_status']."'".($_POST['statuses']==$status['id_status'] ? ' selected' :
'').">".$status['status']."</option>";
echo "</select>";
?>
</div>
</div>
</div>
<div class="col-md-7">
<div class="form-group">
<label class="col-md-7 control-label" for="btnFilterOrders">Дата создания
заявки <br>в формате ДД-ММ-ГГГГ (пример: 04.04.2020)</label>
<div class="col-md-5">
<?php
echo "<input class='form-control' name='dF' type='text'
placeholder='Дата от' ".($_POST['dF'] != "" ? "value='".$_POST['dF']."'" : "")."><input class='form-
control' name='dT' type='text' placeholder='Дата до' ".($_POST['dT'] != "" ?
"value='".$_POST['dT']."'" : "").">";
?>
</div>
</div>
</div>
</div>
<div class="row">
90
<div class="col-md-5">
<div class="form-group">
<label class="col-md-4 control-label" for="types">Типы проблемы</label>
<div class="col-md-8">
<?php
echo "<select size='1' name='types' class='form-control'>";
echo "<option value='0'>еще не присвоен</option>";
foreach($data['search']['types'] as $i => $type)
echo "<option
value='".$type['id_type']."'".($_POST['types']==$type['id_type'] ? ' selected' :
'').">".$type['type']."</option>";
echo "</select>";
?>
</div>
</div>
</div>
<div class="col-md-7">
<div class="form-group">
<label class="col-md-7 control-label" for="priorities">Приоритет
заявки</label>
<div class="col-md-5">
<?php
echo "<select size='1' name='priorities' class='form-control'>";
echo "<option value='0'>еще не определен</option>";
foreach($data['search']['priorities'] as $i => $priority)
echo "<option
value='".$priority['id_priority']."'".($_POST['priorities']==$priority['id_priority'] ? ' selected' :
'').">".$priority['priority']."</option>";
echo "</select>";
?>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-5">
<div class="form-group">
<label class="col-md-4 control-label" for="repairers">Ответственный
техник</label>
<div class="col-md-8">
<?php
echo "<select size='1' name='repairers' class='form-control'>";
echo "<option value='0'>еще не определен</option>";
foreach($data['search']['repairers'] as $i => $userTech)
echo "<option
value='".$userTech['id_user']."'".($_POST['repairers']==$userTech['id_user'] ? ' selected' :
'').">".$userTech['name']."</option>";
echo "</select>";
?>
</div>
</div>
</div>
<div class="col-md-7">
<div class="form-group">
<label class="col-md-7 control-label" for="addr">Заявитель</label>
91
<div class="col-md-5">
<?php
echo "<input class='form-control input-md' name='addr'
".($_POST['addr'] != "" ? "value='".$_POST['addr']."'" : "")." type='text' placeholder='Заявитель'>";
?>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<input type='submit' name='btneditrequest' class="btn btn-primary"
value='Отфильтровать'>
</div>
</div>
</div>
</fieldset>
</form>
<?php
if(isset($_POST['btneditrequest']))
{
if(is_array($data['lst']))
$cnt = count($data['lst']);
else
$cnt = 0;
if($cnt>0)
{
echo "<table id='print_table' class='table table-striped thead-light table-bordered table-
hover'>";
if($_SESSION['uID']>0)
{
$w1 = 3;
$w2 = 7;
$w3 = 22;
$w4 = 10;
$w5 = 5;
$w6 = 13;
$w7 = 5;
$w8 = 4;
$w9 = 4;
$w10 = 4;
}
else
{
$w1 = 3;
$w2 = 10;
$w3 = 24;
$w4 = 15;
$w5 = 10;
$w6 = 7;
$w7 = 10;
$w8 = 11;
92
$w9 = 10;
}
$str = "";
$str.= "<col width='$w1%'>";
$str.= "<col width='$w2%'>";
$str.= "<col width='$w3%'>";
$str.= "<col width='$w4%'>";
$str.= "<col width='$w5%'>";
$str.= "<col width='$w6%'>";
$str.= "<col width='$w7%'>";
$str.= "<col width='$w8%'>";
$str.= "<col width='$w9%'>";
if($_SESSION['uID']>0)
$str.= "<col width='$w10%'>";
echo "<tr>$str</tr>";
$str = "";
$str.= "<th>№</th>";
$str.= "<th>Статус</th>";
$str.= "<th>Описание проблемы</th>";
$str.= "<th>Контактные данные заявителя</th>";
$str.= "<th>Зарегистрировавший заявку</th>";
$str.= "<th>Комментарий отдела ремонта и обслуживания</th>";
$str.= "<th>Стоимость работ, руб.</th>";
$str.= "<th>Файлы</th>";
$str.= "<th>Ист-я</th>";
if($_SESSION['uID']>0)
$str.= "<th>Ред.</th>";
echo "<tr>$str</tr>";
$filepath = $s_pref.$_SESSION['filepath'].'/';
if(is_array($data['lst']))
foreach($data['lst'] as $i => $row)
{
$str = "";
$str.= "<td>".$row['id_request']."</td>";
$str.= "<td>".$row['status']."</td>";
$str.= "<td>".$row['description']."</td>";
$str.= "<td>".$row['contacts']."</td>";
if($row['id_user'] > 0)
$str.= "<td>".$row['registered']."</td>";
else
$str.= "<td>Незарегистрированный пользователь</td>";
$str.= "<td>".$row['comment']."</td>";
$str.= "<td>".$row['price']."</td>";
$cnt = count($row['files']);
$str1 = "";
for($i=0, $j=1; $i<$cnt; $i++, $j++)
$str1.= "<a href='$filepath".$row['files'][$i]['filename']."'
target='_blank'>Файл$j</a> ";
$str.= "<td>".$str1."</td>";
$str.= "<td>&nbsp;<a href='$s_pref"."historyShow?id=".$row['id_request']."'
title='Просмотреть историю по заявке'><img src='$s_pref/img/his.png' /></a></td>";
93
if($_SESSION['uID']>0)
$str.= "<td>&nbsp;<a
href='$s_pref"."requestEdit?id=".$row['id_request']."' title='Редактировать заявку'><img
src='$s_pref/img/edit.png' /></a></td>";
echo "<tr>$str</tr>";
}
echo "</table>";
echo "<div class='row'>";
echo "<div class='col-md-12 text-left'>";
echo "<input type='button' id='btn' class='btn btn-primary'
value='Экспортировать в Excel' onclick='tableToExcel(\"print_table\", \"Заявки\"); return false;'>";
echo "</div>";
echo "</div>";
}
else
echo "<div class='alert alert-warning' role='alert' style='margin:20px;'>Заявки по
данным критериям не найдены</div>";
}
?>
<script type="text/javascript">
var tableToExcel = (function() {
var uri = 'data:application/vnd.ms-excel;base64,'
, template = '<html xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-
html40"><meta http-equiv="content-type" content="application/vnd.ms-excel; charset=UTF-
8"><head><!--[if gte mso
9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:
Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x
:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--
></head><body><table>{table}</table></body></html>'
, base64 = function(s) { return
window.btoa(unescape(encodeURIComponent(s))) }
, format = function(s, c) { return s.replace(/{(\w+)}/g, function(m, p) { return
c[p]; }) }
return function(table, name) {
if (!table.nodeType) table = document.getElementById(table)
var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML}
window.location.href = uri + base64(format(template, ctx))
}
})()
</script>
Модуль редактирования заявок
<div class="container-fluid">
<?php
echo "<div class='row text-left' style='margin-top:20px;'><a
href='".SERVER.PREFIX."requestList'><span class='glyphicon glyphicon-arrow-left'></span> Назад
к списку заявок</a></div>";
?>
<div class="row">
<?php
if(isset($_GET['id']) && is_numeric($_GET['id']) && $_GET['id']>0)
{
$type_user = $_SESSION['utype'];
94
$id_request = $_GET['id'];
$mess = '';
$err = false;
if($type_user==3 && isset($_POST['btneditrequest'])) // Только для техника
{
if(isset($_POST['statuses']))
{
$id_status = $_POST['statuses'];
$ret = updateStatusRequest($id_request, $id_status);
if(!$ret){
$mess = "<div class='alert alert-danger' role='alert'
style='margin:20px;'>Произошла ошибка 1 при обновлении заявки</div>";
$err = true;
}
else
$mess = "<div class='alert alert-success' role='alert'
style='margin:20px;'>Обновление заявки произошло успешно</div>";
}
if(isset($_POST['priorities']))
{
$id_priority = $_POST['priorities'];
$ret = updatePriorityRequest($id_request, $id_priority);
if(!$ret){
$mess = "<div class='alert alert-danger' role='alert'
style='margin:20px;'>Произошла ошибка 2 при обновлении заявки<div>";
$err = true;
}
else
$mess = "<div class='alert alert-success' role='alert'
style='margin:20px;'>Обновление заявки произошло успешно</div>";
}
if(isset($_POST['types']))
{
$id_type = $_POST['types'];
$ret = updateTypeRequest($id_request, $id_type);
if(!$ret){
$mess = "<div class='alert alert-danger' role='alert'
style='margin:20px;'>Произошла ошибка 3 при обновлении заявки</div>";
$err = true;
}
else
$mess = "<div class='alert alert-success' role='alert'
style='margin:20px;'>Обновление заявки произошло успешно</div>";
}
if(isset($_POST['comment']))
{
$comment = $_POST['comment'];
$ret = updateCommRequest($id_request, $comment);
if(!$ret){
$mess = "<div class='alert alert-danger' role='alert'
style='margin:20px;'>Произошла ошибка 4 при обновлении заявки</div>";
$err = true;
}
95
else
$mess = "<div class='alert alert-success' role='alert'
style='margin:20px;'>Обновление заявки произошло успешно</div>";
}
if(isset($_POST['price']))
{
$price = $_POST['price'];
if($price==0)
$price='null';
$ret = updatePriceRequest($id_request, $price);
if(!$ret){
$mess = "<div class='alert alert-danger' role='alert'
style='margin:20px;'>Произошла ошибка 5 при обновлении заявки</div>";
$err = true;
}
else
$mess = "<div class='alert alert-success' role='alert'
style='margin:20px;'>Обновление заявки произошло успешно</div>";
}
}
else // Для менеджера
{
if(isset($_POST['statuses']) && isset($_POST['priorities']) &&
isset($_POST['types']) && isset($_POST['description']) && isset($_POST['contacts']) &&
isset($_POST['id_repairer']) && isset($_POST['comment']) && isset($_POST['price']) &&
isset($_POST['btneditrequest']))
{
$id_status = $_POST['statuses'];
if($id_status == 0)
{
$mess = "<div class='alert alert-danger' role='alert'
style='margin:20px;'>Ошибка. Не задан статус заявки</div>";
$err = true;
}
else
{
$id_priority = $_POST['priorities'];
$id_type = $_POST['types'];
$description = $_POST['description'];
$contacts = $_POST['contacts'];
$id_repairer = $_POST['id_repairer'];
$comment = $_POST['comment'];
$price = $_POST['price']==0?'null':$_POST['price'];
$ret = updateRequest($id_request, $id_status, $id_priority,
$id_type, $description, $contacts, $id_repairer, $comment, $price);
if(!$ret)
{
$mess = "<div class='alert alert-danger' role='alert'
style='margin:20px;'>Произошла ошибка при обновлении заявки</div>";
$err = true;
}
else
96
$mess = "<div class='alert alert-success' role='alert'
style='margin:20px;'>Обновление заявки произошло успешно</div>";
}
}
}
$request = getRequestForEdit($id_request);
$data = array('req' => $request, 'type_user' => $type_user, 'mess' => $mess, 'err' =>
$err);
}
else
redir2('404');
echo "

Редактирование заявки № ".$_GET['id']."</h1>";

?>
<div class="col-md-12">
<form class="form-horizontal" action="requestEdit?id=<?php echo $_GET['id']; ?>" method="post"
accept-charset="utf-8">
<fieldset>
<legend></legend>
<?php
$req = $data['req'];
$mess = $data['mess'];
$err = $data['err'];
$type_user = $data['type_user'];
echo "<div class='editrequest'>";
if($mess != '')
echo "<div class='".($err ? 'danger' : 'success')."'>$mess</div>";
?>
<div class="row">
<div class="col-md-5">
<div class="form-group">
<label class="col-md-4 control-label" for="statuses">Статус заявки</label>
<div class="col-md-8">
<?php
echo "<select class='form-control' size='1' name='statuses'>";
echo "<option value='0'>выберите статус</option>";
foreach($req['statuses'] as $i => $status)
echo "<option
value='".$status['id_status']."'".($req['id_status']==$status['id_status'] ? ' selected' :
'').">".$status['status']."</option>";
echo "</select>";
?>
</div>
</div>
</div>
<div class="col-md-7">
<div class="form-group">
<label class="col-md-4 control-label" for="priorities">Приоритет
заявки</label>

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

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