Thread Rating:
  • 1 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
crear nuevo módulo
#11
:-)
Joe
TSolucio
Reply
#12
Hola.

¿Como relaciono un modulo nuevo con uno ya existente? Entiendo que debo hacerlo en el manifest.xml dentro de <relatedlist> pero no tengo clara la sintaxis

Gracias
Reply
#13
Aqui tienes un ejemplo de ese tipo de campo:

https://github.com/tsolucio/corebos/blob/master/modules/CobroPago/manifest.xml#L161-L196

Es solo una lista de nombre de módulos dentro de la directiva <relatedmodule>
Joe
TSolucio
Reply
#14
acabo de fijarme que dices "related_list". entiendo que quieres establecer una relación 1:m o m:m entre los módulos

si es 1 (nuevo) m (existente), tienes que crear un campo de tipo uitype 10 en el módulo existente y una lista relacionada en el nuevo. El campo se crea en el métido vtlib_handler del módulo nuevo (https://github.com/tsolucio/corebos/blob/master/modules/cbMap/cbMap.php#L134-L151)

si es 1 (existente) m (nuevo) o m:m, tienes que utilizar setRelatedList también en el vtlib_handler: https://corebos.com/documentation/doku.php?id=en:devel:relatedlists

Tal como me lo imagino yo cuando un módulo nuevo se instala en la aplicación, se presenta a la misma, el fichero manifest dice "mira este es quien soy, mis campos y relaciones", y el método vtlib_handler, hace las presentaciones particulares a cada módulo con quien necestia relacionarse "hola, acabo de llegar y tengo una relación contigo, aqui tienes un campo para que puedan seleccionar registros", o "aqui tienes una lista relacionada conmigo"

Finalmente, comentarte que estas relaciones se pueden hacer en el editor de disposición: puedes añadir un campo de tipo relación (uitype 10) que establecerá las listas relacionadas o un lista relacionada de tipo m:m

Ya me dices
Joe
TSolucio
Reply
#15
Gracias, Joe, por tu rápida respuesta...

Exacto, lo que quiero es establener una relación 1:m. Un elemento del nuevo modulo debe estar relacionado con m Cuentas.

En un primer momento, lo intenté a traves del editor de disposición, creando un campo Relacion asociado a Cuentas, y en Cuentas otro campo relación  relacionado con en nuevo módulo, pero la relación es 1:1.  Ahora mismo, si intento desde Cuentas asociar a un registro de este modulo un elemento del módulo nuevo, en el popup no me aparece la lista de elementos del nuevo modulo, aunque indica elementos que hay elementos (1 de 1)...

   

Si embargo, desde el modulo nuevo, al hacer lo mismo sí muestra los elementos existentes de Cuentas

Es posible solucionarlo desde el editor? Gracias

Saludos
Reply
#16
Hay una variable global para enseñarte la consulta que está haciendo en ese popup, probablemente DEBUG_POPUP_QUERY, activala y comparte la consulta
Joe
TSolucio
Reply
#17
Joe:
la consulta es:

SELECT SQL_CALC_FOUND_ROWS vtiger_crmentity.*, vtiger_rutas.*, vtiger_rutascf.* FROM vtiger_rutas INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_rutas.rutasid INNER JOIN vtiger_rutascf ON vtiger_rutascf.rutasid = vtiger_rutas.rutasid LEFT JOIN vtiger_users ON vtiger_users.id = vtiger_crmentity.smownerid LEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid LEFT JOIN vtiger_account ON vtiger_account.accountid = vtiger_rutascf.cf_1178 WHERE vtiger_rutas.rutasid>0 AND vtiger_crmentity.deleted=0 and vtiger_rutas.rutasid not in (8427) LIMIT 0,20

Devuelve datos

   
Reply
#18
vale, eso está todo bien. Esto significa que debes tener mal los arrays de las columnas a mostrar.

Abre el fichero Rutas.php, encontrarás estos 4 arrays: $list_fields, $list_fields_name, $search_fields, $search_fields_name

Ahí tienes que configurar las columnas que quieres que se muestren en el popup (y en las listas relacionadas)
Joe
TSolucio
Reply
#19
Perfecto, ya funciona. Una ultima duda. Que campo debo incluir para poder seleccionar un registro desde el popup? he modificado la linea:

// Make the field link to detail view from list view (Fieldname)
public $list_link_field = 'rutas_no';

Pero no funciona...

Gracias
Reply
#20
es esa variable junto con la entrada en la tabla vtiger_entityname. la entrada en esa tabla se crea utilizando el campo marcado como "entityidfield" en el manifest.xml

https://github.com/tsolucio/corebos/blob/master/vtlib/ModuleDir/manifest.xml#L56-L59

si no lo has hecho así o no tienes una fila en la base de datos para tu módulo, intenta insertar una a mano a ver
Joe
TSolucio
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)