示例#1
0
 public function actionCreate2()
 {
     if (Yii::app()->request->isAjaxRequest) {
         $model = new Carga();
         $models_practicas = $model->getPracticas();
         if (isset($_POST['Carga'])) {
             $tran = Yii::app()->db->beginTransaction();
             $codigocarga = $_POST['codigocarga'];
             // arreglo con las practicas cargadas en la grilla
             $model->setAttributes($_POST['Carga']);
             $model->distrito = 1;
             // Por ahora distrito IX
             $model->idcargatipo = 1;
             // Facturación
             $model->periodofacturacion = Parametro::model()->getParametro('PERIODOCARGA', 'CARGA')->valoralfanumerico;
             $model->agregarValidadores();
             try {
                 // Cargo primero los datos de las prácticas por si hay un error
                 // en la cabecera. Sino se borran
                 // También verifico que haya al menos una práctica cargada
                 $cant_pr = 0;
                 foreach ($_POST['Practicacarga'] as $i => $item) {
                     $models_practicas[$i]->setAttributes($_POST['Practicacarga'][$i]);
                     if ($models_practicas[$i]->idpractica > 0) {
                         $cant_pr++;
                     }
                 }
                 if ($model->save()) {
                     if ($cant_pr == 0) {
                         throw new Exception("Debe cargar al menos una práctica");
                     }
                     foreach ($_POST['Practicacarga'] as $i => $item) {
                         // Solo almaceno las prácticas que se cargaron
                         if ($models_practicas[$i]->idpractica > 0) {
                             $models_practicas[$i]->idcarga = $model->idcarga;
                             $models_practicas[$i]->precio = 0;
                             // Grabo 0 por ahora
                             if (!$models_practicas[$i]->save()) {
                                 throw new Exception("Error al grabar práctica");
                             }
                         }
                     }
                     $tran->commit();
                     // Ver con hugo por ahora lo resuelvo así
                     Yii::app()->user->setFlash('success', "Se grabó correctamente.");
                 }
             } catch (Exception $e) {
                 $model->addError('', $e->getMessage());
                 $tran->rollback();
             }
         }
         Yii::app()->clientScript->scriptMap = array('jquery.js' => false, 'jquery-ui.min.js' => false, 'jquery-ui-i18n.min.js' => false, 'select2.js' => false, 'bootstrap.js' => false, 'select2_locale_es.js' => false);
         $this->renderPartial('_formpracticas', array('model' => $model, 'models_practicas' => $models_practicas, 'codigocarga' => $codigocarga), false, true);
     }
 }