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; }
public function by_day() { $conn = $this->get_connection(); $cedola_factory = new Cedola(); $month_start = date('Y-m-d', mktime(0, 0, 0, $_REQUEST['id'], 1, date('Y'))); $next_month = date('Y-m-d', mktime(0, 0, 0, $_REQUEST['id'] + 1, 1, date('Y'))); $cedole = $cedola_factory->find_all(array('where_clause' => "`stacco` >= '{$month_start}' AND `stacco` < '{$next_month}'", 'order_by' => '`tasso` DESC, `stacco` ASC')); $portfolio_stock_factory = new PortfolioStock(); $portfolio_stocks = $portfolio_stock_factory->find_all(array(`where_clause` => "`utente` = '{$conn->escape($_COOKIE['username'])}'")); $in_portfolio = []; foreach ($portfolio_stocks as $portfolio_stock) { $in_portfolio[] = $portfolio_stock->isin; } // print_r($cedole); $this->cedole = []; foreach ($cedole as $cedola) { $cedola->stock = new Stock(); $cedola->stock->find_by_id($cedola->isin); $cedola->in_portfolio = in_array($cedola->isin, $in_portfolio); $this->cedole[] = $cedola; } // print_r($this->cedole); $this->cedole_by_day = array(); foreach ($this->cedole as $cedola) { $s = strtotime($cedola->stacco); $d = date('d', $s); if (!isset($this->cedole_by_month[$d])) { $this->cedole_by_month[$d] = array(); } $this->cedole_by_day[$d][] = $cedola; } ksort($this->cedole_by_day); // print_r($this->cedole_by_day); }
function check_in_portfolio() { $isin = isset($_REQUEST['isin']) ? $_REQUEST['isin'] : $_REQUEST['id']; if ($isin) { $conn = $this->get_connection(); $portfolio_stock = new PortfolioStock(); $this->is_in_portfolio = count($portfolio_stock->find_all(array('where_clause' => "`utente` = '{$conn->escape($_COOKIE['username'])}' " . "AND `isin` = '{$conn->escape($isin)}'"))) > 0; } }
<th>Evento</th> <th>Data</th> <th>Importo lordo</th> <th>Importo unitario</th> </tr> <tr class="row0"> <td class="cell10"><div class="vstrut17"></div></td> <td class="cell10">Dividendo</td> <td class="cell10"><b><?php print $dividend->pretty_date(); ?> </b></td> <td class="cell10"><?php $portfolio = new PortfolioStock(); $ports = $portfolio->find_all(array('where_clause' => "`isin` = '{$this->stock->isin}'")); if (count($ports) > 0) { $port = $ports[0]; $revenue = $port->quantita * $dividend->importo; printf('%.2f %s', $revenue, $this->stock->divisa); if ($this->stock->divisa != 'EUR') { $revenue /= $this->stock->divisa == 'USD' ? Change::usd2eur() : 1; printf(' (%.2f EUR)', $revenue); } } ?> <?php printf('(%.2f%%)', $dividend->importo / $this->stock->last->quotazione * 100); ?> </td>
function roi() { $conn = $this->get_connection(); $stock_factory = new PortfolioStock(); $portfolio_stocks = $stock_factory->find_all(array('where_clause' => "`utente` = '{$conn->escape($_COOKIE['username'])}' AND `isin` = '{$conn->escape($_GET['id'])}'")); $this->stock = $portfolio_stocks[0]; $this->stock->stock = new Stock(); $this->stock->stock->find_by_id($this->stock->isin); $quote = new Quote(); $quotes = $quote->find_all(array('where_clause' => "`isin` = '{$conn->escape($this->stock->isin)}' ", 'order_by' => '`data` DESC, `ora` DESC', 'limit' => 1)); $this->stock->quote = $quotes[0]; $this->render(array('layout' => 'portfolio_roi')); }