2011-08-01 15 views
2

Webサイトがあり、レコードが挿入/更新されると、シュガーCRMアカウントモジュールを更新するスクリプトが実行されます。Sugar CRMのプライマリEmailアドレスに基づいてアカウントIDを取得

アカウントモジュールには、フィールドwebsite_id_cがあります。 DBに挿入が発生すると、最後の挿入IDがSugar CRMのwebsite_id_cに設定され、残りの値が挿入されます。

挿入スクリプトは次のようなものです。

$name_value_field=array(
    array('name' => 'name','value' => $name), 
    array('name' => 'primary_contactperson_c','value' => $ownername), 
    array('name' => 'billing_address_street','value' => $address), 
    array('name' => 'billing_address_postalcode','value' => $postalcode), 
    array('name' => 'email1','value' => $email), 
    array('name' => 'website_id_c','value' => $id_retrieved), 
); 
if(!empty($sessn_id)) 
{ 
    $result=$soap->set_entry("Accounts",$name_value_field); 

} 

これは、SOAP nusoapクライアントを使用してSugar CRMクラウドと通信します。挿入はうまく動作し、更新も行います。

$response = $soap->get_entry_list('Accounts', 
       array('id'), 
       "website_id_c='$websiteID'"); 
$account_id = $response['entry_list'][0]['id']; 

しかし、現在、私は電子メールに基づいてレコードを更新するACCOUNT_IDを取得したいです。私は電子メールでフィールドを変更しました。しかし、私はそれが他の場所に格納されていると感じ、プライマリアドレスキーはAccountsモジュールに格納されます。まず、EmailモジュールからそのIDを取得し、このEmailアドレスIDに基づいてAccountsモジュールに問い合わせて、Account Valuesを取得します。

$response = $soap->get_entry_list('Accounts', 
       array('id'), 
       "email1='[email protected]'"); 

電子メールアドレスを格納するモジュールはどれですか?私は以前にシュガーで働いていませんでした。あなたが私を正確に得られなかったら私に尋ねてください。

おかげ

答えて

3

電子メールフィールドとアカウントとの関係は、他の二つのテーブルに格納されているので、あなたが選択したサブでアカウントを取得する必要があります。 get_entry_list方法は

get_entry_list($module, 
    $fields = array(), 
    $query='', 
    $order_by='', 
    $offset=0, 
    $limit = 1000) 

ようです

$response = $soap->get_entry_list(
    $module = 'Accounts', 
    $fields = array('id'), 
    $query = "accounts.id IN (
     SELECT eabr.bean_id 
     FROM email_addr_bean_rel eabr 
      JOIN email_addresses ea ON (ea.id = eabr.email_address_id) 
     WHERE 
      eabr.bean_module = 'Accounts' 
      AND eabr.deleted = 0 
      AND ea.email_address = '[email protected]' 
    )", 
    $orderBy = "accounts.name", 
    $offset = 0, 
    $max = 10 
); 

私のSOAPクライアントはそれに応じて必要な変更を行います。

+0

@KåreWerner Storgaardありがとうございます。 $ orderBy = "accounts.name"、$ offset = 0、$ max = 10は必要ありません。できます! 。もう一度ありがとう。 –

関連する問題