public function getTransactionSummary($data) { /** * @var Currency $currencyService */ $transactionDao = new ChargeTransaction($this->getServiceLocator()); $currencyService = $this->getServiceLocator()->get('service_currency_currency'); $statement = $this->prepareTransactionStatement($data); $transactions = $transactionDao->getTransactionSummary($statement, (bool) $data['group']); $transactionList = []; $baseCurrency = 'EUR'; if ($transactions) { // Group by addon type foreach ($transactions as $transaction) { if (!isset($transactionList[$transaction['type']])) { $transactionList[$transaction['type']] = ['amount' => 0, 'count' => 0, 'currency' => $baseCurrency, 'type' => Objects::getTransactionTypeById($transaction['type'])]; } if ($transaction['currency'] != $baseCurrency) { if (isset($transactionList[$transaction['type']])) { $convertedAmount = (int) $transaction['amount'] ? $currencyService->convertCurrency($transaction['amount'], $transaction['currency'], $baseCurrency) : 0; $transactionList[$transaction['type']]['amount'] = intval($transactionList[$transaction['type']]['amount'] + $convertedAmount); $transactionList[$transaction['type']]['count'] = $transactionList[$transaction['type']]['count'] + $transaction['count']; } } else { $transactionList[$transaction['type']]['amount'] = intval($transactionList[$transaction['type']]['amount'] + $transaction['amount']); $transactionList[$transaction['type']]['count'] = $transactionList[$transaction['type']]['count'] + $transaction['count']; } } } return $transactionList; }
public function downloadTransactionAction() { /** * @var ChartService $chartService * @var BookingManagement $bookingManagementService */ $request = $this->getRequest(); $chartService = $this->getServiceLocator()->get('service_finance_account_receivable_chart'); $transactions = $chartService->getTransactionDownloadable($request->getQuery()); header('Content-Type: text/csv; charset=utf-8'); header('Content-Disposition: attachment; filename=Transactions.csv'); $output = fopen('php://output', 'w'); fputcsv($output, ['Res. Number', 'Type', 'Acc Amount', 'Acc Currency', 'Transaction Date', 'PSP']); foreach ($transactions as $transaction) { fputcsv($output, [$transaction['res_number'], Objects::getTransactionTypeById($transaction['type']), $transaction['acc_amount'], $transaction['currency'], $transaction['date'], $transaction['psp_name']]); } exit; }