我正在研究vTiger 6.5,我正在尝试找到一种方法来查看我的自定义模块中是否存在记录。我想在保存之前检查"保单编号"是否是新的,这是我到目前为止的代码。出于某种原因,它似乎根据我选择的模块编号随机行动。
class isaHandler extends VTEventHandler {
function handleEvent($eventName, $entityData) {
global $adb;
$moduleName = $entityData->getModuleName();
if($moduleName=='isa'){
if($eventName == 'vtiger.entity.beforesave.modifiable') {
$isNew = $entityData->isNew('policynumber');
if ($isNew == false) {
echo "Duplicate policy number";
exit;
}
}
if($eventName == 'vtiger.entity.beforesave') {}}
if($eventName == 'vtiger.entity.beforesave.final') {
$price = $entityData->get('currentamount');
if($price > 20000){
echo "Please go back and enter less than 20000";
exit;
}
if($eventName == 'vtiger.entity.aftersave') {}
}
}
目前,我目前正在使用回声来查看结果。但稍后我会表演更多。
isNew()
如果正在创建新记录,则返回 true,否则返回 false。更多信息在这里
您应该编写一个自定义查询来检查函数中是否存在策略编号:
if($eventName == 'vtiger.entity.beforesave.modifiable') {
global $adb;
$result = $adb->pquery("SELECT your-field-name FROM table_name WHERE policynumber=?", array($policynumbervalue));
if($result && $adb->num_rows($result)) {
echo "This policy number exist";
die();
}else{
// write your overwrite code
}
} //end if($eventName == 'vtiger.entity.beforesave.modifiable')
更新:
我假设您的表格中有字段,即保单编号,您在此字段中输入一些值并提交表格。 因此,您将从中输入保单编号值:
$policynumbervalue = $entityData->get('policynumber'); //this is vtiger standard way
如果这不起作用,您可以简单地使用 PHP 全局变量$_REQUEST['policynumber']
但我不是一个好的做法。希望这会有所帮助。
这是我答案的更新,我只是对显示的行数做了一个 if 语句。
if($eventName == 'vtiger.entity.beforesave.modifiable') {
$policynumbervalue = $entityData->get('policynumber');
$sql = $adb->pquery("SELECT policynumber FROM vtiger_isa WHERE policynumber=?",array($policynumbervalue));
$nrows = $adb->num_rows($sql);
if($nrows > 0){
echo "<script type="text/javascript">window.alert('ISA policy number already exists, you will be redirected to the updata module.');
window.location.href = '/vtigercrm/index.php?module=isa&view=List';</script>";
exit;
}