From 05465712e23b7d9b13a18d9b79017fb8e2628668 Mon Sep 17 00:00:00 2001 From: jitendrapurohit Date: Fri, 30 Sep 2016 18:58:04 +0530 Subject: [PATCH] include unit test --- CRM/Contribute/Form/Contribution.php | 11 ++++------ CRM/Contribute/Form/Contribution/Confirm.php | 15 ++++++-------- CRM/Core/DAO/AllCoreTables.data.php | 2 +- CRM/Price/BAO/PriceField.php | 2 +- CRM/Price/BAO/PriceSet.php | 20 +++++++++++++++++++ tests/phpunit/api/v3/ContributionPageTest.php | 6 +++++- 6 files changed, 37 insertions(+), 19 deletions(-) diff --git a/CRM/Contribute/Form/Contribution.php b/CRM/Contribute/Form/Contribution.php index 752f83d787..b6eaac87bf 100644 --- a/CRM/Contribute/Form/Contribution.php +++ b/CRM/Contribute/Form/Contribution.php @@ -1874,15 +1874,12 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP if (!empty($params['non_deductible_amount'])) { return $params['non_deductible_amount']; } - $priceSetId = CRM_Utils_Array::value('price_set_id', $params); + $priceSetId = CRM_Utils_Array::value('price_set_id', $params); // return non-deductible amount if it is set at the price field option level - if (!empty($priceSetId) && $params['line_item'][$priceSetId]) { - $nonDeductibleAmount = 0; - foreach ($params['line_item'][$priceSetId] as $fieldId => $options) { - $nonDeductibleAmount += $options['non_deductible_amount'] * $options['qty']; - } - if ($nonDeductibleAmount) { + if ($priceSetId && !empty($params['line_item'])) { + $nonDeductibleAmount = CRM_Price_BAO_PriceSet::getNonDeductibleAmountFromPriceSet($priceSetId, $params['line_item']); + if (!empty($nonDeductibleAmount)) { return $nonDeductibleAmount; } } diff --git a/CRM/Contribute/Form/Contribution/Confirm.php b/CRM/Contribute/Form/Contribution/Confirm.php index 2990ec6d3b..9a43e70912 100644 --- a/CRM/Contribute/Form/Contribution/Confirm.php +++ b/CRM/Contribute/Form/Contribution/Confirm.php @@ -142,16 +142,13 @@ class CRM_Contribute_Form_Contribution_Confirm extends CRM_Contribute_Form_Contr return $params['non_deductible_amount']; } $priceSetId = CRM_Utils_Array::value('priceSetId', $params); - // return non-deductible amount if it is set at the price field option level - if (!empty($priceSetId) && !empty($form->_lineItem) && !empty($form->_lineItem[$priceSetId])) { - $nonDeductibleAmount = 0; - foreach ($form->_lineItem[$priceSetId] as $fieldId => $options) { - $nonDeductibleAmount += $options['non_deductible_amount'] * $options['qty']; - } - if ($nonDeductibleAmount) { - return $nonDeductibleAmount; - } + if ($priceSetId && !empty($form->_lineItem)) { + $nonDeductibleAmount = CRM_Price_BAO_PriceSet::getNonDeductibleAmountFromPriceSet($priceSetId, $form->_lineItem); + } + + if (!empty($nonDeductibleAmount)) { + return $nonDeductibleAmount; } else { if ($financialType->is_deductible) { diff --git a/CRM/Core/DAO/AllCoreTables.data.php b/CRM/Core/DAO/AllCoreTables.data.php index 9fe75c6bc4..40635d188e 100644 --- a/CRM/Core/DAO/AllCoreTables.data.php +++ b/CRM/Core/DAO/AllCoreTables.data.php @@ -24,7 +24,7 @@ | see the CiviCRM license FAQ at http://civicrm.org/licensing | +--------------------------------------------------------------------+ */ -// (GenCodeChecksum:a21b716e87447ebe26e457f3be1183d8) +// (GenCodeChecksum:4d00f1aa760a34d1c030598b09de79f9) return array( 'CRM_Core_DAO_AddressFormat' => array( 'name' => 'AddressFormat', diff --git a/CRM/Price/BAO/PriceField.php b/CRM/Price/BAO/PriceField.php index d640433b61..f0e76e896c 100644 --- a/CRM/Price/BAO/PriceField.php +++ b/CRM/Price/BAO/PriceField.php @@ -138,7 +138,7 @@ class CRM_Price_BAO_PriceField extends CRM_Price_DAO_PriceField { 'is_active' => 1, 'is_default' => CRM_Utils_Array::value($params['option_weight'][$index], $defaultArray) ? $defaultArray[$params['option_weight'][$index]] : 0, 'membership_num_terms' => NULL, - 'non_deductible_amount' => CRM_Utils_Array::value('non_deductible_amount', $params, 0), + 'non_deductible_amount' => CRM_Utils_Array::value('non_deductible_amount', $params), ); if ($options['membership_type_id']) { diff --git a/CRM/Price/BAO/PriceSet.php b/CRM/Price/BAO/PriceSet.php index 4b2922c51c..daef224406 100644 --- a/CRM/Price/BAO/PriceSet.php +++ b/CRM/Price/BAO/PriceSet.php @@ -1729,4 +1729,24 @@ WHERE ps.id = %1 return $priceSetParams; } + /** + * Get non-deductible amount from price options + * + * @param int $priceSetId + * @param array $lineItem + * + * @return int + * calculated non-deductible amount. + */ + public static function getNonDeductibleAmountFromPriceSet($priceSetId, $lineItem) { + $nonDeductibleAmount = 0; + if (!empty($lineItem[$priceSetId])) { + foreach ($lineItem[$priceSetId] as $fieldId => $options) { + $nonDeductibleAmount += $options['non_deductible_amount'] * $options['qty']; + } + } + + return $nonDeductibleAmount; + } + } diff --git a/tests/phpunit/api/v3/ContributionPageTest.php b/tests/phpunit/api/v3/ContributionPageTest.php index f789eb0b89..442bd348b5 100644 --- a/tests/phpunit/api/v3/ContributionPageTest.php +++ b/tests/phpunit/api/v3/ContributionPageTest.php @@ -147,7 +147,9 @@ class api_v3_ContributionPageTest extends CiviUnitTestCase { ); $this->callAPISuccess('contribution_page', 'submit', $submitParams); - $this->callAPISuccess('contribution', 'getsingle', array('contribution_page_id' => $this->_ids['contribution_page'])); + $contribution = $this->callAPISuccess('contribution', 'getsingle', array('contribution_page_id' => $this->_ids['contribution_page'])); + //assert non-deductible amount + $this->assertEquals(5.00, $contribution['non_deductible_amount']); } /** @@ -891,6 +893,7 @@ class api_v3_ContributionPageTest extends CiviUnitTestCase { 'financial_type_id' => 'Donation', 'amount' => 20, 'financial_type_id' => 'Donation', + 'non_deductible_amount' => 15, ) ); $priceFieldValue = $this->callAPISuccess('price_field_value', 'create', array( @@ -900,6 +903,7 @@ class api_v3_ContributionPageTest extends CiviUnitTestCase { 'financial_type_id' => 'Donation', 'amount' => 10, 'financial_type_id' => 'Donation', + 'non_deductible_amount' => 5, ) ); $this->_ids['price_field_value'] = array($priceFieldValue['id']); -- 2.25.1