protected $_priceSetParams = [];
protected $_paymentProcessorType;
protected $payParams = [];
- protected $paymentProceParams = [];
protected $settingValue = [];
protected $setInvoiceSettings;
protected $_individualId;
protected $halfFinancialAccId;
protected $halfFinancialTypeId;
+ protected $isValidateFinancialsOnPostAssert = FALSE;
+
+ /**
+ * @throws \CRM_Core_Exception
+ * @throws \CiviCRM_API3_Exception
+ */
public function setUp(): void {
parent::setUp();
$this->_individualId = $this->individualCreate();
$this->ids['PaymentProcessor'] = $this->paymentProcessorCreate();
$this->params = [
- 'title' => 'Test Contribution Page' . substr(sha1(rand()), 0, 7),
+ 'title' => 'Test Contribution Page',
'financial_type_id' => 1,
'payment_processor' => $this->ids['PaymentProcessor'],
'currency' => 'NZD',
];
$this->_priceSetParams = [
- 'name' => 'tax_contribution' . substr(sha1(rand()), 0, 7),
- 'title' => 'contribution tax' . substr(sha1(rand()), 0, 7),
+ 'name' => 'tax_contribution',
+ 'title' => 'contribution tax',
'is_active' => 1,
'help_pre' => 'Where does your goat sleep',
'help_post' => 'thank you for your time',
];
// Financial Account with 20% tax rate
$financialAccountSetparams = [
- #[domain_id] =>
- 'name' => 'vat full taxrate account' . substr(sha1(rand()), 0, 7),
+ 'name' => 'vat full tax rate account',
'contact_id' => $this->_orgId,
'financial_account_type_id' => 2,
'is_tax' => 1,
// Financial type having 'Sales Tax Account is' with liability financial account
$this->financialTypeID = $this->callAPISuccess('FinancialType', 'create', [
- 'name' => 'grassvariety1' . substr(sha1(rand()), 0, 7),
+ 'name' => 'grass_variety_1',
'is_reserved' => 0,
'is_active' => 1,
])['id'];
CRM_Financial_BAO_FinancialTypeAccount::add($financialRelationParams);
// Financial type with 5% tax rate
- $financialAccHalftax = [
- 'name' => 'vat half taxrate account' . substr(sha1(rand()), 0, 7),
+ $financialAccountHalfTax = [
+ 'name' => 'vat half tax_rate account',
'contact_id' => $this->_orgId,
'financial_account_type_id' => 2,
'is_tax' => 1,
'is_active' => 1,
'is_default' => 0,
];
- $halfFinancialAccount = CRM_Financial_BAO_FinancialAccount::add($financialAccHalftax);
+ $halfFinancialAccount = CRM_Financial_BAO_FinancialAccount::add($financialAccountHalfTax);
$this->halfFinancialAccId = $halfFinancialAccount->id;
- $halfFinancialtypeHalftax = [
- 'name' => 'grassvariety2' . substr(sha1(rand()), 0, 7),
+ $halfFinancialTypeHalfTax = [
+ 'name' => 'grass_variety_2',
'is_reserved' => 0,
'is_active' => 1,
];
- $halfFinancialType = CRM_Financial_BAO_FinancialType::add($halfFinancialtypeHalftax);
+ $halfFinancialType = CRM_Financial_BAO_FinancialType::add($halfFinancialTypeHalfTax);
$this->halfFinancialTypeId = $halfFinancialType->id;
$financialRelationHalftax = [
'entity_table' => 'civicrm_financial_type',
/**
* Cleanup after function.
+ *
+ * @throws \CRM_Core_Exception
+ * @throws \CiviCRM_API3_Exception
*/
public function tearDown(): void {
$this->quickCleanUpFinancialEntities();
/**
* @throws \CRM_Core_Exception
*/
- public function setUpContributionPage() {
+ public function setUpContributionPage(): void {
$contributionPageResult = $this->callAPISuccess($this->_entity, 'create', $this->params);
- if (empty($this->_ids['price_set'])) {
+ if (empty($this->ids['price_set'])) {
$priceSet = $this->callAPISuccess('price_set', 'create', $this->_priceSetParams);
- $this->_ids['price_set'][] = $priceSet['id'];
+ $this->ids['price_set'][] = $priceSet['id'];
}
- $priceSetID = $this->_price = reset($this->_ids['price_set']);
+ $priceSetID = $this->_price = reset($this->ids['price_set']);
CRM_Price_BAO_PriceSet::addTo('civicrm_contribution_page', $contributionPageResult['id'], $priceSetID);
- if (empty($this->_ids['price_field'])) {
+ if (empty($this->ids['price_field'])) {
$priceField = $this->callAPISuccess('price_field', 'create', [
'price_set_id' => $priceSetID,
'label' => 'Goat Breed',
'html_type' => 'Radio',
]);
- $this->_ids['price_field'] = [$priceField['id']];
- }
- if (empty($this->_ids['price_field_value'])) {
- $this->callAPISuccess('price_field_value', 'create', [
- 'price_set_id' => $priceSetID,
- 'price_field_id' => $priceField['id'],
- 'label' => 'Long Haired Goat',
- 'amount' => 100,
- 'financial_type_id' => $this->financialTypeID,
- ]);
- $priceFieldValue = $this->callAPISuccess('price_field_value', 'create', [
- 'price_set_id' => $priceSetID,
- 'price_field_id' => $priceField['id'],
- 'label' => 'Shoe-eating Goat',
- 'amount' => 300,
- 'financial_type_id' => $this->halfFinancialTypeId,
- ]);
- $this->_ids['price_field_value'] = [$priceFieldValue['id']];
+ $this->ids['price_field'] = [$priceField['id']];
+ if (empty($this->ids['price_field_value'])) {
+ $this->callAPISuccess('price_field_value', 'create', [
+ 'price_set_id' => $priceSetID,
+ 'price_field_id' => $priceField['id'],
+ 'label' => 'Long Haired Goat',
+ 'amount' => 100,
+ 'financial_type_id' => $this->financialTypeID,
+ ]);
+ $priceFieldValue = $this->callAPISuccess('price_field_value', 'create', [
+ 'price_set_id' => $priceSetID,
+ 'price_field_id' => $priceField['id'],
+ 'label' => 'Shoe-eating Goat',
+ 'amount' => 300,
+ 'financial_type_id' => $this->halfFinancialTypeId,
+ ]);
+ $this->ids['price_field_value'] = [$priceFieldValue['id']];
+ }
}
- $this->_ids['contribution_page'] = $contributionPageResult['id'];
+ $this->ids['contribution_page'] = $contributionPageResult['id'];
}
/**
- * Online and offline contrbution from above created contribution page.
+ * Online and offline contribution from above created contribution page.
*
* @param string $thousandSeparator
* punctuation used to refer to thousands.
*
* @throws \CRM_Core_Exception
*/
- public function testCreateContributionOnline($thousandSeparator) {
+ public function testCreateContributionOnline(string $thousandSeparator): void {
$this->setCurrencySeparators($thousandSeparator);
$this->setUpContributionPage();
$params = [
'receive_date' => '20120511',
'total_amount' => $this->formatMoneyInput(100.00),
'financial_type_id' => $this->financialTypeID,
- 'contribution_page_id' => $this->_ids['contribution_page'],
+ 'contribution_page_id' => $this->ids['contribution_page'],
'payment_processor' => $this->ids['PaymentProcessor'],
'trxn_id' => 12345,
'invoice_id' => 67890,
'source' => 'SSF',
'contribution_status_id' => 1,
+ 'sequential' => 1,
];
- $contribution = $this->callAPISuccess('contribution', 'create', $params);
- $this->_ids['contributionId'] = $contribution['id'];
- $this->assertEquals($contribution['values'][$contribution['id']]['contact_id'], $this->_individualId);
- $this->assertEquals($contribution['values'][$contribution['id']]['total_amount'], 120.00);
- $this->assertEquals($contribution['values'][$contribution['id']]['financial_type_id'], $this->financialTypeID);
- $this->assertEquals($contribution['values'][$contribution['id']]['trxn_id'], 12345);
- $this->assertEquals($contribution['values'][$contribution['id']]['invoice_id'], 67890);
- $this->assertEquals($contribution['values'][$contribution['id']]['source'], 'SSF');
- $this->assertEquals($contribution['values'][$contribution['id']]['tax_amount'], 20);
- $this->assertEquals($contribution['values'][$contribution['id']]['contribution_status_id'], 1);
+ $contribution = $this->callAPISuccess('Contribution', 'create', $params)['values'][0];
+ $this->assertEquals($this->_individualId, $contribution['contact_id']);
+ $this->assertEquals(120.00, $contribution['total_amount']);
+ $this->assertEquals($this->financialTypeID, $contribution['financial_type_id']);
+ $this->assertEquals(12345, $contribution['trxn_id']);
+ $this->assertEquals(67890, $contribution['invoice_id']);
+ $this->assertEquals('SSF', $contribution['source']);
+ $this->assertEquals(20, $contribution['tax_amount']);
+ $this->assertEquals(1, $contribution['contribution_status_id']);
$this->_checkFinancialRecords($contribution, 'online');
}
*
* @throws \CRM_Core_Exception
*/
- public function testCreateContributionChainedLineItems($thousandSeparator) {
+ public function testCreateContributionChainedLineItems(string $thousandSeparator): void {
$this->setCurrencySeparators($thousandSeparator);
$this->setUpContributionPage();
$params = [
'skipLineItem' => 1,
'api.line_item.create' => [
[
- 'price_field_id' => $this->_ids['price_field'],
+ 'price_field_id' => $this->ids['price_field'],
'qty' => 1,
'line_total' => '100',
'unit_price' => '100',
'financial_type_id' => $this->financialTypeID,
],
[
- 'price_field_id' => $this->_ids['price_field'],
+ 'price_field_id' => $this->ids['price_field'],
'qty' => 1,
'line_total' => '300',
'unit_price' => '300',
$this->assertEquals(2, $lineItems['count']);
}
- public function testCreateContributionPayLaterOnline() {
+ /**
+ * @throws \CRM_Core_Exception
+ */
+ public function testCreateContributionPayLaterOnline(): void {
$this->setUpContributionPage();
$params = [
'contact_id' => $this->_individualId,
'receive_date' => '20120511',
'total_amount' => 100.00,
'financial_type_id' => $this->financialTypeID,
- 'contribution_page_id' => $this->_ids['contribution_page'],
+ 'contribution_page_id' => $this->ids['contribution_page'],
'trxn_id' => 12345,
'is_pay_later' => 1,
'invoice_id' => 67890,
'source' => 'SSF',
'contribution_status_id' => 2,
+ 'sequential' => 1,
];
- $contribution = $this->callAPISuccess('Contribution', 'create', $params);
- $contribution = $contribution['values'][$contribution['id']];
+ $contribution = $this->callAPISuccess('Contribution', 'create', $params)['values'][0];
$this->assertEquals($contribution['contact_id'], $this->_individualId);
- $this->assertEquals($contribution['total_amount'], 120.00);
- $this->assertEquals($contribution['financial_type_id'], $this->financialTypeID);
- $this->assertEquals($contribution['trxn_id'], 12345);
- $this->assertEquals($contribution['invoice_id'], 67890);
- $this->assertEquals($contribution['source'], 'SSF');
- $this->assertEquals($contribution['tax_amount'], 20);
- $this->assertEquals($contribution['contribution_status_id'], 2);
+ $this->assertEquals(120.00, $contribution['total_amount']);
+ $this->assertEquals($this->financialTypeID, $contribution['financial_type_id']);
+ $this->assertEquals(12345, $contribution['trxn_id']);
+ $this->assertEquals(67890, $contribution['invoice_id']);
+ $this->assertEquals('SSF', $contribution['source']);
+ $this->assertEquals(20, $contribution['tax_amount']);
+ $this->assertEquals(2, $contribution['contribution_status_id']);
$this->_checkFinancialRecords($contribution, 'payLater');
}
*
* @throws \CRM_Core_Exception
*/
- public function testCreateContributionPendingOnline($thousandSeparator) {
+ public function testCreateContributionPendingOnline(string $thousandSeparator): void {
$this->setCurrencySeparators($thousandSeparator);
$this->setUpContributionPage();
$params = [
'receive_date' => '20120511',
'total_amount' => $this->formatMoneyInput(100.00),
'financial_type_id' => $this->financialTypeID,
- 'contribution_page_id' => $this->_ids['contribution_page'],
+ 'contribution_page_id' => $this->ids['contribution_page'],
'trxn_id' => 12345,
'invoice_id' => 67890,
'source' => 'SSF',
'contribution_status_id' => 2,
+ 'sequential' => 1,
];
- $contribution = $this->callAPISuccess('contribution', 'create', $params, __FUNCTION__, __FILE__);
- $this->assertEquals($contribution['values'][$contribution['id']]['contact_id'], $this->_individualId);
- $this->assertEquals($contribution['values'][$contribution['id']]['total_amount'], 120.00);
- $this->assertEquals($contribution['values'][$contribution['id']]['financial_type_id'], $this->financialTypeID);
- $this->assertEquals($contribution['values'][$contribution['id']]['trxn_id'], 12345);
- $this->assertEquals($contribution['values'][$contribution['id']]['invoice_id'], 67890);
- $this->assertEquals($contribution['values'][$contribution['id']]['source'], 'SSF');
- $this->assertEquals($contribution['values'][$contribution['id']]['tax_amount'], 20);
- $this->assertEquals($contribution['values'][$contribution['id']]['contribution_status_id'], 2);
+ $contribution = $this->callAPISuccess('Contribution', 'create', $params)['values'][0];
+ $this->assertEquals($this->_individualId, $contribution['contact_id']);
+ $this->assertEquals(120.00, $contribution['total_amount']);
+ $this->assertEquals($this->financialTypeID, $contribution['financial_type_id']);
+ $this->assertEquals(12345, $contribution['trxn_id']);
+ $this->assertEquals(67890, $contribution['invoice_id']);
+ $this->assertEquals('SSF', $contribution['source']);
+ $this->assertEquals(20, $contribution['tax_amount']);
+ $this->assertEquals(2, $contribution['contribution_status_id']);
$this->_checkFinancialRecords($contribution, 'pending');
$this->setCurrencySeparators($thousandSeparator);
}
/**
* Update a contribution.
*
- * Function tests that line items, financial records are updated when contribution amount is changed
+ * Function tests that line items, financial records are updated when
+ * contribution amount is changed
+ *
+ * @throws \CRM_Core_Exception
*/
- public function testCreateUpdateContributionChangeTotal() {
+ public function testCreateUpdateContributionChangeTotal(): void {
$this->setUpContributionPage();
- $this->contributionParams = [
+ $contributionParams = [
'contact_id' => $this->_individualId,
'receive_date' => '20120511',
'total_amount' => 100.00,
'source' => 'SSF',
'contribution_status_id' => 1,
];
- $contribution = $this->callAPISuccess('contribution', 'create', $this->contributionParams);
+ $contribution = $this->callAPISuccess('contribution', 'create', $contributionParams);
$lineItems = $this->callAPISuccess('line_item', 'getvalue', [
'entity_id' => $contribution['id'],
'entity_table' => 'civicrm_contribution',
]);
$this->assertEquals('300.00', $lineItems);
- $trxnAmount = $this->_getFinancialTrxnAmount($contribution['id']);
- $fitemAmount = $this->_getFinancialItemAmount($contribution['id']);
- $this->assertEquals('300.00', $trxnAmount);
- $this->assertEquals('300.00', $fitemAmount);
+ $this->assertEquals('300.00', $this->_getFinancialTrxnAmount($contribution['id']));
+ $this->assertEquals('300.00', $this->_getFinancialItemAmount($contribution['id']));
}
/**
*
* @return null|string
*/
- public function _getFinancialTrxnAmount($contId) {
+ public function _getFinancialTrxnAmount(int $contId): ?string {
$query = "SELECT
SUM( ft.total_amount ) AS total
FROM civicrm_financial_trxn AS ft
*
* @return null|string
*/
- public function _getFinancialItemAmount($contId) {
+ public function _getFinancialItemAmount(int $contId): ?string {
$lineItem = key(CRM_Price_BAO_LineItem::getLineItems($contId, 'contribution'));
$query = "SELECT
SUM(amount)
FROM civicrm_financial_item
WHERE entity_table = 'civicrm_line_item'
AND entity_id = {$lineItem}";
- $result = CRM_Core_DAO::singleValueQuery($query);
- return $result;
+ return CRM_Core_DAO::singleValueQuery($query);
}
/**
* @param array $params
- * @param $context
+ * @param string $context
*/
- public function _checkFinancialRecords($params, $context) {
+ public function _checkFinancialRecords($params, $context): void {
$entityParams = [
'entity_id' => $params['id'],
'entity_table' => 'civicrm_contribution',
'entity_table' => 'civicrm_financial_item',
];
$entityTrxn = current(CRM_Financial_BAO_FinancialItem::retrieveEntityFinancialTrxn($entityParams));
- $fitemParams = [
- 'id' => $entityTrxn['entity_id'],
- ];
$compareParams = [
'amount' => 100,
'status_id' => 1,
'financial_account_id' => $this->_getFinancialAccountId($this->financialTypeID),
];
}
- $this->assertDBCompareValues('CRM_Financial_DAO_FinancialItem', $fitemParams, $compareParams);
+ $this->assertDBCompareValues('CRM_Financial_DAO_FinancialItem', [
+ 'id' => $entityTrxn['entity_id'],
+ ], $compareParams);
}
/**
* @param int $financialTypeId
+ *
* @return int
*/
- public function _getFinancialAccountId($financialTypeId) {
+ public function _getFinancialAccountId(int $financialTypeId): ?int {
$accountRel = key(CRM_Core_PseudoConstant::accountOptionValues('account_relationship', NULL, " AND v.name LIKE 'Income Account is' "));
$searchParams = [
/**
* Test deleting a contribution.
*
- * (It is unclear why this is in this class - it seems like maybe it doesn't test anything not
- * on the contribution test class & might be copy and paste....).
+ * (It is unclear why this is in this class - it seems like maybe it doesn't
+ * test anything not on the contribution test class & might be copy and
+ * paste....).
+ *
+ * @throws \CRM_Core_Exception
*/
- public function testDeleteContribution() {
+ public function testDeleteContribution(): void {
$contributionID = $this->contributionCreate([
'contact_id' => $this->_individualId,
'trxn_id' => 12389,
'financial_type_id' => $this->financialTypeID,
- 'invoice_id' => 'dfsdf',
+ 'invoice_id' => 'abc',
]);
$this->callAPISuccess('contribution', 'delete', ['id' => $contributionID]);
}