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)); }
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)); }