CoreBOSBB

Full Version: Abrir un módulo desde addlink action enviando variables
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Buenos días:

Necesito abrir un módulo desde el módulo contactos, pero tiene que enviar varias variables desde dicho módulo contacto, para que los valores de :

MODULO CONTACTO Módulo que se ha de abrir
Contact_id = Related_by
Asignado_a = Asignado_a
Nombre de la cuenta = Nombre de la cuenta

Qué variables tengo que poner en la siguiente línea de código para que me pase esos valores?

$mod_acc->addLink('DETAILVIEWBASIC', 'Add call', 'index.php?odule=LlamadasRecibidas=EditView&parent_id=$RECORD$')
Esa operación no se puede hacer con un enlace. Bueno, sí se puede hacer pero require ejecutar una función javascript que lea los valores del contacto seleccionado y monte la URL dinámicamente.

Tienes dos maneras de solucionar esto.

1.- modificar el script EditView.php de Llamadas para leer los valores de la base de datos a partir del valor que entra en $_REQUEST['parent_id'] y cargalos en el array $_REQUEST como si hubieran venido desde la URL

2.- poner el parámetro cbfromid en el enlace:

$mod_acc->addLink('DETAILVIEWBASIC', 'Add call', 'index.php?module=LlamadasRecibidas&action=EditView&cbfomid=$RECORD$')

ahora con esa variable cargada puedes definir un mapa de campos y rellenar los campos que quieras

http://corebos.org/documentation/doku.php?id=en:adminmanual:businessmappings:mapping


Ten en cuenta que hay que añadir unos parámetros más en la URL para que el código sepa volver al sitio return_module, return_id y alguna más
(04-02-2018, 04:03 PM)joebordes Wrote: [ -> ]Esa operación no se puede hacer con un enlace. Bueno, sí se puede hacer pero require ejecutar una función javascript que lea los valores del contacto seleccionado y monte la URL dinámicamente.

Tienes dos maneras de solucionar esto.

1.- modificar el script EditView.php de Llamadas para leer los valores de la base de datos a partir del valor que entra en $_REQUEST['parent_id'] y cargalos en el array $_REQUEST como si hubieran venido desde la URL

2.- poner el parámetro cbfromid en el enlace:

$mod_acc->addLink('DETAILVIEWBASIC', 'Add call', 'index.php?module=LlamadasRecibidas&action=EditView&cbfomid=$RECORD$')

ahora con esa variable cargada puedes definir un mapa de campos y rellenar los campos que quieras

http://corebos.org/documentation/doku.php?id=en:adminmanual:businessmappings:mapping


Ten en cuenta que hay que añadir unos parámetros más en la URL para que el código sepa volver al sitio return_module, return_id y alguna más

Buenos días:

He probado con la segunda opción, tengo hecho esto en el mapping

Le he puedo el nombre de Contacts2LlamadasRecibidas

<map>

<originmodule>
<oringinname>Contacts</oringinname>
</originmodule>
<targetmodule>
<targetname>LlamadasRecibidas</targetname>
</targetmodule>
<fields>
<field>
<fieldname>cf_862</fieldname>
<Orgfields>
<Orgfield>
<OrgfieldName>contact_no</OrgfieldName>
   </Orgfield>
</Orgfields>
</field>
<field>
<fieldname>smownerid</fieldname>
<Orgfields>
<Orgfield>
<OrgfieldName>smownerid</OrgfieldName>
</Orgfield>
</Orgfields>
</field>
<field>
<fieldname>cf_865</fieldname>
<Orgfields>
<Orgfield>
<OrgfieldName>accountid</OrgfieldName>
</Orgfield>
</Orgfields>
</field>
</fields>
</map>

Ahora no sé cómo puedo hacer para invocarlo para que cuando se abra el módulo de LlamadasRecibidas, cumplimente los tres campos con los campos del módulo Contacts, que he seleccionado.

Por otro lado, veo que hay muchos campos que se llaman igual al campo "smownerid" en la tabla "vtiger_crmentity" con diferentes id de campo, Cómo se cual es el que he de elegir?
El mapa parece estar bien. Creo que el campo smownerid debería ser assigned_user_id ya que te pide fieldname, no column name.

En cualquier caso, este mapa entra en efecto siempre que llegues al EditView.php con el parámetro cbfromid cargado con el ID del registro origen. O sea, si pones en tu URL de acción

cbfromid=$RECORD$

Estos mapas se aplican al crear registros desde las listas relacionadas así que lo puedes probar desde ahi
En la barra de dirección se ve bien la dirección donde se puede ver bien el valor que asigna a cbformid=357, que es el valor correcto del contactid.

http://localhost/corebos-master/index.php?module=LlamadasRecibidas&action=EditView&cbformid=357

Pero aunque me carga el formulario LlamadasRecibidas, no me autocompleta nigún campo, ni el

Campo "Nombre de la cuenta"
Campo "Asignado a"
Campo "Relacionado con"

(04-03-2018, 04:31 PM)construmet4 Wrote: [ -> ]En la barra de dirección se ve bien la dirección donde se puede ver bien el valor que asigna a cbformid=357, que es el valor correcto del contactid.

http://localhost/corebos-master/index.php?module=LlamadasRecibidas&action=EditView&cbformid=357

Pero aunque me carga el formulario LlamadasRecibidas, no me autocompleta nigún campo, ni el

Campo "Nombre de la cuenta"
Campo "Asignado a"
Campo "Relacionado con"

Me respondo a mi mismo, prarece que llega mal el link, ya que pone cbfromid en vez de cbfromid, bien ahora llega un sólo valor, el de asignado a, pero me faltan los otros dos, debe ser un error de nomeclatura del nombre del campo. ahora voy a mirarlo
No encuentro la relación del namefield, para colocar automáticamente en el campo relacionado con el id del contacto que pasa por la variable cbfromid, para colocarlo en el maps
¿Sabes cuál es el nombre del namefield, que tengo que utilizar para que cargue esa información en el campo related_to del formulario llamado desde el módulo Contacts?
Tengo creado este map
<map>
<originmodule>
<oringinname>Contacts</oringinname>
</originmodule>
<targetmodule>
<targetname>LlamadasRecibidas</targetname>
</targetmodule>
<fields>
<field>
<fieldname>cf_859</fieldname> //Este es el campo que tengo que rellenar con el valor del contactid del módulo Contacts, que es el mismo valor que se traspasa en la variable "EditView&cbfromid=357"
<Orgfields>
<Orgfield>
<OrgfieldName>$RECORD$</OrgfieldName> //Aquí tengo que poner el fieldname del campo que corresponde al módulo Contacts, con el contactid
</Orgfield>
</Orgfields>
<Orgfields>
<Orgfield>
<OrgfieldName>lastname</OrgfieldName>
</Orgfield>
</Orgfields>
</field>
<field>
<fieldname>assigned_user_id</fieldname>
<Orgfields>
<Orgfield>
<OrgfieldName>assigned_user_id</OrgfieldName>
</Orgfield>
</Orgfields>
</field>
<field>
<fieldname>cf_856</fieldname>
<Orgfields>
<Orgfield>
<OrgfieldName>account_id</OrgfieldName>
</Orgfield>
</Orgfields>
</field>
</fields>
</map>

Todos los demás campos se me cumplimentan correctamente, ¿puedes orientarme en qué estoy haciendo mal?
Mira este mapa:

http://corebos.org/documentation/doku.php?id=en:adminmanual:businessmappings:store:contact2accounts

al final tiene esta correspondencia

Code:
<field>
<fieldname>converted_from</fieldname>
<Orgfields>
<Orgfield>
<OrgfieldName>record_id</OrgfieldName>
</Orgfield>
</Orgfields>
</field>


Prueba con "record_id"
Funciona perfectamente, tema cerrado, muchas gracias por tu ayuda, como siempre, es una colaboración inestimable