Ejemplo n.º 1
0
 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);
 }