コード例 #1
0
 public function actionUpdate($id)
 {
     $model = $this->loadModel($id);
     $modelDomicilio = new Domicilio();
     $modellocalidad = new Localidad();
     // Traigo los parámetros de la carga según el id del plan
     $models_parametros_carga = Parametrocarga::model()->getParametros($id);
     $model_campos_carga = new Carga();
     // campos que son para carga de archivos de modalidad
     $modalidades = array("modalidadapertura", "modalidadcarga", "modalidadfacturacion", "modalidadoperativa");
     //modelo nomenclador plan
     $modelnomenplan = new Nomencladorplan();
     //asignar idosplan para cargar el nomenclador del plan
     $modelnomenplan->idosplan = $model->idosplan;
     if (isset($_POST['Osplan'])) {
         $model->setAttributes($_POST['Osplan']);
         if ($_POST['Osplan']['iddomicilio'] == '0') {
             $model->iddomicilio = null;
         }
         try {
             $transac = Yii::app()->db->beginTransaction();
             if (strlen($_POST['Domicilio']['calle']) != 0) {
                 $modelDomicilio->setAttributes($_POST['Domicilio']);
                 $modelDomicilio->idlocalidad = $_POST['Localidad']['idlocalidad'];
                 $modelDomicilio->iddomiciliotipo = Domiciliotipo::PARTICULAR;
                 if ($modelDomicilio->save()) {
                     $model->iddomicilio = $modelDomicilio->iddomicilio;
                 } else {
                     throw new Exception("Hubo un error al grabar el domicilio de entrega");
                 }
             }
             // archivos de modalidad subidos
             // si se envia desde el formulario, se asigna y
             // se graba. El nombre del archivo esta definido en el modelo osplan->archivomodalidadd()
             foreach ($modalidades as $modalidad) {
                 if (CUploadedFile::getInstance($model, $modalidad) !== null) {
                     $model->{$modalidad} = CUploadedFile::getInstance($model, $modalidad);
                     $model->{$modalidad}->saveAs($model->archivomodalidad($modalidad));
                 }
             }
             // si se selecciona el checkbox de borrar archivo de modalidad
             foreach ($modalidades as $modalidad) {
                 if (isset($_POST['borrar' . $modalidad])) {
                     $model->{$modalidad} = NULL;
                     @unlink($model->archivomodalidad($modalidad));
                 }
             }
             if ($model->save()) {
                 if (isset($_POST['Parametrocarga'])) {
                     $hayerror = false;
                     foreach ($_POST['Parametrocarga'] as $i => $item) {
                         $model_parametro_carga = $models_parametros_carga[$i];
                         // Asigno el modelo
                         $model_parametro_carga->setAttributes($_POST['Parametrocarga'][$i]);
                         // 04/05/2015 JMG Almaceno todos los campos, incluidos los no editables pero estos
                         // pueden ser obligatorios o no dependiendo de la metadata de la bd
                         if ($model_campos_carga->getMetaData()->columns[$model_parametro_carga->campo]->comment == "NOEDITABLE") {
                             if ($model_campos_carga->getMetaData()->columns[$model_parametro_carga->campo]->allowNull) {
                                 $model_parametro_carga->idopcioncampocarga = Opcioncampocarga::OPCIONAL;
                             } else {
                                 $model_parametro_carga->idopcioncampocarga = Opcioncampocarga::OBLIGATORIO;
                             }
                         }
                         $model_parametro_carga->idosplan = $model->idosplan;
                         if (!$model_parametro_carga->save()) {
                             $hayerror = true;
                         }
                     }
                     if ($hayerror) {
                         throw new Exception("Error al grabar parametros");
                     }
                 }
                 // NOMENCLADOR
                 // borrar nomenclador
                 if (isset($_POST['borrarnomenclador'])) {
                     try {
                         Nomencladorplan::model()->deleteAllByAttributes(array('idosplan' => $id));
                     } catch (Exception $e) {
                         throw new CHttpException(500, $e->getMessage());
                     }
                     // grabar todo y redirigir a manage
                     $transac->commit();
                     $this->setFlash('notice', array('title' => 'Mensaje', 'content' => 'Se actualizó correctamente.'));
                     $this->redirect(array('manage'));
                 }
                 // borrar practicas seleccionadas
                 if (isset($_POST['id-borrar'])) {
                     $ids = $_POST['id-borrar'];
                     // arreglo con las idpracticas a borrar
                     try {
                         Nomencladorplan::model()->deleteAllByAttributes(array('idnomencladorplan' => $ids));
                     } catch (Exception $e) {
                         throw new CHttpException(500, $e->getMessage());
                     }
                     // grabar todo y redirigir a manage
                     $transac->commit();
                     $this->setFlash('notice', array('title' => 'Mensaje', 'content' => 'Se actualizó correctamente.'));
                     $this->redirect(array('manage'));
                 }
                 //                            else {
                 // ARMADO de Nomenclador: grabar en tabla nomencladorplan
                 $marcatodas = false;
                 $rango = false;
                 // si se seleccionó un momenclador, la variable  idnomenclador es true
                 // y se analizan las variables de resto del formulario
                 // para armar el nomenclador.
                 // si no se manda idnomenclador, es porque se actualizan datos del osplan
                 // pero no se arma nomenclador
                 if ($_POST['idnomenclador'] == true) {
                     $idnomenclador = $_POST['idnomenclador'];
                     // filtro de tipo de practicas
                     $idpractipo = isset($_POST['idpractipo']) ? $_POST['idpractipo'] : false;
                     // controlar si seleccionaron  rangos
                     if (isset($_POST['rangodesde']) && isset($_POST['rangohasta'])) {
                         $rango = true;
                         $rangodesde = $_POST['rangodesde'];
                         $rangohasta = $_POST['rangohasta'];
                         //                            // controlar que no este vacio algun rango
                         if (in_array('', $rangodesde)) {
                             $rango = false;
                         }
                         if (in_array('', $rangohasta)) {
                             $rango = false;
                         }
                         //error de rango
                         if (!$rango) {
                             throw new Exception("Error en el rango de prácticas");
                         }
                     }
                     // todas las practicas seleccionadas
                     // si se marca, se anula el rango.
                     // y se seleccionan todas.
                     if (isset($_POST['marcatodas'])) {
                         $marcatodas = true;
                         $rango = false;
                     }
                     //  en caso de seleccionar todas
                     if ($marcatodas) {
                         // $idpracticas es un arreglo de idpracticas encontradas
                         $idpracticas = Practica::model()->search3($idnomenclador, $idpractipo);
                         foreach ($idpracticas as $key => $value) {
                             $modelnomencladorplan = new nomencladorplan();
                             $modelnomencladorplan->idosplan = $model->idosplan;
                             $modelnomencladorplan->idpractica = $value;
                             // grabar registro en tabla nomencladorplan
                             $modelnomencladorplan->save();
                         }
                     }
                     //  en caso de seleccionar por rango
                     if ($rango) {
                         // $idpracticas es un arreglo de idpracticas encontradas
                         foreach ($rangodesde as $key => $valordesde) {
                             $idpracticas = Practica::model()->search4($valordesde, $rangohasta[$key], $idpractipo);
                             if (!$idpracticas) {
                                 throw new Exception("Error en el rango de prácticas");
                             }
                             foreach ($idpracticas as $key => $value) {
                                 $modelnomencladorplan = new nomencladorplan();
                                 $modelnomencladorplan->idosplan = $model->idosplan;
                                 $modelnomencladorplan->idpractica = $value;
                                 // grabar registro en tabla nomencladorplan
                                 $modelnomencladorplan->save();
                             }
                         }
                     }
                 }
                 // grabar todo y redirigir a manage
                 $transac->commit();
                 $this->setFlash('notice', array('title' => 'Mensaje', 'content' => 'Se actualizó correctamente.'));
                 $this->redirect(array('manage'));
             }
         } catch (Exception $e) {
             $transac->rollback();
             $model->addError('', $e->getMessage());
         }
     }
     $this->render('update', array('model' => $model, 'modelDomicilio' => $modelDomicilio, 'modellocalidad' => $modellocalidad, 'models_parametros_carga' => $models_parametros_carga, 'model_campos_carga' => $model_campos_carga, 'modelnomenplan' => $modelnomenplan));
 }
コード例 #2
0
ファイル: Carga.php プロジェクト: juankie/gestcb9git
 public function agregarValidadores()
 {
     if ($this->idosplan > 0) {
         // Busco en el Modelo parametroCarga los validadores
         $parametros = Parametrocarga::model()->findall(array('condition' => 'idosplan=' . $this->idosplan));
         foreach ($parametros as $param) {
             if ($param->idopcioncampocarga == Opcioncampocarga::OBLIGATORIO) {
                 $this->validatorList->add(CValidator::createValidator('required', $this, $param->campo));
             }
             if (!is_null($param->longitud) && $param->longitud > 0) {
                 $this->validatorList->add(CValidator::createValidator('length', $this, $param->campo, array('max' => $param->longitud)));
             }
         }
     }
 }
コード例 #3
0
ファイル: Parametrocarga.php プロジェクト: juankie/gestcb9git
 public function getParametros($idplan)
 {
     // Obtengo los  campos del modelo Carga
     $model_campos = new Carga();
     $models = array();
     foreach ($model_campos->attributes as $key => $value) {
         if ($model_campos->getMetaData()->columns[$key]->comment != "INTERNO") {
             // Busco si ya esta cargado el parámetro segun el plan sólo si es mayor que 0
             if ($idplan > 0) {
                 $model = Parametrocarga::model()->find(array('condition' => 'campo="' . $key . '" and idosplan=' . $idplan));
             } else {
                 $model = null;
             }
             if (!isset($model)) {
                 // Si no esta lo doy de alta como un nuevo modelo con el campo por defecto opcional
                 $model = new Parametrocarga();
                 $model->campo = $key;
                 $model->idopcioncampocarga = Opcioncampocarga::OPCIONAL;
             }
             // Si el campo es no editable marco si es obligatorio u opcional
             if ($model_campos->getMetaData()->columns[$key]->comment == "NOEDITABLE") {
                 if ($model_campos->getMetaData()->columns[$key]->allowNull) {
                     $model->idopcioncampocarga = Opcioncampocarga::OPCIONAL;
                 } else {
                     $model->idopcioncampocarga = Opcioncampocarga::OBLIGATORIO;
                 }
             }
             array_push($models, $model);
         }
     }
     return $models;
 }