public function actionCreate()
 {
     $model = new Osplan();
     $modelDomicilio = new Domicilio();
     if (isset($_POST['Osplan'])) {
         $model->setAttributes($_POST['Osplan']);
         $model->iddomicilio = null;
         try {
             // si se carga domicilio de entrega, este modelo es opcional en el formulario
             if (strlen($_POST['Domicilio']['calle']) != 0) {
                 $modelDomicilio->setAttributes($_POST['Domicilio']);
                 $modelDomicilio->iddomiciliotipo = Domiciliotipo::PARTICULAR;
                 if ($modelDomicilio->save()) {
                     $model->iddomicilio = $modelDomicilio->iddomicilio;
                 } else {
                     throw new Exception("Hubo un error al grabar el domicilio de entrega");
                 }
             }
             if ($model->save()) {
                 $this->setFlash('notice', array('title' => 'Mensaje', 'content' => 'Se grabó correctamente.'));
                 $this->redirect(array('manage'));
             }
         } catch (Exception $e) {
             $model->addError('', $e->getMessage());
         }
     }
     $this->render('create', array('model' => $model, 'modelDomicilio' => $modelDomicilio));
 }
Example #2
0
 public function actionCreate()
 {
     $model = new Osplan();
     $modelDomicilio = new Domicilio();
     $modellocalidad = new Localidad();
     // Traigo los modelos de parámetros vacíos
     $models_parametros_carga = Parametrocarga::model()->getParametros(0);
     $model_campos_carga = new Carga();
     if (isset($_POST['Osplan'])) {
         $model->setAttributes($_POST['Osplan']);
         //            $model->iddomicilio=null;
         //                if ($_POST['Osplan']['iddomicilio']=='0')$model->iddomicilio=null;
         $transac = Yii::app()->db->beginTransaction();
         try {
             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");
                     }
                 } else {
                     throw new Exception("Error al grabar la cuenta");
                 }
                 $transac->commit();
                 if (!isset($_POST['domiciliobutton'])) {
                     // si se uso el boton grabar, esto es true, si se uso el boton agregar domicilio, es falso
                     $this->redirect(array('manage'));
                     $this->setFlash('notice', array('title' => 'Mensaje', 'content' => 'Se grabó correctamente.'));
                 } else {
                     // se usó boton agregar domicilio de entrega, se redirige  a la vista update para cargar domicilio
                     $this->redirect(array('update', 'id' => $model->idosplan));
                     // redirecciona a update para permitir cargar domicilios
                 }
             }
         } catch (Exception $e) {
             $transac->rollback();
             $model->addError('', $e->getMessage());
         }
     }
     $this->render('create', array('model' => $model, 'modelDomicilio' => $modelDomicilio, 'modellocalidad' => $modellocalidad, 'models_parametros_carga' => $models_parametros_carga, 'model_campos_carga' => $model_campos_carga));
 }