public static function savePayment(&$data, &$errors) { $account = DataObjectFactory::Factory('CBAccount'); if (isset($data['cb_account_id']) && !empty($data['cb_account_id'])) { $account = $account->load($data['cb_account_id']); $data['control_glaccount_id'] = $account->glaccount_id; $data['control_glcentre_id'] = $account->glcentre_id; } else { $errors[] = 'No bank account supplied'; return false; } $glparams = DataObjectFactory::Factory('GLParams'); $base_currency_id = $glparams->base_currency(); // The type of conversion depends on whether the input currency or the account currency equals the base currency // - input currency equals base, then multiple value by rate // - account currency equals base, then divide value by rate // Save the original input values $data['transaction_net_value'] = $data['net_value']; if (empty($data['tax_value'])) { $data['tax_value'] = 0.0; } $data['transaction_tax_value'] = $data['tax_value']; $data['transaction_currency_id'] = $data['currency_id']; if ($account->currency_id != $data['currency_id']) { if ($data['currency_id'] == $base_currency_id) { self::convertValues($data, 'M'); } else { self::convertValues($data, 'D'); } } $data['currency_id'] = $account->currency_id; if ($account->currency_id == $base_currency_id) { $data['rate'] = ''; } if (!empty($data['tax_rate_id']) && empty($data['tax_percentage'])) { $taxrate = DataObjectFactory::Factory('TaxRate'); $taxrate->load($data['tax_rate_id']); if ($taxrate->isLoaded()) { $data['tax_percentage'] = $taxrate->percentage; } } LedgerTransaction::setCurrency($data); return self::saveTransaction($data, $errors); }