public function actionAnulasalidareserva() { $movimiento = '20'; $signo = -1; ///el signo es opuesto al signo de la anulacion $model = new Almacendocs(); $model->valorespordefecto(); $model->codmovimiento = $movimiento; $model->setscenario("anulacargainicial"); $this->performAjaxValidation($model); if (isset($_POST['Almacendocs'])) { $modeloaanular = Almacendocs::model()->find("numvale=:nimi", array("nimi" => trim($_POST['Almacendocs']['numdocref']))); $model->attributes = $_POST['Almacendocs']; $model->codmovimiento = $movimiento; $model->codcentro = $modeloaanular->codcentro; if ($model->save()) { $matrizkardex = Alkardex::model()->findall("hidvale=:xid and codestado <> '98'", array("xid" => $modeloaanular->id)); for ($i = 0; $i < count($matrizkardex); $i++) { //creando un clon de lo que s equiere anular $modelok = new Alkardex(); $modelok->hidvale = $model->id; $modelok->codocuref = '350'; //Detalle solped $modelok->numdocref = $model->numvale; $modelok->setscenario('anulacargainicial'); ///El escenario es el mismo de la carga inicial $modelok->codart = trim($matrizkardex[$i]['codart']); $modelok->cant = $signo * $matrizkardex[$i]['cant']; $modelok->um = $matrizkardex[$i]['um']; $modelok->preciounit = $matrizkardex[$i]['preciounit']; $modelok->codcentro = $matrizkardex[$i]['codcentro']; $modelok->alemi = $matrizkardex[$i]['alemi']; $modelok->fechadoc = $model->fechavale; $modelok->fecha = $model->fechacont; $modelok->idref = $matrizkardex[$i]['idref']; $modelok->codmov = $movimiento; $modelok->save(); //$modeloaanular->cestadovale='30'; //ANULAR // $modeloaanular->save(); } $movimiento = 'Confirmaanulacionsalidareserva'; $this->redirect(array('confirmaanulacionsalidareserva', 'id' => $model->id, 'movimiento' => $movimiento)); } } $this->render('anulasalidareserva', array('model' => $model)); }