[How-To] Modificar campos de Usuarios y Compañias (Backends)

Post Reply
miguelmz
Znuny wizard
Posts: 370
Joined: 17 Nov 2011, 17:46
Znuny Version: 6.0.10
Real Name: Miguel
Company: SIA
Location: Madrid, Spain.

[How-To] Modificar campos de Usuarios y Compañias (Backends)

Post by miguelmz »

Hola,

hoy os traigo un pequeño tutorial para aprender a realizar cambios en los campos de usuarios y compañias. Para realizar esto, debemos usar la utilidad backend desde el Config.pm.


Usuarios Backends

Editamos el fichero /otrs/Kernel/Config.pm, nos situamos dentro de la funcion descrita en Config.pm y al final del todo empezamos a poner nuestra configuracion siguiente:

Code: Select all

# CustomerUser
    # (customer user database backend and settings)
    $Self->{CustomerUser} = {
        Name => 'Base de Datos',
        Module => 'Kernel::System::CustomerUser::DB',
        Params => {
# Si la base de datos es externa, rellenar
#            DSN => 'DBI:odbc:yourdsn',
#            DSN => 'DBI:mysql:database=customerdb;host=customerdbhost',
#            User => '',
#            Password => '',
            Table => 'customer_user',
        },
        # customer uniq id
        CustomerKey => 'login',
        # customer #
        CustomerID => 'customer_id',
        CustomerValid => 'valid_id',
        CustomerUserListFields => ['first_name', 'last_name', 'email'],
        CustomerUserSearchFields => ['login', 'last_name', 'customer_id'],
        CustomerUserSearchPrefix => '',
        CustomerUserSearchSuffix => '*',
        CustomerUserSearchListLimit => 250,
        CustomerUserPostMasterSearchFields => ['email'],
        CustomerUserNameFields => ['salutation','first_name','last_name'],
        CustomerUserEmailUniqCheck => 1,
#        # show now own tickets in customer panel, CompanyTickets
#        CustomerUserExcludePrimaryCustomerID => 0,
#        # generate auto logins
#        AutoLoginCreation => 0,
#        AutoLoginCreationPrefix => 'auto',
#        # admin can change customer preferences
#        AdminSetPreferences => 1,
#        # just a read only source
#        ReadOnly => 1,
        Map => [
            [ 'UserSalutation', 'Salutation', 'title',  1, 0, 'var', '', 0 ],
            [ 'UserFirstname',  'Firstname',  'first_name',  1, 1, 'var', '', 0 ],
            [ 'UserLastname',   'Lastname',   'last_name',   1, 1, 'var', '', 0 ],
            [ 'UserLogin',      'Username',   'login',       1, 1, 'var', '', 0 ],
            [ 'UserPassword',   'Password',   'pw',          0, 1, 'var', '', 0 ],
            [ 'UserEmail',      'Email',      'email',       0, 1, 'var', '', 0 ],
            [ 'UserCustomerID', 'CustomerID', 'customer_id', 0, 1, 'var', '', 0 ],
            [ 'Teamviewer',     'Teamviewer', 'teamviewer',  1, 0, 'var', '', 0 ],
            [ 'Telefono',       'Telefono',   'phone',       1, 0, 'var', '', 0 ],
            [ 'Fax',            'Fax',        'fax',         1, 0, 'var', '', 0 ],
            [ 'Movil',          'Movil',      'mobile',      1, 0, 'var', '', 0 ],
            [ 'Calle',          'Calle',      'street',      1, 0, 'var', '', 0 ],
            [ 'CP',             'CP',         'zip',         1, 0, 'var', '', 0 ],
            [ 'Ciudad',         'Ciudad',     'city',        1, 0, 'var', '', 0 ],
            [ 'Pais',           'Pais',       'country',     1, 0, 'var', '', 0 ],
            [ 'Empresa',        'Empresa',    'empresa',     1, 0, 'var', '', 0 ],
            [ 'Departamento',   'Departamento','departamento',  1, 0, 'var', '', 0 ],
            [ 'Ubicacion',      'Ubicacion',  'ubicacion',   1, 0, 'var', '', 0 ],
            [ 'ValidID',        'Valid',      'valid_id',    0, 1, 'int', '', 0 ],
            [ 'UserComment',    'Comment',    'comments',    1, 0, 'var', '', 0 ],
        ],

        # default selections
        Selections => {
            UserSalutation => {
                'Mr.' => 'Mr.',
                'Mrs.' => 'Mrs.',}
        },
    };
Como podeis ver, en Map se disponen los elementos habituales dentro de un usuario con una serie de parametros en corchetes. Dentro del Map se describen los campos y es donde añadiremos nuestro nuevo campo del usuario (por ejemplo departamento), para realizarlo hay que describir una serie de parametros entre corchetes:
# var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly, http-link-target
[ 'Departamento', 'Departamento','departamento', 1, 0, 'var', '', 0 ]

A continuacion explico con un poco de detalle los elementos:
- var: Nombre de la variable, key del hash en AdminUser.pm
- frontend: Nombre visualizado del campo
- storage: Nombre del campo en la tabla de la Base de datos.
- Shown: Define el tipo de interaccion del campo: 0 desactivado, 1 activo, 2 minimizado.
- Required: Define la obligatoriedad del campo: 0 no requerido, 1 requerido.
- Storage-type: el tipo de dato en la Bas de datos: varchar (var), numérico (int), etc.
- http-link: hipervínculos externos.
- readonly: inutiliza la edición del campo
- http-link-target: hipervínculos internos.

Una vez declarado el nuevo campo en Map, hay que alterar la tabla customer_user de la base de datos del otrs y agregar una columna nueva cuyo nombre debe coincidir con el que escribamos en storage del registro de Map creado antes y del mismo tipo que el descrito en storage-type.

Si ahora quisieramos hacer de ese campo Departamento un desplegable con opciones prefijadas, debemos situarnos en Selections y al igual que el por defecto UserSalutation añadimos el nuestro:

# default selections
Selections => {
UserSalutation => {
'Mr.' => 'Mr.',
'Mrs.' => 'Mrs.',
},
Departamento => {
'Office' => 'Oficina',
'Direccion' => 'Direccion',
'Informatica' => 'Informatica',
},
};

El primer elemento corresponde al valor que se introducira en la Base de datos, mientras que el segundo se refiere al nombre que se vera en el desplegable. De esta manera, por ejemplo, veremos Oficina en el desplegable pero en l a base de datos se introducira "Office".

Por ultimo destacar dos opciones:
- Para visualizar los nuevos campos en el panel de información del cliente de un ticket es necesario agregarlo dentro de la sentencia:
CustomerUserListFields => ['first_name', 'last_name', 'email'],

- Para agregar el nuevo campo a los filtros de búsqueda es necesario meterlo dentro de la siguiente sentencia:
CustomerUserSearchFields => ['login', 'last_name', 'customer_id'],

Reiniciamos el servicio apache y dispondremos de nuestros usuarios con nuevos campos.


Compañias Backends

Utiliza la misma configuracion que los clientes, cambiando la alteracion de la tabla customer_user (clientes) por la de customer_company (compañia). Esta es la plantilla:

Code: Select all

$Self->{CustomerCompany} = {
        Params => {
            # if you want to use an external database, add the
            # required settings
            #DSN      => 'DBI:ODBC:mssqldynamics',
            #User     => 'otrs',
            #Password => 'secretpass',
            Table    => 'customer_company',
        },

        # customer uniq id
        CustomerCompanyKey             => 'customer_id',
        CustomerCompanyValid           => 'valid_id',
        CustomerCompanyListFields      => [ 'name' ],
        CustomerCompanySearchFields    => [ 'name', 'customer_id' ],
        CustomerCompanySearchPrefix    => '',
        CustomerCompanySearchSuffix    => '*',
        CustomerCompanySearchListLimit => 250,

        Map => [
            # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly
            [ 'CustomerID',              'CustomerID',    'customer_id',         0, 1, 'var', '', 0 ],
            [ 'CustomerCompanyName',        'Company',           'name',         1, 1, 'var', '', 0 ],
            [ 'Zip',                            'Zip',            'zip',         1, 0, 'var', '', 0 ],
            [ 'City',                          'City',           'city',         1, 0, 'var', '', 0 ],
            [ 'Country',                    'Country',        'country',         1, 0, 'var', '', 0 ],
            [ 'Street' ,                     'Street',         'street',         1, 0, 'var', '', 0 ],
            [ 'Phone' ,                       'Phone',          'phone',         1, 0, 'var', '', 0 ],
            [ 'Fax',                            'Fax',            'fax',         1, 0, 'var', '', 0 ],
            [ 'CustomerCompanyURL',             'URL',            'url',         1, 0, 'var', '$Data{"CustomerCompanyURL"}', 0 ],
            [ 'Comments',                  'Comments',        'comments',         1, 0, 'var', '', 0 ],
        ],
    };

Espero que os sirva de ayuda,
Un saludo.
We want OTRS certifications in Spain!!

Check out my free addons! :mrgreen:
emtronic
Znuny newbie
Posts: 2
Joined: 23 Jun 2015, 18:37
Znuny Version: OTRS 4 Free
Real Name: Emilio
Company: Student

Re: [How-To] Modificar campos de Usuarios y Compañias (Backends)

Post by emtronic »

Hola miguelmz, podrías ayudarme indicándome cómo conectarme a la Base de Datos de OTRS 4 (está en postgres), utilizando pgAdmin III.

Gracias de antemano.
Post Reply