开放式ERP。从树打开一个表单,但从其他相关字段

Posted

技术标签:

【中文标题】开放式ERP。从树打开一个表单,但从其他相关字段【英文标题】:OpenERP. Open from tree a form but from other related field 【发布时间】:2015-08-27 11:27:02 【问题描述】:

我正在为 event.event 构建一个自定义视图,其中包含一个用于 registration_ids 字段的树。通常,当我单击树元素时,会在弹出窗口中打开 event.regitration 模型表单。

所以,为了我的目标,我想改变这种行为,在这种情况下打开与 event.registration 相关的 res.partner by partner_id 字段。

这是我拥有的:

       <record id="tutorship_course_form" model="ir.ui.view">
            <field name="name">tutorship.course.form</field>
            <field name="model">event.event</field>
            <field name="arch" type="xml">
                <form string="Curso" version="7.0">
                    <sheet>
                        <label for="event_type" string="Curso"/>
                        <field name="event_type" readonly="1" />
                        <label for="date_begin" string="Fecha"/>
                        <field name="date_begin" readonly="1" />
                        <label for="city" string="Ciudad"/>
                        <field name="city" readonly="1" />
                        <field name="registration_ids" colspan="3">
                            <tree>
                                <field name="firstname" />
                                <field name="lastname" />
                                <field name="email" />
                            </tree>
                        </field>
                    </sheet>
                </form>
            </field>
        </record>        

        <record id="tutorship_courses_tree" model="ir.ui.view">
            <field name="name">tutorship.courses.tree</field>
            <field name="model">event.event</field>
            <field name="arch" type="xml">
                <tree string="Cursos">
                    <field name="event_type" string="Curso" />
                    <field name="date_begin" string="Fecha" />
                    <field name="city" string="Ciudad" />
                </tree>
            </field>
        </record>

        <record model="ir.actions.act_window" id="action_courses_view">
           <field name="name">Cursos</field>
           <field name="type">ir.actions.act_window</field>
           <field name="res_model">event.event</field>
           <field name="view_mode">tree,form</field>
           <field name="domain">[('visible','=',1)]</field>
           <field name="view_id" ref="tutorship_courses_tree" />
        </record>

        <record id="action_for_courses_tree_view" model="ir.actions.act_window.view">
            <field name="sequence" eval="0" />
            <field name="view_mode">tree</field>
            <field name="view_id" ref="tutorship_courses_tree"/>
            <field name="act_window_id" ref="action_courses_view"/>
        </record>
        <record id="action_for_courses_form_view" model="ir.actions.act_window.view">
            <field name="sequence"  eval="1" />
            <field name="view_mode">form</field>
            <field name="view_id" ref="tutorship_course_form"/>
            <field name="act_window_id" ref="action_courses_view"/>
        </record>

我还不清楚如何获得它。这可能吗?

提前谢谢你

【问题讨论】:

您使用哪种语言? 这是一个xml视图。我更新了我的问题 【参考方案1】:

您不能使用 ORM 方法和 XML 来完成它。我想你必须使用 javascript 才能实现这一点。

在您的情况下,我会在树的每一行添加一个按钮(仅带有一个图标,或者如果您愿意,可以使用字符串 Open partner)调用相应的合作伙伴形式:

XML 代码(在您的树中)

<button name="open_partner_form" type="object" icon="icon_you_want" help="Open partner info"/>

Python 代码(在event.registration 模型内)

@api.multi
def open_partner_form(self):
    form_view_id = self.env.ref(
        'base.view_partner_form').id
    for event_registration in self:
        return 
            'name': _('%s') % event_registration.partner_id,
            'view_type': 'form',
            'view_mode': 'form',
            'res_id': event_registration.partner_id.id,
            'views': [(form_view_id, 'form'), ],
            'res_model': 'res.partner',
            'type': 'ir.actions.act_window',
            'target': 'current',
            'flags': 'action_buttons': True,
        

如果对您有帮助,如果您将(在 XML 视图中)context="'form_view_ref': 'module_name.xml_form_view_id'" 添加到 one2many 字段 (registration_ids),您将能够选择要打开的表单...但是此表单必须属于registration_ids comodel 的同一型号(我认为是event.registration)。

【讨论】:

感谢您的回答@forvas,这对我来说非常有用。我只需要将函数更改为 v7 API 即可完美运行。 哦,我不知道您正在开发 v7,但很高兴它对您有所帮助。如果您认为可以关闭问题,请不要忘记将问题设置为已回答。【参考方案2】:

最后我用下一个代码解决了 v7:

    如@forvas 所说,在 xml 树视图中添加了按钮
<button name="open_res_partner_form" type="object" />
    在 event.registration 模型中定义动作函数
    def open_res_partner_form(self, cr, uid, ids, context=None):
        event_registration = self.browse(cr, uid, ids[0], context)
        view_id = self.pool.get('ir.ui.view').search(cr, uid, [('name', '=', 'name_of_the_form_view')])
        return 
            'name': 'Example name',
            'view_type': 'form',
            'view_mode': 'form',
            'res_id': event_registration.partner_id.id,
            'view_id': view_id,
            'res_model': 'res.partner',
            'type': 'ir.actions.act_window',
            'target': 'current',
            'flags': 'action_buttons': True,
        

【讨论】:

以上是关于开放式ERP。从树打开一个表单,但从其他相关字段的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Java 中的 HttpResponse 中获取单个表单字段并将其写入文件?

使用 Access 在 VBA 中进行数据库设计/打开表单 CLICK EVENT:特定查询

如何解耦业务表单与流程

html 更改客户在电子邮件中收到的表单标题 - 在其他输入字段之后将其添加到表单顶部

html 更改客户在电子邮件中收到的表单标题 - 在其他输入字段之后将其添加到表单顶部

html 更改客户在电子邮件中收到的表单标题 - 在其他输入字段之后将其添加到表单顶部