public function search($projectId, $page = 0, $pageSize = 15, $accountId = null, $categoryId = null, $from = null, $to = null) { $conditions = array('FinanceOperation.project_id' => $projectId, 'FinanceOperation.type<>' . self::TYPE_ACCOUNT_CREATE); if (FinanceShare::isPartAccess()) { $itog = array(); foreach (FinanceShare::$get['operations'] as $item) { switch ($item) { case 'income': $itog[] = self::TYPE_INCOME; break; case 'expense': $itog[] = self::TYPE_EXPENSE; break; case 'transfer': $itog[] = self::TYPE_TRANSFER; break; } } $conditions['FinanceOperation.type'] = $itog; $conditions['FinanceOperation.account_id'] = FinanceShare::$get['accounts']; } if ($accountId) { $conditions['FinanceOperation.account_id'] = $accountId; } if ($categoryId) { $conditions[] = "FinanceOperation.id IN (SELECT operation_id FROM finance_operation_has_category WHERE category_id='{$categoryId}')"; } if ($from) { $conditions[] = "FinanceOperation.created >= '{$from}'"; } if ($to) { $conditions[] = "FinanceOperation.created <= DATE_ADD('{$to}', INTERVAL 24 HOUR)"; } $order = 'FinanceOperation.created desc'; // Paging $dates = $this->find('all', array('fields' => array('SUBSTR(created, 1, 10) AS date'), 'conditions' => $conditions, 'order' => $order, 'limit' => $pageSize, 'offset' => $page * $pageSize, 'group' => array('date'))); if (empty($dates)) { return array('aFinanceOperations' => array()); } $max = $dates[0][0]['date']; $min = $dates[count($dates) - 1][0]['date']; if ($min == $max) { $conditions[] = "SUBSTR(FinanceOperation.created, 1, 10) = '{$min}'"; } else { $conditions[] = "SUBSTR(FinanceOperation.created, 1, 10) >='{$min}'"; $conditions[] = "SUBSTR(FinanceOperation.created, 1, 10) <= '{$max}'"; } // /Paging $financeOperations = $this->find('all', array('conditions' => $conditions, 'order' => $order)); return array('aFinanceOperations' => $financeOperations); }
public function search($projectId, $type = null, $q = null) { $this->loadModel('FinanceShare'); $conditions = array('FinanceCategory.project_id' => $projectId); if (FinanceShare::isPartAccess()) { $conditions['FinanceCategory.id'] = FinanceShare::$get['categories']; } if ($q !== null) { $conditions['FinanceCategory.name LIKE ?'] = '%' . $q . '%'; } if ($type !== null) { $conditions['FinanceCategory.type'] = (int) $type; } $financeCategory = $this->find('all', array('conditions' => $conditions)); return array('aFinanceCategory' => $financeCategory); }
public function search($projectId) { $conditions = array('FinanceGoal.project_id' => $projectId); if (FinanceShare::isPartAccess()) { $conditions['FinanceGoal.id'] = FinanceShare::$get['goals']; } $order = array('FinanceGoal.created' => 'DESC'); $this->virtualFields['startBalance'] = "\n\t\tSELECT FinanceOperation.balance_after FROM finance_operation FinanceOperation\n\t\t\tWHERE FinanceOperation.account_id = FinanceGoal.account_id AND created < FinanceGoal.created\n\t\t\tORDER BY FinanceOperation.created DESC LIMIT 1\n\t\t"; $financeGoal = $this->find('all', compact('conditions', 'order')); $financeGoal = Hash::combine($financeGoal, '{n}.FinanceGoal.id', '{n}'); $balances = $this->_monthlyBalance($financeGoal); foreach ($financeGoal as $id => &$item) { $item['Balance'] = $balances[$id]; } return array('aFinanceGoal' => $financeGoal); }
public function search($projectId, $q = null) { $conditions = array('FinanceAccount.project_id' => $projectId); $this->loadModel('FinanceShare'); if (FinanceShare::$isInit && FinanceShare::isPartAccess()) { $conditions['FinanceAccount.id'] = FinanceShare::$get['accounts']; } if ($q) { $conditions['FinanceAccount.name LIKE ?'] = '%' . $q . '%'; } $financeAccount = $this->find('all', array('conditions' => $conditions)); $financeAccount = Hash::combine($financeAccount, '{n}.FinanceAccount.id', '{n}'); $this->loadModel('CrmTask'); $taskAccountIds = $this->CrmTask->find('list', array('conditions' => array('CrmTask.account_id' => array_keys($financeAccount)), 'fields' => array('CrmTask.account_id'))); foreach ($taskAccountIds as $accountId) { unset($financeAccount[$accountId]); } return array('aFinanceAccount' => $financeAccount); }
public function search($projectId, $accountId = null, $q = null, $categoryId = null) { $conditions = array('FinanceBudget.project_id' => $projectId); if (FinanceShare::isPartAccess()) { $conditions['FinanceBudget.id'] = FinanceShare::$get['budgets']; $conditions['FinanceBudget.category_id'] = FinanceShare::$get['categories']; $conditions['FinanceBudget.account_id'] = FinanceShare::$get['accounts']; } if ($accountId) { $conditions['FinanceBudget.account_id'] = $accountId; } if ($categoryId) { $conditions['FinanceBudget.category_id'] = $categoryId; } if ($q) { $conditions['FinanceBudget.name LIKE ?'] = '%' . $q . '%'; } $financeBudget = $this->find('all', array('conditions' => $conditions)); $financeBudget = Hash::combine($financeBudget, '{n}.FinanceBudget.category_id', '{n}'); return array('aFinanceBudget' => $financeBudget); }