Exemple #1
0
 /**
  * @param array $params
  * @param bool $silent
  * @param int $count
  *
  * @return string
  * @throws \Exception
  */
 public function getTransactions($params, $silent = false, &$count = 0)
 {
     /**
      *  @var CurrencyVault $currencyVaultService
      */
     $currencyVaultService = $this->getServiceLocator()->get('service_currency_currency_vault');
     $expenseTransactionDao = new ExpenseTransactions($this->getServiceLocator(), '\\ArrayObject');
     $viewRender = $this->getServiceLocator()->get('ViewRenderer');
     $where = $this->constructWhereForTransactionSearch($params);
     $itemIdList = [];
     $result = ['items' => '', 'itemCount' => 0, 'itemBalance' => 0, 'transactions' => '', 'transactionCount' => 0, 'transactionBalance' => 0];
     $transactions = iterator_to_array($expenseTransactionDao->getTransactions($where));
     if (count($transactions)) {
         foreach ($transactions as $transaction) {
             if ($transaction['status'] != Expense::STATUS_VOID) {
                 if (!$silent) {
                     $result['transactionCount']++;
                 }
                 $transaction['expense_transactions_count_with_same_money_transaction_id'] = $expenseTransactionDao->getCountOfExpenseTransactionWithSameMoneyTransactionId($transaction['money_transaction_id']);
                 if ($transaction['po_currency_id'] != $transaction['transaction_currency_id']) {
                     $amount = $currencyVaultService->convertCurrency($transaction['amount'], (int) $transaction['transaction_currency_id'], (int) $transaction['po_currency_id'], $transaction['creation_date']);
                 } else {
                     $amount = $transaction['amount'];
                 }
                 $result['transactionBalance'] += $amount;
             }
         }
     }
     $count = $result['transactionCount'];
     if (!$silent) {
         if (count($transactions)) {
             foreach ($transactions as &$transaction) {
                 $transaction['expense_transactions_count_with_same_money_transaction_id'] = $expenseTransactionDao->getCountOfExpenseTransactionWithSameMoneyTransactionId($transaction['money_transaction_id']);
                 if (!empty($transaction['items'])) {
                     foreach (explode(',', $transaction['items']) as $item) {
                         array_push($itemIdList, $item);
                     }
                 }
             }
         }
         $itemIdList = array_unique($itemIdList);
         $result['itemCount'] = count($itemIdList);
         if (count($itemIdList)) {
             $items = $this->getItems(['itemIdList' => $itemIdList], true);
             $result['items'] = $items['items'];
             $result['itemBalance'] = $items['itemBalance'];
         }
     }
     $view = (new ViewModel(['transactions' => $transactions]))->setTemplate('finance/partial/transaction');
     $result['transactions'] .= $viewRender->render($view);
     $result['transactionBalance'] = number_format($result['transactionBalance'], 2, '.', ',');
     return $result;
 }