return $flag;
}
- /**
- * Calculate financial item amount when contribution is updated.
- *
- * @param array $params
- * contribution params
- * @param array $amountParams
- *
- * @param string $context
- *
- * @return float
- */
- public static function calculateFinancialItemAmount($params, $amountParams, $context) {
- if (!empty($params['is_quick_config'])) {
- $amount = $amountParams['item_amount'];
- if (!$amount) {
- $amount = $params['total_amount'];
- if ($context === NULL) {
- $amount -= CRM_Utils_Array::value('tax_amount', $params, 0);
- }
- }
- }
- else {
- $amount = $amountParams['line_total'];
- if ($context == 'changedAmount') {
- $amount -= $amountParams['previous_line_total'];
- }
- $amount *= $amountParams['diff'];
- }
- return $amount;
- }
-
/**
* Retrieve Sales Tax Financial Accounts.
*
$this->assertFalse($allowUpdate);
}
- /**
- * Test calculateFinancialItemAmount().
- */
- public function testcalculateFinancialItemAmount() {
- $testParams = [
- [
- 'params' => [],
- 'amountParams' => [
- 'line_total' => 100,
- 'previous_line_total' => 300,
- 'diff' => 1,
- ],
- 'context' => 'changedAmount',
- 'expectedItemAmount' => -200,
- ],
- [
- 'params' => [],
- 'amountParams' => [
- 'line_total' => 100,
- 'previous_line_total' => 100,
- 'diff' => -1,
- ],
- // Most contexts are ignored. Removing refs to change payment instrument so placeholder.
- 'context' => 'not null',
- 'expectedItemAmount' => -100,
- ],
- [
- 'params' => [
- 'is_quick_config' => TRUE,
- 'total_amount' => 110,
- 'tax_amount' => 10,
- ],
- 'amountParams' => [
- 'item_amount' => 100,
- ],
- 'context' => 'changedAmount',
- 'expectedItemAmount' => 100,
- ],
- [
- 'params' => [
- 'is_quick_config' => TRUE,
- 'total_amount' => 110,
- 'tax_amount' => 10,
- ],
- 'amountParams' => [
- 'item_amount' => NULL,
- ],
- 'context' => 'changedAmount',
- 'expectedItemAmount' => 110,
- ],
- [
- 'params' => [
- 'is_quick_config' => TRUE,
- 'total_amount' => 110,
- 'tax_amount' => 10,
- ],
- 'amountParams' => [
- 'item_amount' => NULL,
- ],
- 'context' => NULL,
- 'expectedItemAmount' => 100,
- ],
- ];
- foreach ($testParams as $params) {
- $itemAmount = CRM_Contribute_BAO_Contribution::calculateFinancialItemAmount($params['params'], $params['amountParams'], $params['context']);
- $this->assertEquals($itemAmount, $params['expectedItemAmount'], 'Invalid Financial Item amount.');
- }
- }
-
/**
* Test recording of amount with comma separator.
*