. */ class InformeInventario { private $bdd; public function __construct($baseDatos) { $this->bdd = $baseDatos; } public function ejecuta() { $opc = $_GET['opc']; switch ($opc) { case 'Ubicacion':return $this->formularioUbicacion(); case 'listarUbicacion':return $this->listarUbicacion(); case 'listarArticulo':return $this->listarArticulo(); case 'listarTotal': return $this->listarTotal(); case 'Articulo':return $this->formularioArticulo(); case 'Total':return $this->inventarioTotal(); case 'descuadres': return $this->inventarioDescuadres(); } } private function inventarioDescuadres() { $enlace = 'xml/informeDescuadres.xml'; $informe = new InformePDF($this->bdd, $enlace, true); $informe->crea($enlace); $informe->cierraPDF(); return $this->devuelveInforme($informe); } private function devuelveInforme($informe) { $letras = 'abcefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'; $nombre = TMP.'/informe'.substr(str_shuffle($letras), 0, 10).'.pdf'; $informe->guardaArchivo($nombre); return '
'; } private function listarUbicacion() { $salidaInforme = isset($_POST['salida']) ? $_POST['salida'] : 'pantalla'; switch ($salidaInforme) { case 'pantalla': $fichero = 'xml/inventarioUbicacion.xml'; $salida = TMP.'/inventarioUbicacion.xml'; break; case 'csv': $fichero = 'xml/inventarioUbicacionCSV.xml'; $salida = TMP.'/inventarioUbicacionCSV.xml'; break; case 'etiquetas': $fichero = 'xml/inventarioUbicacionEtiquetas.xml'; $salida = TMP.'/inventarioUbicacionEtiquetas.xml'; break; } $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."';"; $resultado = $this->bdd->ejecuta($comando); if (!$resultado) { return $this->bdd->mensajeError($comando); } $fila = $this->bdd->procesaResultado(); $plantilla = str_replace('{id}', $id, $plantilla); $plantilla = str_replace('{Descripcion}', $fila['Descripcion'], $plantilla); file_put_contents($salida, $plantilla) or die('Fallo en la escritura de la plantilla '.$salida); switch ($salidaInforme) { case 'pantalla': $informe = new InformePDF($this->bdd, $salida, true); $informe->crea($salida); $informe->cierraPDF(); return $this->devuelveInforme($informe); case 'csv': //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); echo ''; break; case 'etiquetas': $etiquetas = new EtiquetasPDF($this->bdd, $salida, true); $etiquetas->crea($salida); $etiquetas->cierraPDF(); return $this->devuelveInforme($etiquetas); } } private function listarArticulo() { $salidaInforme = isset($_POST['salida']) ? $_POST['salida'] : 'pantalla'; switch ($salidaInforme) { case 'pantalla': $fichero = 'xml/inventarioArticulo.xml'; $salida = TMP.'/inventarioArticulo.xml'; break; case 'csv': $fichero = 'xml/inventarioArticuloCSV.xml'; $salida = TMP.'/inventarioArticuloCSV.xml'; break; case 'etiquetas': $fichero = 'xml/inventarioArticuloEtiquetas.xml'; $salida = TMP.'/inventarioArticuloEtiquetas.xml'; break; } $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."';"; $resultado = $this->bdd->ejecuta($comando); if (!$resultado) { return $this->bdd->mensajeError($comando); } $fila = $this->bdd->procesaResultado(); $plantilla = str_replace('{id}', $id, $plantilla); $plantilla = str_replace('{Descripcion}', $fila['descripcion'], $plantilla); $plantilla = str_replace('{Marca}', $fila['marca'], $plantilla); $plantilla = str_replace('{Modelo}', $fila['modelo'], $plantilla); file_put_contents($salida, $plantilla) or die('Fallo en la escritura de la plantilla '.$salida); switch ($salidaInforme) { case 'pantalla': $informe = new InformePDF($this->bdd, $salida, true); $informe->crea($salida); $informe->cierraPDF(); return $this->devuelveInforme($informe); case 'csv': //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); echo ''; break; case 'etiquetas': $etiquetas = new EtiquetasPDF($this->bdd, $salida, true); $etiquetas->crea($salida); $etiquetas->cierraPDF(); return $this->devuelveInforme($etiquetas); } } private function listaUbicaciones() { $salida = "\n"; return $salida; } private function listaArticulos() { $salida = "\n"; return $salida; } private function formulario($accion, $etiqueta, $lista) { $salida = '
'."\n"; $salida .= "

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

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

"; $salida .= '

'; $salida .= '
'; $salida .= '
'; $salida .= '

'; $salida .= '


'."\n"; $salida .= ""; return $salida; } private function formularioUbicacion() { //Genera un formulario con las ubicaciones disponibles. $accion = 'index.php?informeInventario&opc=listarUbicacion'; return $this->formulario($accion, 'Ubicación', $this->listaUbicaciones()); } private function formularioArticulo() { $accion = 'index.php?informeInventario&opc=listarArticulo'; return $this->formulario($accion, 'Artículo', $this->listaArticulos()); } private function inventarioTotal() { return $this->dialogo(); } private function dialogo() { $dialogo = '

Inventario Total

¿Desea obtener el inventario de todo el centro?

Volver Continuar

'; return $dialogo; } private function listarTotal() { $fichero = 'xml/inventarioUbicacion.xml'; $salida = TMP.'/inventarioUbicacion.xml'; $comando = 'select * from Ubicaciones ;'; $resultado = $this->bdd->ejecuta($comando); if (!$resultado) { return $this->bdd->mensajeError($comando); } //Utiliza un nuevo manejador de base de datos para poder hacer una consulta en los informes $bdatos = new Sql(SERVIDOR, USUARIO, CLAVE, BASEDATOS); $primero = true; while ($fila = $this->bdd->procesaResultado()) { $plantilla = file_get_contents($fichero) or die('Fallo en la apertura de la plantilla '.$fichero); $plantilla = str_replace('{id}', $fila['id'], $plantilla); $plantilla = str_replace('{Descripcion}', $fila['Descripcion'], $plantilla); file_put_contents($salida, $plantilla) or die('Fallo en la escritura de la plantilla '.$salida); if ($primero) { $primero = false; $informe = new InformePDF($bdatos, $salida, true); } $informe->crea($salida); } $informe->cierraPDF(); return $this->devuelveInforme($informe); } }