コード例 #1
0
 public function actionConfirmaringreso($id)
 {
     $model = MiFactoria::CargaModelo($this->modelopadre, $id);
     $this->performAjaxValidation($model);
     if ($this->itsFirsTime($id)) {
         if ($this->getUsersWorkingNow($id)) {
             //si esta ocupado
             $this->redirect(array('view', 'id' => $model->id));
         } else {
             // Si no lo esta renderizar sin mas
             $this->setBloqueo($id);
             ///bloquea
             $this->ClearBuffer($id);
             //Limpia temporal antes de levantar
             /*echo "si vino";
             		yii::app()->end();*/
             if ($model->codestado == ESTADO_PREVIO) {
                 MiFactoria::insertadetallesrecepfactura($model);
             } else {
                 $this->IniciaBuffer($id);
                 //Levanta temporales
             }
             $this->render('_form', array('model' => $model));
             yii::app()->end();
         }
     } else {
         if ($this->isRefreshCGridView($id)) {
             //si esta refresh de grilla
             $this->render('_form', array('model' => $model));
             yii::app()->end();
         } else {
             // Si no lo es  tenemos que analizar los dos casos que quedan
             if ($this->IsRefreshUrlWithoutSubmit($id)) {
                 ///Solo refreso la pagina
                 Yii::app()->user->setFlash('notice', "No has confirmado los datos, solo haz refrescaod la pagina ");
                 $this->render('_form', array('model' => $model));
                 yii::app()->end();
             } else {
                 ///Ahora si recein se animo a hacer $_POST	, y confirmar los datos
                 if (isset($_POST[$this->modelopadre])) {
                     $model->attributes = $_POST[$this->modelopadre];
                     //$model->cestadovale='20';
                     if ($model->save()) {
                         $this->ConfirmaBuffer($id);
                         //Levanta temporales
                         $transacc = $model->dbConnection->beginTransaction();
                         $this->efectuamovimiento($model);
                         //oJO SOLO DESPUES DE COFIRMAR BUFFER
                         if (!$this->detectaerrores()) {
                             $transacc->commit();
                             Yii::app()->user->setFlash('success', "Se grabo el documento  " . $this->SQL);
                             $this->ClearBuffer($id);
                             $this->terminabloqueo($id);
                             $this->redirect(array('update', 'id' => $model->id));
                         } else {
                             //print_r(yii::app()->user->getFlashes());
                             Yii::app()->user->setFlash('error', "Se ha presentado algunos inconvenientes " . $this->displaymensajes('error'));
                             $transacc->rollback();
                             //$this->borrakardexhijos($id);
                             //$this->ClearBuffer($id);
                             $this->terminabloqueo($id);
                             $this->render('_form', array('model' => $model));
                             yii::app()->end();
                         }
                     } else {
                         Yii::app()->user->setFlash('error', " No se pudo grabar el documento  ");
                         //$transacc->rollback();
                         $this->render('_form', array('model' => $model));
                         yii::app()->end();
                         /*Yii::app()->end();
                           throw new CHttpException(500,'Hubo un error al momento de grabar la cabecera');*/
                     }
                 } else {
                     //En este caso quiere decir que la sesion/bloqueo anterior no se ha cerrado correactmente
                     // Y es posble que haya entrado despues de 2 dias, una semana asi
                     $this->terminabloqueo($id);
                     $this->SetBloqueo($id);
                     Yii::app()->user->setFlash('notice', "NO cerraste correctamente, Ya tenías una sesion abierta en este domcuento,");
                     $this->render('_form', array('model' => $model));
                     yii::app()->end();
                 }
             }
         }
     }
 }