Tareas #1876

Errores #1860: Corrección de varios errores

Identificador de material inventariable

Added by Marc Bria about 10 years ago. Updated almost 10 years ago.

Status:Cerrada Start date:14/12/2011
Priority:Urgente Due date:28/03/2012
Assignee:Luis Alonzo Fulchi % Done:

100%

Category:-
Target version:- Estimated time:6.00 hours

Description

El material inventariable usa por nombre un código de 13 caracteres que se extrae del Catálogo.

Se automatiza la creación del ID (Título de nodo) mediante el módulo "autotitle" y "token".

Autotitle permite construir el título de un nodo de forma automática y si se dispone de token, se pueden emplear estos para la creación del título.

El parche al módulo "token" para extraer sinónimo y/o la descripción (y de ese modo construir el ID con los códigos en vez de los literales...) es obsoleto y supuestamente incorporado a la versión estable, pero no resuelve el problema.

Se opta por un Title automático y oculto (sintaxis MAT-nid) y se crea un cck "computed_field" con php para incluir el código que solicita la facultad.
(o programar el autotitle con php).


Related issues

related to Inventario - Tareas #2141: Elementos sin clasificar Cerrada 09/02/2012 28/03/2012
related to Inventario - Errores #2701: Nombre no se construye correctamente Cerrada 27/03/2012 27/03/2012
related to Inventario - Tareas #2725: Llamar a Marc por identificador Cerrada 28/03/2012 29/03/2012

History

Updated by Marc Bria about 10 years ago

  • % Done changed from 0 to 50
  • Estimated time set to 2.00

Tras revisar opciones, la solución más limpia consiste en usar PHP en el autotítulo del nodo.

El código resultante es tan simple como:

 1<?php
 2        $termSyn=array();
 3        $vid=5; //Taxonomía con el Catálogo
 4
 5        $getTerms = $node->taxonomy[5]; //Términos en jerarquizados (orden inverso).
 6
 7        foreach($getTerms as $tid) {
 8            $syn = taxonomy_get_synonyms($tid);  //ver: Drupal Api [1]
 9            $termSyn[] = $syn[0];
10        }
11
12        $termSynRev = array_reverse($termSyn);
13
14        //return (var_export ($termSynRev, true));
15        return implode('-' , $termSynRev);
16?>

Se detectan dos problemas imprevistos:

  1. La taxonomía del catálogo no se almacena: Probablemente debido a una mala configuración del módulo taxonomy_manager.
  2. El código incluye 4 dígitos finales para cada objeto: Supongamos que existen dos "cargadores de pilas". El primero tendría código 0001 y el segundo 0002. Cabe esperar que el sistema incluya estos últimos dígitos automáticamente, por lo que habrá que revisar el código para que lance una consulta la base de datos y añada el número que corresponda.

Sigo con el tema esta noche para que mañana Fio por fin pueda ponerse a introducir datos y hacer una prueba real del sistema.

[1]: http://api.drupal.org/api/drupal/modules--taxonomy--taxonomy.module/function/taxonomy_get_synonyms/6

Updated by Marc Bria about 10 years ago

  • Due date set to 22/12/2011
  • Status changed from En curso to Resuelta
  • % Done changed from 50 to 100
  • Estimated time changed from 2.00 to 6.00

El problema 1 es resultando de un bug endémico de content_taxonomy cuando se combina con hierarchical_select (HS): Cuando se almacena el "lineage" (o sea, toda la jerarquía de términos y no sólo el término hoja) y se actualiza un nodo, HS no es capaz de cargar el término hoja y hay que volver a introducir la taxonomía.

El desarrollador de HS dice que no va a corregir más bugs en relación con content_taxonomy así que se cambia de aproximación:
  1. No se almacena el "lineage" (sólo el tid de la última hoja)
  2. Se obtienen los términos padre mediante la función http://api.drupal.org/api/drupal/modules--taxonomy--taxonomy.module/function/taxonomy_get_parents_all/6
Sobre el problema 2, tras pensar en ello se llega a la conclusión de que es complicado gestionar el "número de secuencia" de forma automática, así que se opta por:
  1. Crear un campo específico con el número de secuencia
  2. Mostrar el número de elementos mientras se escoge el término del catálogo.
  3. Proponer un valor en ese campo.

El código resultante para el auto título es:

 1<?php
 2        $termDesc=array();    //Almacena los términos asociados (Description).
 3
 4        $tid=$node->field_catalogo[0]['value'];      // El identificador del término.
 5        $getTerms = taxonomy_get_parents_all($tid);  // Sus padres.
 6
 7        foreach($getTerms as $term) {
 8            $termDesc[] = $term->description;
 9        }
10
11        $termDescRev = array_reverse($termDesc);
12
13        $count = '[field_sequence-formatted]';
14        $codigo = implode('-' , $termDescRev).'-'.sprintf("%04d",$count);
15
16        //DEBUG: return (var_export ($termDescRev, true));
17
18        return $codigo;
19?>

Con todo ello, la tarea se da por finalizada y YA ES POSIBLE UTILIZAR LA APLICACIÓN para introducir los primeros datos reales (prueba piloto).

Se limpia completamente la BD para el piloto.

Se espera feedback.

Updated by Luis Alonzo Fulchi about 10 years ago

  • Status changed from Resuelta to Cerrada

Ale, te animás a revisar esto?

Ya estaría funcional el inventario. Quizás el lunes se pueda empezar a cargar. Cierro la tarea. Cualquier cosa abrimos nuevas.

Updated by Alejandro Maiche about 10 years ago

ok. solo falta qwue fiorella introduzca datos y lo pruebe...
yo ya mande el texto pa el home!

Updated by Luis Alonzo Fulchi about 10 years ago

No encuentro el texto que decís, ni acá: #1871, ni en portada.

Updated by Marc Bria about 10 years ago

El código de secuencia es complicado de gestionar pues al crear un nodo, todavía no se sabe que término del catálogo se le va a vincular, por lo tanto no se puede deducir la secuencia... y al editar el nodo, este código no debe variar.

Por ello, para el piloto, se opta por dejar el código secuencia en manos del "funcionario" y activar los contadores de términos para dar indicadores que permitan incluir el número correlativo.

Dicho de otro modo, parece que lo natural es que sea un código que añade manualmente el "funcionario" a su gusto y antojo (validando que sea entre 0 y 9999).

Updated by Luis Alonzo Fulchi about 10 years ago

  • Status changed from Cerrada to Comentarios

No entiendo. Entonces el código no se autogenera, sino que es el funcionario que agrega un código? y si repite le avisa? y cómo sabe cuál fue el último? Quizás estoy un poco mareado con esto.

Updated by Marc Bria about 10 years ago

Es para marearse, pues con el tema hemos dado ya 3 vueltas. :-)
Pero me atrevería a decir que con lo que tenemos ahora ya está resuelto.

Vamos por partes:

El código se auto genera en base al catálogo (lo he probado bastante y funciona bien) y un número correlativo (número secuencia de artículo).

De los 13 dígitos los últimos 4 son es una secuencia (imagina que se compran 2 impresoras idénticas... pues serían xxx-0001 y xxx-0002). El tema es que el sistema no puede saber el número de secuencia, así que pone 1 y espera a que el funcionario corrija (en base al número que indica el selector del catálogo que si que avisa del número de elementos existentes).

Si quieres un día hacemos un skype y te explico compartiendo pantalla. sip?

En resumen: El catálogo está resuelto, pero dedicar tiempo a un automatismo (ajax, javascript...) para el código de secuencia me parece excesivo.

En cualquier caso, si se considera imprescindible le echo un ojo.

Lo que si que podría estar bien es detectar códigos idénticos, por si el funcionario se despista con la secuencia.

Updated by Marc Bria almost 10 years ago

La tarea está finalizada, pero faltan comentarios y tomar una decisión sobre el catálogo para cerrar del todo.

Duda Importante: ¿Qué hacemos con los objetos que no tienen los 3 elementos (FAMILIA-SUBFAMILIA-ELEMENTO-Secuencia)? El código que se genera es "parcial" y queda... raro. Pe: INF-MON--0001

(Pondría un ejemplo real, pero ahora mismo desde la UAB no se ve la web)

Propongo que se complete la taxonomía para que SIEMPRE se tengan 4 elementos y forzar a que se escoja una "hoja".

Updated by Luis Alonzo Fulchi almost 10 years ago

  • Assignee changed from Marc Bria to Alejandro Maiche

Propongo lo decida Ale, ya que no veo que haya feedback de otro lado de la institución

Updated by Luis Alonzo Fulchi almost 10 years ago

  • Assignee changed from Alejandro Maiche to Marc Bria
  • % Done changed from 100 to 80

Ale, ya que no moviste esta tarea, la voy a mover un poco yo y se la paso a Marc con una pregunta.

Además apareció otro problema #2701 que me impulsa a proponer lo siguiente:
  • que la URL se construya a partir de un ID único, numérico y secuencual de 1 hasta n

Updated by Marc Bria almost 10 years ago

Respondo aquí a este hilo, pero también al #2701 pues ambos están estrechamente relacionados.

Como dijo el amigo "Jack", vayamos por partes :-)
Un poco más de info antes de tomar la decisión:

  1. Los objetos tienen 2 urls: La dirección que le asigna el sistema (pe: http://inventario.psico.edu.uy/es/node/220) y el alias que le asignamos (pe: http://inventario.psico.edu.uy/es/material/inf-ins-0001-1)
  2. Se asignó un alias para permitir acceder a un objeto directamente con el código del mismo (http://inventario.psico.edu.uy/es/material/<código-objeto>) pudiendo prescindir así del QR en los casos en los que el código estuviese dañado, no se dispusiera de lector, etc.
  3. Los códigos QR "apuntan" a la URL del sistema (pe: node/220) en vez de apuntar al alias (pe: material/inf-ins-0001-1).
Así pues:
  • No modificaría los alias que incluyen el código pues ofrecen una funcionalidad extra.
  • Si se han generados alias incorrectos (al no disponer de la descripción de la taxonomía), corregiría la taxonomía (ver Taxonomy Manager) y luego regeneraría todos los alias de material del sistema. Este cambio en los alias no supondrá un problema para su correcto funcionamiento de la aplicación, ya que los códigos QR no usan estos alias.
  • Insisto: en el sistema no puede inventarse un funcionamiento para un caso que NO debería existir (en base a la codificación definida TODOS los objetos HAN DE tener FAMILIA-SUBFAMILIA-ELEMENTO, así pues, cualquier elemento del catálogo debe tener siempre estos 3 niveles o es imposible para el sistema o para un ser humano definir un código coherente con lo establecido).

¿Cómo lo ven?

Updated by Luis Alonzo Fulchi almost 10 years ago

  • % Done changed from 80 to 90

Muy bien ! Excelente Marc, así que parece que el confundido era yo entonces.

Solucionaremos lo de las hojas y las clasificaciones.

Updated by Luis Alonzo Fulchi almost 10 years ago

  • Assignee changed from Marc Bria to Luis Alonzo Fulchi

Me paso la tarea de implementar la obligatoriedad de las hojas.

Updated by Luis Alonzo Fulchi almost 10 years ago

  • Due date changed from 22/12/2011 to 28/03/2012
  • Status changed from Comentarios to Cerrada
  • % Done changed from 90 to 100

Obligué a que se elija el último nivel. Habrá que crear siempre 3 niveles.

Also available in: Atom PDF