Как создать связь между лидами и пользовательскими модулями в SugarCRM CE? - PullRequest
6 голосов
/ 15 июня 2011
function createPJOpportunityRelationship($pj_id, $op_id) {
    echo "creating relationship";

    $set_relationship_value = array(
        'module1' => 'geral_pessoa_juridica', 'module1_id' => $pj_id,
        'module2' => 'Opportunities', 'module2_id' => $op_id
    );

    $set_relationship_params = array(
        'session' => $this->ses,
        'set_relationship_value' => $set_relationship_value
    );

    $set_relationship_result = $this->soap->call('set_relationship', array(
        'session' => $this->ses,
        'set_relationship_value' => $set_relationship_value));

    var_dump($set_relationship_result);
}

Это код, который я использую для создания отношений, согласно большинству обучающих программ. Код работает, когда я использую 2 основных модуля (например, Leads / Contacts), но не работает, когда я пробую его с пользовательскими модулями.

В этом случае модуль geral_pessoa_juridica является пользовательским, geral - пакет, а pessoa_juridica - имя. Я уверен, что имя правильное, оно работает для других функций.

Эта функция возвращает мне это

5ec9ca75-e09d-e2d8-0c2b-4df7ac377dcf creating relationship array(3) { ["created"]=> int(0) ["failed"]=> int(1) ["deleted"]=> int(0) }

Я не уверен, ПОЧЕМУ это терпит неудачу - изучая sugarcrm.log, я вижу, что он даже не пытался создать отношения.

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

Есть идеи как это исправить?

Ответы [ 2 ]

2 голосов
/ 22 июня 2011

В строке 5 есть ошибка:

'module1' => 'geral_pessoa_juridica', 'module1_id', $pj_id,

вместо этого должно быть:

'module1' => 'geral_pessoa_juridica', 'module1_id' => $pj_id,
1 голос
/ 08 декабря 2011

Решено, или вроде.

    $set_relationship_params = array(
        'session' => $this->ses,
        'module_name' => 'custom_module', /* custom module, where the relationship was created, "primary module" */
        'module_id' => $custom_id, /* id of site, get from set_entry call */
        'link_field_name' => 'module', /* the LINK field type name, from Step 5  */
        'related_ids' => array($module_id) /* id of Account you want to relate to */
    );

    print_r($result = $this->soap->call('set_relationship',$set_relationship_params)); //nuSoap
}
...