diff --git a/data/CRMEntity.php b/data/CRMEntity.php index a842d82e3c42885557e39d322d60959b817e2e4b..b55f9180350c0045eaa1ce65f4d7394ebeadf5d8 100644 --- a/data/CRMEntity.php +++ b/data/CRMEntity.php @@ -2998,9 +2998,10 @@ class CRMEntity { * @param <String> $selectedColumns * @param <Boolean> $ignoreEmpty * @param <Array> $requiredTables + * @param <Array> $columnTypes * @return string */ - function getQueryForDuplicates($module, $tableColumns, $selectedColumns = '', $ignoreEmpty = false,$requiredTables = array()) { + function getQueryForDuplicates($module, $tableColumns, $selectedColumns = '', $ignoreEmpty = false,$requiredTables = array(),$columnTypes = null) { if(is_array($tableColumns)) { $tableColumnsString = implode(',', $tableColumns); } @@ -3030,7 +3031,11 @@ class CRMEntity { if($ignoreEmpty) { foreach($tableColumns as $tableColumn){ - $whereClause .= " AND ($tableColumn IS NOT NULL AND $tableColumn != '') "; + if ($columnTypes && ($columnTypes[$tableColumn] == "date" || $columnTypes[$tableColumn] == "datetime")) { + $whereClause .= " AND ($tableColumn IS NOT NULL) "; + } else { + $whereClause .= " AND ($tableColumn IS NOT NULL AND $tableColumn != '') "; + } } } diff --git a/modules/Leads/Leads.php b/modules/Leads/Leads.php index 0d366b3224572dfbcbeab4aa4725e1d05e3f1603..442145a3f8d5b26d48d945d3b843ab87e021596e 100755 --- a/modules/Leads/Leads.php +++ b/modules/Leads/Leads.php @@ -681,7 +681,7 @@ class Leads extends CRMEntity { } } - function getQueryForDuplicates($module, $tableColumns, $selectedColumns = '', $ignoreEmpty = false, $requiredTables = array()) { + function getQueryForDuplicates($module, $tableColumns, $selectedColumns = '', $ignoreEmpty = false, $requiredTables = array(), $columnTypes = null) { if(is_array($tableColumns)) { $tableColumnsString = implode(',', $tableColumns); } @@ -711,7 +711,11 @@ class Leads extends CRMEntity { if($ignoreEmpty) { foreach($tableColumns as $tableColumn){ - $whereClause .= " AND ($tableColumn IS NOT NULL AND $tableColumn != '') "; + if ($columnTypes && ($columnTypes[$tableColumn] == "date" || $columnTypes[$tableColumn] == "datetime")) { + $whereClause .= " AND ($tableColumn IS NOT NULL) "; + } else { + $whereClause .= " AND ($tableColumn IS NOT NULL AND $tableColumn != '') "; + } } } @@ -759,4 +763,4 @@ class Leads extends CRMEntity { } } -?> \ No newline at end of file +?> diff --git a/modules/SalesOrder/SalesOrder.php b/modules/SalesOrder/SalesOrder.php index c7ca1a6d94c296ae3b9621e05cbfdcfed8a5cdd5..3ad88894f0483866f34a834aaf9857e1e40db586 100644 --- a/modules/SalesOrder/SalesOrder.php +++ b/modules/SalesOrder/SalesOrder.php @@ -540,7 +540,7 @@ class SalesOrder extends CRMEntity { * @return string */ // Note : remove getDuplicatesQuery API once vtiger5 code is removed - function getQueryForDuplicates($module, $tableColumns, $selectedColumns = '', $ignoreEmpty = false,$requiredTables = array()) { + function getQueryForDuplicates($module, $tableColumns, $selectedColumns = '', $ignoreEmpty = false,$requiredTables = array(), $columnTypes = null) { if(is_array($tableColumns)) { $tableColumnsString = implode(',', $tableColumns); } @@ -575,7 +575,11 @@ class SalesOrder extends CRMEntity { if($ignoreEmpty) { foreach($tableColumns as $tableColumn){ - $whereClause .= " AND ($tableColumn IS NOT NULL AND $tableColumn != '') "; + if ($columnTypes && ($columnTypes[$tableColumn] == "date" || $columnTypes[$tableColumn] == "datetime")) { + $whereClause .= " AND ($tableColumn IS NOT NULL) "; + } else { + $whereClause .= " AND ($tableColumn IS NOT NULL AND $tableColumn != '') "; + } } } diff --git a/modules/Vtiger/models/FindDuplicate.php b/modules/Vtiger/models/FindDuplicate.php index 892cb538d6da2c94d9a98662344f2a8ab62de21a..d4889a24322777ce0e55ae66ce4d3c49882cb59b 100644 --- a/modules/Vtiger/models/FindDuplicate.php +++ b/modules/Vtiger/models/FindDuplicate.php @@ -42,11 +42,13 @@ class Vtiger_FindDuplicate_Model extends Vtiger_Base_Model { $fields = $this->get('fields'); $fieldModels = $moduleModel->getFields(); $requiredTables = array(); + $columnTypes = array(); if(is_array($fields)) { foreach($fields as $fieldName) { $fieldModel = $fieldModels[$fieldName]; $requiredTables[] = $fieldModel->get('table'); $tableColumns[] = $fieldModel->get('table').'.'.$fieldModel->get('column'); + $columnTypes[$fieldModel->get('table').'.'.$fieldModel->get('column')] = $fieldModel->getFieldDataType(); } } @@ -55,7 +57,7 @@ class Vtiger_FindDuplicate_Model extends Vtiger_Base_Model { $ignoreEmpty = $this->get('ignoreEmpty'); $focus = CRMEntity::getInstance($module); - $query = $focus->getQueryForDuplicates($module, $tableColumns, '', $ignoreEmpty,$requiredTables); + $query = $focus->getQueryForDuplicates($module, $tableColumns, '', $ignoreEmpty,$requiredTables,$columnTypes); self::$query = $query; $query .= " LIMIT $startIndex, ". ($pageLimit+1); @@ -134,16 +136,18 @@ class Vtiger_FindDuplicate_Model extends Vtiger_Base_Model { $module = $moduleModel->getName(); $fields = $this->get('fields'); $fieldModels = $moduleModel->getFields(); + $columnTypes = array(); if(is_array($fields)) { foreach($fields as $fieldName) { $fieldModel = $fieldModels[$fieldName]; $requiredTables[] = $fieldModel->get('table'); $tableColumns[] = $fieldModel->get('table').'.'.$fieldModel->get('column'); + $columnTypes[$fieldModel->get('table').'.'.$fieldModel->get('column')] = $fieldModel->getFieldDataType(); } } $focus = CRMEntity::getInstance($module); $ignoreEmpty = $this->get('ignoreEmpty'); - self::$query = $focus->getQueryForDuplicates($module, $tableColumns, '', $ignoreEmpty,$requiredTables); + self::$query = $focus->getQueryForDuplicates($module, $tableColumns, '', $ignoreEmpty,$requiredTables,$columnTypes); } $query = self::$query; $position = stripos($query, 'from'); @@ -174,15 +178,19 @@ class Vtiger_FindDuplicate_Model extends Vtiger_Base_Model { $ignoreEmptyValue = true; $fieldModels = $moduleModel->getFields(); + $requiredTables = array(); + $columnTypes = array(); if(is_array($fields)) { foreach($fields as $fieldName) { $fieldModel = $fieldModels[$fieldName]; $tableColumns[] = $fieldModel->get('table').'.'.$fieldModel->get('column'); + $requiredTables[] = $fieldModel->get('table'); + $columnTypes[$fieldModel->get('table').'.'.$fieldModel->get('column')] = $fieldModel->getFieldDataType(); } } $focus = CRMEntity::getInstance($module); - $query = $focus->getQueryForDuplicates($module, $tableColumns, '', $ignoreEmpty); + $query = $focus->getQueryForDuplicates($module, $tableColumns, '', $ignoreEmpty, $requiredTables, $columnTypes); $result = $db->pquery($query, array()); $recordIds = array();