Пример #1
0
 /**
  * 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));
 }
Пример #2
0
         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;
Пример #3
0
 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";
     }
 }
Пример #4
0
 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();
 }