2018-04-01 Избыточное Решение

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

правила_разработки:как_не_надо_делать:2018-04-01_избыточное_решение [02.04.2018 11:24]
admin Approved(admin 2018/04/02 11:24)
правила_разработки:как_не_надо_делать:2018-04-01_избыточное_решение [20.05.2019 15:18]
Строка 1: Строка 1:
-**Нарушено правило:​** Не нужно решать простую задачу слишком хорошо с запасом на будущее.\\ 
-**Постановка задачи:​** Добавить проверку,​ если было более 3 FATAL задач обращений в тех.поддержку то создать задачу для проведения аудита клиента руками разработчика.\\ 
-**Ошибка:​** Решено слишком сложно и избыточно.\\ 
-**Как надо делать:​** Можно сделать в один два селекта и просто создание задачи и запускать срипт раз в мес, пример решения добавят позже.\\ 
-<todo @Коля1>​Добавить пример решения</​todo>​\\ 
- 
-<code php> 
-#​!/​usr/​bin/​php 
- 
-<?php 
-/** 
- * Created by PhpStorm. 
- * User:  
- * Date: 23.03.18 
- * Time: 16:58 
- * Запускается раз в месяц по cron 1 числа и находит сервера с FATAL задачами. 
- * Если на сервере больше 3 FATAL за месяц создается задача на аудит сервера 
- */ 
- 
-require_once('/​var/​www/​vcrm/​carbon/​utils/​osv_lib2.php'​);​ 
-require_once('/​var/​www/​vcrm/​rest/​ticket_for_alarm_patch.php'​);​ 
- 
-$clients = sqlexec("​SELECT DISTINCT vtiger_account.accountid AS accountid, cf_regnumber,​ cf_regproduct,​ accountname 
- 
- FROM vtiger_potential 
- 
- INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_potential.potentialid 
- 
- AND vtiger_crmentity.deleted =0 
- 
- INNER JOIN vtiger_potentialscf ON vtiger_potential.potentialid = vtiger_potentialscf.potentialid 
- INNER JOIN vtiger_account ON vtiger_potential.related_to=vtiger_account.accountid 
- 
- INNER JOIN vtiger_invoice i ON vtiger_account.accountid=i.accountid AND invoicedate > DATE_SUB(NOW(),​INTERVAL 1 YEAR) 
- 
- WHERE 
- sales_stage='​Closed Won' 
- AND cf_regproduct NOT LIKE '​%4-SoftRouter%'​ 
- AND cf_regproduct NOT LIKE '​%illing4%'​ 
- AND cf_regproduct NOT LIKE '​%ASR%'​ 
- AND cf_regproduct NOT LIKE '​%NAS%'​ 
- AND cf_regproduct NOT LIKE '​%ICS25'​ 
- 
- AND accountname NOT LIKE '​%carbonsoft%'​ 
- AND cf_regsupport NOT LIKE '​%Без поддержки%'​ 
- 
- ORDER BY accountname,​ cf_regproduct,​ cf_regbranch"​);​ 
- 
- 
-function search_tasks_by_title($client,​ $title, $interval, $status = 0) 
-{ 
-    $sql = "​select tcf.ticketid,​ vtt.title from vtiger_ticketcf tcf  
- inner join vtiger_troubletickets t ON t.ticketid=tcf.ticketid 
- JOIN vtiger_crmentity ce ON ce.crmid=tcf.ticketid 
- JOIN vtiger_troubletickets vtt ON vtt.ticketid = tcf.ticketid 
- WHERE 
- t.parent_id = {$client[accountid]} 
- AND t.title LIKE '​%$title%'​ 
- AND ce.deleted=0 
- AND tcf.cf_regnom = '"​ . $client[cf_regnumber] . "'​ 
- AND ce.createdtime > DATE_SUB(NOW(),​INTERVAL $interval DAY)"; 
-    if ($status == 1) { 
-        $sql = $sql . " AND t.STATUS != '​Closed'​ AND t.STATUS != '​Подтверждение закрытия'​ AND tcf.cf_chernovik = '"​ . $client[cf_chernovik] . "'";​ 
-    } else { 
-        $sql = $sql . "AND t.title NOT LIKE '​%аудит сервера%'";​ 
-    } 
-    $open_tickets = sqlexec($sql);​ 
-    return $open_tickets;​ 
-} 
- 
-foreach ($clients as $client) { 
-    $open_ticket_fatal = search_tasks_by_title($client,​ '​FATAL',​ 30); 
-    if (count($open_ticket_fatal) >= 3) { 
-        $date = new DateTime(); 
-        $date = $date->​format("​y:​m:​d h:​i:​s"​);​ 
-        $carbon_client = array(); 
-        $carbon_client['​accountid'​] = '​200678';​ 
-        $carbon_client['​cf_chernovik'​] = $client['​cf_regnumber'​];​ 
-        $open_ticket_fatal_exist = search_tasks_by_title($carbon_client,​ "​Провести аудит сервера",​ 30, 1); 
-        if (!empty($open_ticket_fatal_exist)) { 
-            echo($date . " Заявка на аудит сервера уже существует \n"); 
-            echo($date . " https://​crm.carbonsoft.ru/​t/"​ . $open_ticket_fatal_exist[0]['​ticketid'​] . "​\n"​);​ 
-            continue; 
-        } 
-        $description = '';​ 
-        echo($date . " Нужно создать заявку на аудит сервера " . $client['​cf_regnumber'​] . "​\n"​);​ 
-        $title = "FATAL Провести аудит сервера " . $client['​accountname'​];​ 
-        foreach ($open_ticket_fatal as $ticket) { 
-            $description .= $ticket['​title'​] . " https://​crm.carbonsoft.ru/​t/"​ . $ticket['​ticketid'​] . "​\n";​ 
-        } 
-        $alarm['​user_email'​] = '​reductor.sup.head@carbonsoft.ru';​ 
-        $alarm['​title'​] = iconv('​utf-8',​ '​utf-8//​IGNORE',​ $title); 
-        $alarm['​description'​] = $description;​ 
-        $alarm['​cf_chernovik'​] = $client['​cf_regnumber'​];​ 
-        rest_ticket_create($alarm);​ 
-    } 
-} 
-</​code>​ 
- 
-/*Не удаляйте эту строку и ниже!*/ 
-{(rater>​id=1|name=Прочитал_правила_разработки:​как_не_надо_делать:​2018-04-01_избыточное_решение|type=vote|trace=user|tracedetails=1)}