Администраторы группы

  • Аватар

Модераторы группы

  • Аватар

Использование Vtiger CRM

Открытая группа активность: 6 ч., 35 мин. назад

Обсуждения функциональности, особенностей установки и настройки системы SalesPlatform Vtiger CRM.

[DevHowTo] Запрет на изменение ответственного в сделках и контрагентах (записей: 12)

← Форум группы   Все форумы
  • Аватар Plastilin - 1 г., 4 мес. назад:

    Всем привет. Скажите можно ли как то запретить изменять ответственного в сущностях сделки и контрагенты?

  • Аватар Алексей Зозуля - 1 г., 4 мес. назад:

    Стандартными средствами никак, можно написать php-код проверки карточки перед сохранением, который будет смотреть на текущего ответственного и на то значение, что сейчас в форме, и ругаться в случае отличия. Правда надо еще проверить роль пользователя, который это делает.
    Проверка полей перед сохранением: http://salesplatform.ru/wiki/index.php/SalesPlatform_Vtiger_CRM_Developers_%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%9F%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B0_%D0%BF%D0%BE%D0%BB%D0%B5%D0%B9_%D0%BF%D0%B5%D1%80%D0%B5%D0%B4_%D1%81%D0%BE%D1%85%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5%D0%BC

  • Аватар Plastilin - 1 г., 4 мес. назад:

    Жаль.

  • Аватар Иван - 1 г., 4 мес. назад:

    Можно ли таким способом проверять поля зависимых модулей? Например, делается заказ (в модуле Заказы, разумеется), в заказе указывается Контрагент (из модуля Контрагенты, разумеется), менеджер нажимает Сохранить, НО, если у данного контрагента (в модуле Контрагенты, разумеется) не заполнено какое-то из нужных полей (например КПП), ему выходит сообщение о необходимости заполнения данного поля!

  • Аватар Олег - 1 г., 4 мес. назад:

    Можно :)

    Как раз проверка перед сохранением – отличный инструмент для подобных задач

  • Аватар Иван - 1 г., 4 мес. назад:

    Так в том то и вопрос, как в проверку одного модуля засунуть проверку связанного!? Есть ли какой-нибудь простейший пример!?

  • Аватар Олег - 1 г., 4 мес. назад:

    Примерный алгоритм:
    1. Получить ID связанной карточки
    2. По ID получить модель карточки, при помощи getInstanceById в Vtiger_Record_Model
    3. Из модели вытащить значения (геттер) необходимых полей связанной карточки
    4. Вся остальная бизнес-логика с данными связанной карточки

    Одна особенность: требуются навыки программирования и знание кода Vtiger

  • Аватар Иван - 1 г., 4 мес. назад:

    Сдается мне, что-то вроде этого должно быть – http://pastebin.com/GDJCu8jw
    Но так не работает!

  • Аватар Stepan - 1 г., 4 мес. назад:

    что показывает отладка?

    я не герой php, поэтому спасался этим:
    error_log(» id = $id»,3,»/var/www/vtigercrm/error.log»);

    ну и не знаю, как PHP переоковеркивает типы данных, но strlen должно выдавать число, а у вас оно сравнивается со строкой.

    в любом случае лучше смотреть значения переменных в процессе выполнения и очень помогает понимание того, что процесс выполнения все-таки запустился

  • Аватар Иван - 1 г., 4 мес. назад:

    Ничего не показывает!
    Немного упростил скрипт – http://pastebin.com/Dr5NbmWN
    Пробовал комментировать строки, по всему вероятно выполнение останавливается на строке –
    $recordId = $ac_id->getId();
    т. е. не удается «1. Получить ID связанной карточки»… Видимо надо как-то по-другому, посоветуйте кто что может!

  • Аватар Stepan - 1 г., 4 мес. назад:

    попробуй посмотреть что по факту у тебя получается в массиве:
    $dataArr = (array)json_decode(urldecode($request->get(‘checkBeforeSaveData’)));
    может дальше уже все будет сильно проще

  • Аватар Иван - 1 г., 4 мес. назад:

    Победил, наконец-то! Ошибка была в том, что пытался получить ID для ID:
    $ac_id = $dataArr['account_id'];
    $recordId = $ac_id->getId();
    хотя первая строка и так дает ID (посмотрел с помощью var_dump($dataArr))
    Скрипт для истории – http://pastebin.com/MwB8yqYb
    Всем спасибо за советы и участие!