如何将条目添加到 'More' 菜单或顶部菜单以添加对多个选择的操作?
How to add entry to 'More' menu or top menu to add action on multiple selections?
目标
我想从选定的订单行创建交货,但我无法显示该按钮。
模块
compose_delivery_order/
├── delivery_order_button.py
├── delivery_order_button.xml
├── images/
│ └── delivery_order_button.png
├── __init__.py
├── __openerp__.py
├── order_to_invoice_create_delivery_button.py
├── order_to_invoice_create_delivery_button.xml ← I'm working on this
├── sale_order_button.py
└── sale_order_confirm_button.xml
XML <record>
<record id="action_sale_order_liquidar" model="ir.actions.server">
<field name="name">Liquidar</field>
<field name="type">ir.actions.server</field>
<field name="model_id" ref="model_sale_order"/>
<field name="state">code</field>
<field name="code">self.some_custom_code(cr, uid, context.get('active_ids'), context=context)</field>
</record><record id="id_of_the_action_value" model="ir.values">
<field name="name">Liquidar</field>
<field name="action_id" ref="action_sale_order_liquidar"/>
<field name="value" eval="'ir.actions.server,' + str(ref('action_sale_order_liquidar'))"/>
<field name="key">action</field>
<field name="model_id" ref="model_sale_order"/>
<field name="model">sale.order</field>
<field name="key2">client_action_multi</field>
</record>
Python
import logging
from openerp import netsvc
from openerp.osv import osv
logger = logging.getLogger(__name__)
class sale_order_line(osv.osv):
_inherit = 'sale.order.line'
def some_custom_code(self, db_cursor, user_id, ids, context=None):
logger.error('+ + + + + + sale_order_line -> some_custom_code + + + + + + ')
return True
def some_custom_code(self, db_cursor, user_id, ids, context=None):
logger.error('+ + + + + + some_custom_code + + + + + + ')
return True
问题
如何添加按钮? [More v]
的子菜单或 [Create] or Import
.
的子菜单
N.B.: 我检查它是在 __openerp__.py
的 data
部分导入的。
在 更多 菜单上添加新菜单时需要注意以下事项。
- 注册表格查看
- 注册操作视图
- 注册ir_values(从你想显示菜单的地方)
- 给予适当的相关view_id参考
- 目标 动作视图中的属性
- 为记录标签
提供相关名称
尝试使用以下代码(在 .xml 文件中添加代码):
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_create_delivery_button" model="ir.ui.view">
<field name="name">Create Delivery</field>
<field name="model">sale.order.line</field>
<field name="arch" type="xml">
<form string="Create Delivery" version="7.0">
<!-- Design Form or put your field here -->
<footer>
<!-- Add button on footer of pop-up window -->
</footer>
</form>
</field>
</record>
<record id="action_create_delivery_button" model="ir.actions.act_window">
<field name="name">Create Delivery</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">sale.order.line</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="view_id" ref="view_create_delivery_button"/>
<field name="target">new</field>
<field name="multi">True</field>
</record>
<record model="ir.values" id="ir_values_create_delivery_button">
<field name="model_id" ref="sale.model_sale_order_line" />
<field name="name">Create Delivery</field>
<field name="key2">client_action_multi</field>
<field name="value" eval="'ir.actions.act_window,' + str(ref('action_create_delivery_button'))" />
<field name="key">action</field>
<field name="model">sale.order.line</field>
</record>
</data>
</openerp>
目标
我想从选定的订单行创建交货,但我无法显示该按钮。
模块
compose_delivery_order/
├── delivery_order_button.py
├── delivery_order_button.xml
├── images/
│ └── delivery_order_button.png
├── __init__.py
├── __openerp__.py
├── order_to_invoice_create_delivery_button.py
├── order_to_invoice_create_delivery_button.xml ← I'm working on this
├── sale_order_button.py
└── sale_order_confirm_button.xml
XML <record>
<record id="action_sale_order_liquidar" model="ir.actions.server">
<field name="name">Liquidar</field>
<field name="type">ir.actions.server</field>
<field name="model_id" ref="model_sale_order"/>
<field name="state">code</field>
<field name="code">self.some_custom_code(cr, uid, context.get('active_ids'), context=context)</field>
</record><record id="id_of_the_action_value" model="ir.values">
<field name="name">Liquidar</field>
<field name="action_id" ref="action_sale_order_liquidar"/>
<field name="value" eval="'ir.actions.server,' + str(ref('action_sale_order_liquidar'))"/>
<field name="key">action</field>
<field name="model_id" ref="model_sale_order"/>
<field name="model">sale.order</field>
<field name="key2">client_action_multi</field>
</record>
Python
import logging
from openerp import netsvc
from openerp.osv import osv
logger = logging.getLogger(__name__)
class sale_order_line(osv.osv):
_inherit = 'sale.order.line'
def some_custom_code(self, db_cursor, user_id, ids, context=None):
logger.error('+ + + + + + sale_order_line -> some_custom_code + + + + + + ')
return True
def some_custom_code(self, db_cursor, user_id, ids, context=None):
logger.error('+ + + + + + some_custom_code + + + + + + ')
return True
问题
如何添加按钮? [More v]
的子菜单或 [Create] or Import
.
N.B.: 我检查它是在 __openerp__.py
的 data
部分导入的。
在 更多 菜单上添加新菜单时需要注意以下事项。
- 注册表格查看
- 注册操作视图
- 注册ir_values(从你想显示菜单的地方)
- 给予适当的相关view_id参考
- 目标 动作视图中的属性
- 为记录标签 提供相关名称
尝试使用以下代码(在 .xml 文件中添加代码):
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_create_delivery_button" model="ir.ui.view">
<field name="name">Create Delivery</field>
<field name="model">sale.order.line</field>
<field name="arch" type="xml">
<form string="Create Delivery" version="7.0">
<!-- Design Form or put your field here -->
<footer>
<!-- Add button on footer of pop-up window -->
</footer>
</form>
</field>
</record>
<record id="action_create_delivery_button" model="ir.actions.act_window">
<field name="name">Create Delivery</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">sale.order.line</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="view_id" ref="view_create_delivery_button"/>
<field name="target">new</field>
<field name="multi">True</field>
</record>
<record model="ir.values" id="ir_values_create_delivery_button">
<field name="model_id" ref="sale.model_sale_order_line" />
<field name="name">Create Delivery</field>
<field name="key2">client_action_multi</field>
<field name="value" eval="'ir.actions.act_window,' + str(ref('action_create_delivery_button'))" />
<field name="key">action</field>
<field name="model">sale.order.line</field>
</record>
</data>
</openerp>