/**
  * takes an associative array and creates a financial transaction object
  *
  * @param array  $params (reference ) an assoc array of name/value pairs
  *
  * @return object CRM_Core_BAO_FinancialTrxn object
  * @access public
  * @static
  */
 static function create(&$params)
 {
     $trxn = new CRM_Core_DAO_FinancialTrxn();
     $trxn->copyValues($params);
     if (!CRM_Utils_Rule::currencyCode($trxn->currency)) {
         $config = CRM_Core_Config::singleton();
         $trxn->currency = $config->defaultCurrency;
     }
     // if a transaction already exists for a contribution id, lets get the finTrxnId and entityFinTrxId
     $fids = self::getFinancialTrxnIds($params['contribution_id'], 'civicrm_contribution');
     if ($fids['financialTrxnId']) {
         $trxn->id = $fids['financialTrxnId'];
     }
     $trxn->save();
     $contributionAmount = CRM_Utils_Array::value('net_amount', $params);
     if (!$contributionAmount && isset($params['total_amount'])) {
         $contributionAmount = $params['total_amount'];
     }
     // save to entity_financial_trxn table
     $entity_financial_trxn_params = array('entity_table' => "civicrm_contribution", 'entity_id' => $params['contribution_id'], 'financial_trxn_id' => $trxn->id, 'amount' => $contributionAmount, 'currency' => $trxn->currency);
     $entity_trxn = new CRM_Core_DAO_EntityFinancialTrxn();
     $entity_trxn->copyValues($entity_financial_trxn_params);
     if ($fids['entityFinancialTrxnId']) {
         $entity_trxn->id = $fids['entityFinancialTrxnId'];
     }
     $entity_trxn->save();
     return $trxn;
 }
 /**
  * returns the list of fields that can be exported
  *
  * @access public
  * return array
  * @static
  */
 static function &export($prefix = false)
 {
     if (!self::$_export) {
         self::$_export = array();
         $fields = self::fields();
         foreach ($fields as $name => $field) {
             if (CRM_Utils_Array::value('export', $field)) {
                 if ($prefix) {
                     self::$_export['entity_financial_trxn'] =& $fields[$name];
                 } else {
                     self::$_export[$name] =& $fields[$name];
                 }
             }
         }
     }
     return self::$_export;
 }