Usar nuevas vistas para res.partner sin modificar las originales (y sin herencia)

1,616 views
Skip to first unread message

Eduardo BP

unread,
Jul 3, 2015, 5:33:16 PM7/3/15
to openerp-s...@googlegroups.com
Hola a todos,

me gustaría saber si es posible lo que escribo en la pregunta de este post.
La situación es la siguiente.

He creado un modelo nuevo que hereda de res.partner añadiendole más campos y funcionalidades, es decir:

class Company(models.Model):
_name = 'res.partner'
_inherit = ['res.partner', 'mail.thread']

En mi fichero de vistas, tengo una window action asociado a un menú para abrir las vistas de este modelo.

<record id="sdicrm_company_action" model="ir.actions.act_window">
<field name="name">Empresas</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.partner</field>
<field name="view_mode">tree,form</field>
</record>

Vale. Ahora quiero fabricar vistas form y tree para este nuevo modelo pero sin sobreescribir ni heredar las de res.partner.

De esta manera, mis menús de mi nuevo modelo abren las vistas que yo quiera, y las vistas de res.partner que se abren por otros menús de Odoo de otros módulos permancen intactas.

¿Hay alguna manera de hacer esto?.

Gracias.

Pedro Rodríguez (Otherway Creatives)

unread,
Jul 4, 2015, 7:46:22 PM7/4/15
to openerp-s...@googlegroups.com
Es directo. Crea nuevas vistas tree y form, definelas con el action_id nuevo que ya tienes y engancha ese action a los menús que quieras. Si quieres que algún campo de tipo many2one o one2many utilice estas nuevas vistas define en el contexto del campo los parámetros tree_view_ref o form_view_ref con valor igual al id de tu nueva vista tree o form respectivamente.

Saludos.
Message has been deleted

Eduardo BP

unread,
Jul 5, 2015, 11:27:09 AM7/5/15
to openerp-s...@googlegroups.com
Hola Pedro.

Eso es lo que he hecho, pero voy a explicar mejor mi problema, ya que creo que no lo expliqué bien la primera vez.
La cuestión es que mi módulo hereda del módulo mail. Este módulo crea un nuevo menú Sales/Customers. El menú Customers está asociado a una window action que muestra las vistas tree,form,kanban definidas para res.partner en el modelo base.
Por ejemplo, para la vista tree muestra la vista con el external id 'base.view_partner_tree'.

Entonces, mi módulo (que hereda de res.partner) tiene otro menú Empresa enlazado con mi propia window action (tiene el valor de res_module igual a res.partner). Mi window action está asociada a mis propias vistas tree y form, las cuales tienen el valor de res_model igual res.partner, ya que mi modelo Company hereda del modelo res.partner.
La cuestión es que yo quiero que pinchando en mi menú Empresa se abran mis vistas para mostrar sólo los campos que yo quiera de res.partner. Y no quiero usar herencia de vistas.
El problema es que no se abren mis vistas. Por ejemplo, en el formulario se abre la vista con el external id 'base.view_partner_tree'.
Establecer los id de miis vistas en el valor views de mi window action tampoco ha funcionado.

¿ALguna solución?.

Eduardo BP

unread,
Jul 5, 2015, 12:15:58 PM7/5/15
to openerp-s...@googlegroups.com
Creo haberlo conseguido. La solución es la siguiente.

Esta es mi window action asociada a mi  menú Empresa:

<record id="sdicrm_company_action" model="ir.actions.act_window">
<field name="name">Empresas</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">res.partner</field>
<field name="view_mode">tree,form</field>
   <field name="views" eval="[6, 0, [sdicrm_company_form_view, sdicrm_company_view_tree]]"/>
</record>


En el valor views de la acción uso eval para que se cargen las vistas que yo quiero. Supongo que esto se hace de lado del cliente en el navegador y en tiempo de ejecución. Dentro de eval uso los id de las vistas tree y form definidas por mí.

<record id="sdicrm_company_form_view" model="ir.ui.view">
<field name="name">res partner form company</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_simple_form"/>
<field name="mode">primary</field>
<field name="arch" type="xml">
<xpath expr="//form" position="replace">
<form string="Compañías">
<sheet>
<group>
<field name="name"/>
<field name="legal_name"/>
<field name="state" />
<field name="office_ids" />
</group>
</sheet>
</form>
</xpath>
</field>
</record>


<record id="sdicrm_company_view_tree" model="ir.ui.view">
<field name="name">sdicrm company tree</field>
<field name="model">res.partner</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="legal_name"/>
<field name="state"/>
</tree>
</field>
</record>

Pedro Rodríguez (Otherway Creatives)

unread,
Jul 5, 2015, 5:39:12 PM7/5/15
to openerp-s...@googlegroups.com
También puedes hacerlo definiendo los act_window.view asociados a tu act_window en vez de definir los view_ids desde el action.

<record id="sdicrm_company_action_view_tree" model="ir.actions.act_window.view">
<field name="view_mode">tree</field>
<field name="view_id" ref="sdicrm_company_view_tree" />
<field name="act_window_id" ref="sdicrm_company_action" />
</record>

<record id="sdicrm_company_action_view_form" model="ir.actions.act_window.view">
<field name="view_mode">form</field>
<field name="view_id" ref="sdicrm_company_form_view" />
<field name="act_window_id" ref="sdicrm_company_action" />
</record>

Eduardo BP

unread,
Jul 5, 2015, 6:43:50 PM7/5/15
to openerp-s...@googlegroups.com
Muchas gracias Pedro.
No sabía que podía enlazar una act_window a otra act_window. La verdad es que esto no viene en la documentación oficial.

Un gran descubrimiento.

Gaby G

unread,
May 30, 2018, 2:14:29 AM5/30/18
to Usuarios Odoo / OpenERP en España
Gracias esto funciono para mi
Reply all
Reply to author
Forward
0 new messages