/** * Takes an associative array and creates a financial transaction object. * * @param array $params * (reference ) an assoc array of name/value pairs. * * @param string $trxnEntityTable * Entity_table. * * @return CRM_Core_BAO_FinancialTrxn */ public static function create(&$params, $trxnEntityTable = NULL) { $trxn = new CRM_Financial_DAO_FinancialTrxn(); $trxn->copyValues($params); if (!CRM_Utils_Rule::currencyCode($trxn->currency)) { $trxn->currency = CRM_Core_Config::singleton()->defaultCurrency; } $trxn->save(); // save to entity_financial_trxn table $entityFinancialTrxnParams = array('entity_table' => "civicrm_contribution", 'financial_trxn_id' => $trxn->id, 'amount' => $params['total_amount'], 'currency' => $trxn->currency); if (!empty($trxnEntityTable)) { $entityFinancialTrxnParams['entity_table'] = $trxnEntityTable['entity_table']; $entityFinancialTrxnParams['entity_id'] = $trxnEntityTable['entity_id']; } else { $entityFinancialTrxnParams['entity_id'] = $params['contribution_id']; } $entityTrxn = new CRM_Financial_DAO_EntityFinancialTrxn(); $entityTrxn->copyValues($entityFinancialTrxnParams); $entityTrxn->save(); return $trxn; }
/** * check method del() */ function testCreateEntityTrxn() { $fParams = array('name' => 'Donations' . substr(sha1(rand()), 0, 7), 'is_deductible' => 0, 'is_active' => 1); $amount = 200; $ids = array(); $financialAccount = CRM_Financial_BAO_FinancialAccount::add($fParams, $ids); $financialTrxn = new CRM_Financial_DAO_FinancialTrxn(); $financialTrxn->to_financial_account_id = $financialAccount->id; $financialTrxn->total_amount = $amount; $financialTrxn->save(); $params = array('entity_table' => 'civicrm_contribution', 'entity_id' => 1, 'financial_trxn_id' => $financialTrxn->id, 'amount' => $amount); $entityTrxn = CRM_Financial_BAO_FinancialItem::createEntityTrxn($params); $entityResult = $this->assertDBNotNull('CRM_Financial_DAO_EntityFinancialTrxn', $financialTrxn->id, 'amount', 'financial_trxn_id', 'Database check on added entity financial trxn record.'); $this->assertEquals($entityResult, $amount, 'Verify Amount for Financial Item'); return $entityTrxn; }
function make_payment(&$params) { $config = CRM_Core_Config::singleton(); if (isset($params["billing_state_province_id-{$this->_bltID}"]) && $params["billing_state_province_id-{$this->_bltID}"]) { $params["billing_state_province-{$this->_bltID}"] = CRM_Core_PseudoConstant::stateProvinceAbbreviation($params["billing_state_province_id-{$this->_bltID}"]); } if (isset($params["billing_country_id-{$this->_bltID}"]) && $params["billing_country_id-{$this->_bltID}"]) { $params["billing_country-{$this->_bltID}"] = CRM_Core_PseudoConstant::countryIsoCode($params["billing_country_id-{$this->_bltID}"]); } $params['ip_address'] = CRM_Utils_System::ipAddress(); $params['currencyID'] = $config->defaultCurrency; $params['payment_action'] = 'Sale'; $payment =& CRM_Core_Payment::singleton($this->_mode, $this->_paymentProcessor, $this); CRM_Core_Payment_Form::mapParams($this->_bltID, $params, $params, TRUE); $params['month'] = $params['credit_card_exp_date']['M']; $params['year'] = $params['credit_card_exp_date']['Y']; $result =& $payment->doDirectPayment($params); if (is_a($result, 'CRM_Core_Error')) { CRM_Core_Error::displaySessionError($result); CRM_Utils_System::redirect(CRM_Utils_System::url('civicrm/event/cart_checkout', "_qf_Payment_display=1&qfKey={$this->controller->_key}", TRUE, NULL, FALSE)); return; } elseif (!$result['trxn_id']) { CRM_Core_Error::fatal(ts("Financial institution didn't return a transaction id.")); } $trxnParams = array('trxn_date' => $params['now'], 'trxn_type' => 'Debit', 'total_amount' => $params['amount'], 'fee_amount' => CRM_Utils_Array::value('fee_amount', $result), 'net_amount' => CRM_Utils_Array::value('net_amount', $result, $params['amount']), 'currency' => CRM_Utils_Array::value('currencyID', $params), 'payment_processor' => $this->_paymentProcessor['payment_processor_type'], 'trxn_id' => $result['trxn_id']); $trxn = new CRM_Financial_DAO_FinancialTrxn(); $trxn->copyValues($trxnParams); if (!CRM_Utils_Rule::currencyCode($trxn->currency)) { $config = CRM_Core_Config::singleton(); $trxn->currency = $config->defaultCurrency; } $trxn->save(); return $trxn; }