Buenos días,
Soy nuevo en esto de otrs y después de leerme la documentación y googlear un poco me ha surgido un "problema".
Al crear un nuevo ticket, me gustaría que este se crease con una estructura específica. Me explico:
Tengo creadas varias colas (paises en este caso) y me gustaría que al generar un nuevo ticket, dependiendo de la cola a la que se mueva, este cambie. Ejemplo:
creo un nuevo ticket y lo muevo a la cola de Argentina, al moverlo el ticket debería quedar ARXXFECHA-1 en el caso del primer ticket, -2 en el caso del segundo,...
Si muevo ese ticket o creo uno nuevo la cola de chile, debería cambiar a CHXXFECHA-1,... y asi con el resto.
Es decir:
Codigo del pais + XX + fecha del dia de creación de ticket + orden del ticket (1er, 2do,...)
Se que esto es posible pues lo he visto funcionando en un cliente pero por más que lo intento, no hay forma.
No me importa si tengo que hacer un generador de tickets específico para este caso. (modificando Autoincrement.pm, o algún otro)
Alguna idea?
Muchas gracias por vuestro tiempo.
Modificación de la estructura de los tickets
-
- Znuny wizard
- Posts: 370
- Joined: 17 Nov 2011, 17:46
- Znuny Version: 6.0.10
- Real Name: Miguel
- Company: SIA
- Location: Madrid, Spain.
Re: Modificación de la estructura de los tickets
Hola jano,
Nunca me lo habia planteado, es bastante interesante, desconozco ahora mismo como implementarlo pero podrias empezar por Ticket::Hook en Core::Ticket, ese campo describe la forma generica de titular el id del ticket. En algun punto de otrs realizara un $Self->{ConfigObject}->Get("Ticket::Hook"); y ahi es la modificacion.
Un saludo.
Nunca me lo habia planteado, es bastante interesante, desconozco ahora mismo como implementarlo pero podrias empezar por Ticket::Hook en Core::Ticket, ese campo describe la forma generica de titular el id del ticket. En algun punto de otrs realizara un $Self->{ConfigObject}->Get("Ticket::Hook"); y ahi es la modificacion.
Un saludo.
Re: Modificación de la estructura de los tickets
Bueno, os cuento lo que he hecho hasta ahora.
Lo primero que he modificado ha sido el fichero /otrs/Kernel/System/Ticket.pm y en la lína 479, donde dice $Param{TN} = $Self->TicketCreateNumber(); a la función TicketCreateNumber le paso la variable $Param{QueueID}. Este valor lo voy a usar para generar los tickets dependiendo de la cola.
Lo segundo es editar el fichero que genera los tickets, en mi caso /otrs/Kernel/System/Ticket/Number/Date.pm, lo estoy usando para hacer las pruebas.
En este fichero, primero le añadimos la siguiente linea:
use Kernel::System::Queue; <- para poder trabajar con la cola.
Segundo, cogemos la variable.
my ($Self, $JumpCounter) = @_; pasa a my ($Self, $QueueID, $JumpCounter) = @_;
Tercero, añadimos $QueueID a my $Tn.
Al probarlo funciona bien, añade el número de la cola al ticket.
Ahora el problema.
Cuando intento hacer un if, no me deja y falla otrs.
if ($QueueID == 2) {
$cola = "ES";
}
else {
$cola = "FR";
}
Por poner un ejemplo.
¿Alguna idea?
Muchas gracias por vuestro tiempo.
Lo primero que he modificado ha sido el fichero /otrs/Kernel/System/Ticket.pm y en la lína 479, donde dice $Param{TN} = $Self->TicketCreateNumber(); a la función TicketCreateNumber le paso la variable $Param{QueueID}. Este valor lo voy a usar para generar los tickets dependiendo de la cola.
Lo segundo es editar el fichero que genera los tickets, en mi caso /otrs/Kernel/System/Ticket/Number/Date.pm, lo estoy usando para hacer las pruebas.
En este fichero, primero le añadimos la siguiente linea:
use Kernel::System::Queue; <- para poder trabajar con la cola.
Segundo, cogemos la variable.
my ($Self, $JumpCounter) = @_; pasa a my ($Self, $QueueID, $JumpCounter) = @_;
Tercero, añadimos $QueueID a my $Tn.
Al probarlo funciona bien, añade el número de la cola al ticket.
Ahora el problema.
Cuando intento hacer un if, no me deja y falla otrs.
if ($QueueID == 2) {
$cola = "ES";
}
else {
$cola = "FR";
}
Por poner un ejemplo.
¿Alguna idea?
Muchas gracias por vuestro tiempo.
-
- Znuny wizard
- Posts: 370
- Joined: 17 Nov 2011, 17:46
- Znuny Version: 6.0.10
- Real Name: Miguel
- Company: SIA
- Location: Madrid, Spain.
Re: Modificación de la estructura de los tickets
Que error te da la al compilar el perl?, puede que se trate de un error de inicializacion de variables o que ese $QueueID este nulo.
Si al hacer perl -c te da un error de variable de entorno introduce export PERL5LIB=/opt/otrs:/opt/otrs/Kernel/cpan-lib y prueba de nuevo.
Un saludo.
Si al hacer perl -c te da un error de variable de entorno introduce export PERL5LIB=/opt/otrs:/opt/otrs/Kernel/cpan-lib y prueba de nuevo.
Un saludo.
Re: Modificación de la estructura de los tickets
Buenas,
La modificación que he hecho es la siguiente:
if ($QueueID==2) {
my $Queue = "ES";
}
else {
my $Queue="FR";
}
Y el error que muestra al pasar a otrs es el siguiente (Extraido de /var/log/apache2/error.log):
Message: Global symbol "$Queue" requires explicit package name at /opt/otrs//Kernel/System/Ticket/Number/Date.pm line 91.
Traceback (872):
Module: Kernel::System::Ticket::new (v1.545) Line: 191
Module: Kernel::System::Web::InterfaceAgent::Run (v1.64) Line: 169
Module: ModPerl::ROOT::ModPerl::Registry::opt_otrs_bin_cgi_2dbin_index_2epl::handler (unknown version) Line: 46
Module: (eval) (v1.90) Line: 204
Module: ModPerl::RegistryCooker::run (v1.90) Line: 204
Module: ModPerl::RegistryCooker::default_handler (v1.90) Line: 170
Module: ModPerl::Registry::handler (v1.99) Line: 31
[Tue May 29 13:54:48 2012] [error] [Tue May 29 13:54:48 2012] -e: Can't load ticket number generator backend module Kernel::System::Ticket::Number::Date! at /opt/otrs//Kernel/System/Ticket.pm line 191.\n
[Tue May 29 13:54:48 2012] Date.pm: Found = in conditional, should be == at /opt/otrs//Kernel/System/Ticket/Number/Date.pm line 44.
[Tue May 29 13:54:48 2012] [error] [client 192.168.1.60] Global symbol "$Queue" requires explicit package name at /opt/otrs//Kernel/System/Ticket/Number/Date.pm line 91.\nCompilation failed in require at /opt/otrs/Kernel/cpan-lib/Apache2/Reload.pm line 181.\n
[Tue May 29 13:54:48 2012] [error] [client 192.168.1.60] File does not exist: /var/www/favicon.ico
En cambio, si declaro $Queue a pelo ($Queue="FR" p.e.) funciona, es decir, sin el if-else.
La modificación que he hecho es la siguiente:
if ($QueueID==2) {
my $Queue = "ES";
}
else {
my $Queue="FR";
}
Y el error que muestra al pasar a otrs es el siguiente (Extraido de /var/log/apache2/error.log):
Message: Global symbol "$Queue" requires explicit package name at /opt/otrs//Kernel/System/Ticket/Number/Date.pm line 91.
Traceback (872):
Module: Kernel::System::Ticket::new (v1.545) Line: 191
Module: Kernel::System::Web::InterfaceAgent::Run (v1.64) Line: 169
Module: ModPerl::ROOT::ModPerl::Registry::opt_otrs_bin_cgi_2dbin_index_2epl::handler (unknown version) Line: 46
Module: (eval) (v1.90) Line: 204
Module: ModPerl::RegistryCooker::run (v1.90) Line: 204
Module: ModPerl::RegistryCooker::default_handler (v1.90) Line: 170
Module: ModPerl::Registry::handler (v1.99) Line: 31
[Tue May 29 13:54:48 2012] [error] [Tue May 29 13:54:48 2012] -e: Can't load ticket number generator backend module Kernel::System::Ticket::Number::Date! at /opt/otrs//Kernel/System/Ticket.pm line 191.\n
[Tue May 29 13:54:48 2012] Date.pm: Found = in conditional, should be == at /opt/otrs//Kernel/System/Ticket/Number/Date.pm line 44.
[Tue May 29 13:54:48 2012] [error] [client 192.168.1.60] Global symbol "$Queue" requires explicit package name at /opt/otrs//Kernel/System/Ticket/Number/Date.pm line 91.\nCompilation failed in require at /opt/otrs/Kernel/cpan-lib/Apache2/Reload.pm line 181.\n
[Tue May 29 13:54:48 2012] [error] [client 192.168.1.60] File does not exist: /var/www/favicon.ico
En cambio, si declaro $Queue a pelo ($Queue="FR" p.e.) funciona, es decir, sin el if-else.
Re: Modificación de la estructura de los tickets
Solucionado el problema.
pasos seguidos:
Lo primero que he modificado ha sido el fichero /otrs/Kernel/System/Ticket.pm y en la lína 479, donde dice $Param{TN} = $Self->TicketCreateNumber(); a la función TicketCreateNumber le paso la variable $Param{QueueID}. Este valor lo voy a usar para generar los tickets dependiendo de la cola.
Lo segundo es editar el fichero que genera los tickets, en mi caso /otrs/Kernel/System/Ticket/Number/Date.pm, lo estoy usando para hacer las pruebas.
En este fichero, primero le añadimos la siguiente linea:
use Kernel::System::Queue; <- para poder trabajar con la cola.
Segundo, cogemos la variable.
my ($Self, $JumpCounter) = @_; pasa a my ($Self, $QueueID, $JumpCounter) = @_;
Tercero, añadimos $QueueID a my $Tn.
Ahora si queremos que en vez del numero de cola nos muestre un identificador, por ejemplo ES, o FR,... creamos un if de la siguiente forma:
primero e importante inicializamos la variable donde vamos a guardar el cidgo:
$pais ="";
Y ahora el if:
if ($QueueID eq 2) {
$pais ="ES";
}
elsif ($QueueID eq 3) {
$pais="FR";
}
...
else {
$pais="XX";
}
y añadimos la variable $pais a $tn.
Un saludo,
pasos seguidos:
Lo primero que he modificado ha sido el fichero /otrs/Kernel/System/Ticket.pm y en la lína 479, donde dice $Param{TN} = $Self->TicketCreateNumber(); a la función TicketCreateNumber le paso la variable $Param{QueueID}. Este valor lo voy a usar para generar los tickets dependiendo de la cola.
Lo segundo es editar el fichero que genera los tickets, en mi caso /otrs/Kernel/System/Ticket/Number/Date.pm, lo estoy usando para hacer las pruebas.
En este fichero, primero le añadimos la siguiente linea:
use Kernel::System::Queue; <- para poder trabajar con la cola.
Segundo, cogemos la variable.
my ($Self, $JumpCounter) = @_; pasa a my ($Self, $QueueID, $JumpCounter) = @_;
Tercero, añadimos $QueueID a my $Tn.
Ahora si queremos que en vez del numero de cola nos muestre un identificador, por ejemplo ES, o FR,... creamos un if de la siguiente forma:
primero e importante inicializamos la variable donde vamos a guardar el cidgo:
$pais ="";
Y ahora el if:
if ($QueueID eq 2) {
$pais ="ES";
}
elsif ($QueueID eq 3) {
$pais="FR";
}
...
else {
$pais="XX";
}
y añadimos la variable $pais a $tn.
Un saludo,
-
- Znuny wizard
- Posts: 370
- Joined: 17 Nov 2011, 17:46
- Znuny Version: 6.0.10
- Real Name: Miguel
- Company: SIA
- Location: Madrid, Spain.
Re: Modificación de la estructura de los tickets
Muchas gracias, tengo que probarlo.
Te animo a postearlo como tutorial en Como lo Hago? para que no se pierda esta idea.
Un saludo.
Te animo a postearlo como tutorial en Como lo Hago? para que no se pierda esta idea.
Un saludo.
Re: Modificación de la estructura de los tickets
Reabro el hilo para informar que en la última versión parece ser que ha cambiado un poco.
Tan pronto tenga las nuevas modificaciones a realizar, actualizo este tema.
Tan pronto tenga las nuevas modificaciones a realizar, actualizo este tema.