private function parseBankAccount($account, $bankAccounts, $expenses, $includeTransactions, $vendorMap) { $obj = new stdClass(); $obj->account_name = ''; // look up bank account name foreach ($bankAccounts as $bankAccount) { if (Hash::check($account->id, $bankAccount->account_number)) { $obj->account_name = $bankAccount->account_name; } } // if we can't find a match skip the account if (count($bankAccounts) && !$obj->account_name) { return false; } $obj->masked_account_number = Utils::maskAccountNumber($account->id); $obj->hashed_account_number = bcrypt($account->id); $obj->type = $account->type; $obj->balance = Utils::formatMoney($account->ledgerBalance, CURRENCY_DOLLAR); if ($includeTransactions) { $ofxParser = new \OfxParser\Parser(); $ofx = $ofxParser->loadFromString($account->response); $obj->start_date = $ofx->BankAccount->Statement->startDate; $obj->end_date = $ofx->BankAccount->Statement->endDate; $obj->transactions = []; foreach ($ofx->BankAccount->Statement->transactions as $transaction) { // ensure transactions aren't imported as expenses twice if (isset($expenses[$transaction->uniqueId])) { continue; } if ($transaction->amount >= 0) { continue; } // if vendor has already been imported use current name $vendorName = trim(substr($transaction->name, 0, 20)); $key = strtolower($vendorName); $vendor = isset($vendorMap[$key]) ? $vendorMap[$key] : null; $transaction->vendor = $vendor ? $vendor->name : $this->prepareValue($vendorName); $transaction->info = $this->prepareValue(substr($transaction->name, 20)); $transaction->memo = $this->prepareValue($transaction->memo); $transaction->date = \Auth::user()->account->formatDate($transaction->date); $transaction->amount *= -1; $obj->transactions[] = $transaction; } } return $obj; }
/** * @param $account * @param $data * @param $expenses * @param $vendorMap * @return mixed */ private function parseTransactions($account, $data, $expenses, $vendorMap) { $ofxParser = new \OfxParser\Parser(); $ofx = $ofxParser->loadFromString($data); $account->start_date = $ofx->BankAccount->Statement->startDate; $account->end_date = $ofx->BankAccount->Statement->endDate; $account->transactions = []; foreach ($ofx->BankAccount->Statement->transactions as $transaction) { // ensure transactions aren't imported as expenses twice if (isset($expenses[$transaction->uniqueId])) { continue; } if ($transaction->amount >= 0) { continue; } // if vendor has already been imported use current name $vendorName = trim(substr($transaction->name, 0, 20)); $key = strtolower($vendorName); $vendor = isset($vendorMap[$key]) ? $vendorMap[$key] : null; $transaction->vendor = $vendor ? $vendor->name : $this->prepareValue($vendorName); $transaction->info = $this->prepareValue(substr($transaction->name, 20)); $transaction->memo = $this->prepareValue($transaction->memo); $transaction->date = \Auth::user()->account->formatDate($transaction->date); $transaction->amount *= -1; $account->transactions[] = $transaction; } return $account; }