. * */ 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 'Articulo':return $this->formularioArticulo(); case 'Total':return $this->inventarioTotal(); } } private function listarUbicacion() { $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 . "';"; $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); 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); echo ''; } } private function listarArticulo() { $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 . "';"; $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); 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); echo ''; } //header('Location: index.php'); } private function listaUbicaciones() { $salida = "\n"; return $salida; } private function listaArticulos() { $salida = "\n"; return $salida; } private function formulario($accion, $etiqueta, $lista) { $salida = '
' . "\n"; 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() { $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()) { //$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); } $nombre = "tmp/total.pdf"; $informe->cierraPDF(); $informe->imprimeInforme(); } } ?>