$query->_where[$grouping][] = CRM_Contact_BAO_Query::buildClause("civicrm_contribution.$name", $op, $value, $dataType);
list($op, $value) = CRM_Contact_BAO_Query::buildQillForFieldValue('CRM_Contribute_DAO_Contribution', $name, $value, $op, $pseudoExtraParam);
- $query->_qill[$grouping][] = ts('%1 %2 %3', array(1 => $fields[$qillName]['title'], 2 => $op, 3 => $value));
+ if (!($name == 'id' && $value == 0)) {
+ $query->_qill[$grouping][] = ts('%1 %2 %3', array(1 => $fields[$qillName]['title'], 2 => $op, 3 => $value));
+ }
$query->_tables['civicrm_contribution'] = $query->_whereTables['civicrm_contribution'] = 1;
return;
$this->_action = $action;
$returnProperties = CRM_Contribute_BAO_Query::selectorReturnProperties($this->_queryParams);
$this->_includeSoftCredits = CRM_Contribute_BAO_Query::isSoftCreditOptionEnabled($this->_queryParams);
+ $this->_queryParams[] = ['contribution_id', '!=', 0, 0, 0];
$this->_query = new CRM_Contact_BAO_Query(
$this->_queryParams,
$returnProperties,
}
}
+ /**
+ * Test contact contributions.
+ */
+ public function testContributionSearchWithContactID() {
+ $contactID = $this->individualCreate([], 1);
+ $fv = ['contact_id' => $contactID];
+ $queryParams = CRM_Contact_BAO_Query::convertFormValues($fv);
+ $selector = new CRM_Contribute_Selector_Search($queryParams, CRM_Core_Action::ADD);
+ list($select, $from, $where) = $selector->getQuery()->query();
+
+ // get and assert contribution count
+ $contributions = CRM_Core_DAO::executeQuery("{$select} {$from} {$where}")->fetchAll();
+ $this->assertEquals(count($contributions), 0);
+
+ $this->callAPISuccess('Contribution', 'create', [
+ 'financial_type_id' => "Donation",
+ 'receive_date' => date('Y-m-d'),
+ 'total_amount' => 10,
+ 'contact_id' => $contactID,
+ ]);
+ $selector = new CRM_Contribute_Selector_Search($queryParams, CRM_Core_Action::ADD);
+ list($select, $from, $where) = $selector->getQuery()->query();
+
+ // get and assert contribution count
+ $contributions = CRM_Core_DAO::executeQuery("{$select} {$from} {$where}")->fetchAll();
+ $this->assertEquals(count($contributions), 1);
+ }
+
/**
* Test CRM_Contribute_Form_Search Recurring Contribution Status Id filters
*/