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 回答