7 Commits

Author SHA1 Message Date
453045eee2 Merge branch 'release/1.16' 2014-07-29 17:12:26 +02:00
da1fccf1fd README.md edited online with Bitbucket 2014-07-15 11:38:59 +00:00
dcc0662dfb README.md edited online with Bitbucket 2014-07-15 11:38:05 +00:00
f47e1e5cd1 README.md edited online with Bitbucket 2014-07-15 09:37:12 +00:00
5484495d5a README.md edited online with Bitbucket 2014-07-15 09:36:51 +00:00
7272e2b85a Merge branch 'release/1.15'
* release/1.15:
  Actualizado el número de versión a 1.15
  Corregido codificación/decodificación de la cadena de búsqueda en la URL
  Fix #40 Crear la opción de clonar registro en Mantenimiento. -Crear iconos de clonado en todos los estilos. -Corregido determinaAccion en Imagen para aceptar el clonado
  Corregido que aparezca el código de artículo en las etiquetas qr del inventario de Artículos Añadida la creación del directorio de imágenes en las instrucciones de instalación del README
2014-06-29 21:22:57 +02:00
6148593c7c Merge branch 'release/1.14.1'
* release/1.14.1:
  Actualizado el CHANGELOG
  Añadido la v para indicar la versión en la cabecera de los informes Acortado el nombre de la aplicación en la página principal para que en dispositivos pequeños se visualice bien con el icono nuevo del manual
  Añadidos enlaces a manual y a aplicación de ejemplo en readme.md
  Arreglado que los créditos salgan centrados en lugar de alineados a la derecha
2014-06-02 19:44:52 +02:00
10 changed files with 125 additions and 164 deletions

View File

@@ -210,11 +210,7 @@ class AportaContenido {
return $salida; return $salida;
} }
case 'opcion': case 'opcion':
if (strstr($this->opcionActual, "&")) { list($opcion, $parametro) = explode("&", $this->opcionActual);
list($opcion, $parametro) = explode("&", $this->opcionActual);
} else {
$opcion = $this->opcionActual; $parametro = "";
}
switch ($opcion) { switch ($opcion) {
case 'bienvenido': case 'bienvenido':
return "Menú Principal"; return "Menú Principal";
@@ -248,19 +244,13 @@ class AportaContenido {
// if (!$this->registrado) { // if (!$this->registrado) {
// return $this->mensajeRegistro(); // return $this->mensajeRegistro();
// } // }
if (strstr($this->opcionActual, "&")) { list($opcion, $parametro) = explode("&", $this->opcionActual);
list($opcion, $parametro) = explode("&", $this->opcionActual);
} else {
$opcion = $this->opcionActual; $parametro = "";
}
switch ($opcion) { switch ($opcion) {
case 'bienvenido': case 'bienvenido':
$mensaje = '<div class="alert alert-success">'; $mensaje = '<div class="alert alert-success">';
$mensaje .= 'Bienvenid@ ' . $this->usuario . '</div>'; $mensaje .= 'Bienvenid@ ' . $this->usuario . '</div>';
case 'principal': // contenido inicial case 'principal': // contenido inicial
if (!isset($mensaje)) {
$mensaje = "";
}
$creditos = "$('#creditos').modal({keyboard: false});"; $creditos = "$('#creditos').modal({keyboard: false});";
$centro = '<div class="well well-sm">' . CENTRO . '</div>'; $centro = '<div class="well well-sm">' . CENTRO . '</div>';
$tabla = $this->creaTablaAcercaDe(); $tabla = $this->creaTablaAcercaDe();
@@ -274,7 +264,7 @@ class AportaContenido {
case 'elementos': case 'elementos':
$this->cargaDatosURL(); $this->cargaDatosURL();
if ($this->datosURL['opc'] == "informe") { if ($this->datosURL['opc'] == "informe") {
if ($this->perfil['Informe']) { if (!$this->pefil['Informe']) {
$this->procesaURL(); $this->procesaURL();
$fichero = 'xml/informe' . ucfirst($opcion) . '.xml'; $fichero = 'xml/informe' . ucfirst($opcion) . '.xml';
$salida = TMP.'/informe' . ucfirst($opcion) . '.xml'; $salida = TMP.'/informe' . ucfirst($opcion) . '.xml';
@@ -353,7 +343,7 @@ class AportaContenido {
case 'copiaseg': case 'copiaseg':
if ($this->perfil['Config']) { if ($this->perfil['Config']) {
$copia = new CopiaSeguridad(); $copia = new CopiaSeguridad();
if (isset($_GET['confirmado']) && $_GET['confirmado'] == "1") { if ($_GET['confirmado'] == "1") {
if (!$copia->creaCopia()) { if (!$copia->creaCopia()) {
$tipo = "danger"; $tipo = "danger";
$cabecera = "ERROR"; $cabecera = "ERROR";

View File

@@ -1,6 +1,3 @@
Version 1.17 29-07-2014
-Eliminados los mensajes de aviso de php en todos los archivos php
Versión 1.16 28-07-2014 Versión 1.16 28-07-2014
-Fix #41. Arregla las llamadas a Instalar.php que se hacían desde Inventario.php y desde Instalar.php -Fix #41. Arregla las llamadas a Instalar.php que se hacían desde Inventario.php y desde Instalar.php

View File

@@ -82,7 +82,7 @@ class Configuracion {
fwrite($fsalida, $registro); fwrite($fsalida, $registro);
} }
} }
$salida = $this->formulario(); $salida.=$this->formulario();
if ($grabar) { if ($grabar) {
$salida.='<div class="alert alert-success">Configuraci&oacute;n guardada correctamente</div>'; $salida.='<div class="alert alert-success">Configuraci&oacute;n guardada correctamente</div>';
fclose($fsalida); fclose($fsalida);

View File

@@ -23,6 +23,10 @@ class CopiaSeguridad {
private $baseDatos; private $baseDatos;
private $imagenes; private $imagenes;
public function __construct()
{
$opcion = $_GET['opc'];
}
public function creaCopia() public function creaCopia()
{ {
if (!$this->copiaBaseDatos()) { if (!$this->copiaBaseDatos()) {

69
Csv.php
View File

@@ -76,8 +76,7 @@ class Csv {
* Constructor de la clase. * Constructor de la clase.
* @param BaseDatos $baseDatos Manejador de la base de datos * @param BaseDatos $baseDatos Manejador de la base de datos
*/ */
public function __construct($baseDatos) public function __construct($baseDatos) {
{
$this->bdd = $baseDatos; $this->bdd = $baseDatos;
} }
@@ -85,8 +84,7 @@ class Csv {
* Crea un fichero csv con el nombre especificado * Crea un fichero csv con el nombre especificado
* @param String $fichero Nombre del fichero * @param String $fichero Nombre del fichero
*/ */
public function crea($fichero) public function crea($fichero) {
{
$this->nombre = $fichero; $this->nombre = $fichero;
$this->fichero = fopen($this->nombre, "w") or die("No puedo abrir " . $this->nombre . " para escritura."); $this->fichero = fopen($this->nombre, "w") or die("No puedo abrir " . $this->nombre . " para escritura.");
} }
@@ -95,18 +93,15 @@ class Csv {
* *
* @param array $datos escribe la línea en el archivo * @param array $datos escribe la línea en el archivo
*/ */
public function escribeLinea($datos) public function escribeLinea($datos) {
{
fputcsv($this->fichero, $datos, ',', '"') or die("No puedo escribir en el fichero csv"); fputcsv($this->fichero, $datos, ',', '"') or die("No puedo escribir en el fichero csv");
} }
public function __destruct() public function __destruct() {
{
$this->cierra(); $this->cierra();
} }
public function cierra() public function cierra() {
{
fclose($this->fichero) or die("No puedo cerrar el archivo csv"); fclose($this->fichero) or die("No puedo cerrar el archivo csv");
} }
@@ -114,8 +109,7 @@ class Csv {
* *
* @param String $fichero Archivo xml que contiene la definición de la consulta * @param String $fichero Archivo xml que contiene la definición de la consulta
*/ */
public function ejecutaConsulta($fichero) public function ejecutaConsulta($fichero) {
{
$consulta = simplexml_load_file($fichero) or die("No puedo cargar el fichero xml " . $fichero . " al csv"); $consulta = simplexml_load_file($fichero) or die("No puedo cargar el fichero xml " . $fichero . " al csv");
// Escribe la cabecera del fichero // Escribe la cabecera del fichero
$this->escribeLinea(array($consulta->Pagina->Cabecera, $consulta->Titulo['id'], $consulta->Titulo['Texto'])); $this->escribeLinea(array($consulta->Pagina->Cabecera, $consulta->Titulo['id'], $consulta->Titulo['Texto']));
@@ -138,8 +132,7 @@ class Csv {
* *
* @param String $ficheroCSV Nombre del archivo csv * @param String $ficheroCSV Nombre del archivo csv
*/ */
public function cargaCSV($ficheroCSV) public function cargaCSV($ficheroCSV) {
{
$this->nombre = $ficheroCSV; $this->nombre = $ficheroCSV;
$this->fichero = fopen($this->nombre, "r") or die('No puedo abrir el archivo ' . $this->nombre . " para lectura."); $this->fichero = fopen($this->nombre, "r") or die('No puedo abrir el archivo ' . $this->nombre . " para lectura.");
list($archivo, $idCabecera, $cabecera) = fgetcsv($this->fichero); list($archivo, $idCabecera, $cabecera) = fgetcsv($this->fichero);
@@ -156,8 +149,7 @@ class Csv {
* Muestra un resumen de los datos del fichero csv cargado por pantalla * Muestra un resumen de los datos del fichero csv cargado por pantalla
* *
*/ */
public function resumen() public function resumen() {
{
//$mensaje .= //$mensaje .=
$mensaje = "<center><h1>Archivo [inventario" . $this->cabecera[0] . "]</h1>"; $mensaje = "<center><h1>Archivo [inventario" . $this->cabecera[0] . "]</h1>";
$mensaje .= "<h2>id=[" . $this->cabecera[1] . "] Descripci&oacute;n=[" . $this->cabecera[2] . "]</h2><br>"; $mensaje .= "<h2>id=[" . $this->cabecera[1] . "] Descripci&oacute;n=[" . $this->cabecera[2] . "]</h2><br>";
@@ -219,14 +211,12 @@ class Csv {
* @param $array línea de datos del fichero csv para comprobar las cantidades si se han modificado o no * @param $array línea de datos del fichero csv para comprobar las cantidades si se han modificado o no
* @return string * @return string
*/ */
private function compruebaCantidades($i) private function compruebaCantidades($i) {
{ $ultimo = count($datos);
//$ultimo = count($datos);
return $this->datosFichero[$i][$this->cantidadReal] - $this->datosFichero[$i][$this->cantidad]; return $this->datosFichero[$i][$this->cantidadReal] - $this->datosFichero[$i][$this->cantidad];
} }
private function panelMensaje($info, $tipo = "danger", $cabecera = "&iexcl;Atenci&oacute;n!") private function panelMensaje($info, $tipo = "danger", $cabecera = "&iexcl;Atenci&oacute;n!") {
{
$mensaje = '<div class="panel panel-' . $tipo . '"><div class="panel-heading">'; $mensaje = '<div class="panel panel-' . $tipo . '"><div class="panel-heading">';
$mensaje .= '<h3 class="panel-title">' . $cabecera . '</h3></div>'; $mensaje .= '<h3 class="panel-title">' . $cabecera . '</h3></div>';
$mensaje .= '<div class="panel-body">'; $mensaje .= '<div class="panel-body">';
@@ -236,40 +226,36 @@ class Csv {
return $mensaje; return $mensaje;
} }
private function escribeLog($comando) private function escribeLog($comando) {
{ $fp = fopen($this->nombre.".log", "a");
$fp = fopen($this->nombre . ".log", "a"); $linea = strftime("%Y/%m/%d")."|".$this->nombre."|".$comando;
$linea = strftime("%Y/%m/%d") . "|" . $this->nombre . "|" . $comando;
fputs($fp, $linea . "\n"); fputs($fp, $linea . "\n");
fclose($fp); fclose($fp);
} }
private function bajaElemento($i) private function bajaElemento($i) {
{
$id = $this->datosFichero[$i][$this->idElemento]; $id = $this->datosFichero[$i][$this->idElemento];
$comando = 'delete from Elementos where id="' . $id . '";'; $comando = 'delete from Elementos where id="' . $id . '";';
$this->escribeLog($comando); $this->escribeLog($comando);
if (!$this->bdd->ejecuta($comando)) { if (!$this->bdd->ejecuta($comando)) {
throw new Exception("Baja-" . $this->bdd->mensajeError, $this->bdd->error); throw new Exception("Baja-".$this->bdd->mensajeError, $this->bdd->error);
} }
} }
private function modificaElemento($i) private function modificaElemento($i) {
{
$id = $this->datosFichero[$i][$this->idElemento]; $id = $this->datosFichero[$i][$this->idElemento];
$comando = 'update Elementos set Cantidad=' . $this->datosFichero[$i][$this->cantidadReal] . ' where id="' . $id . '";'; $comando = 'update Elementos set Cantidad=' . $this->datosFichero[$i][$this->cantidadReal] . ' where id="' . $id . '";';
$this->escribeLog($comando); $this->escribeLog($comando);
if (!$this->bdd->ejecuta($comando)) { if (!$this->bdd->ejecuta($comando)) {
throw new Exception("Modifica-" . $this->bdd->mensajeError, $this->bdd->error); throw new Exception("Modifica-".$this->bdd->mensajeError, $this->bdd->error);
} }
} }
private function altaElemento($i) private function altaElemento($i) {
{
if ($this->cabecera[0] == "Articulo") { if ($this->cabecera[0] == "Articulo") {
$idUbicacion = $this->datosFichero[$i][$this->idUbicacion]; $idUbicacion = $this->datosFichero[$i][$this->idUbicacion];
$idArticulo = $this->cabecera[1]; $idArticulo = $this->cabecera[1];
$comando = 'select id from Ubicaciones where Descripcion="' . $this->datosFichero[$i][$this->desUbicacion] . '";'; $comando = 'select id from Ubicaciones where Descripcion="'.$this->datosFichero[$i][$this->desUbicacion].'";';
} else { } else {
$idUbicacion = $this->cabecera[1]; $idUbicacion = $this->cabecera[1];
$idArticulo = $this->datosFichero[$i][$this->idArticulo]; $idArticulo = $this->datosFichero[$i][$this->idArticulo];
@@ -279,12 +265,11 @@ class Csv {
$comando .= '",' . $this->datosFichero[$i][$this->cantidadReal] . ',"' . $this->datosFichero[$i][$this->fechaCompra] . '");'; $comando .= '",' . $this->datosFichero[$i][$this->cantidadReal] . ',"' . $this->datosFichero[$i][$this->fechaCompra] . '");';
$this->escribeLog($comando); $this->escribeLog($comando);
if (!$this->bdd->ejecuta($comando)) { if (!$this->bdd->ejecuta($comando)) {
throw new Exception("Alta-" . $this->bdd->mensajeError, $this->bdd->error); throw new Exception("Alta-".$this->bdd->mensajeError, $this->bdd->error);
} }
} }
private function cargaIndices($campos) private function cargaIndices($campos) {
{
for ($i = 0; $i < count($campos); $i++) { for ($i = 0; $i < count($campos); $i++) {
switch ($campos[$i]) { switch ($campos[$i]) {
case "Cant. Real": $this->cantidadReal = $i; case "Cant. Real": $this->cantidadReal = $i;
@@ -310,8 +295,7 @@ class Csv {
/** /**
* Procesa contra la base de datos todas las acciones del archivo * Procesa contra la base de datos todas las acciones del archivo
*/ */
public function ejecutaFichero() public function ejecutaFichero() {
{
$this->cargaIndices($this->datosFichero[0]); $this->cargaIndices($this->datosFichero[0]);
//Realiza una transacción para que no se ejecute parcialmente una actualización //Realiza una transacción para que no se ejecute parcialmente una actualización
try { try {
@@ -338,7 +322,7 @@ class Csv {
} }
$mensaje = "Se han procesado correctamente $acciones acciones en la Base de Datos."; $mensaje = "Se han procesado correctamente $acciones acciones en la Base de Datos.";
$this->bdd->confirmaTransaccion(); $this->bdd->confirmaTransaccion();
return $this->panelMensaje($mensaje, "success", "Informaci&oacute;n"); return $this->panelMensaje($mensaje,"success", "Informaci&oacute;n");
} catch (Exception $e) { } catch (Exception $e) {
$this->bdd->abortaTransaccion(); $this->bdd->abortaTransaccion();
$mensaje = "Se ha producido el error [" . $e->getMessage() . "]<br>NO se ha realizado ning&uacute;n cambio en la Base de Datos."; $mensaje = "Se ha producido el error [" . $e->getMessage() . "]<br>NO se ha realizado ning&uacute;n cambio en la Base de Datos.";
@@ -346,8 +330,7 @@ class Csv {
} }
} }
private function ejecutaFichero2() private function ejecutaFichero2() {
{
echo '<script>visualizaProgreso();</script>'; echo '<script>visualizaProgreso();</script>';
for ($i = 1; $i < 80; $i++) { for ($i = 1; $i < 80; $i++) {
//sleep(1); //sleep(1);

View File

@@ -55,7 +55,6 @@ class Importacion {
private function formulario() { private function formulario() {
$accion = "index.php?importacion&opc=importar"; $accion = "index.php?importacion&opc=importar";
$salida = "";
//$salida .= '<script type="text/javascript" src="css/bootstrap-filestyle.min.js"> </script>'; //$salida .= '<script type="text/javascript" src="css/bootstrap-filestyle.min.js"> </script>';
$salida .='<div class="col-sm-6 col-md-6">'; $salida .='<div class="col-sm-6 col-md-6">';
$salida .= '<form enctype="multipart/form-data" name="importacion.form" method="post" action="' . $accion . '">' . "\n"; $salida .= '<form enctype="multipart/form-data" name="importacion.form" method="post" action="' . $accion . '">' . "\n";

View File

@@ -200,7 +200,6 @@ class Mantenimiento {
} }
//$salida.=$comando; //$salida.=$comando;
//$salida.=var_export($this->campos,true); //$salida.=var_export($this->campos,true);
$cant = 0;
while ($fila = $this->bdd->procesaResultado()) { while ($fila = $this->bdd->procesaResultado()) {
$salida.='<tr bottom="middle">'; $salida.='<tr bottom="middle">';
foreach ($fila as $clave => $valor) { foreach ($fila as $clave => $valor) {
@@ -219,7 +218,7 @@ class Mantenimiento {
$datoEnlace = $tmpco[1]; $datoEnlace = $tmpco[1];
} }
} }
$this->campoBusca = isset($dato[1]) ? $dato[1] : ""; $this->campoBusca = $dato[1];
$valor = '<a title="Inventario de ' . $valor . '" $target="_blank" href="index.php?informeInventario&opc=listar' . $datoEnlace . '&id=' . $id . '">' . $valor; $valor = '<a title="Inventario de ' . $valor . '" $target="_blank" href="index.php?informeInventario&opc=listar' . $datoEnlace . '&id=' . $id . '">' . $valor;
} }
if (strstr($this->campos[$clave]['Comment'], "imagen") && isset($valor)) { if (strstr($this->campos[$clave]['Comment'], "imagen") && isset($valor)) {
@@ -345,8 +344,6 @@ class Mantenimiento {
$informe = ""; $informe = "";
} }
$this->restoreURL(); $this->restoreURL();
} else {
$anterior = $rew = $az = $informe = $za = $siguiente = $fwd = "";
} }
if ($this->perfil['Alta']) { if ($this->perfil['Alta']) {
$this->datosURL['opc'] = 'nuevo'; $this->datosURL['opc'] = 'nuevo';
@@ -360,8 +357,8 @@ class Mantenimiento {
} else { } else {
$anadir = ""; $anadir = "";
} }
$salida .= '<p align="center">' . $salida.='<p align="center">' .
"$rew&nbsp&nbsp$anterior&nbsp&nbsp$az&nbsp&nbsp$anadir&nbsp&nbsp$informe&nbsp&nbsp$za&nbsp&nbsp$siguiente&nbsp&nbsp$fwd</p>"; "$rew&nbsp&nbsp$anterior&nbsp&nbsp$az&nbsp&nbsp$anadir&nbsp&nbsp$informe&nbsp&nbsp$za&nbsp&nbsp$siguiente&nbsp&nbsp$fwd</p>";
return $salida; return $salida;
} }
@@ -425,14 +422,14 @@ class Mantenimiento {
} else { } else {
$coma = ","; $coma = ",";
} }
if (isset($this->campos[$campo]['Type']) && $this->campos[$campo]['Type'] == 'Boolean(1)') { if ($this->campos[$campo]['Type'] == 'Boolean(1)') {
$valor = ""; $valor = "";
if (empty($_POST[$campo])) { if (empty($_POST[$campo])) {
$valor = "0"; $valor = "0";
} }
$valor = $_POST[$campo] == "on" ? '1' : $valor; $valor = $_POST[$campo] == "on" ? '1' : $valor;
} else { } else {
if (isset($this->campos[$campo]['Comment']) && stristr($this->campos[$campo]['Comment'], "imagen")) { if (stristr($this->campos[$campo]['Comment'], "imagen")) {
//procesa el envío de la imagen //procesa el envío de la imagen
$imagen = new Imagen(); $imagen = new Imagen();
$accion = $imagen->determinaAccion($campo); $accion = $imagen->determinaAccion($campo);
@@ -445,11 +442,7 @@ class Mantenimiento {
$campoImagen = $campo; $campoImagen = $campo;
} else { } else {
//Comprobamos si hay clonación y hay imagen a clonar. //Comprobamos si hay clonación y hay imagen a clonar.
if (isset($_POST[$campo])) { $valor = $_POST[$campo];
$valor = $_POST[$campo];
} else {
$valor = "";
}
if ($_POST['tipoOperacion'] == CLONAR && file_exists($valor)) { if ($_POST['tipoOperacion'] == CLONAR && file_exists($valor)) {
$hayImagen = true; $hayImagen = true;
$campoImagen = $campo; $campoImagen = $campo;
@@ -726,10 +719,9 @@ class Mantenimiento {
break; break;
} }
$accion = $this->montaURL(); $accion = $this->montaURL();
$salida = '<div class="col-sm-8"><form name="mantenimiento.form" enctype="multipart/form-data" class="form-horizontal" role="form" method="post" action="' . $accion . '">' . "\n"; $salida.='<div class="col-sm-8"><form name="mantenimiento.form" enctype="multipart/form-data" class="form-horizontal" role="form" method="post" action="' . $accion . '">' . "\n";
$salida .= "<fieldset style=\"width: 96%;\"><p><legend style=\"color: red;\"><b>$tipo</b></legend>\n"; $salida.="<fieldset style=\"width: 96%;\"><p><legend style=\"color: red;\"><b>$tipo</b></legend>\n";
//$salida.= var_export($datos,true); //$salida.= var_export($datos,true);
$campos = "";
foreach ($this->campos as $clave => $valor) { foreach ($this->campos as $clave => $valor) {
if ($valor["Editable"] == "no") { if ($valor["Editable"] == "no") {
//Se salta los campos que no deben aparecer //Se salta los campos que no deben aparecer
@@ -868,7 +860,7 @@ class Mantenimiento {
private function creaModal($valor, $id) private function creaModal($valor, $id)
{ {
$mensaje = ' $mensaje .= '
<div id="mensajeModal'.$id.'" class="modal fade " tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true"> <div id="mensajeModal'.$id.'" class="modal fade " tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true">
<div class="modal-dialog text-center"> <div class="modal-dialog text-center">
<div class="modal-content text-center"> <div class="modal-content text-center">

View File

@@ -111,8 +111,7 @@ class Pdf_mysql_table extends FPDF
if ($this->procesandoTotales) { if ($this->procesandoTotales) {
$this->SetFont('Arial','B',12); $this->SetFont('Arial','B',12);
} }
$dato = isset($data[$col['f']]) ? $data[$col['f']] : ""; $this->Cell($col['w'],5,utf8_decode($data[$col['f']]),1,0,$alin,$fill);
$this->Cell($col['w'],5,utf8_decode($dato),1,0,$alin,$fill);
//$this->Cell($col['w'],5,utf8_decode($data[$col['f']]),1,0,$alin,$fill); //$this->Cell($col['w'],5,utf8_decode($data[$col['f']]),1,0,$alin,$fill);
//$this->Cell($col['w'],5,utf8_decode($data['proveedor']),1,0,$alin,$fill); //$this->Cell($col['w'],5,utf8_decode($data['proveedor']),1,0,$alin,$fill);
//$this->Write(5,"nombre=".$col['f'].",titulo=".$col['c'].",ancho=".$col['w'].",alin=".$col['a']); //$this->Write(5,"nombre=".$col['f'].",titulo=".$col['c'].",ancho=".$col['w'].",alin=".$col['a']);
@@ -120,10 +119,7 @@ class Pdf_mysql_table extends FPDF
//print_r($data); //print_r($data);
//print_r($this->aCols); //print_r($this->aCols);
if ($col['t']=='S' && !$this->procesandoTotales) { if ($col['t']=='S' && !$this->procesandoTotales) {
if (isset($this->totales[$col['f']])) $this->totales[$col['f']]+=$data[$col['f']];
$this->totales[$col['f']] += $data[$col['f']];
else
$this->totales[$col['f']] = $data[$col['f']];
} }
} }

154
README.md
View File

@@ -1,78 +1,78 @@
# Inventario de Centro Educativo [![Project Stats](https://www.ohloh.net/p/inventario2/widgets/project_thin_badge.gif)](https://www.ohloh.net/p/inventario2) # Inventario de Centro Educativo [![Project Stats](https://www.ohloh.net/p/inventario2/widgets/project_thin_badge.gif)](https://www.ohloh.net/p/inventario2)
Copyright (c) 2008-2014, Ricardo Montañana Gómez Copyright (c) 2008-2014, Ricardo Montañana Gómez
Inventario2 is free software: you can redistribute it and/or modify Inventario2 is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or the Free Software Foundation, either version 3 of the License, or
(at your option) any later version. (at your option) any later version.
Aplicación de inventario para un centro educativo. Aplicación de inventario para un centro educativo.
Utiliza: Utiliza:
*PHP v. 5.3.x *PHP v. 5.3.x
*MySQL v. 5.1.x *MySQL v. 5.1.x
*Apache *Apache
[Manual de Usuario](http://rmontanana.gitbooks.io/inventario2/) [Manual de Usuario](http://rmontanana.gitbooks.io/inventario2/)
[Instalación de ejemplo](http://inventario2.rmontanana.es) [Instalación de ejemplo](http://inventario2.rmontanana.es)
[Estadísticas del proyecto](https://www.ohloh.net/p/inventario2) [Estadísticas del proyecto](https://www.ohloh.net/p/inventario2)
##Instalación ##Instalación
Para instalar la aplicación basta con seguir estos pasos: Para instalar la aplicación basta con seguir estos pasos:
###1. Copiar los archivos en una ubicación a la que tenga acceso el usuario con el que se ejecuta el servidor Apache (apache, _www, etc.). ###1. Copiar los archivos en una ubicación a la que tenga acceso el usuario con el que se ejecuta el servidor Apache (apache, _www, etc.).
mkdir Inventario mkdir Inventario
cd Inventario cd Inventario
unizp ../1.02.zip unizp ../1.02.zip
o o
tar xvzf ../1.02.tgz tar xvzf ../1.02.tgz
###2. Crear un directorio temporal y dar derechos de escritura a los ficheros de configuración. ###2. Crear un directorio temporal y dar derechos de escritura a los ficheros de configuración.
mkdir tmp mkdir tmp
mkdir img.data mkdir img.data
chown apache tmp img.data chown apache tmp img.data
chown apache inc/configuracion.inc chown apache inc/configuracion.inc
chown apache inc chown apache inc
###3. Crear una base de datos en MySQL con el siguiente comando ###3. Crear una base de datos en MySQL con el siguiente comando
create database Inventario character set utf8 collate utf8_spanish_ci; create database Inventario character set utf8 collate utf8_spanish_ci;
###4. Dar todos los derechos de acceso a esa base de datos a un usuario: ###4. Dar todos los derechos de acceso a esa base de datos a un usuario:
grant all on Inventario.* to usuario identified by "contraseña"; grant all on Inventario.* to usuario identified by "contraseña";
###5. Conectarse a la aplicación en la url donde se ha instalado: ###5. Conectarse a la aplicación en la url donde se ha instalado:
http://<url> http://<url>
Al hacer esto se arrancará automáticamente el programa de instalación con el que terminaremos de configurar la aplicación. Al hacer esto se arrancará automáticamente el programa de instalación con el que terminaremos de configurar la aplicación.
##Modelo de datos ##Modelo de datos
El modelo de datos que se ha utilizado ha sido: El modelo de datos que se ha utilizado ha sido:
![modeloERInventario2.png](https://bitbucket.org/repo/Ag6zy8/images/4106389828-modeloERInventario2.png) ![modeloERInventario2.png](https://bitbucket.org/repo/Ag6zy8/images/4106389828-modeloERInventario2.png)
###Procedimiento de actualización de ISO-8859-1 a UTF-8 en MySQL ###Procedimiento de actualización de ISO-8859-1 a UTF-8 en MySQL
Para actualizar la base de datos tan sólo hay que modificar el tipo de la base de datos y de las tablas a utf8 mediante workbench o mediante el comando: Para actualizar la base de datos tan sólo hay que modificar el tipo de la base de datos y de las tablas a utf8 mediante workbench o mediante el comando:
use Inventario2; use Inventario2;
alter database Inventario2 character set utf8 collate utf8_spanish_ci; alter database Inventario2 character set utf8 collate utf8_spanish_ci;
alter table Articulos convert to character set utf8 collate utf8_spanish_ci; alter table Articulos convert to character set utf8 collate utf8_spanish_ci;
alter table Ubicaciones convert to character set utf8 collate utf8_spanish_ci; alter table Ubicaciones convert to character set utf8 collate utf8_spanish_ci;
alter table Elementos convert to character set utf8 collate utf8_spanish_ci; alter table Elementos convert to character set utf8 collate utf8_spanish_ci;
alter table Usuarios convert to character set utf8 collate utf8_spanish_ci; alter table Usuarios convert to character set utf8 collate utf8_spanish_ci;
Una vez hecho esto hay que asegurarse que el charset con el que trabaja el servidor MySQL es utf8 para eso se entra en mysql y mediante el comando status se averigua. Se puede cambiar en my.cnf o mediante workbench crear/modificar el fichero de configuración. Una vez hecho esto hay que asegurarse que el charset con el que trabaja el servidor MySQL es utf8 para eso se entra en mysql y mediante el comando status se averigua. Se puede cambiar en my.cnf o mediante workbench crear/modificar el fichero de configuración.
Contenido mínimo del fichero /etc/my.cnf Contenido mínimo del fichero /etc/my.cnf
[mysqld] [mysqld]
character-set-server = utf8 character-set-server = utf8
collation-server = utf8_spanish_ci collation-server = utf8_spanish_ci
[client] [client]
default-character-set=utf8 default-character-set=utf8

View File

@@ -23,5 +23,5 @@
*/ */
define('AUTOR', 'Ricardo Montañana Gómez'); define('AUTOR', 'Ricardo Montañana Gómez');
define('VERSION', '1.17'); define('VERSION', '1.16');
?> ?>