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)); } }