private function leeArchivo($fileName)
 {
     $archivo = new Archivo($fileName);
     $detalle = array();
     if ($archivo->open("r")) {
         set_time_limit(0);
         while (($linea = $archivo->readLine()) !== FALSE) {
             $resto = json_decode($linea[3], true);
             $metodo = $resto['METHOD'];
             switch ($metodo) {
                 case 'GET':
                     $controller = $resto[0];
                     $action = $resto[1];
                     $mas = $resto[2] . "/" . $resto[3];
                     break;
                 case 'POST':
                     $controller = $resto['controller'];
                     $action = $resto['action'];
                     $accion = $resto['accion'];
                     $mas = print_r($resto[$resto['controller']], true);
                     break;
             }
             $detalle[] = array('ip' => $linea[0], 'fecha' => $linea[1], 'usuario' => json_decode($linea[2], true), 'controller' => $controller, 'action' => $action, 'accion' => $accion, 'mas' => $mas, 'metodo' => $metodo);
         }
         $archivo->close();
     } else {
         $this->values['errores'][] = "El archivo " . $fileName . " no existe o no tiene permisos de lectura";
     }
     return $detalle;
 }
 public function ImportarAction()
 {
     $fileName = "docs/docs{$_SESSION['emp']}/tmp/formasPago.csv";
     $archivo = new Archivo($fileName);
     $archivo->setColumnsDelimiter(";");
     //$archivo->setColumnsEnclosure('"');
     if ($archivo->open("r")) {
         set_time_limit(0);
         while (($linea = $archivo->readLine()) !== FALSE) {
             $fp = new FormasPago();
             $fp->setDescripcion(utf8_encode($linea[1]));
             $fp->setObservations($linea[0]);
             $fp->setNumeroVctos(1);
             $fp->setAnotarEnCaja(0);
             $id = $fp->create();
             if (!$id) {
                 $nErrores += 1;
                 print_r($fp->getErrores());
             } else {
                 $nAciertos += 1;
             }
             unset($fp);
         }
         $archivo->close();
     } else {
         $this->values['errores'][] = "El fichero de importación " . $fileName . " no existe";
     }
     echo "Aciertos: {$nAciertos}, Errores: {$nErrores}";
     unset($archivo);
 }
 private function cargarLineas($idFirma, $idFamilia, $archivoCsv)
 {
     $nLinea = 0;
     $errores = array();
     $items = array();
     $articulo = new Articulos();
     $csv = new Archivo($archivoCsv);
     $csv->setColumnsDelimiter(";");
     if ($csv->open()) {
         $columnas = $csv->readline();
         //print_r($columnas);
         while (($linea = $csv->readLine()) && $nLinea < 1000) {
             $nLinea++;
             //print_r($linea);
             foreach ($linea as $key => $value) {
                 $items[$nLinea][$columnas[$key]] = $value;
             }
         }
         $csv->close();
     } else {
         $errores[] = "No se ha podido abrir el archivo cargado";
     }
     //print_r($items);
     unset($articulo);
     return array('titulos' => $columnas, 'items' => $items, 'errores' => $errores);
 }
Ejemplo n.º 4
0
 /**
  * Importa familias desde fichero externo csv según
  * el formato de facturaplus
  */
 public function ImportarAction()
 {
     $fileName = "docs/docs{$_SESSION['emp']}/tmp/familias.csv";
     $archivo = new Archivo($fileName);
     $archivo->setColumnsDelimiter(";");
     //$archivo->setColumnsEnclosure('"');
     if ($archivo->open("r")) {
         set_time_limit(0);
         // Me salto la primera línea de cabecera
         $linea = $archivo->readLine();
         while (($linea = $archivo->readLine()) !== FALSE) {
             print_r($linea);
             $fp = new Familias();
             $fp->setFamilia(utf8_encode($linea[1]));
             $fp->setObservations($linea[0]);
             $fp->setInventario(1);
             $id = $fp->create();
             if (!$id) {
                 $nErrores += 1;
                 print_r($fp->getErrores());
             } else {
                 $nAciertos += 1;
             }
             unset($fp);
         }
         $archivo->close();
     } else {
         $this->values['errores'][] = "El fichero de importación " . $fileName . " no existe";
     }
     echo "Aciertos: {$nAciertos}, Errores: {$nErrores}";
     unset($archivo);
 }
 /**
  * Importa artículos desde fichero externo csv según
  * el formato de facturaplus
  * 
  * NOTA IMPORTANTE: SE HAN DE IMPORTAR LAS FAMILIAS ANTES.
  */
 public function ImportarAction()
 {
     $fileName = "docs/docs{$_SESSION['emp']}/tmp/articulos.csv";
     $archivo = new Archivo($fileName);
     $archivo->setColumnsDelimiter(";");
     //$archivo->setColumnsEnclosure('"');
     if ($archivo->open("r")) {
         set_time_limit(0);
         // Me salto la primera línea de cabecera
         $linea = $archivo->readLine();
         while (($linea = $archivo->readLine()) !== FALSE) {
             //print_r($linea);
             $fam = new Familias();
             $fam = $fam->find('Observations', trim($linea[2]));
             $idFamilia = $fam->getIDFamilia();
             if (!$idFamilia) {
                 $idFamilia = 1;
             }
             $arti = new Articulos();
             $arti->setCodigo($linea[0]);
             $arti->setDescripcion(utf8_encode($linea[1]));
             $arti->setIDCategoria($idFamilia);
             $arti->setAllowsChildren($linea[4]);
             $arti->setInventario(1);
             $arti->setIDIva(1);
             $arti->setPmc(str_replace(",", ".", $linea[6]));
             $arti->setPvd(str_replace(",", ".", $linea[7]));
             $arti->setPvp(str_replace(",", ".", $linea[8]));
             $arti->setMargen(str_replace(",", ".", $linea[9]));
             $arti->setPeso(str_replace(",", ".", $linea[5]));
             $arti->setStockMaximo($linea[11]);
             $arti->setStockMinimo($linea[12]);
             $arti->setGarantia("S/F");
             $idArti = $arti->create();
             if (!$idArti) {
                 $nErrores += 1;
                 print_r($arti->getErrores());
             } else {
                 $nAciertos += 1;
             }
             unset($arti);
         }
         $archivo->close();
     } else {
         $this->values['errores'][] = "El fichero de importación " . $fileName . " no existe";
     }
     echo "Aciertos: {$nAciertos}, Errores: {$nErrores}";
     unset($archivo);
 }
Ejemplo n.º 6
0
 /**
  * Importa clientes desde fichero externo csv según
  * el formato de facturaplus
  */
 public function ImportarAction()
 {
     $fileName = "docs/docs{$_SESSION['emp']}/tmp/clientes.csv";
     $archivo = new Archivo($fileName);
     $archivo->setColumnsDelimiter(";");
     $archivo->setColumnsEnclosure('"');
     $idPais = 68;
     // España
     // Crear array de poblaciones
     if ($archivo->open("r")) {
         set_time_limit(0);
         while (($linea = $archivo->readLine()) !== FALSE) {
             $poblaciones[trim($linea[4])] = 0;
         }
         $pobla = new Municipios();
         foreach ($poblaciones as $key => $value) {
             $rows = $pobla->cargaCondicion("IDMunicipio", "Municipio='{$key}'");
             if ($rows[0]['IDMunicipio'] != '') {
                 $poblaciones[$key] = $rows[0]['IDMunicipio'];
             }
         }
         unset($pobla);
         $archivo->close();
     } else {
         $this->values['errores'][] = "El fichero de importación " . $fileName . " no existe";
     }
     if ($archivo->open("r")) {
         set_time_limit(0);
         while (($linea = $archivo->readLine()) !== FALSE) {
             //print_r($linea);
             $fp = new FormasPago();
             $fp = $fp->find('Observations', trim($linea[20]));
             $idFp = $fp->getIDFP();
             if (!$idFp) {
                 $idFp = 1;
             }
             $cliente = new Clientes();
             $cliente->setIDCliente($linea[0]);
             $cliente->setRazonSocial(utf8_encode($linea[1]));
             $cliente->setNombreComercial(utf8_encode($linea[2]));
             $cliente->setDireccion(utf8_encode($linea[3]));
             $cliente->setIDPoblacion($poblaciones[trim($linea[4])]);
             $cliente->setIDProvincia($linea[5]);
             $cliente->setCodigoPostal($linea[6]);
             $cliente->setIDPais($idPais);
             $cliente->setTelefono($linea[7]);
             $cliente->setMovil($linea[8]);
             $cliente->setFax($linea[9]);
             $cliente->setCif(str_replace("-", "", $linea[10]));
             $cliente->setObservaciones($linea[11] . " " . $linea[19]);
             $cliente->setBanco($linea[15]);
             $cliente->setOficina($linea[16]);
             $cliente->setDigito(substr($linea[17], 2, 2));
             $cliente->setCuenta($linea[18]);
             $cliente->setIDFP($idFp);
             $cliente->setEMail($linea[41]);
             $cliente->setLimiteRiesgo($linea[38]);
             $cliente->setIDZona(1);
             $cliente->setIDSucursal($_SESSION['suc']);
             $cliente->setIDTipo(1);
             $cliente->setIDGrupo(1);
             $idCliente = $cliente->create();
             if (!$idCliente) {
                 $nErrores += 1;
                 print_r($cliente->getErrores());
             } else {
                 $nAciertos += 1;
             }
             unset($cliente);
         }
         $archivo->close();
     } else {
         $this->values['errores'][] = "El fichero de importación " . $fileName . " no existe";
     }
     echo "Aciertos: {$nAciertos}, Errores: {$nErrores}";
     unset($archivo);
 }
 /**
  * Carga facturas emitidas desde un archivo de texto externo
  * Las columnas deben venir separadas por tabuladores
  * Las facturas se cargan en la sucursal en curso
  *
  * @param string $fileName El path completo del archivo a importar
  */
 private function importarArchivo($fileName)
 {
     $archivo = new Archivo($fileName);
     if ($archivo->open("r")) {
         set_time_limit(0);
         // Lee contador
         $contador = new Contadores();
         $contador = $contador->dameContador($_SESSION['suc'], 2);
         $idContador = $contador->getIDContador();
         // Buscar la cuenta contable de ventas para la sucursal
         $sucursal = new Sucursales($_SESSION['suc']);
         $ctaVentas = $sucursal->getCtaContableVentas();
         unset($sucursal);
         while (($linea = $archivo->readLine()) !== FALSE) {
             $fecha = explode("-", $linea[2]);
             $cliente = new Clientes();
             $cliente = $cliente->find('CContable', $linea[3]);
             if ($cliente->getIDCliente() != '') {
                 // Pongo los valores a cero en caso de que no venga nada
                 for ($i = 6; $i <= 11; $i++) {
                     if ($linea[$i] == '') {
                         $linea[$i] = 0;
                     }
                 }
                 $b1 = $linea[6];
                 $i1 = $linea[7];
                 $ci1 = round($b1 * $i1 / 100, 2);
                 $r1 = $linea[8];
                 $cr1 = round($b1 * $r1 / 100, 2);
                 $b2 = $linea[9];
                 $i2 = $linea[10];
                 $ci2 = round($b2 * $i2 / 100, 2);
                 $r2 = $linea[11];
                 $cr2 = round($b2 * $r2 / 100, 2);
                 $factura = new FemitidasCab();
                 $factura->setIDContador($idContador);
                 if ($this->request['RespectarNumerosFactura'] == 'on') {
                     $numeroFactura = $contador->getSerie() . (1200000 + $linea[1]);
                 } else {
                     $numeroFactura = $contador->asignaContador();
                 }
                 $factura->setNumeroFactura($numeroFactura);
                 $factura->setIDSucursal($_SESSION['suc']);
                 $factura->setIDAgente($_SESSION['usuarioPortal']['Id']);
                 $factura->setIDComercial(1);
                 $factura->setFecha($fecha[0] . "/" . $fecha[1] . "/20" . $fecha[2]);
                 $factura->setIDCliente($cliente->getIDCliente());
                 $factura->setImporte($b1 + $b2);
                 $factura->setBaseImponible1($b1);
                 $factura->setIva1($i1);
                 $factura->setCuotaIva1($ci1);
                 $factura->setRecargo1($r1);
                 $factura->setCuotaRecargo1($cr1);
                 $factura->setBaseImponible2($b2);
                 $factura->setIva2($i2);
                 $factura->setCuotaIva2($ci2);
                 $factura->setRecargo2($r2);
                 $factura->setCuotaRecargo2($cr2);
                 $factura->setTotalBases($b1 + $b2);
                 $factura->setTotalIva($ci1 + $ci2);
                 $factura->setTotalRecargo($cr1 + $cr2);
                 $factura->setTotal($b1 + $b2 + $ci1 + $ci2 + $cr1 + $cr2);
                 $factura->setIDFP($this->request['IDFP']);
                 $factura->setAsiento(9999);
                 $factura->setCuentaVentas($ctaVentas);
                 if ($factura->create()) {
                     $factura->creaVctos();
                 } else {
                     $this->values['errores'] = $factura->getErrores();
                 }
             } else {
                 $this->values['errores'][] = "No existe el cliente " . $linea[3] . " " . $linea[5] . ". No se carga la factura " . $linea[1];
             }
         }
         $archivo->close();
     } else {
         $this->values['errores'][] = "El fichero de importación " . $fileName . " no existe";
     }
     unset($archivo);
 }
 private function cargarLineas($idPedido, $idFirma, $idCliente, $archivoCsv)
 {
     $nLinea = 0;
     $errores = array();
     $csv = new Archivo($archivoCsv);
     $csv->setColumnsDelimiter(";");
     if ($csv->open()) {
         $articulo = new Articulos();
         while ($linea = $csv->readLine()) {
             $nLinea++;
             $codigo = trim($linea[0]);
             $unidades = trim($linea[1]);
             if ($codigo != '') {
                 $filtro = "IdFirma='{$idFirma}' and (Codigo='{$codigo}' or CodigoEAN='{$codigo}')";
                 //echo $filtro,"\n";
                 $rows = $articulo->cargaCondicion("Id,IdFamilia,Codigo,Descripcion,Pvd", $filtro);
                 $row = $rows[0];
                 if ($row['Id'] != '') {
                     $articulo = new Articulos($row['Id']);
                     $pedidoLinea = new PedidosLineas();
                     $pedidoLinea->setIdPedido($idPedido);
                     $pedidoLinea->setIdFirma($idFirma);
                     $pedidoLinea->setIdFamilia($row['IdFamilia']);
                     $pedidoLinea->setIdCliente($idCliente);
                     $pedidoLinea->setIdArticulo($row['Id']);
                     $pedidoLinea->setDescripcion($row['Descripcion']);
                     $pedidoLinea->setUnidades($unidades);
                     $pedidoLinea->setPrecio($row['Pvd']);
                     $pedidoLinea->setIva($articulo->getIdIva()->getIva());
                     $pedidoLinea->setImporte($unidades * $row['Pvd']);
                     $id = $pedidoLinea->create();
                     if (!$id) {
                         $errores[] = "Línea {$nLinea}: No se pudo crear la línea de pedido.";
                     }
                 } else {
                     $errores[] = "Línea {$nLinea}: El artículo {$codigo} no existe o no pertenece a la firma del pedido.";
                 }
             }
         }
         $csv->close();
         unset($articulo);
         unset($pedidoLinea);
         // Recalcular los totales del pedido
         if (count($errores) == 0) {
             $pedido = new PedidosCab($idPedido);
             $pedido->save();
             unset($pedido);
         }
     } else {
         $errores[] = "No se ha podido abrir el archivo cargado";
     }
     return $errores;
 }
 /**
  * Carga facturas recibidas desde un archivo de texto externo
  * Las columnas deben venir separadas por tabuladores
  * Las facturas se cargan en la sucursal en curso
  *
  * @param string $fileName El path completo del archivo a importar
  * @return array
  */
 public function ImportarAction($fileName = '')
 {
     if ($this->values['permisos']['permisosModulo']['IN']) {
         if ($fileName == '') {
             $fileName = $this->request[2];
         }
         if ($fileName != '') {
             $fileName = "docs/docs{$_SESSION['emp']}/tmp/" . $fileName;
         }
         $archivo = new Archivo($fileName);
         if ($archivo->open("r")) {
             set_time_limit(0);
             // Lee contador
             $contador = new Contadores();
             $contador = $contador->dameContador($_SESSION['suc'], 4);
             $idContador = $contador->getIDContador();
             // Buscar la cuenta contable de compras para la sucursal
             $sucursal = new Sucursales($_SESSION['suc']);
             $ctaCompras = $sucursal->getCtaContableCompras();
             unset($sucursal);
             while (($linea = $archivo->readLine()) !== FALSE) {
                 $fecha = explode("-", $linea[1]);
                 $proveedor = new Proveedores();
                 $proveedor = $proveedor->find('CContable', $linea[2]);
                 if ($proveedor->getIDProveedor() != '') {
                     $b1 = $linea[5];
                     $i1 = $linea[6];
                     $ci1 = round($b1 * $i1 / 100, 2);
                     $r1 = $linea[7];
                     $cr1 = round($b1 * $r1 / 100, 2);
                     $b2 = $linea[8];
                     $i2 = $linea[9];
                     $ci2 = round($b2 * $i2 / 100, 2);
                     $r2 = $linea[10];
                     $cr2 = round($b2 * $r2 / 100, 2);
                     $factura = new FrecibidasCab();
                     $factura->setIDContador($idContador);
                     $factura->setIDSucursal($_SESSION['suc']);
                     $factura->setNumeroFactura($contador->asignaContador());
                     $factura->setSuFactura($linea[0]);
                     $factura->setFecha($fecha[0] . "/" . $fecha[1] . "/20" . $fecha[2]);
                     $factura->setIDProveedor($proveedor->getIDProveedor());
                     $factura->setImporte($b1 + $b2);
                     $factura->setBaseImponible1($b1);
                     $factura->setIva1($i1);
                     $factura->setCuotaIva1($ci1);
                     $factura->setRecargo1($r1);
                     $factura->setCuotaRecargo1($cr1);
                     $factura->setBaseImponible2($b2);
                     $factura->setIva2($i2);
                     $factura->setCuotaIva2($ci2);
                     $factura->setRecargo2($r2);
                     $factura->setCuotaRecargo2($cr2);
                     $factura->setTotalBases($b1 + $b2);
                     $factura->setTotalIva($ci1 + $ci2);
                     $factura->setTotalRecargo($cr1 + $cr2);
                     $factura->setTotal($b1 + $b2 + $ci1 + $ci2 + $cr1 + $cr2);
                     $factura->setIDFP(1);
                     $factura->setAsiento(9999);
                     $factura->setCuentaCompras($ctaCompras);
                     if ($factura->create()) {
                         $factura->creaVctos();
                     } else {
                         $this->values['errores'][] = $factura->getErrores();
                     }
                     //print_r($factura->getErrores());
                 } else {
                     $this->values['errores'][] = "No existe el proveedor " . $linea[2] . " " . $linea[4] . ". No se carga la factura " . $linea[0];
                 }
             }
             $archivo->close();
         } else {
             $this->values['errores'][] = "El fichero de importación " . $fileName . " no existe";
         }
         unset($archivo);
         return array('template' => $this->entity . '/edit.html.twig', 'values' => $this->values);
     } else {
         return array('template' => '_global/forbiden.html.twig');
     }
 }
 /**
  * Importar el contenido del archivo $filename, genera un archivo log
  * cuyo path devuelve.
  * 
  * Comprueba la existencias de los lotes y ubicaciones indicados
  * Si no existe el lote, lo crea.
  *
  * @param string $fileName
  * @return string El path al archivo log generado en la importación
  */
 private function importarArchivo($fileName)
 {
     set_time_limit(0);
     $archivoImportar = new Archivo($fileName);
     if ($archivoImportar->open("r")) {
         // Abrir en modo escritura el archivo de log.
         $usuario = new Agentes($_SESSION['usuarioPortal']['Id']);
         $pathArchivoLog = "docs/docs" . $_SESSION['emp'] . "/tmp/logImportarInventario.txt";
         $archivoLog = new Archivo($pathArchivoLog);
         $archivoLog->open("w");
         $archivoLog->writeLine("IMPORTACIÓN DE ARCHIVO DE INVENTARIO");
         $archivoLog->writeLine("FECHA: " . date('d-m-Y H:i:s'));
         $archivoLog->writeLine("ARCHIVO: " . $archivoImportar->getBaseName());
         $archivoLog->writeLine("USUARIO: " . $usuario->getNombre());
         $archivoLog->writeLine(str_repeat("-", 50));
         unset($usuario);
         $fila = 1;
         $fallidos = 0;
         $cargados = 0;
         $primeraLinea = $archivoImportar->readLine();
         // Pongo los títulos con la primera letra en mayúscula y le doy
         // la vuelta al array
         $titulos = $primeraLinea;
         foreach ($titulos as $key => $value) {
             $titulos[$key] = ucwords(trim($value));
         }
         $titulos = array_flip($titulos);
         while (($linea = $archivoImportar->readLine()) !== FALSE) {
             $fila++;
             $lineaInventario = new InventariosLineas();
             $lineaInventario->setIDInventario($this->request['InventariosCab']['IDInventario']);
             // Buscar el id del articulo a partir del codigo
             $articulo = new Articulos();
             $articulo = $articulo->find("Codigo", trim($linea[$titulos['Codigo']]));
             $lineaInventario->setIDArticulo($articulo->getIDArticulo());
             // Buscar el id del lote a partir del nombre de lote
             $nombreLote = trim($linea[$titulos['Lote']]);
             $lote = new Lotes();
             $rows = $lote->cargaCondicion("IDLote", "IDArticulo='{$articulo->getIDArticulo()}' and Lote='" . $nombreLote . "'");
             $idLote = $rows[0]['IDLote'];
             // Si no existe el lote, lo creo.
             if ($idLote == '' and $nombreLote != '') {
                 $lote->setIDArticulo($articulo->getIDArticulo());
                 $lote->setLote($nombreLote);
                 $idLote = $lote->create();
             }
             $lineaInventario->setIDLote($idLote);
             // Buscar la id de la ubicacion del almacen en curso
             $ubicacion = new AlmacenesMapas();
             $rows = $ubicacion->cargaCondicion("IDUbicacion", "IDAlmacen='{$this->request['InventariosCab']['IDAlmacen']}' and Ubicacion='" . trim($linea[$titulos['Ubicacion']]) . "'");
             $lineaInventario->setIDUbicacion($rows[0]['IDUbicacion']);
             // A los valores numéricos les cambio la coma decimal por el punto
             $lineaInventario->setStock(str_replace(",", ".", $linea[$titulos['Stock']]));
             $lineaInventario->setCajas(str_replace(",", ".", $linea[$titulos['Cajas']]));
             $lineaInventario->validaLogico();
             if (count($lineaInventario->getErrores()) == 0) {
                 $lineaInventario->create();
                 $cargados++;
             } else {
                 // Si hay errores de validacion muestro la linea y los errores
                 $fallidos++;
                 $archivoLog->writeLine("Error en línea: " . $fila);
                 foreach ($linea as $key => $value) {
                     $string = "\t" . $primeraLinea[$key] . " : " . $value;
                     $archivoLog->writeLine($string);
                 }
                 foreach ($lineaInventario->getErrores() as $error) {
                     $archivoLog->writeLine("\t* " . $error);
                 }
             }
         }
         $archivoLog->writeLine("" . str_repeat("-", 50));
         $archivoLog->writeLine("Total registros   : " . ($fila - 1));
         $archivoLog->writeLine("Registros cargados: " . $cargados);
         $archivoLog->writeLine("Registros fallidos: " . $fallidos);
         $archivoImportar->close();
         $archivoLog->close();
         unset($archivoLog);
     } else {
         $resultado[] = "El archivo de importación no existe";
     }
     unset($archivoImportar);
     return $pathArchivoLog;
 }
Ejemplo n.º 11
0
 /**
  * Activa o desactiva el modo debuger de Twig
  * 
  * Para activar: Index/Debuger/true
  * Para desactivar: Index/Debuger/false
  * 
  * @return void
  */
 public function DebugerAction()
 {
     $fileConfig = 'config/config.yml';
     $array = sfYaml::load($fileConfig);
     $array['config']['twig']['debug_mode'] = $this->request[2] == 'true' ? true : false;
     $yml = sfYaml::dump($array, 4);
     $archivo = new Archivo($fileConfig);
     $archivo->write($yml);
     $archivo->close();
     echo "Modo debuger Twig: ", $array['config']['twig']['debug_mode'], "----";
     return $this->IndexAction();
 }
 private function leeCsv($file)
 {
     $archivo = new Archivo($file);
     $archivo->setColumnsDelimiter(";");
     $archivo->setColumnsEnclosure("\"");
     $array = array();
     if ($archivo->open()) {
         // Leer la cabecera
         $titulos = $archivo->readLine();
         // Leer el contenido
         $i = -1;
         while ($row = $archivo->readLine()) {
             $i++;
             foreach ($titulos as $key => $titulo) {
                 $array[$i][$titulo] = $row[$key];
             }
         }
         $archivo->close();
     } else {
         echo "No he podido leer {$file}";
     }
     unset($archivo);
     return $array;
 }