Ptica

Members
  • Content count

    46
  • Joined

  • Last visited

Everything posted by Ptica

  1. Проблемы две Первая - это ошибки на страницах crm Предупреждение: пожалуйста, обновите систему до версии Chart Data Cache, используя ссылку "Восстановление" в панели администратора Предупреждение: пожалуйста, обновите систему до версии htaccess, используя ссылку "Восстановление" в панели администратора Вторая - в списке отображаются не все записи из бд. Проблема возникла после восстановления бд.
  2. Возник вопрос, как актуализировать базу на локальном компьютере?
  3. В логе такие ошибки: Tue May 10 17:59:45 2016 [1590][930b1248-144c-f31f-eeb0-5716279e1e37][ERROR] Unable to load related bean by id Tue May 10 17:59:45 2016 [1590][930b1248-144c-f31f-eeb0-5716279e1e37][ERROR] fromUser: Conversion of from user format d.m.Y H:i failed Ошибка возникает под пользователем с ограниченными правами. У администратора - нет.
  4. Предположу что в файле .htaccess в корне проекта. php_flag display_errors off
  5. По идее должен быть. Ну или в исходниках возьмите. Например тут:http://github.com/sugarcrm/sugarcrm_dev/blob/master/modules/Accounts/views/view.detail.php
  6. Сделал git pull на локальном компьютере $ git pull origin master remote: Counting objects: 21, done. remote: Compressing objects: 100% (20/20), done. remote: Total 21 (delta 12), reused 0 (delta 0) Unpacking objects: 100% (21/21), done. From http://bitbucket.org/тра-та-та * branch master -> FETCH_HEAD 8eb2d5d..b4203c5 master -> origin/master Что значат последние две строки? git status выводит следующее: $ git status On branch master Your branch is up-to-date with 'origin/master'. Untracked files: (use "git add <file>..." to include in what will be committed) FETCH_HEAD nothing added to commit but untracked files present (use "git add" to track)
  7. Много где описана эта проблема, повторюсь еще раз. XAMPPпри запуске apache выдает такую ошибку: Порт 80 занят процессом с PID 4 netstat -ano в cmd показал: Skype, TeamViewer, SQL службы, [Панель управления -> Программы и компоненты -> Включение и отключение компонентов WindowsУбираем галочку (Службы IIS) -> Лучше рестартануть Windows], Служба агента веб-развертывания,Служба веб-публикаций W3SVC, ENI server РЕЗУЛЬТАТА НЕ ДАЛИ. Помог чудесный способ - замена порта в конфигахсамого apache. ИщемListen 80 меняем на 81. Сохраняем. Запускаем Apache/ Смотрим в панели XAMPP. Порт стал 81 Собственно все. Пользуемся.
  8. Создаю модуль листинга недвижимости. На выходе должен получиться PDF файл с объектами недвижимости. Для начала создаю пункт меню в crm-ке по аналогии. В файле \custom\modules\logic_hooks.php $hook_array['after_ui_frame'][] = Array(3, 'Add zLIST button to listview', 'modules/zLIST/add_action.php','zLISTAction', 'addCustomButtonAction'); Где 3 - порядковый номер хука, далее название (какое угодно для души), потом файл который будет выполнятся, класс и метод этого файла соответственно. В\modules\zLIST\add_action.php пишу это: class zLISTAction { function addCustomButtonAction(){ $html = " <script src='modules/zLIST/js/add_button.js'></script> "; echo $html; } } То есть выполняю скриптadd_button.js В\modules\zLIST\js\add_button.js: if (!$("#actionLinkTop > .sugar_action_button > .subnav > li").hasClass('list_li')) $('#actionLinkTop > .sugar_action_button > .subnav').append( '<li class="list_li"><a href="#" name="zlist" id="zlist" class="list" onclick="open_(); return false;">Сгенерировать Листинг</a></li>'); if (!$("#actionLinkBottom > .sugar_action_button > .subnav > li").hasClass('list_li')) $('#actionLinkBottom > .sugar_action_button > .subnav').append( '<li class="list_li"><a href="#" name="zlist" id="zlist" class="list" onclick="open_(); return false;">Сгенерировать Листинг</a></li>'); Здесь добавляем в меню еще один пункт. Выглядит теперь так В этом же файле: function open_ () { window.open('index.php?module=zLIST&action=generate_listing'); } В новом окне открывается файл generate_listing.phpсохраненный вmodules\zLIST : require_once 'modules/zLIST/send_listing.php'; $file = GenerateListing(); //var_dump($file); if (file_exists($file)) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="'.basename("$file")).'"'; header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: '.filesize("{$file}")); ob_clean(); flush(); readfile("{$file}"); exit; } После чего выполняетсяmodules\zLIST\send_listing.php : require_once 'fpdf17/fpdf.php'; function GenerateListing() { $pdf = new FPDF(); $pdf->AddFont('TimesNewRomanPSMT','','times.php'); $pdf->AddFont('Times-Italic','I','timesi.php'); $pdf->SetAuthor('OfficeWorld'); $pdf->SetTitle('Listing'); $pdf->SetFont('TimesNewRomanPSMT','',35); $pdf->SetTextColor(100,100,100); $pdf->AddPage('L'); $pdf->SetDisplayMode('real','default'); $pdf->Image('modules/zLIST/images/Presentation.jpeg', , , 297, 180); $pdf->Image('modules/zLIST/images/Footer.jpeg', , 195, 297, 15); $pdf->Text(100, 100, 'hi'); $pathfolder = 'modules/zLIST/listings/'; $pdf->Output($pathfolder. 'Листинг - ['.'].pdf'); return ($pathfolder . 'Листинг - ['.'].pdf'); } Нужно обработать в файлеmodules\zLIST\send_listing.phpвыделенные записи. То есть получить их id и прочие параметры (с помощью retrieve, я думаю)
  9. По нажатию на кнопку сохранить в модуле Tasks, при статусе задачи Завершена,необходимо отправить уведомление на почту ответственному. Изменения произвожу в файле \modules\Tasks\Task.php в функцииfunction save Задача заключается в том, что бы вытащить email ответственного и в отправке ему сообщения с названием задачи.
  10. Не удалось отправить письмо. Смотреть в сторонуSugarPHPMailer.php? Есть описание его методов?
  11. Это то, что нужно. Спасибо. Хотелось бы узнать поподробнее что такоеretrieve , с чем его едят и где про него смотреть&Ну и как отправить само письмо средствами шуги&
  12. Этот механизм работает. Нужно сделать "отбивку" при изменении статуса задачи. То есть Пользователю поставлена задача - пришло сообщение. Потом пользователь выполнил задачу, выставил статус Завершена, нажал сохранить - заказчику (тот кто поставил задачу) пришло сообщение о выполнении.
  13. В просмотре задачи у меня появляется вот такая ошибка. В файле sugarcrm.log по этому поводу запись: [FATAL] Error running count query for Task List: Query Failed: ( SELECT count(*) c FROM sugar_sms INNER JOIN tasks task_sugar_sms_rel ON sugar_sms.parent_id=task_suga_sms_rel.id AND task_sugar_sms_rel.deleted=0 AND parent_type = 'Tasks' where ( sugar_sms.parent_id='706c9722-106c-d31b-02e1-56c583e34312') AND sugar_sms.deleted=0 ): MySQL error 1052: Column 'parent_type' in on clause is ambiguous Судя по всему это субпанель. Нахожу файл\custom\Extension\modules\Tasks\Ext\Layoutdefs\_custom_usage_module.php отвечающий за вывод субпанели. Вот содержание файла: $layout_defs['Tasks']['subpanel_setup']['task_sugar_sms'] = array ( 'order' => 250, 'module' => 'sugar_SMS', 'subpanel_name' => 'default', 'sort_order' => 'asc', 'sort_by' => 'date_entered', 'title_key' => 'LBL_SUGAR_SMS', 'get_subpanel_data' => 'task_sugar_sms', 'top_buttons' => array ( array('widget_class' => 'SubPanelSMSButton') ), ); Если его убрать, то ошибка пропадает, а заодно и появляется субпанель "Заметки". Хочется понять в чем ошибка, где формируется запрос к БД.
  14. Никаким... Делаю запрос к БД и вывожу результат посредством fpdf...
  15. Сам отчет уже формируется по нажатию на кнопку. Нужно сделать вывод диаграмм за определенный срок. Жду предложений по реализации.
  16. Да, описание решения. Можно перенести в соответствующий раздел.
  17. Задача заключается в том, что бы в модуле Встречи отобразить иначе дату начала встречи. Изначально дата встречи меняет цвет в зависимости от текущей даты. Мы же сделаем, что бы цвет изменялся так же в зависимости от статуса задачи. В этом методе можно использовать любое нужное для вас условие в любом модуле. В моем случае нужное поле уже существует. В файле\custom\modules\Meetings\metadata\listviewdefs.php,который отвечает за отображения списка у меня существует следующая запись: 'DATE_START' => array ( 'width' => '15%', 'label' => 'LBL_LIST_DATE', 'link' => false, 'default' => true, 'related_fields' => array ( 0 => 'time_start', ), ), Находим в файле\modules\Meetings\Meeting.php функцию function get_list_view_data() { Здесь мы и задаем условия отображения информации. Я комментирую стандартный код: global $timedate; // стандартное отображение даты начала (даты встречи) $r2 = $db->query($q); if($row2 = $db->fetchByAssoc($r2)) { $today = $timedate->nowDb(); $nextday = $timedate->asDbDate($timedate->getNow()->get("+1 day")); $mergeTime = $meeting_fields['DATE_START']; //$timedate->merge_date_time($meeting_fields['DATE_START'], $meeting_fields['TIME_START']); $date_db = $timedate->to_db($mergeTime); if ($date_db < $today) { $meeting_fields['DATE_START'] = "<font class='overdueTask'>" . $meeting_fields['DATE_START'] . "</font>"; } else if ($date_db < $nextday) { $meeting_fields['DATE_START'] = "<font class='todaysTask'>" . $meeting_fields['DATE_START'] . "</font>"; } else { $meeting_fields['DATE_START'] = "<font class='futureTask'>" . $meeting_fields['DATE_START'] . "</font>"; } $this->fill_in_additional_detail_fields(); } И пишу следующее: global $db, $timedate; $q = "SELECT date_start, status, DATE(date_start) as `d_date_start` FROM meetings WHERE deleted<>1 AND id = '{$meeting_fields[ID]}' ORDER BY status ASC, date_start ASC LIMIT 1 "; $r = $db->query($q); if($row = $db->fetchByAssoc($r)) { $color = '000'; if ($row['d_date_start'] == date('Y-m-d')) { $color = 'fb0'; //оранжевый } if(strtotime($row['date_start'])<strtotime($timedate->nowDb())){ $color='f00'; // красный } if($row['status']=='Held'){ $color='0f0'; // зеленый } if($row['status']=='Not Held'){ $color='00f'; // синий } $date_start = $timedate->to_display_date_time($row['date_start']); $meeting_fields["DATE_START"] = "<span style='color:#{$color}'>{$date_start}</span>"; } Здесь мы делаем запрос к БД и в цикле меняем цвет отображения даты в зависимости от статуса и даты.
  18. Необходимо что бы некоторые пользователи могли видетьсвои задачи и задачи, которые они поставили кому-то. Остальные задачи (которые они не создавали и которые ставились не им) эти пользователи видеть не должны. Ролями можно выставить отображение только своих или всех задач. Какие есть предложения по реализации?
  19. Разве не это? Если да, то в\skoya\custom\metadata\sugartalk_SMS_tasks.php: $dictionary['task_sugar_sms'] = array( 'relationships' => array ( 'task_sugar_sms' => array ( 'lhs_module'=> 'Tasks', 'lhs_table'=> 'tasks', 'lhs_key' => 'id', 'rhs_module'=> 'sugar_SMS', 'rhs_table'=> 'sugar_sms', 'rhs_key' => 'parent_id', 'relationship_type'=>'one-to-many', 'relationship_role_column'=>'parent_type', 'relationship_role_column_value'=>'Tasks', ), ), 'fields' => '', 'indices' => '', 'table' => '', ); И в
  20. В моем случае используется FPDF, у него есть дополнение рисующее диаграммы. Документация по использованию на сайте есть. Я не совсем точно вопрос задал. Сейчас в отчете отображается таблица с данными по объекту - звонки, встречи и т.д. и диаграмма по таблице. Но данные отображаются за все время.Я хочу, что бы перед формированием отчета при нажатии на кнопку можно было задать период по которому нужно сделать диаграммы. Как это сделать?