/** * Updates a particular model. * If update is successful, the browser will be redirected to the 'view' page. * @param integer $id the ID of the model to be updated */ public function actionUpdate($id) { $model = $this->loadModel($id); $model->fecha = Tools::backFecha($model->fecha); $deptos = new Departamento('search'); $deptos->unsetAttributes(); if (isset($_GET['Departamento'])) { $deptos->attributes = $_GET['Departamento']; } // Uncomment the following line if AJAX validation is needed // $this->performAjaxValidation($model); if (isset($_POST['Prestacion'])) { $model->attributes = $_POST['Prestacion']; $model->fecha = Tools::fixFecha($model->fecha); if ($model->save()) { $movimientosPrestacion = PrestacionGeneraMovimiento::model()->findAllByAttributes(array('prestacion_id' => $model->id)); foreach ($movimientosPrestacion as $mov) { $movimiento = $mov->movimiento; if ($movimiento->tipo == Tools::MOVIMIENTO_TIPO_CARGO) { $movimiento->actualizaSaldosPosteriores($movimiento->monto); } $mov->delete(); $movimiento->delete(); } PrestacionADepartamento::model()->deleteAllByAttributes(array('prestacion_id' => $model->id)); if (isset($_POST['chbDepartamentoId']) && !$model->general_prop) { $cant_deptos = count($_POST['chbDepartamentoId']); if ($cant_deptos != 0) { $monto = (int) $model->monto / $cant_deptos; } foreach ($_POST['chbDepartamentoId'] as $i => $departamento) { $prest_depto = new PrestacionADepartamento(); $prest_depto->departamento_id = $departamento; $prest_depto->prestacion_id = $model->id; if ($prest_depto->validate()) { $prest_depto->save(); } if ($model->genera_cargos == "1") { $cargo = new Movimiento(); $contrato = Contrato::model()->findByAttributes(array('departamento_id' => $departamento, 'vigente' => 1)); if ($contrato != null) { if ($contrato->vigente) { $cargo->cuenta_corriente_id = $contrato->cuentaCorriente->id; } else { continue; } } else { continue; } $cargo->fecha = $model->fecha; $cargo->tipo = Tools::MOVIMIENTO_TIPO_CARGO; $cargo->monto = $monto; $cargo->detalle = "PRESTACIÓN REALIZADA: " . $model->descripcion; $cargo->validado = 1; $cargo->saldo_cuenta = $cargo->ultimoSaldo(); $cargo->save(); $cargo->actualizaSaldosPosteriores(-$monto); $prestacionMovimiento = new PrestacionGeneraMovimiento(); $prestacionMovimiento->prestacion_id = $model->id; $prestacionMovimiento->movimiento_id = $cargo->id; $prestacionMovimiento->save(); } } } if ($model->general_prop) { if ($model->genera_cargos == "1") { //se crean los cargos para los deptos $departamentos = Departamento::model()->getVigentesDePropiedad($model->propiedad_id); $cant_deptos = count($departamentos); if ($cant_deptos != 0) { $monto = (int) $model->monto / $cant_deptos; foreach ($departamentos as $depto) { $cargo = new Movimiento(); if ($depto->contrato != null) { if ($depto->contrato->vigente) { $cargo->cuenta_corriente_id = $depto->contrato->cuentaCorriente->id; } else { continue; } } else { continue; } $cargo->fecha = $model->fecha; $cargo->tipo = Tools::MOVIMIENTO_TIPO_CARGO; $cargo->monto = $monto; $cargo->detalle = "PRESTACIÓN REALIZADA: " . $model->descripcion; $cargo->validado = 1; $cargo->saldo_cuenta = $cargo->ultimoSaldo(); $cargo->save(); $cargo->actualizaSaldosPosteriores(-$monto); $prestacionMovimiento = new PrestacionGeneraMovimiento(); $prestacionMovimiento->prestacion_id = $model->id; $prestacionMovimiento->movimiento_id = $cargo->id; $prestacionMovimiento->save(); } } } } $this->redirect(array('view', 'id' => $model->id)); } } $this->render('update', array('model' => $model, 'departamentos' => $deptos)); }