public static function roi_with_timeline($isin, $username, $month_from, $month_to) { $conn = Db::get_connection(); $stock = new Stock(); if (!$stock->find_by_id($isin)) { return; } $portfolio_stock_factory = new PortfolioStock(); $portfolio_stocks = $portfolio_stock_factory->find_all(array('where_clause' => "`isin` = '{$conn->escape($isin)}' " . "AND `utente` = '{$conn->escape($username)}'")); if (count($portfolio_stocks) == 0) { return; } $portfolio_stock = $portfolio_stocks[0]; $quantita = self::quantita_history($isin, $username, $month_from); switch ($stock->tipo) { case 'obbligazione': $investito = $portfolio_stock->prezzo * $portfolio_stock->quantita / 100; break; default: $investito = $portfolio_stock->prezzo * $portfolio_stock->quantita; } $investito = Change::convert($investito, $stock->divisa); $roi = PianificatoreHelper::roi_with_timeline($isin, $quantita, $month_from, $month_to, $investito); foreach ($roi->payments as $payment) { $payment->portfolio_stock = $portfolio_stock; } // print_r($roi); return $roi; }
private function get_roi() { if (!isset($_REQUEST['base'])) { $_REQUEST['base'] = 1000; } if (!isset($_REQUEST['month-to'])) { $_REQUEST['month-to'] = date('Y-m-d', mktime(0, 0, 0, date('m') + self::DEFAULT_ROI_HORIZON_MONTHS, 0, date('Y'))); } $this->roi = array(); // $this->stocks = array(); // This to ensure we get latest quote from today $today = date('Y-m-d', mktime(0, 0, 0, date('m'), date('d') + 1, date('Y'))); $last_month = date('Y-m-d', mktime(0, 0, 0, date('m') - 1, date('d'), date('Y'))); // print_r($_REQUEST['isin']); foreach ($this->isins as $isin) { $quote = QuoteHelper::latest_for_range($isin, $last_month, $today); // print_r($quote); $stock = new Stock(); if (!$stock->find_by_id($isin)) { continue; } // $this->stocks[$isin] = $stock; $investito = Change::convert($quote->quotazione * $_REQUEST['base'] / 100, $stock->divisa); $this->roi[$isin] = PianificatoreHelper::roi_with_timeline($isin, $_REQUEST['base'], $today, $_REQUEST['month-to'], $investito); unset($this->roi[$isin]->payments); $this->roi[$isin]->stock = $stock; } // print_r($this->roi); uasort($this->roi, $this->get_sorter()); }