Esempio n. 1
0
 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());
 }