Удаляет ли сохранение bean-компонента связь записи с электронной почтой в SuiteCRM?

Я запускаю экземпляр SuiteCRM v7.7

  1. ОС: ЦЕНТ ОС
  2. Версия PHP: 5.5.36
  3. БД: MySQL v5.5.50

Я написал запланированное задание, которое через каждый заданный интервал будет получать доступ к записям потенциальных клиентов и сравнивать два поля друг с другом (account_id и account_id_c). Это гарантирует, что они оба равны.

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

Как только поля совпадают, bean-компонент сохраняется, и так далее.

Вот посмотрите на мой сценарий для запланированного задания:

    $job_strings[] = 'checkCurrentLeadCompany';

    function checkCurrentLeadCompany(){
    $bean = BeanFactory::getBean('Leads');


    $order_by = "last_name";
    $where = "leads.account_id IS NULL OR leads.account_id = ''";
    $importedLeadList = $bean ->get_full_list($order_by,$where);

    function importedLeads($importedLeadList){
        foreach ($importedLeadList as $record) {
           $accountBean = BeanFactory :: getBean('Accounts');
           $accountRecord = $accountBean -> retrieve_by_string_fields(
                    array(
                        'name' => $record -> account_name
                    )
                );
        if(isset($accountRecord) || $accountRecord != NULL || $accountRecord != ''){//checks to see if a record populates the variable

                $record -> account_id = $accountRecord -> id;
                $record -> account_id_c = $accountRecord -> id;

    }
    else{
                //If there is no account available, create the account and proceed.
                $newRecord = createAccount($record -> account_name);
                $record -> account_id = $newRecord -> id;
                $record -> account_id_c = $newRecord -> id;

            }
            $record->save();

        }

    }

    function createAccount($accountName, $content){

        $newAccount = BeanFactory :: newBean('Accounts');
        $newAccount -> name = $accountName;
                    $newAccount ->save();
                    return $newAccount;
    }
    if(!isset($importedLeadList)){
    //no need to do anything.

    }
    else{
        importedLeads($importedLeadList);
    }
return true;
}

Самое смешное: при каждом запуске этого скрипта связь между записью лида и его адресом электронной почты разрывается. В базе данных поле "deleted" в таблице ссылок, email_addr_bean_rel, получает значение 1. Я не знаю, почему.

Может ли кто-нибудь дать мне представление о том, почему это происходит?


person Grant McDonald    schedule 30.08.2016    source источник


Ответы (1)


Я столкнулся с той же проблемой с контактами.

После нескольких часов попыток спрятать адреса электронной почты перед сохранением контакта, а затем повторно связать их с контактом (что не сработало), я взглянул на класс "Person", который расширяет "Contact".

Метод «сохранить» ищет наличие ГЛОБАЛЬНОЙ переменной с именем «ресавингРелетедБинс». Если вы установите это непосредственно перед сохранением компонента Contact (не забудьте отключить его после), это не испортит текущие связанные адреса электронной почты. Итак, теперь у меня есть:

 $GLOBALS['resavingRelatedBeans']=true;
 $contactRec->save();
 $GLOBALS['resavingRelatedBeans']=null;
person glidester    schedule 05.01.2017
comment
Life Saver, для меня эта проблема возникала для любого связанного контакта, у которого было более 2 адресов электронной почты, по какой-то странной причине он удалял 3-е электронное письмо. - person Josh Whitlow; 01.11.2017