public function actionCreate() { $model = new Transacheader(); if (isset($_POST['Transacheader'])) { $model->setAttributes($_POST['Transacheader']); try { if ($model->save()) { $this->setFlash('notice', array('title' => 'Mensaje', 'content' => 'Se grabó correctamente.')); $this->redirect(array('manage')); } } catch (Exception $e) { $model->addError('', $e->getMessage()); } } elseif (isset($_GET['Transacheader'])) { $model->attributes = $_GET['Transacheader']; } $this->render('create', array('model' => $model)); }
public function Procesatransac($filetransac, $parametrolongitud) { $largolineas = array(); $headers = array(); // arreglo clave=>valor es = a idtransacheader=>transac $f = 0; // cantidad de filas (practicas) que se leen // handler para leer archivo txt $fileHandler = fopen($filetransac, 'r'); // lazo de lectura de linea por linea del archivo while ($linea = fgets($fileHandler)) { $f++; $nrotransaccion = trim(substr($linea, 77, 15)); // validar largo del registro solo // para la primera fila if ($f == 1 && strlen($linea) != $parametrolongitud) { throw new Exception("Error en la longitud del registro"); } // busco si ya se grabó la cabecera de la transaccion // array_search devuelve el identificador de la transaccion si la encuentra, o false si no la encuentra $idheader = array_search($nrotransaccion, $headers); if (!$idheader) { // si no se grabo la cabecera para esa transaccion, entonces se graba $model = new Transacheader(); $model->mutual = trim(substr($linea, 0, 5)); // se podria parametrizar en una tabla $model->afiliado = trim(substr($linea, 5, 15)); $model->digito = trim(substr($linea, 20, 2)); $model->relacion = trim(substr($linea, 22, 2)); $model->matricula = trim(substr($linea, 24, 15)); $model->nrobono = trim(substr($linea, 39, 16)); $model->prescripcion = trim(substr($linea, 61, 8)); $model->presentacion = trim(substr($linea, 69, 8)); $model->transac = $nrotransac = $nrotransaccion; $model->afiliva = trim(substr($linea, 92, 1)); $model->plangaleno = trim(substr($linea, 93, 10)); $model->realizacion = trim(substr($linea, 103, 8)); $model->idl = trim(substr($linea, 111, 5)); try { $model->save(); $idheader = $model->idtransacheader; // identificador de la transaccion $headers[$idheader] = $nrotransaccion; } catch (Exception $e) { throw new Exception("Error en la grabación de la cabecera"); } } else { $nrotransac = $nrotransaccion; } if ($nrotransaccion == $nrotransac) { // mientras sea el mismo numero de transac, graba las practicas $modelpractica = new Transacpractica(); $modelpractica->codigo = trim(substr($linea, 55, 6)); $modelpractica->idtransacheader = $idheader; try { $modelpractica->save(); } catch (Exception $e) { throw new Exception("Error en la grabación de las practicas"); } } } fclose($fileHandler); $this->cantpracticastransac = $f; // asignamos la cantidad de practicas $this->canttransac = count($headers); // asignamos la cantidad de transacciones return true; }