SOLUCIONADO: Desaparicion de logo en comprobante de inscripcion en V. 3.5 G3W3

Hola

Estuvimos probando la version 3.5 de g3w3 y el unico problema que encontramos fue que el comprobante de inscripcion a una materia ya no tiene nuestro logo, sino el generico de siu.

Nuestro logo para comprobante se encuentra en: g3w3/src/pers/pers_fcen/www/img/logo-comprobante.png

Alguna diea porque no se ve?

Saludos!

Hola

El siguiente link

http://foro.comunidad.siu.edu.ar/index.php?topic=5813.0

tiene algo parecido. Te serviría?

Emilio

Ya está liberada la versión 3.5?? Si no, como la están probando?

Saludos

Gustavo

Hola

Hice la personalizacion como decia en http://foro.comunidad.siu.edu.ar/index.php?topic=5813.0 pero sigo sin poder ver el logo.

Esta es mi clase personzalizada:


<?php
namespace pers_fcen\operaciones\cursada;
use siu\operaciones\_comun\comprobantes\generador_comprobantes;
use siu\errores\error_guarani;
use kernel\kernel;
use siu\guarani;
use \siu\modelo\datos\catalogo;

class generador_comprobantes_cursada extends \siu\operaciones\cursada\generador_comprobantes_cursada {	
	protected function get_logo()
	{
                $test = guarani::dir();
		return guarani::dir() . '/www/img/logo-comprobante.png';
	}
}
?>

El problema que vi cuando debugee, es que la variable $test tiene el valor “/usr/local/proyectos/g3w3/src/siu”, que es la carpeta de siu.

Saludos!

Finalmente lo solucione! La dejo aca por si alguien la necesita


<?php
namespace pers_fcen\operaciones\cursada;
use siu\operaciones\_comun\comprobantes\generador_comprobantes;
use siu\errores\error_guarani;
use kernel\kernel;
use pers_fcen\guarani;
use \siu\modelo\datos\catalogo;

class generador_comprobantes_cursada extends \siu\operaciones\cursada\generador_comprobantes_cursada {	
	
    function __construct()
	{
		$this->generador =	new generador_comprobantes($this->get_ancho(), $this->get_alto(), $this->get_opciones());
		$rs = catalogo::consultar('unidad_academica', 'get_responsables_propuesta', array('propuesta' => kernel::persona()->get_id_propuesta_activa()));
		$responsables = array();
		foreach($rs as $row)
			$responsables[] = $row['nombre'];
                $nombre_institucion = kernel::traductor()->trans("comprobante_inscripcion_responsable");
		$this->generador->agregar_imagen($this->get_logo(), 5, 5, $nombre_institucion, implode(' / ', $responsables));
		$this->generador->agregar_linea(10, 80, 410, 80, '');
        }
                
	protected function get_logo()
	{
		return guarani::dir() . '/www/img/logo-comprobante.png';
	}
}
?>

El problema era el siguiente: Nosotros personalizamos el archivo src/siu/guarani.php, y como s puede ver, se llama a guarani::dir().
El tema es que si vemos la definicion de dir()


static function dir(){
   return \realpath(\dirname(__FILE__));
}

Vemos que devuelve el path donde se encuentra el archivo, pero mi clase pers/pers_fcen/guarani.php no sobrecargaba el metodo, llamaba a la clase padre, cuya ubiacion era /src/siu/

Lo unico que tuve que hacer fue poner la misma definicion de la funcion en mi clase guarani.php y asunto solucionado!

P.D: El metodo lo tuve que reescribir tambien porque tenia la siguiente linea:

 $this->generador->agregar_imagen($this->get_logo(), 5, 5, 'Institución dueña de la Instalación', implode(' / ', $responsables));

Eso hacia que en el titulo del comprobante apareciese “Institución dueña de la Instalación”, cosa que yo no queria. Agregue un nuevo valor al mensajes.es.php y lo cambie en mi personalizacion

Espero que se haya entendido!!

Saludos!

Hola Francisco:

   Solo quería aclarar que esta es la única manera que tienen en este momento de resolver esta personalización, pero.. en la próxima versión no va a ser necesario pisar, el contructor, ni la función get_logo, ni tampoco la función dir() de guarani.php . Solo van a tener agregar en su carpeta de personalizaciones el logo-comprobante.png, así evitamos la extensión innecesaria de clases, funciones y/o métodos.

Para aclarar el tema les agrego algo del código:

El constructor del generador de comprobante obtiene el nombre de la institución de la Base de Datos (guardada en cache). invocando a guarani::institucion()->get_nombre();


<?php
.....
function __construct()
{
	$this->generador = new generador_comprobantes($this->get_ancho(), $this->get_alto(), $this->get_opciones());
	$rs = catalogo::consultar('unidad_academica', 'get_responsables_propuesta', array('propuesta' => kernel::persona()->get_id_propuesta_activa()));
	$responsables = array();
	foreach($rs as $row)
	$responsables[] = $row['nombre'];
	$this->generador->agregar_imagen($this->get_logo(), 5, 5, guarani::institucion()->get_nombre(), implode(' / ', $responsables));
	$this->generador->agregar_linea(10, 80, 410, 80, '');
}
....
?>

La función get_logo, usa un localizador para buscar el logo, prmero busca en la personalización si es que hay alguna activa, sino pone el que va por defecto.


<?php

protected function get_logo()
{
	return kernel::localizador()->path_recurso('/www/img/logo-comprobante.png');
}
?>

Por lo tanto tampoco deben personalizar la función dir() de guarani.php

Quería dejarlo aclarado, para los próximos que lean, y para que ustedes sepan que en la próxima versión pueden realizar la personalización correctamente.

Muchas Gracias
Saludos
Sergio.