-Los informes aparecen ahora en la pantalla de la aplicación embebidos.

-Añadido un calendario al pulsar sobre la fecha en la cabecera de la aplicación.
-Corregido pequeño problema de margen en resoluciones pequeñas donde se solapaba parte del menú.
-Quitados los logos de GPLv3, MySQL y Apache
-Inventario.php llama al instalador si la aplicación no está instalada
This commit is contained in:
rmontanana
2014-04-07 22:56:09 +02:00
parent 1a5266d201
commit 911af4825f
8 changed files with 100 additions and 81 deletions

View File

@@ -149,7 +149,19 @@ class AportaContenido {
return "Usuario=$this->usuario"; return "Usuario=$this->usuario";
else else
return ''; return '';
case 'fecha': return $this->fechaActual(); case 'fecha':
$script = '<script type="text/javascript">
$(function () {
$(' . "'#fechaCabecera'" . ").datetimepicker({
pick12HourFormat: false,
language: 'es',
pickTime: false
});
});
</script>";
$campo = '<input type="hidden" name="fechaCabecera" id="fechaCabecera" value="'.$this->fechaActual("%d/%m/%Y").'">';
$etiqueta = '<label for="fechaCabecera" onClick="$(' . "'#fechaCabecera'" . ").data('DateTimePicker').show();" . '">' . $this->fechaActual() . '</label>';
return $etiqueta . $campo . $script;
case 'aplicacion': return PROGRAMA." v".VERSION; case 'aplicacion': return PROGRAMA." v".VERSION;
case 'menu': // el menú case 'menu': // el menú
if ($this->registrado) { if ($this->registrado) {
@@ -199,10 +211,14 @@ class AportaContenido {
// } // }
list($opcion, $parametro) = explode("&", $this->opcionActual); list($opcion, $parametro) = explode("&", $this->opcionActual);
switch ($opcion) { switch ($opcion) {
case 'bienvenido':
$mensaje = '<div class="alert alert-success">';
$mensaje .= 'Bienvenid@ ' . $this->usuario . '</div>';
case 'principal': // contenido inicial case 'principal': // contenido inicial
$creditos = "$('#creditos').modal({keyboard: false});"; $creditos = "$('#creditos').modal({keyboard: false});";
return '<br><br><center><img src="img/logo.png" alt="' . PROGRAMA . '" onClick="' . $creditos . '" >' . return $mensaje . '<br><br><center><img src="img/logo.png" alt="' . PROGRAMA . '" onClick="' . $creditos . '" >' .
'<br><label>' . CENTRO . '</label></center><br><br>' . PIE . CREDITOS; '<br><br><label onClick="'.$creditos.'">' . CENTRO . '</label></center><br><br>' . CREDITOS;
case 'articulos': case 'articulos':
case 'ubicaciones': case 'ubicaciones':
case 'test': case 'test':
@@ -266,12 +282,6 @@ class AportaContenido {
} else { } else {
return $this->mensajePermisos('Usuarios'); return $this->mensajePermisos('Usuarios');
} }
case 'bienvenido': // El usuario quiere iniciar sesión
$mensaje = '<div class="alert alert-success">';
$mensaje .= 'Bienvenid@ ' . $this->usuario . '</div><br><br><center><img src="img/codigoBarras.png" alt="' . PROGRAMA . '">' .
'<br><label>' . CENTRO . '</label></center><br><br>' . PIE;;
return $mensaje;
case 'configuracion': case 'configuracion':
if ($this->perfil['Config']) { if ($this->perfil['Config']) {
$conf = new Configuracion(); $conf = new Configuracion();
@@ -286,17 +296,17 @@ class AportaContenido {
} else { } else {
return $this->mensajePermisos('Informes'); return $this->mensajePermisos('Informes');
} }
case 'descuadres': // case 'descuadres':
if ($this->perfil['Informe']) { // if ($this->perfil['Informe']) {
$enlace = 'xml/informe' . ucfirst($opcion) . '.xml'; // $enlace = 'xml/informe' . ucfirst($opcion) . '.xml';
$informe = new InformePDF($this->bdd, $enlace, $this->registrado); // $informe = new InformePDF($this->bdd, $enlace, $this->registrado);
$informe->crea($enlace); // $informe->crea($enlace);
$informe->cierraPDF(); // $informe->cierraPDF();
$informe->imprimeInforme(); // $informe->imprimeInforme();
return; // return;
} else { // } else {
return $this->mensajePermisos('Informes'); // return $this->mensajePermisos('Informes');
} // }
case 'importacion': case 'importacion':
if ($this->perfil['Modificacion'] && $this->perfil['Borrado']) { if ($this->perfil['Modificacion'] && $this->perfil['Borrado']) {
$import = new Importacion($this->bdd, $this->registrado); $import = new Importacion($this->bdd, $this->registrado);

View File

@@ -1,5 +1,10 @@
Versión 1.08 07-04-2014
-Los informes aparecen ahora en la pantalla de la aplicación embebidos.
-Añadido un calendario al pulsar sobre la fecha en la cabecera de la aplicación.
-Corregido pequeño problema de margen en resoluciones pequeñas donde se solapaba parte del menú.
-Quitados los logos de GPLv3, MySQL y Apache
-Inventario.php llama al instalador si la aplicación no está instalada -Inventario.php llama al instalador si la aplicación no está instalada
-Añadido dialogo modal de Créditos cuando se pulsa sobre el gráfico de código de barras de la aplicación -Añadido dialogo modal de Créditos cuando se pulsa sobre el gráfico de código de barras de la aplicación o sobre el nombre del centro
-Quitados los usuarios de ejemplo en el archivo setup.sql -Quitados los usuarios de ejemplo en el archivo setup.sql
-Creado el programa instalar.php que permitirá configurar el acceso a la base de datos, comprobar la configuración del servidor y la creación del usuario administrador -Creado el programa instalar.php que permitirá configurar el acceso a la base de datos, comprobar la configuración del servidor y la creación del usuario administrador
-Añadido un parámetro en el archivo configuracion.inc que permite o no ejecutar el programa instalar.php -Añadido un parámetro en el archivo configuracion.inc que permite o no ejecutar el programa instalar.php

View File

@@ -23,11 +23,13 @@ class InformeInventario {
private $bdd; private $bdd;
public function __construct($baseDatos) { public function __construct($baseDatos)
{
$this->bdd = $baseDatos; $this->bdd = $baseDatos;
} }
public function ejecuta() { public function ejecuta()
{
$opc = $_GET['opc']; $opc = $_GET['opc'];
switch ($opc) { switch ($opc) {
case 'Ubicacion':return $this->formularioUbicacion(); case 'Ubicacion':return $this->formularioUbicacion();
@@ -35,10 +37,33 @@ class InformeInventario {
case 'listarArticulo':return $this->listarArticulo(); case 'listarArticulo':return $this->listarArticulo();
case 'Articulo':return $this->formularioArticulo(); case 'Articulo':return $this->formularioArticulo();
case 'Total':return $this->inventarioTotal(); case 'Total':return $this->inventarioTotal();
case 'descuadres': return $this->inventarioDescuadres();
} }
} }
private function listarUbicacion() { 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 '<div class="container">
<!--<a href="' . $nombre . '" target="_blank"><span class="glyphicon glyphicon-cloud-download" style="font-size:1.5em;"></span>Descargar Informe</a>-->
<object data="' . $nombre . '" type="application/pdf" width="100%" height="700" style="float:left;">
</object>
</div>';
}
private function listarUbicacion()
{
$salidaInforme = isset($_POST['salida']) ? $_POST['salida'] : 'pantalla'; $salidaInforme = isset($_POST['salida']) ? $_POST['salida'] : 'pantalla';
switch ($salidaInforme) { switch ($salidaInforme) {
case "pantalla": case "pantalla":
@@ -70,8 +95,9 @@ class InformeInventario {
$informe = new InformePDF($this->bdd, $salida, true); $informe = new InformePDF($this->bdd, $salida, true);
$informe->crea($salida); $informe->crea($salida);
$informe->cierraPDF(); $informe->cierraPDF();
$informe->guardaArchivo("tmp/Informe.pdf"); return $this->devuelveInforme($informe);
echo '<script type="text/javascript"> window.open( "tmp/Informe.pdf" ) </script>'; // $informe->guardaArchivo("tmp/Informe.pdf");
// echo '<script type="text/javascript"> window.open( "tmp/Informe.pdf" ) </script>';
break; break;
case "csv": case "csv":
//Genera una hoja de cálculo en formato csv //Genera una hoja de cálculo en formato csv
@@ -85,13 +111,15 @@ class InformeInventario {
$etiquetas = new EtiquetasPDF($this->bdd, $salida, true); $etiquetas = new EtiquetasPDF($this->bdd, $salida, true);
$etiquetas->crea($salida); $etiquetas->crea($salida);
$etiquetas->cierraPDF(); $etiquetas->cierraPDF();
$etiquetas->guardaArchivo("tmp/EtiquetasUbicacion.pdf"); return $this->devuelveInforme($etiquetas);
echo '<script type="text/javascript"> window.open( "tmp/EtiquetasUbicacion.pdf" ) </script>'; // $etiquetas->guardaArchivo("tmp/EtiquetasUbicacion.pdf");
// echo '<script type="text/javascript"> window.open( "tmp/EtiquetasUbicacion.pdf" ) </script>';
break; break;
} }
} }
private function listarArticulo() { private function listarArticulo()
{
$salidaInforme = isset($_POST['salida']) ? $_POST['salida'] : 'pantalla'; $salidaInforme = isset($_POST['salida']) ? $_POST['salida'] : 'pantalla';
switch ($salidaInforme) { switch ($salidaInforme) {
case "pantalla": case "pantalla":
@@ -125,9 +153,9 @@ class InformeInventario {
$informe = new InformePDF($this->bdd, $salida, true); $informe = new InformePDF($this->bdd, $salida, true);
$informe->crea($salida); $informe->crea($salida);
$informe->cierraPDF(); $informe->cierraPDF();
$informe->guardaArchivo("tmp/Informe.pdf"); return $this->devuelveInforme($informe);
echo '<script type="text/javascript"> window.open( "tmp/Informe.pdf" ) </script>'; // $informe->guardaArchivo("tmp/Informe.pdf");
break; // echo '<script type="text/javascript"> window.open( "tmp/Informe.pdf" ) </script>';
case "csv": case "csv":
//Genera una hoja de cálculo en formato csv //Genera una hoja de cálculo en formato csv
$nombre = "tmp/Articulo" . strftime("%Y%m%d") . rand(100, 999) . ".csv"; $nombre = "tmp/Articulo" . strftime("%Y%m%d") . rand(100, 999) . ".csv";
@@ -140,13 +168,14 @@ class InformeInventario {
$etiquetas = new EtiquetasPDF($this->bdd, $salida, true); $etiquetas = new EtiquetasPDF($this->bdd, $salida, true);
$etiquetas->crea($salida); $etiquetas->crea($salida);
$etiquetas->cierraPDF(); $etiquetas->cierraPDF();
$etiquetas->guardaArchivo("tmp/EtiquetasArticulo.pdf"); return $this->devuelveInforme($etiquetas);
echo '<script type="text/javascript"> window.open( "tmp/EtiquetasArticulo.pdf" ) </script>'; // $etiquetas->guardaArchivo("tmp/EtiquetasArticulo.pdf");
break; // echo '<script type="text/javascript"> window.open( "tmp/EtiquetasArticulo.pdf" ) </script>';
} }
} }
private function listaUbicaciones() { private function listaUbicaciones()
{
$salida = "<select class=\"selectpicker show-tick\" name=\"id\" data-live-search=\"true\" data-width=\"auto\">\n"; $salida = "<select class=\"selectpicker show-tick\" name=\"id\" data-live-search=\"true\" data-width=\"auto\">\n";
$comando = "select * from Ubicaciones order by Descripcion"; $comando = "select * from Ubicaciones order by Descripcion";
$resultado = $this->bdd->ejecuta($comando); $resultado = $this->bdd->ejecuta($comando);
@@ -160,7 +189,8 @@ class InformeInventario {
return $salida; return $salida;
} }
private function listaArticulos() { private function listaArticulos()
{
$salida = "<select class=\"selectpicker show-tick\" name=\"id\" data-live-search=\"true\" data-width=\"auto\">\n"; $salida = "<select class=\"selectpicker show-tick\" name=\"id\" data-live-search=\"true\" data-width=\"auto\">\n";
$comando = "select * from Articulos order by descripcion, marca, modelo"; $comando = "select * from Articulos order by descripcion, marca, modelo";
$resultado = $this->bdd->ejecuta($comando); $resultado = $this->bdd->ejecuta($comando);
@@ -174,8 +204,9 @@ class InformeInventario {
return $salida; return $salida;
} }
private function formulario($accion, $etiqueta, $lista) { private function formulario($accion, $etiqueta, $lista)
$salida ='<div class="col-sm-6 col-md-6"><form name="informeInventario.form" method="post" action="' . $accion . '">' . "\n"; {
$salida = '<div class="col-sm-6 col-md-6"><form name="informeInventario.form" method="post" action="' . $accion . '">' . "\n";
$salida.="<fieldset style=\"width: 96%;\"><p><legend style=\"color: red;\"><b>Elige $etiqueta</b></legend>\n"; $salida.="<fieldset style=\"width: 96%;\"><p><legend style=\"color: red;\"><b>Elige $etiqueta</b></legend>\n";
$salida.="<br><br><label>$etiqueta </label>"; $salida.="<br><br><label>$etiqueta </label>";
$salida.=$lista; $salida.=$lista;
@@ -190,18 +221,21 @@ class InformeInventario {
return $salida; return $salida;
} }
private function formularioUbicacion() { private function formularioUbicacion()
{
//Genera un formulario con las ubicaciones disponibles. //Genera un formulario con las ubicaciones disponibles.
$accion = "index.php?informeInventario&opc=listarUbicacion"; $accion = "index.php?informeInventario&opc=listarUbicacion";
return $this->formulario($accion, 'Ubicaci&oacute;n', $this->listaUbicaciones()); return $this->formulario($accion, 'Ubicaci&oacute;n', $this->listaUbicaciones());
} }
private function formularioArticulo() { private function formularioArticulo()
{
$accion = "index.php?informeInventario&opc=listarArticulo"; $accion = "index.php?informeInventario&opc=listarArticulo";
return $this->formulario($accion, 'Art&iacute;culo', $this->listaArticulos()); return $this->formulario($accion, 'Art&iacute;culo', $this->listaArticulos());
} }
private function inventarioTotal() { private function inventarioTotal()
{
$fichero = "xml/inventarioUbicacion.xml"; $fichero = "xml/inventarioUbicacion.xml";
$salida = "tmp/inventarioUbicacion.xml"; $salida = "tmp/inventarioUbicacion.xml";
$comando = "select * from Ubicaciones ;"; $comando = "select * from Ubicaciones ;";
@@ -226,8 +260,10 @@ class InformeInventario {
} }
$nombre = "tmp/total.pdf"; $nombre = "tmp/total.pdf";
$informe->cierraPDF(); $informe->cierraPDF();
$informe->imprimeInforme(); return $this->devuelveInforme($informe);
//$informe->imprimeInforme();
} }
} }
?> ?>

View File

@@ -284,37 +284,6 @@ class Instalar {
//Pasa al paso siguiente //Pasa al paso siguiente
return $this->paso2(); return $this->paso2();
} }
/*$conf = new Configuracion();
$fichero = $conf->obtieneFichero();
$datos = explode("\n", $fichero);
if ($grabar) {
$fsalida = @fopen(CONFIGTMP, "wb");
}
foreach ($datos as $linea) {
if (stripos($linea, "DEFINE") !== false) {
$conf->obtieneDatos($linea, $clave, $valor);
if (stripos($campos, $clave) !== false) {
if ($grabar) {
$linea = str_replace($valor, $_POST[$clave], $linea);
$valor = $_POST[$clave];
}
}
$datos[$clave] = $valor;
}
$registro = substr($linea, 0, 2) == "?>" ? $linea : $linea . "\n";
if ($grabar) {
fwrite($fsalida, $registro);
}
}
if ($grabar) {
fclose($fsalida);
unlink(CONFIGURACION);
rename(CONFIGTMP, CONFIGURACION);
if ($this->validaPaso1()) {
//Pasa al paso siguiente
return $this->paso2();
}
}*/
$info = '<form method="post" name="conf" action="instalar.php?paso=1">'; $info = '<form method="post" name="conf" action="instalar.php?paso=1">';
$info .= '<ul class="list-group">'; $info .= '<ul class="list-group">';

View File

@@ -50,9 +50,9 @@ class Inventario {
//Conexión con la base de datos. //Conexión con la base de datos.
$this->bdd = new Sql(SERVIDOR, USUARIO, CLAVE, BASEDATOS); $this->bdd = new Sql(SERVIDOR, USUARIO, CLAVE, BASEDATOS);
if ($this->bdd->error()) { if ($this->bdd->error()) {
echo '<h1>Fallo al conectar con el servidor MySQL.</h1>'; echo '<h1>Fallo al conectar con el servidor MySQL.</h1>';
echo SERVIDOR; echo "Servidor [ " . SERVIDOR . " ] base de datos [" . BASEDATOS . "]";
echo "Servidor [ " . SERVIDOR . " ] usuario [" . USUARIO . "] clave [" . CLAVE . "] base [" . BASEDATOS . "]";
$this->estado = false; $this->estado = false;
return; return;
} else { } else {
@@ -203,7 +203,6 @@ class Inventario {
$_SESSION['Perfil'] = $this->perfil; $_SESSION['Perfil'] = $this->perfil;
} }
} }
} }
?> ?>

View File

@@ -33,7 +33,7 @@ display: none;
} }
@media (max-width: 767px) { @media (max-width: 767px) {
.sidebar { .sidebar {
top: 50px; top: 60px;
bottom: 150px; bottom: 150px;
background-color: <?php echo COLORLAT; ?> background-color: <?php echo COLORLAT; ?>
} }

View File

@@ -25,7 +25,7 @@ require_once 'version.inc';
define('SERVIDOR', 'localhost'); //Ubicación del servidor MySQL define('SERVIDOR', 'localhost'); //Ubicación del servidor MySQL
define('PUERTO', '3306'); //Puerto donde se conecta a MySQL define('PUERTO', '3306'); //Puerto donde se conecta a MySQL
define('BASEDATOS', 'Inventario'); //Nombre de la base de datos. define('BASEDATOS', 'Inventario2'); //Nombre de la base de datos.
define('BASEDATOSTEST', 'Inventario_test'); //Base de datos para los tests. define('BASEDATOSTEST', 'Inventario_test'); //Base de datos para los tests.
define('USUARIO', 'test'); //Usuario con permisos de lectura/escritura en la base de datos define('USUARIO', 'test'); //Usuario con permisos de lectura/escritura en la base de datos
define('CLAVE', 'tset'); //contraseña del usuario. define('CLAVE', 'tset'); //contraseña del usuario.

View File

@@ -6,8 +6,8 @@
1|Inventario||| 1|Inventario|||
2|Ubicaci&oacute;n|index.php?informeInventario&opc=Ubicacion|_self|Inventario de una ubicaci&oacute;n 2|Ubicaci&oacute;n|index.php?informeInventario&opc=Ubicacion|_self|Inventario de una ubicaci&oacute;n
2|Art&iacute;culo|index.php?informeInventario&opc=Articulo|_self|Inventario de un Art&iacute;culo 2|Art&iacute;culo|index.php?informeInventario&opc=Articulo|_self|Inventario de un Art&iacute;culo
2|Total|index.php?informeInventario&opc=Total|_blank|Inventario de todas las ubicaciones 2|Total|index.php?informeInventario&opc=Total|_self|Inventario de todas las ubicaciones
2|Descuadres|index.php?descuadres|_blank|Diferencias entre art&iacute;culos y elementos 2|Descuadres|index.php?informeInventario&opc=descuadres|_self|Diferencias entre art&iacute;culos y elementos
1|Varios||| 1|Varios|||
2|Configuraci&oacute;n|index.php?configuracion|_self|Opciones configurables de la aplicaci&oacute;n 2|Configuraci&oacute;n|index.php?configuracion|_self|Opciones configurables de la aplicaci&oacute;n
2|Importaci&oacute;n|index.php?importacion&opc=form|_self|Importa datos de una hoja de c&aacute;lculo 2|Importaci&oacute;n|index.php?importacion&opc=form|_self|Importa datos de una hoja de c&aacute;lculo