/** * Creates a new model. * If creation is successful, the browser will be redirected to the 'view' page. */ public function actionCreate() { $model = new Returns(); // Uncomment the following line if AJAX validation is needed // $this->performAjaxValidation($model); if (isset($_POST['Returns'])) { $model->attributes = $_POST['Returns']; if ($model->save()) { $this->redirect(array('view', 'id' => $model->id)); } } $this->render('create', array('model' => $model)); }
if ($div > 0) { $rawData[$i]['return'] = $rawData[$i]['nominal'] * $rawData[$i]['price'] / $div; } else { $rawData[$i]['return'] = 1; } // $porfolio_amount[$i] = $porfolio_amount[$i] + $rawData[$i]['nominal'] * $rawData[$i]['price']; // $amount_traded[$i] = $amount_traded[$i] + $rawData[$i]['pnl']; } //checking if the return for current instrument is not exist and inserting the calculated return.// $existing_return = Returns::model()->findByAttributes(['instrument_id' => $instrument_id, 'trade_date' => $rawData[$i]['trade_date']]); if (count($existing_return) == 0) { $return = new Returns(); $return->instrument_id = $instrument_id; $return->trade_date = $rawData[$i]['trade_date']; $return->return = $rawData[$i]['return']; $return->save(); } else { $existing_return->return = $rawData[$i]['return']; $existing_return->save(); } $i++; } //////////////////Portfolio calculation//////////////////// /* if($i == 0){ $rawData[$i]['portfolio'] = 1; }else{ //$dev1 = $amount_nominal[$i-1] * $rawData[$i-1][$column] + $amount_traded[$i]; $dev1 = $porfolio_amount[$i-1] + $amount_traded[$i]; if($dev1 >0){ $rawData[$i]['portfolio'] = ($porfolio_amount[$i])/$dev1;
public function actionRecalculateReturns11() { ini_set('max_execution_time', 50000); $user = Users::model()->findByPk(Yii::app()->user->id); $client_id = $user->client_id; $table_name = "client_" . $client_id . "_inst_returns"; $portfolio_id = 0; $inst_sql = "select * from ledger l\n inner join instruments i on l.instrument_id = i.id\n where l.is_current = 1 and i.is_current = 1 and l.trade_status_id = 2 and i.price_uploaded = 1 and l.client_id = {$client_id} order by trade_date asc"; $trades = Yii::app()->db->createCommand($inst_sql)->queryAll(true); if (count($trades) > 0) { foreach ($trades as $trade) { $portfolio_id = $trade['portfolio_id']; $instrument_id = $trade['instrument_id']; $prices_sql = "select distinct p.trade_date, p.price,\n (select sum(if(trade_date<=p.trade_date, nominal, 0)) from ledger where instrument_id = p.instrument_id and is_current = 1 and trade_status_id = 2 and client_id = {$client_id}) nominal,\n (select sum(if(trade_date=p.trade_date, nominal*price, 0)) from ledger where instrument_id = p.instrument_id and is_current = 1 and ledger.trade_status_id = 2 and client_id = {$client_id}) pnl\n from prices p\n where p.is_current = 1 and p.instrument_id = {$instrument_id} \n order by p.trade_date asc"; //and p.trade_date >='$dt' $prices = Yii::app()->db->createCommand($prices_sql)->queryAll(true); if (count($prices) > 0) { $i = 0; foreach ($prices as $price) { $rawData[$i]['id'] = $i; $rawData[$i]['trade_date'] = $price['trade_date']; $rawData[$i]['price'] = $price['price']; $rawData[$i]['nominal'] = $price['nominal']; $rawData[$i]['pnl'] = $price['pnl']; $rawData[$i]['return'] = 1; //$rawData[$i]['chart'] = 1; if ($i > 0 && $rawData[0]['price'] !== 0) { // $rawData[$i]['chart'] = $rawData[$i]['price']/$rawData[0]['price']; $div = $rawData[$i - 1]['nominal'] * $rawData[$i - 1]['price'] + $rawData[$i]['pnl']; if ($div > 0) { $rawData[$i]['return'] = $rawData[$i]['nominal'] * $rawData[$i]['price'] / $div; } else { $rawData[$i]['return'] = 1; } } //checking if the return for current instrument is not exist and inserting the calculated return.// $existing_return = Returns::model()->findByAttributes(['instrument_id' => $instrument_id, 'trade_date' => $rawData[$i]['trade_date']]); if (count($existing_return) == 0) { $return = new Returns(); $return->instrument_id = $instrument_id; $return->trade_date = $rawData[$i]['trade_date']; $return->return = $rawData[$i]['return']; $return->save(); } else { $existing_return->return = $rawData[$i]['return']; $existing_return->save(); } $i++; } } PortfolioReturns::model()->PortfolioReturnsUpdate($portfolio_id); } } $client = Clients::model()->findByPk($client_id); $client->last_recalculation = new CDbExpression('NOW()'); $client->save(); Yii::app()->user->setFlash('success', "Returns Recalculated!"); foreach (Yii::app()->user->getFlashes() as $key => $message) { echo '<div class="alert alert-' . $key . '">' . $message . "</div>\n"; } }
public function returnAdditionalItem() { $additional = new Returns(); $additional->menu_id = Input::get('item_id_get'); $additional->reservation_id = Input::get('reservation_id'); $additional->quantity = Input::get('quantity'); $additional->save(); $reservation = Item::find(Input::get('item_id_get')); $reservation->total_quantity = $reservation->total_quantity + Input::get('quantity'); $reservation->save(); return Redirect::back(); }