/** * Flush statics relating to financial type. */ protected function flushFinancialTypeStatics() { if (isset(\Civi::$statics['CRM_Financial_BAO_FinancialType'])) { unset(\Civi::$statics['CRM_Financial_BAO_FinancialType']); } if (isset(\Civi::$statics['CRM_Contribute_PseudoConstant'])) { unset(\Civi::$statics['CRM_Contribute_PseudoConstant']); } CRM_Contribute_PseudoConstant::flush('financialType'); CRM_Contribute_PseudoConstant::flush('membershipType'); // Pseudoconstants may be saved to the cache table. CRM_Core_DAO::executeQuery("TRUNCATE civicrm_cache"); CRM_Financial_BAO_FinancialType::$_statusACLFt = array(); CRM_Financial_BAO_FinancialType::$_availableFinancialTypes = NULL; }
/** * Test checks that passing in line items suppresses the create mechanism. */ public function testCreateACLContributionChainedLineItems() { $this->setACL(); $params = array('contact_id' => $this->_individualId, 'receive_date' => '20120511', 'total_amount' => 100.0, 'financial_type_id' => $this->_financialTypeId, 'payment_instrument_id' => 1, 'non_deductible_amount' => 10.0, 'fee_amount' => 50.0, 'net_amount' => 90.0, 'source' => 'SSF', 'contribution_status_id' => 1, 'check_permissions' => TRUE, 'api.line_item.create' => array(array('price_field_id' => 1, 'qty' => 2, 'line_total' => '20', 'unit_price' => '10', 'financial_type_id' => 1), array('price_field_id' => 1, 'qty' => 1, 'line_total' => '80', 'unit_price' => '80', 'financial_type_id' => 2))); $description = "Create Contribution with Nested Line Items."; $subfile = "CreateWithNestedLineItems"; $config =& CRM_Core_Config::singleton(); $config->userPermissionClass->permissions = array('access CiviCRM', 'access CiviContribute', 'edit contributions', 'delete in CiviContribute', 'add contributions of type Donation', 'delete contributions of type Donation'); $contribution = $this->callAPIFailure('contribution', 'create', $params, 'Error in call to LineItem_create : You do not have permission to create this line item'); // Check that the entire contribution has rolled back. $contribution = $this->callAPISuccess('contribution', 'get', array()); $this->assertEquals(0, $contribution['count']); CRM_Financial_BAO_FinancialType::$_availableFinancialTypes = NULL; $config =& CRM_Core_Config::singleton(); $config->userPermissionClass->permissions = array_merge($config->userPermissionClass->permissions, array('add contributions of type Member Dues', 'view contributions of type Donation', 'view contributions of type Member Dues', 'delete contributions of type Member Dues')); $contribution = $this->callAPIAndDocument('contribution', 'create', $params, __FUNCTION__, __FILE__, $description, $subfile); $lineItemParams = array('contribution_id' => $contribution['id'], 'entity_table' => 'civicrm_contribution'); $lineItems = $this->callAPISuccess('LineItem', 'get', $lineItemParams); $this->assertEquals(3, $lineItems['count']); $this->assertEquals(100.0, $lineItems['values'][3]['line_total']); $this->assertEquals(20, $lineItems['values'][4]['line_total']); $this->assertEquals(80, $lineItems['values'][5]['line_total']); $this->assertEquals(1, $lineItems['values'][3]['financial_type_id']); $this->assertEquals(1, $lineItems['values'][4]['financial_type_id']); $this->assertEquals(2, $lineItems['values'][5]['financial_type_id']); $this->callAPISuccess('Contribution', 'Delete', array('id' => $contribution['id'])); }
/** * Check method testisACLFinancialTypeStatus() */ public function testbuildPermissionedClause() { $this->setACL(); $config =& CRM_Core_Config::singleton(); $config->userPermissionClass->permissions = array('view contributions of type Donation', 'view contributions of type Member Dues'); CRM_Financial_BAO_FinancialType::buildPermissionedClause($whereClause, 'contribution'); $this->assertEquals($whereClause, ' civicrm_contribution.financial_type_id IN (1,2)'); $config->userPermissionClass->permissions[] = 'view contributions of type Event Fee'; $whereClause = NULL; CRM_Financial_BAO_FinancialType::$_availableFinancialTypes = array(); CRM_Financial_BAO_FinancialType::buildPermissionedClause($whereClause, 'contribution'); $this->assertEquals($whereClause, ' civicrm_contribution.financial_type_id IN (1,4,2)'); }