Пример #1
0
 public function getOrCreateBankAccount(&$coda_tx)
 {
     $refs = array();
     if (isset($coda_tx->iban) && !empty($coda_tx->iban)) {
         $refs['iban'] = $coda_tx->iban;
     }
     if (isset($coda_tx->bban) && !empty($coda_tx->bban)) {
         $refs['bban'] = $coda_tx->bban;
     }
     if (!array_key_exists('iban', $refs) || !array_key_exists('bban', $refs)) {
         //todo take the main ba
     }
     foreach ($refs as $type => $ref) {
         $bank_account_refs = array();
         $breftypeid = $this->_ba_ref_types[$type]['value'];
         $options = array('reference_type_id' => $breftypeid, 'reference' => $ref, 'version' => 3);
         $result = civicrm_api('banking_account_reference', 'get', $options);
         if ($result['count'] != 0) {
             $bank_account_refs[$type] = $result['values'][$result['id']];
         }
     }
     /*
         if(isset($coda_tx->bic) && !empty($coda_tx->bic)){
        $refs['bic'] = $coda_tx->bic;
         }   
     */
     if (empty($bank_account_refs)) {
         $bank_account = new CRM_Banking_BAO_BankAccount();
         $bank_account->description = $coda_tx->name;
         $data_raw = array('name' => $coda_tx->name, 'info_msg' => $coda_tx->info_message);
         $data_parsed = array('name' => $coda_tx->name, 'street_address' => trim($coda_tx->streetname . ' ' . $coda_tx->streetnumber), 'postal_code' => $coda_tx->postal_code, 'city' => $coda_tx->city, 'country_code' => $coda_tx->country_code, 'bic' => $coda_tx->bic);
         $bank_account->created_date = date('YmdHis');
         $bank_account->modified_date = date('YmdHis');
         $bank_account->data_raw = json_encode($data_raw);
         $bank_account->data_parsed = json_encode($data_parsed);
         $bank_account->save();
         $ma = new CRM_Banking_Helpers_MatchAddress($bank_account);
         if ($ma->findAddress()) {
             $ma->updateDataParsed();
         }
     } else {
         $ba_ref = each($bank_account_refs);
         $result = civicrm_api('banking_account', 'get', array('id' => $ba_ref['id'], 'version' => 3));
         $bank_account = (object) $result['values'][$result['id']];
     }
     foreach ($refs as $type => $ref) {
         if (!array_key_exists($type, $bank_account_refs)) {
             $bank_account_ref = new CRM_Banking_BAO_BankAccountReference();
             $bank_account_ref->reference = $coda_tx->{$type};
             $bank_account_ref->reference_type_id = $this->_ba_ref_types[$type]['value'];
             $bank_account_ref->ba_id = $bank_account->id;
             $bank_account_ref->save();
         }
     }
     return $bank_account->id;
 }