Jump to content
SpravkaCRM.ru - Ваш справочник по CRM
Sign in to follow this  
iwealth

Проблемы с отображением задач в календаре. SuiteCRM.

Recommended Posts

В процессе разработки столкнулся с проблемой: независимо от того какие значения стоят в полях "Дата начала" и "Дата выполнения" в модуле "Задачи", в календаре такая задача отображается размером в 2 часа. При этом звонки и встречи отображаются нормально.

Путём сравнения модулей удалось выяснить, что в звонках и встречах есть поля duration_hours и duration_minutes по которым строится отображение данных в календаре.

Я предположил, что необходимо найти место где формируются данные для календаря и высчитывать эти значения там.

В файле modules/Calendar/Calendar.php ищем строки

"Tasks" => array("showCompleted" => true,"start" =>  "date_due", "end" => "date_due"),

заменяем на

"Tasks" => array("showCompleted" => true,"start" =>  "date_start", "end" => "date_due"),

 

В этом же файле ещё ищем:

if (isset($act->sugar_bean->duration_hours)) {
   $item['duration_hours'] = $act->sugar_bean->duration_hours;
   $item['duration_minutes'] = $act->sugar_bean->duration_minutes;
}

и заменяем на                 

$cstm_mod = array('Opportunities', 'Tasks'); //модули в которых необходимо высчитывать duration_hours и duration_minutes
if ( in_array($act->sugar_bean->module_dir, $cstm_mod) ) {
   //для "особенных" модулей считаем
   if (isset($act->sugar_bean->date_start) && isset($act->sugar_bean->date_due)) {
      $datetime1 = new DateTime($act->sugar_bean->date_start); //дата начала
      $datetime2 = new DateTime($act->sugar_bean->date_due); //дата окончания
      $interval = $datetime1->diff($datetime2);
      $item['duration_hours'] = $interval->format('%H');
      $item['duration_minutes'] = $interval->format('%I');
   }
} else {
   //для обычных модулей берём существующие значения
   if (isset($act->sugar_bean->duration_hours)) {
      $item['duration_hours'] = $act->sugar_bean->duration_hours;
      $item['duration_minutes'] = $act->sugar_bean->duration_minutes;
   }
}

             

А так же в файле modules/Calendar/CalendarUtils.php в методе get_time_data комментируем строки:

if($bean->object_name == 'Task')
   $start_field = $end_field = "date_due";

 

В результате получаем, что задача отображется в календаре начиная со времени начала и длится до времени окончания.

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...