2017-12-18 204 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