3

私はSugarCRMモジュールの開発にまったく慣れていませんが、PHP、ajax、データベースプログラミングについて非常によく知っています。

これが私のタスクです:クライアントモジュールからカスタムフィールドに制限を作成するように依頼されました。識別番号と呼ばれるカスタムフィールドがあります。私がする必要があるのは、そのフィールドに基づいて新しいクライアントがデータベースに保存されないようにすることです。つまり、クライアントは一意である必要があります。「そのクライアントはすでに存在します」というポップアップウィンドウを表示する必要があります

4

2 に答える 2

4

editviewdefs.phpアカウントをフォルダーにコピーしcustom、カスタム フィールド定義id_numberをこれに変更します。

array(
  'name' => 'id_number',
  'displayParams' => 
  array (
    'field' =>   
    array (  
      'onChange' => 'check_is_duplicate(this);',  
    ), 
  ),
),

JavaScript 関数を作成するcheck_is_duplicate

function check_is_duplicate(obj) {
  // Call a script via Ajax. Pass values for id and id_number with the request.
  if (o.responseText > 0) {
    alert('duplicate');
    document.getElementById('SAVE').disabled = true;
  } else {
    document.getElementById('SAVE').disabled = false;
  }
}

ajax リクエスト経由で呼び出されるスクリプトを作成する必要があります。
そのスクリプトでは、次のようなクエリを実行する必要があります-

SELECT COUNT(*) AS count FROM accounts 
WHERE deleted = 0 AND id != {$record} AND id_number = {$id_number}

クエリを実行し、カウントを返します。

beforeSaveその後、ロジックフックを使用してサーバー側から重複チェックを保存します。

于 2012-10-23T04:55:10.753 に答える
2

次のコードで、カスタムの重複チェックを作成できます。

$dictionary['Account']['duplicate_check']['FilterDuplicateCheck']['filter_template'] = array(
    array(
        '$and' => array(
            array('identification_number' => array('$equals' => '$identification_number')),

        ),
    ),
);

次のコードをファイルに追加します: /custom/Extension/modules/Accounts/Ext/Vardefs/duplicate_check.php。次に、クイック修復/再構築を実行します。

仕組み: 識別番号を入力して保存を押すと、SugarCRM が重複チェックを実行します。重複が見つかった場合、SugarCRM は重複を一覧表示し、重複を使用するか無視するかを選択できます。

于 2014-10-21T08:00:54.423 に答える