. * */ 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); } } ?>