Odoo12 множественное представление дерева для одного и того же унаследованного модуля - PullRequest
1 голос
/ 01 апреля 2020

Я хочу создать второе древовидное представление для stock.picking в my_model для вызова в другом меню без изменения первого древовидного представления ("vpicktree") в модели stock.picking. Чтобы заархивировать это в моей новой модели, я унаследовал модель и создал несколько полей, которые мне нужно показать, после этого я создал второе древовидное представление следующим образом:

<record id="stock_picking_spedizioni_tree" model="ir.ui.view">
    <field name="name">stock.picking.spedizioni.tree</field>
    <field name="model">stock.picking</field>
    <field name="arch" type="xml">
        <tree decoration-info="state == 'draft'" decoration-muted="state == 'cancel'" decoration-danger="state not in ('cancel', 'done') and scheduled_date &lt; current_date" string="Picking list">
            <field name="name"/>
            <field name="carrier_id" string="Corriere"/>
            <field name="carrier_tracking_ref" string="Tracking"/>
            <field name="ddt_ids" string="TD"/>
            <field name="partner_id"/>
            <field name="IndirizzoDestinatario" string = "Indirizzo"/> #new compute field
            <field name="ComuneDestinatario" string = "Comune"/> #new compute field
            <field name="ZipDestinatario" string = "Cap"/>#new compute field
            <field name="ProvinciaDestinatario" string = "Prov"/>#new compute field
            <field name="date" invisible="1"/>
            <field name="scheduled_date"/>
            <field name="origin"/>
            <field name="group_id" invisible="1"/>
            <field name="backorder_id"/>
            <field name="state"/>
            <field name="priority" invisible="1"/>
            <field name="picking_type_id" invisible="1"/>
        </tree>   
    </field>
</record>

После этого я создайте разделение действий и новый пункт меню, например:

<record model="ir.actions.act_window" id="action_parent_picking_spedizioni1">
    <field name="name">Spedizioni</field>
    <field name="res_model">stock.picking</field>
    <field name="view_type">form</field>
    <field name="view_mode">tree,form</field>
    <field eval="False" name="view_id"/>
</record>   

<record id="child_action_window_tree" model="ir.actions.act_window.view">
        <field eval="1" name="sequence"/>
        <field name="view_mode">tree</field>
        <field name="view_id" ref="stock_picking_spedizioni_tree" />
        <field name="act_window_id" ref="action_parent_picking_spedizioni1" />
</record>

<record id="child_action_window_form" model="ir.actions.act_window.view">
       <field eval="2" name="sequence"/>
       <field name="mode">primary</field>
       <field name="view_mode">form</field>
       <field name="view_id" ref="stock.view_picking_form" /> # same form view is ok 
       <field name="act_window_id" ref="action_parent_picking_spedizioni1" />
</record>       

<menuitem id="menu_spedizioni" 
          name="Spedizioni" 
          parent="stock.menu_stock_warehouse_mgmt" 
          sequence="6" 
          action="action_parent_picking_spedizioni1" 
          />

В модуле «Я» ничего не изменилось, и код:

<record id="vpicktree" model="ir.ui.view">
        <field name="name">stock.picking.tree</field>
        <field name="model">stock.picking</field>
        <field name="arch" type="xml">
            <tree decoration-info="state == 'draft'" decoration-muted="state == 'cancel'" decoration-danger="state not in ('cancel', 'done') and scheduled_date &lt; current_date" string="Picking list">
                <field name="name"/>
                <field name="location_dest_id" groups="stock.group_stock_multi_locations"/>
                <field name="partner_id"/>
                <field name="date" invisible="1"/>
                <field name="scheduled_date"/>
                <field name="origin"/>
                <field name="group_id" invisible="1"/>
                <field name="backorder_id"/>
                <field name="state"/>
                <field name="priority" invisible="1"/>
                <field name="picking_type_id" invisible="1"/>
            </tree>
        </field>
    </record>

    <record id="action_picking_tree_all" model="ir.actions.act_window">
        <field name="name">Transfers</field>
        <field name="res_model">stock.picking</field>
        <field name="type">ir.actions.act_window</field>
        <field name="view_type">form</field>
        <field name="view_mode">tree,kanban,form,calendar</field>
        <field name="domain"></field>
        <field name="context">{
                'contact_display': 'partner_address',
        }
        </field>
        <field name="search_view_id" ref="view_picking_internal_search"/>
        <field name="help" type="html">
          <p class="o_view_nocontent_smiling_face">
            Define a new transfer
          </p>
        </field>
    </record>

    <menuitem id="all_picking" name="Transfers" parent="menu_stock_warehouse_mgmt" sequence="5" action="action_picking_tree_all" groups="stock.group_stock_manager,stock.group_stock_user"/>

Когда я обновляю свое приложение я нахожу второй голос меню, и дерево выглядит правильно с новыми вычислительными полями, но если я вызываю старое меню, дерево также отображается с новыми полями.

Где я ошибаюсь?

1 Ответ

2 голосов
/ 01 апреля 2020

Попробуйте добавить приоритет (какой-то порядок) к определению представления формы:

<record id="stock_picking_spedizioni_tree" model="ir.ui.view">
    <field name="name">stock.picking.spedizioni.tree</field>
    <field name="model">stock.picking</field>
    <field name="priority" eval="20" />
    <field name="arch" type="xml">
        <!-- tree -->  
    </field>
</record>

Значением по умолчанию является 16 и IIR C порядок представлений определяется его * Только 1005 *, что делает случайным (после каждого перезапуска сервера), какое представление будет загружено Odoo, если некоторые представления имеют одинаковое значение приоритета.

Таким образом, используя более высокое значение приоритета (да, приоритет имени немного запутанно), ваш вид не будет загружен в исходном пункте меню.

И еще один совет: как вы можете видеть в исходном коде XML, Odoo не использует action-view-Relations ( ir.actions.act_window.view). Вот почему Odoo пытается получить первое возможное представление для stock.picking, и именно тогда Odoo использует порядок приоритетов представлений.

...