コード例 #1
0
 /**
  * Индексная страница
  *
  * @param $args array mixed
  * @return void
  */
 function index($args = array())
 {
     $this->tpl->assign('category', get_tree_select());
     /** @deprecated */
     $this->tpl->assign('accounts', $this->user->getUserAccounts());
     /** @deprecated */
     $this->tpl->assign('dateFrom', date('d.m.Y', time() - 60 * 60 * 24 * 7));
     // За неделю от сегодня
     $this->tpl->assign('dateTo', date('d.m.Y'));
     // До сегодня
     $this->tpl->assign('name_page', 'operations/operation');
 }
コード例 #2
0
 /**
  * Конвертирует сумму операции
  *
  * @param   int   $fromAccount
  * @param   int   $toAccount
  * @param   float $amount
  * @param   float $convert
  * @return  float
  */
 function _convertAmount($fromAccount, $toAccount, $amount, $convert)
 {
     $accounts = $this->_user->getUserAccounts();
     // Если не указана сконвертированная сумма (в ПДА такое может быть)
     if ($convert) {
         return abs($convert);
     }
     if (!isset($accounts[$fromAccount]) || !isset($accounts[$toAccount])) {
         return false;
     }
     $curFromId = $accounts[$fromAccount]['account_currency_id'];
     $curTargetId = $accounts[$toAccount]['account_currency_id'];
     // Если перевод мультивалютный
     if ($curFromId != $curTargetId) {
         if ($convert == 0) {
             $currensys = $this->_user->getUserCurrency();
             // приводим сумму к пром. валюте
             $convert = $amount / $currensys[$curTargetId]['value'];
             // .. и к валюте целевого счёта
             $convert = $convert * $currensys[$curFromId]['value'];
         }
     }
     $convert = $convert ? $convert : $amount;
     return abs($convert);
 }
コード例 #3
0
 public function tryRedirectToStartPage($forceRedirect)
 {
     //проверим, что еще не перекидывали,
     //чтобы дать залогиненному возможность заходить, например, на главную
     //с которой тоже идет редирект
     $redirectToStartFlagName = "REDIRECTED_TO_START_PAGE_ALREADY";
     if (!isset($_COOKIE[$redirectToStartFlagName]) || $forceRedirect) {
         setcookie($redirectToStartFlagName, 1, 0, COOKIE_PATH, COOKIE_DOMEN, COOKIE_HTTPS);
         header("Location: " . $this->user->getStartUri());
         exit;
     }
 }
コード例 #4
0
 /**
  * Сравнение расходов за периоды, Сравнение доходов за периоды
  *
  * @param int               $type           Тип операции. 0 - Расход, 1 - Доход
  * @param string mysqldate  $date1          Дата начала первого периода в формате "YYYY-MM-DD"
  * @param string mysql date $date2          Дата окончания первого периода в формате "YYYY-MM-DD"
  * @param string mysql date $date3          Дата начала второго периода в формате "YYYY-MM-DD"
  * @param string mysql date $date4          Дата окончания второго периода в формате "YYYY-MM-DD"
  * @param int | string      $accounts       Счёт в виде числа, или несколько чисел разделённых запятой
  * @param int               $currencyId     Ид валюты в которой выводить результат
  * @return array
  */
 function CompareForPeriods($type, $date1 = '', $date2 = '', $date3 = '', $date4 = '', $accounts = '', $currencyId = 0)
 {
     $queryString = "SELECT\n                    c.cat_name,\n                    c.cat_id,\n                    a.account_currency_id as cur_id,\n                    sum(abs(op.money)) as su,\n                    p.per\n                FROM operation op\n                INNER JOIN accounts a\n                    ON a.account_id=op.account_id\n                INNER JOIN category c\n                    ON c.cat_id=op.cat_id\n                INNER JOIN (\n                        SELECT ? AS begin_date, ? AS end_date, 1 AS per\n                        UNION ALL\n                        SELECT ? AS begin_date, ? AS end_date, 2 AS per\n                    ) p\n                    ON op.date between p.begin_date AND p.end_date\n                WHERE\n                    op.`type`= ?\n                    AND op.user_id= ? AND op.accepted=1\n                    AND op.deleted_at IS NULL\n                    AND a.deleted_at IS NULL\n                    AND c.deleted_at IS NULL\n                    AND a.account_id IN({$accounts})\n                GROUP BY c.cat_id, a.account_currency_id, p.per";
     $rows = $this->_db->query($queryString, $date1, $date2, $date3, $date4, $type, $this->_user->getId());
     $result = array();
     foreach ($rows as $value) {
         $money = new myMoney(abs($value['su']), $value['cur_id']);
         $tempId = $value['per'] . $value['cat_id'];
         $result[$tempId] = $value;
         unset($result[$tempId]['cur_id']);
         unset($result[$tempId]['su']);
         if (isset($result[$tempId]['su'])) {
             $result[$tempId]['su'] += $this->ex->convert($money, $currencyId)->getAmount();
         } else {
             $result[$tempId]['su'] = $this->ex->convert($money, $currencyId)->getAmount();
         }
     }
     return array($result);
 }
コード例 #5
0
 /**
  * Тест перевода на долговой счёт
  */
 public function testDebtTransfer()
 {
     $this->_prepareOperation();
     // Долговой счёт
     $options = array('user_id' => $this->userId, 'account_name' => 'Debt account', 'account_currency_id' => myMoney::RUR, 'account_type_id' => Account_Collection::ACCOUNT_TYPE_CREDIT);
     $account = CreateObjectHelper::makeAccount($options);
     $toAccountId = $account['account_id'];
     $options = array('user_id' => $this->userId, 'system_category_id' => Category_Model::DEBT_SYSTEM_CATEGORY_ID);
     $debtCategoryId = CreateObjectHelper::createCategory($options);
     $this->user->init();
     $this->user->save();
     $operation = new Operation_Model($this->user);
     // Перевели 100 рублей с рублёвого на долларовый
     $opId = $operation->addTransfer(100, 0, 0, '2010-01-01', $this->accountId, $toAccountId, 'Комментарий', array('тег 1'));
     $dateFrom = '2009-12-29';
     $dateTo = '2010-01-02';
     $list = $operation->getOperationList($dateFrom, $dateTo);
     $this->assertEquals($debtCategoryId, $list[0]['cat_id'], 'Expected only 1 transfer operation');
 }
コード例 #6
0
ファイル: Logs.php プロジェクト: ru-easyfinance/EasyFinance
 /**
  * Записывает в базу
  *
  * @param oldUser $user
  * @param string $type 'amt' или 'book'
  * @param string $info Расширенная информация
  * @return bool
  */
 public static function write(oldUser $user, $type, $info = '')
 {
     $sql = "INSERT INTO logs(`user_id`, `type`, `dt`, `info`) VALUES(?, ?, NOW(), ?)";
     return (bool) Core::getInstance()->db->query($sql, $user->getId(), $type, $info);
 }
コード例 #7
0
 /**
  * Удаляем служебную почту по просьбе пользователя
  * @param oldUser $user
  * @return bool
  */
 public function deleteServiceMail(oldUser $user)
 {
     $sql = "UPDATE users u SET user_service_mail = '' WHERE id = ?";
     // @TODO Дёргать АПИ у аутсорсеров для физического удаления ящика
     return (bool) $this->db->query($sql, $user->getId());
 }
コード例 #8
0
 /**
  * Удалить счёт
  *
  * @param oldUser $user
  * @param array   $param
  */
 public function delete(oldUser $user, $param)
 {
     $fin = new Targets_Model();
     $noFinTarget = $fin->countTargetsOnAccount($param['id']);
     // если ноль значит удаляем
     if ($noFinTarget > 0) {
         return 'cel';
     }
     return Account_Model::delete($user->getId(), $param['id']);
 }
コード例 #9
0
 /**
  * Возвращает количество операций по ID категории
  *
  * @param oldUser $user Ссылка на объект пользователя
  * @param int $categoryId Ид категории которую нужно удалить
  * @return int Количество операций по категории пользователя
  */
 function getCountOperationByCategory(oldUser $user, $categoryId = 0)
 {
     $sql = "SELECT COUNT(id) FROM operation WHERE cat_id IN (\n            SELECT cat_id FROM category WHERE user_id=? AND (cat_id=? OR cat_parent=?))";
     return (int) $this->db->selectCell($sql, $user->getId(), $categoryId, $categoryId);
 }
コード例 #10
0
ファイル: Model.php プロジェクト: ru-easyfinance/EasyFinance
 /**
  * Редактирует дату операции
  * @param oldUser $user
  * @param int $id
  * @param mysql date $date
  * @return bool
  */
 public static function editDate(oldUser $user, $id, $date)
 {
     $sql = "UPDATE operation SET `date`= ? WHERE id =? AND user_id=?;";
     return Core::getInstance()->db->query($sql, $date, $id, $user->getId());
 }