2017-12-18 163 views
1

THE PURPOSE如何模拟stock.picking.type看板视图的行为?

我试图建立一个菜单项类似于一个你可能使用与工作(如果你有安装stock模块)。如果您转至仓库>操作>所有操作,您将看到一个美观的看板stock.picking.type模型,其中包含可用的拣配类型。如果您单击所有操作链接的任何拾取类型框,您将被重定向到stock.picking树形视图。那么,这是我唯一需要的,但是,我希望链接将您重定向到我的自定义stock.move树。

所以,我创建了我的menuitem,以及我自己的stock.picking.type看板视图,该视图将重定向到我自定义的stock.move树视图。

MY CODE

我的看板视图

<record id="stock_picking_type_2_move_kanban" model="ir.ui.view"> 
    <field name="name">stock.picking.type.2.move.kanban</field> 
    <field name="model">stock.picking.type</field> 
    <field name="priority" eval="20"/> 
    <field name="arch" type="xml"> 
     <kanban class="oe_background_grey" create="0"> 
      <field name="complete_name"/> 
      <field name="color"/> 
      <templates> 
       <t t-name="kanban-box"> 
        <div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card oe_kanban_stock_picking_type"> 
         <div class="oe_kanban_content"> 
          <h4 class="text-center"><strong><field name="complete_name"/></strong></h4> 
          <div class="oe_items_list oe_kanban_ellipsis"> 
           <div> 
            <a name="%(action_in_alt_move_views)d" type="action">Open moves</a> 
           </div> 
          </div> 
         </div> 
        </div> 
       </t> 
      </templates> 
     </kanban> 
    </field> 
</record> 

我将打开我的看板(和stock.picking.type默认的形式)

<record id="action_in_alt_picking_type_views" model="ir.actions.act_window"> 
    <field name="name">Picking types</field> 
    <field name="res_model">stock.picking.type</field> 
    <field name="type">ir.actions.act_window</field> 
    <field name="view_type">form</field> 
    <field name="view_mode">kanban,form</field> 
    <field name="search_view_id" ref="stock.view_pickingtype_filter"/> 
    <field name="help" type="html"> 
     <p class="oe_view_nocontent_create"> 
     Click to create a new picking type. 
     </p><p> 
     The picking type system allows you to assign each stock 
     operation a specific type which will alter its views accordingly. 
     On the picking type you could e.g. specify if packing is needed by default, 
     if it should show the customer. 
     </p> 
    </field> 
</record> 

<record id="action_in_alt_picking_type_kanban" model="ir.actions.act_window.view"> 
    <field name="view_mode">kanban</field> 
    <field name="view_id" ref="poc_alternative_stock.stock_picking_type_2_move_kanban"/> 
    <field name="act_window_id" ref="action_in_alt_picking_type_views"/> 
</record> 

<record id="action_in_alt_picking_type_form" model="ir.actions.act_window.view"> 
    <field name="view_mode">form</field> 
    <field name="view_id" ref="stock.view_picking_type_form"/> 
    <field name="act_window_id" ref="action_in_alt_picking_type_views"/> 
</record> 

我的菜单项

行动10
<menuitem action="action_in_alt_picking_type_views" 
    id="menu_action_in_alt_move_views" 
    parent="stock.menu_stock_warehouse_mgmt" sequence="4"/> 

THE BEHAVIOUR

当我点击我的菜单项,我得到了不同的错误,他们大多告诉我,什么领域不存在。问题是,所有这些字段都属于我为stock.move模型制作的搜索视图。我不知道为什么这个搜索视图正在加载到我的stock.picking.type动作中,所以Odoo试图用搜索视图stock.move显示我的看板视图。这是错误的原因。如果我评论搜索视图的每一个领域,我得到这个错误:

raise ValueError("Invalid field %r in leaf %r" % (left, str(leaf))) 
ValueError: Invalid field 'state' in leaf "<osv.ExtendedLeaf: ('state', '=', 'draft') on stock_picking_type (ctx:)>" 

这是我stock.move搜索视图的第一个过滤器的域。

为什么Odoo试图加载该搜索视图? (如果您看到我的动作代码,我甚至包含参数search_view_id,尝试加载默认搜索视图stock.picking.type而不是stock.move)。

而且还有一个更令人惊讶的事情是,如果我修改我stock.picking.type看板视图的优先级和写例如16,这将有比原来的(在stock模型申报)更优先,所以现在如果点击再次登录仓库>操作>所有操作,我的看板视图已加载。但是,嘿,这里的装载正确,它完美,完全按照我的意愿,看板视图是好的,它的搜索视图也链接重定向到我想要的视图...

任何人都可以解释我这里发生了什么事?

回答

0

从你的代码的外观你没有任何域('state', '=', 'draft')我假设当你第一次在你的代码中吃午餐你的代码有一个。当你有错误时,你将其删除。在XML中删除代码不会更新数据库中的数据。

<!-- you must tell Odoo empty the field first and next time 
     remove the code(in production) when odoo load some thing to database 
     like context, domain, any other value clear it first then remove 
     the code --> 
    <fied name="domain">[] </field> 

当你在XML中有一个错误,要尽量记住你之前,你清楚它从数据库中删除第一次什么样的代码。

+0

谢谢您回答@Cherif。不幸的是,该解决方案不起作用。我从来没有为'action_in_alt_picking_type_views'创建一个域,它试图在重定向到'stock.picking.type'模型的动作中加载'stock.move'的搜索视图,所以Odoo对每个域都抱怨。如果我从'stock.move'搜索视图中删除了带有域['('state','=','draft')]'的过滤器,那么错误就是另一个过滤器的域,甚至是一个'stock'域。移动“搜索视图。 – forvas