public function actionUpdateSalidaReserva($id)
 {
     $codigomovimiento = '10';
     $model = $this->loadModel($id);
     $model->setscenario("salidareserva");
     if (isset($_POST['Almacendocs'])) {
         $model->attributes = $_POST['Almacendocs'];
         //iniciamos la transaccion
         $model->cestadovale = '20';
         $transaccion = $model->dbConnection->beginTransaction();
         if ($model->save()) {
             $mensa = "";
             $registroshijos = $this->devuelvehijos($model->id);
             foreach ($registroshijos as $row) {
                 $registrosolpe = Desolpe::model()->findByPk($row->idref);
                 $modeloinventario = $this->actualizainventario($row);
                 $mensa .= GETTYPE($modeloinventario) == 'object' ? "" : $modeloinventario;
                 $mensa .= $this->actualizacostos($modeloinventario, $row, $registrosolpe, $registrosolpe->tipimputacion, $registrosolpe->tipsolpe);
                 //iNVENTARIO, KARDEX, DETALLESOLPE, TIPO DE COLECTOR Y SI S MATERIAL O SERVICIO
                 $mensa .= $this->Actualizaatenciones($registrosolpe, $row);
                 $row->setScenario('cambioestado');
                 $row->valido = '1';
                 $row->codestado = '10';
                 if (!$row->save()) {
                     $mensa .= "Error al momento de cambiar el estado del Kardex del material " . $row->codart;
                 }
             }
             //fon del for
             if (strlen($mensa) == 0) {
                 //Si s epudo actualziar
                 $transaccion->commit();
                 Yii::app()->user->setFlash('success', "Se genero  el documento!" . $mensa);
                 $this->render('update', array('model' => $model, 'movimiento' => $movimiento));
                 yii::app()->end();
             } else {
                 $transaccion->rollback();
                 Yii::app()->user->setFlash('error', "No se pudo grabar el documento, hay  errores  :" . $mensa);
                 $model->refresh();
                 $this->render('update', array('model' => $model, 'movimiento' => $movimiento));
                 //$model->refresh();
             }
         } else {
             //7En caso de que no se haya grabado el domcumento cabecera
             $transaccion->rollback();
             Yii::app()->user->setFlash('error', "No se pudo grabar el documento, hay  errores  en la cebecera :" . $mensa);
             $model->refresh();
             $this->render('update', array('model' => $model, 'movimiento' => $movimiento));
         }
     } else {
         $movimiento = $model->codmovimiento;
         //rellenamos los registros hijos del kardex
         $registro = Solpe::model()->findAll("numero=:nimi", array("nimi" => trim($model->numdocref)));
         if (!(count($registro) > 0)) {
             throw new CHttpException(500, 'No se pudo encontrar la Solpe indicada');
         } else {
             $itemsreservados = MiFactoria::DevuelveSolpespendientes($registro->id);
             if (count($itemsreservados) == 0) {
                 throw new CHttpException(500, 'Esta solpe no tiene items reservados');
             } else {
                 //
                 foreach ($itemsreservados as $row) {
                     MiFactoria::CreaTempKardex($model->id, $model->codmovimiento, $row);
                 }
             }
         }
         ////////////////////
         $this->render('update', array('model' => $model, 'movimiento' => $movimiento));
     }
 }