public function actionAsignarpartidasproyecto() { $model = new Proyectos('creaproyecto'); $usuario = Usuarios::model()->findByPk(Yii::app()->user->getId()); //$model->ente_organo_id = $usuario->ente_organo_id; $criteria = new CDbCriteria(); $criteria->condition = "activo=true"; $fuentes = FuentesFinanciamiento::model()->findAll($criteria); $fuentesSel[] = new FuentePresupuesto(); $partidas_principal = $this->obtenerPartidas("*"); $proyectos = $usuario->enteOrgano->proyectos; if (isset($_POST['Proyectos'])) { $model->attributes = $_POST['Proyectos']; $model->subespecifica = $_POST['Proyectos']['subespecifica']; $model->ente_organo_id = $usuario->ente_organo_id; $model->codigo = $model->nombreid; $fuente_ids = $_POST['f']['fuente_id']; $montos = $_POST['f']['monto']; if (count($fuente_ids) == count($montos)) { $cantidad = count($fuente_ids); for ($i = 0; $i < $cantidad; $i++) { $fuentePresu = new FuentePresupuesto(); $fuentePresu->fuente_id = $fuente_ids[$i]; $fuentePresu->monto = $montos[$i]; $fuentesSel[$i] = $fuentePresu; } } $verificar = true; foreach ($fuentesSel as $key => $fuentep) { $verificar = $fuentep->validate() && $verificar; } $nombre_proyecto = Proyectos::model()->find('codigo=:codigo and ente_organo_id=:ente_organo_id and anho=:anho', array(':codigo' => $model->codigo, ':ente_organo_id' => $usuario->ente_organo_id, ':anho' => Yii::app()->params['trimestresFechas'][Yii::app()->session['trimestreSeleccionado']]['anho'])); $model->nombre = $nombre_proyecto->nombre; $model->setScenario(!empty($model->subespecifica) ? 'creaproyectose' : 'creaproyecto'); /*CVarDumper::dump($model); //Yii::app()->end();*/ if ($model->validate() && $verificar) { $presupuesto_partida = new PresupuestoPartidas(); $presupuesto_partida_proyecto = new PresupuestoPartidaProyecto(); $presupuesto_partida->partida_id = !empty($model->subespecifica) ? $model->subespecifica : $model->especifica; $presupuesto_partida->monto_presupuestado = 200; //$model->monto; //aqui va la suma de todos los montos. $presupuesto_partida->fecha_desde = "1900-01-01"; $presupuesto_partida->fecha_hasta = "2199-12-31"; $presupuesto_partida->tipo = "P"; $presupuesto_partida->anho = Yii::app()->params['trimestresFechas'][Yii::app()->session['trimestreSeleccionado']]['anho']; //date("Y"); $presupuesto_partida->ente_organo_id = $usuario->ente_organo_id; //$presupuesto_partida->fuente_fianciamiento_id = $model->fuente; $presupuesto_partida_proyecto->setScenario($model->scenario); $transaction = $presupuesto_partida->dbConnection->beginTransaction(); // Transaction begin //Yii::app()->db->beginTransaction try { if ($presupuesto_partida->save() && $verificar) { $verificar = true; $monto_total = 0; //$cont = count($fuentesSel); //aqui realmente es que tiene que ir. foreach ($fuentesSel as $key => $fuentep) { $fuentep->presupuesto_partida_id = $presupuesto_partida->presupuesto_partida_id; $monto_total += $fuentep->monto; $verificar = $fuentep->save() && $verificar; } //$accion = Acciones::model()->find('codigo=:codigo', array(':codigo'=>$model->nombre)); $presupuesto_partida_proyecto->presupuesto_partida_id = $presupuesto_partida->presupuesto_partida_id; $presupuesto_partida_proyecto->proyecto_id = $nombre_proyecto->proyecto_id; if ($presupuesto_partida_proyecto->save() && $verificar) { $actualizar_presupuesto_partida = PresupuestoPartidas::model()->findByPk($presupuesto_partida->presupuesto_partida_id); $actualizar_presupuesto_partida->monto_presupuestado = $monto_total; $actualizar_presupuesto_partida->save(array('monto_presupuestado')); $transaction->commit(); // committing Yii::app()->user->setFlash('success', 'Partida asignada con éxito!'); $model = new Proyectos('creaproyecto'); unset($fuentesSel); // borramos el arreglo para mandarlo limpio a la vista. $fuentesSel[] = new FuentePresupuesto(); } else { throw new Exception("Error Processing Request", 1); } } else { throw new Exception("Error Processing Request", 1); } } catch (Exception $e) { Yii::app()->user->setFlash('error', "No se pudo guardar la asigacion de la partida."); $transaction->rollBack(); } } else { if ($model->partida) { $tipo = Partidas::model()->findByPk($model->partida); $generales = $this->GeneralXpartida($tipo->p1); $generales_todas = CHtml::listData($generales, function ($generales) { return CHtml::encode($generales->partida_id); }, function ($generales) { return CHtml::encode($generales->p1 . '-' . $generales->p2 . '-' . $generales->p3 . '- ' . $generales->nombre); }); if ($model->general) { $especificas_todas = $this->buscar_especifica($model->general); $this->render('asignarpartidasproyecto', array('model' => $model, 'fuentes' => $fuentes, 'generales_todas' => $generales_todas, 'partidas' => $partidas_principal, 'proyectos' => $proyectos, 'especificas_todas' => $especificas_todas, 'fuentesSel' => $fuentesSel)); Yii::app()->end(); } //Yii::app()->end(); $this->render('asignarpartidasproyecto', array('model' => $model, 'fuentes' => $fuentes, 'generales_todas' => $generales_todas, 'partidas' => $partidas_principal, 'proyectos' => $proyectos, 'fuentesSel' => $fuentesSel)); Yii::app()->end(); } } } $this->render('asignarpartidasproyecto', array('model' => $model, 'fuentes' => $fuentes, 'partidas' => $partidas_principal, 'proyectos' => $proyectos, 'fuentesSel' => $fuentesSel)); }
public function partidaAsignada($attribute, $params) { $criteria = new CDbCriteria(); $usuario = Usuarios::model()->findByPk(Yii::app()->user->getId()); if ($this->nombreid) { $proyecto = Proyectos::model()->find('codigo=:codigo', array(':codigo' => $this->nombreid)); $presupuestopartidaproyecto = PresupuestoPartidaProyecto::model()->findAll('proyecto_id=:proyecto_id', array(':proyecto_id' => $proyecto->proyecto_id)); foreach ($presupuestopartidaproyecto as $key => $value) { $value->presupuesto_partida_id; if ($partida = PresupuestoPartidas::model()->find('presupuesto_partida_id=:presupuesto_partida_id and ente_organo_id=:ente_organo_id and tipo=:tipo', array(':ente_organo_id' => $usuario->ente_organo_id, ':presupuesto_partida_id' => $value->presupuesto_partida_id, ':tipo' => 'P'))) { if ($partida->partida_id == $this->{$attribute}) { $this->addError($attribute, 'Esta partida ya tiene asignado dinero para este proyecto!'); break; } } } } //$criteria->condition = "ente_organo_id=".$usuario->ente_organo_id ; //$criteria->addSearchCondition('t.nombre', $this->nombre); //$criteria->compare('LOWER(nombre)',strtolower($this->nombre),true); }