diff --git a/AportaContenido.php b/AportaContenido.php index d6b1be4..47555b9 100644 --- a/AportaContenido.php +++ b/AportaContenido.php @@ -134,7 +134,7 @@ class AportaContenido { if ($this->usuario_inc) { $salida.=USUARIO_INCORRECTO; } - $salida.=MENSAJE_DEMO; + //$salida.=MENSAJE_DEMO; return $salida; } case 'opcion': @@ -154,6 +154,7 @@ class AportaContenido { return 'Configuración y Preferencias.'; case 'informeInventario':return "Informe de Inventario"; case 'descuadres':return 'Informe de descuadres'; + case 'importacion': return 'Importación de datos'; } return ''; case 'control': @@ -201,7 +202,7 @@ class AportaContenido { $conf = new Configuracion(); return $conf->ejecuta(); } else { - return $this->mensajePermisos('Configuracion'); + return $this->mensajePermisos('Configuración'); } case 'informeInventario': if ($this->perfil['Informe']) { @@ -221,6 +222,13 @@ class AportaContenido { } else { return $this->mensajePermisos('Informes'); } + case 'importacion': + if ($this->perfil['Modificacion'] && $this->perfil['Borrado']) { + $import = new Importacion($this->bdd, $this->registrado); + return $import->ejecuta(); + } else { + return $this->mensajePermisos("Actualización, creación y borrado de elementos"); + } } // Fin del contenido case 'usuario_incorrecto': $this->usuario_inc = true; diff --git a/Importacion.php b/Importacion.php new file mode 100644 index 0000000..dd7cd5a --- /dev/null +++ b/Importacion.php @@ -0,0 +1,60 @@ +. + * + */ +class Importacion { + + private $bdd; + + public function __construct($baseDatos, $registrado) { + if (!$registrado) { + return 'Debe registrarse para acceder a este apartado'; + } + $this->bdd = $baseDatos; + } + + public function ejecuta() { + $opc = $_GET['opc']; + switch ($opc) { + case 'form':return $this->formulario(); + case 'importar':return $this->importarFichero(); + } + } + + private function importarFichero() { + $uploadfile = "tmp/" . basename($_FILES['fichero']['name']); + if (!move_uploaded_file($_FILES['fichero']['tmp_name'], $uploadfile)) { + die('No se pudo subir el fichero ' . $_FILES['userfile']['tmp_name']); + } + $csv = new Csv($this->bdd); + return $csv->cargaCSV($uploadfile); + } + + private function formulario() { + $accion = "index.php?importacion&opc=importar"; + $salida = '
' . "\n"; + $salida.="

Elige Archivo\n"; + $salida.= ''; + $salida.='


' . "\n"; + return $salida; + } +} + +?> diff --git a/InformeInventario.php b/InformeInventario.php index 391774c..7eeddbd 100644 --- a/InformeInventario.php +++ b/InformeInventario.php @@ -39,8 +39,14 @@ class InformeInventario { } private function listarUbicacion() { - $fichero = "xml/inventarioUbicacion.xml"; - $salida = "tmp/inventarioUbicacion.xml"; + $salidaInforme = isset($_POST['salida']) ? $_POST['salida'] : 'pantalla'; + if ($salidaInforme == "pantalla") { + $fichero = "xml/inventarioUbicacion.xml"; + $salida = "tmp/inventarioUbicacion.xml"; + } else { + $fichero = "xml/inventarioUbicacionCSV.xml"; + $salida = "tmp/inventarioUbicacionCSV.xml"; + } $plantilla = file_get_contents($fichero) or die('Fallo en la apertura de la plantilla ' . $fichero); $id = $_POST['id'] == NULL ? $_GET['id'] : $_POST['id']; $comando = "select * from Ubicaciones where id='" . $id . "';"; @@ -52,16 +58,32 @@ class InformeInventario { $plantilla = str_replace("{id}", $id, $plantilla); $plantilla = str_replace("{Descripcion}", utf8_encode($fila['Descripcion']), $plantilla); file_put_contents($salida, $plantilla) or die('Fallo en la escritura de la plantilla ' . $salida); - $informe = new InformePDF($this->bdd, $salida, true); - $informe->crea($salida); - $informe->cierraPDF(); - $informe->guardaArchivo("tmp/Informe.pdf"); - echo ''; + if ($salidaInforme == "pantalla") { + $informe = new InformePDF($this->bdd, $salida, true); + $informe->crea($salida); + $informe->cierraPDF(); + $informe->guardaArchivo("tmp/Informe.pdf"); + echo ''; + } else { + //Genera una hoja de cálculo en formato csv + $nombre = "tmp/Ubicacion" . strftime("%Y%m%d") . rand(100, 999) . ".csv"; + $hoja = new Csv($this->bdd); + $hoja->crea($nombre); + $hoja->ejecutaConsulta($salida); + $hoja->cierra(); + echo ''; + } } private function listarArticulo() { - $fichero = "xml/inventarioArticulo.xml"; - $salida = "tmp/inventarioArticulo.xml"; + $salidaInforme = isset($_POST['salida']) ? $_POST['salida'] : 'pantalla'; + if ($salidaInforme == "pantalla") { + $fichero = "xml/inventarioArticulo.xml"; + $salida = "tmp/inventarioArticulo.xml"; + } else { + $fichero = "xml/inventarioArticuloCSV.xml"; + $salida = "tmp/inventarioArticuloCSV.xml"; + } $plantilla = file_get_contents($fichero) or die('Fallo en la apertura de la plantilla ' . $fichero); $id = $_POST['id'] == NULL ? $_GET['id'] : $_POST['id']; $comando = "select * from Articulos where id='" . $id . "';"; @@ -75,11 +97,21 @@ class InformeInventario { $plantilla = str_replace("{Marca}", utf8_encode($fila['marca']), $plantilla); $plantilla = str_replace("{Modelo}", utf8_encode($fila['modelo']), $plantilla); file_put_contents($salida, $plantilla) or die('Fallo en la escritura de la plantilla ' . $salida); - $informe = new InformePDF($this->bdd, $salida, true); - $informe->crea($salida); - $informe->cierraPDF(); - $informe->guardaArchivo("tmp/Informe.pdf"); - echo ''; + if ($salidaInforme == "pantalla") { + $informe = new InformePDF($this->bdd, $salida, true); + $informe->crea($salida); + $informe->cierraPDF(); + $informe->guardaArchivo("tmp/Informe.pdf"); + echo ''; + } else { + //Genera una hoja de cálculo en formato csv + $nombre = "tmp/Articulo" . strftime("%Y%m%d") . rand(100, 999) . ".csv"; + $hoja = new Csv($this->bdd); + $hoja->crea($nombre); + $hoja->ejecutaConsulta($salida); + $hoja->cierra(); + echo ''; + } } private function listaUbicaciones() { @@ -111,10 +143,13 @@ class InformeInventario { } private function formulario($accion, $etiqueta, $lista) { - $salida = '' . "\n"; + $salida = '' . "\n"; $salida.="

Elige $etiqueta\n"; $salida.="

"; $salida.=$lista; + $salida.="

Salida del informe por: Pantalla "; + $salida.=''; + $salida.=' Hoja de cálculo '; $salida.="

"; $salida.='


' . "\n"; return $salida; diff --git a/Mantenimiento.php b/Mantenimiento.php index 1c81eb1..8d342df 100644 --- a/Mantenimiento.php +++ b/Mantenimiento.php @@ -150,7 +150,7 @@ class Mantenimiento { } } $this->campoBusca = $dato[1]; - $valor = '' . $valor; + $valor = '' . $valor; } $salida.="$valor\n"; } diff --git a/Menu.php b/Menu.php index ee82a63..6369e9a 100644 --- a/Menu.php +++ b/Menu.php @@ -29,10 +29,10 @@ class Menu { // Obtenemos la lista de pares Opción|Enlace $elementos=explode("\n", $contenido); foreach($elementos as $elemento) { - list($tipo, $opcion, $enlace, $destino)=explode('|', $elemento); + list($tipo, $opcion, $enlace, $destino, $titulo)=explode('|', $elemento); // Los guardamos en la matriz de opciones if ($tipo) - $this->opciones[]=$tipo.",".$opcion.",".$enlace.",".$destino; + $this->opciones[]=$tipo.",".$opcion.",".$enlace.",".$destino.",".$titulo; } } public function insertaMenu() @@ -40,9 +40,9 @@ class Menu { $salida=""; reset($this->opciones); foreach($this->opciones as $opcion) { - list($tipo,$opcion,$enlace,$destino)=explode(",",$opcion); + list($tipo,$opcion,$enlace,$destino,$titulo)=explode(",",$opcion); if ($tipo==2) - $salida.=''.$opcion.'
'; + $salida.=''.$opcion.'
'; else $salida.='
'; } diff --git a/inc/inventario.menu b/inc/inventario.menu index 0c51600..f8d31e5 100644 --- a/inc/inventario.menu +++ b/inc/inventario.menu @@ -1,12 +1,13 @@ 1|Maestros| -2|Ubicaciones|index.php?ubicaciones&opc=inicial|_self -2|Artículos|index.php?articulos&opc=inicial|_self -2|Elementos|index.php?elementos&opc=inicial&orden=ubicacion&sentido=asc|_self -2|Usuarios|index.php?usuarios&opc=inicial|_self +2|Ubicaciones|index.php?ubicaciones&opc=inicial|_self|Ubicaciones del centro +2|Artículos|index.php?articulos&opc=inicial|_self|Artículos inventariados +2|Elementos|index.php?elementos&opc=inicial&orden=ubicacion&sentido=asc|_self|Artículos distribuidos en las ubicaciones +2|Usuarios|index.php?usuarios&opc=inicial|_self|Usuarios autorizados a utilizar la aplicación 1|Inventario| -2|Ubicación|index.php?informeInventario&opc=Ubicacion|_self -2|Artículo|index.php?informeInventario&opc=Articulo|_self -2|Total|index.php?informeInventario&opc=Total|_blank -2|Descuadres|index.php?descuadres|_blank +2|Ubicación|index.php?informeInventario&opc=Ubicacion|_self|Inventario de una ubicación +2|Artículo|index.php?informeInventario&opc=Articulo|_self|Inventario de un Artículo +2|Total|index.php?informeInventario&opc=Total|_blank|Inventario de todas las ubicaciones +2|Descuadres|index.php?descuadres|_blank|Diferencias entre artículos y elementos 1|Varios| -2|Configuración|index.php?configuracion|_self +2|Configuración|index.php?configuracion|_self|Opciones configurables de la aplicación +2|Importación|index.php?importacion&opc=form|_self|Importa datos de una hoja de cálculo \ No newline at end of file diff --git a/xml/inventarioArticulo.xml b/xml/inventarioArticulo.xml index 508553e..8352caf 100644 --- a/xml/inventarioArticulo.xml +++ b/xml/inventarioArticulo.xml @@ -3,8 +3,8 @@ - select A.id as id,U.Descripcion as ubicacion,E.fechaCompra as fechaCompra, - E.numSerie as numserie,E.Cantidad as cantidad + select A.id as id,U.Descripcion as ubicacion,E.numserie as numserie, + E.fechaCompra as fechaCompra,E.Cantidad as cantidad from Elementos E, Articulos A, Ubicaciones U where A.id=E.id_Articulo and U.id=E.id_Ubicacion and A.id='{id}' order by U.Descripcion,numserie; diff --git a/xml/inventarioArticuloCSV.xml b/xml/inventarioArticuloCSV.xml new file mode 100644 index 0000000..cc0c9d3 --- /dev/null +++ b/xml/inventarioArticuloCSV.xml @@ -0,0 +1,23 @@ + + + + + + select A.id as id,E.id as idEl, U.id as idUb,U.Descripcion as ubicacion,E.numserie as numserie, + E.fechaCompra as fechaCompra,E.Cantidad as cantidad + from Elementos E, Articulos A, Ubicaciones U where A.id=E.id_Articulo and U.id=E.id_Ubicacion + and A.id='{id}' order by U.Descripcion,numserie; + + + + Inventario de Articulo + + + + + + + + + + diff --git a/xml/inventarioUbicacionCSV.xml b/xml/inventarioUbicacionCSV.xml new file mode 100644 index 0000000..d385dd1 --- /dev/null +++ b/xml/inventarioUbicacionCSV.xml @@ -0,0 +1,25 @@ + + + + + + select A.id as id,E.id as idEl,A.Marca as marca,A.Modelo as modelo,E.numSerie as numserie, + E.fechaCompra as fechaCompra,A.Descripcion as descripcion,E.Cantidad as cantidad + from Elementos E, Articulos A, Ubicaciones U where A.id=E.id_Articulo and U.id=E.id_Ubicacion + and U.id='{id}' order by A.descripcion; + + + + Inventario de Ubicacion + + + + + + + + + + + + \ No newline at end of file