Odoo 10 从销售订单创建项目
Odoo 10 create project from sales order
我正在为 select/create 销售订单中的新项目设计一个按钮。
这是我的模块:
@api.multi
def action_create_project_project(self):
view_id = self.env.ref('project.project_project_view_form_simplified').id
context = self._context.copy()
return {
'name': 'Create project',
'view_type': 'form',
'view_mode': 'tree',
'views' : [(view_id, 'form')],
'res_model': 'project.project',
'view_id': view_id,
'type': 'ir.actions.act_window',
# 'res_id': self.id,
'target': 'new',
'context': context,
}
和视图:
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_order_form_inherit_sale_timesheet" model="ir.ui.view">
<field name="name">Sale Order create project</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<data>
<xpath expr="//field[@name='partner_shipping_id']" position="after">
<field name="project_project_id" invisible="1"/>
<label for="action_create_project_project" string="Create project" invisible="[('project_project_id', '!=', False)]"/>
<button type="object"
name="action_create_project_project"
class="fa fa-external-link btn btn-default o_external_button"
string="New project"
groups="base.group_user"
attrs="{'invisible': [('project_project_id', '!=', False)]}">
</button>
</xpath>
</data>
</field>
</record>
</odoo>
但我真正想要的是 select 现有项目或创建一个新项目,当项目 selected 我需要访问该项目,获得 analytic_account_id
并使用此信息填写销售订单。
有什么帮助吗?
也许我可以修改 project_project_id
定义,让它可以在销售订单草稿上写入(由 sale_timesheet
创建,只读标志为 true),但我不知道我可以覆盖一个来自插件的字段(希望保持核心完整)...
原文:
project_project_id = fields.Many2one('project.project',
compute='_compute_project_project_id',
string='Project associated to this sale',
)
期望:
project_project_id = fields.Many2one('project.project',
'Project associated to this sale',
compute='_compute_project_project_id',
readonly=True,
states={'draft': [('readonly', False)]},
copy=False,
)
要覆盖现有字段,只需添加您需要的属性,如下所示:
project_project_id = fields.Many2one(
readonly=True,
states={'draft': [('readonly', False)]},
copy=False)
希望这个回答能对您有所帮助。
我正在为 select/create 销售订单中的新项目设计一个按钮。
这是我的模块:
@api.multi
def action_create_project_project(self):
view_id = self.env.ref('project.project_project_view_form_simplified').id
context = self._context.copy()
return {
'name': 'Create project',
'view_type': 'form',
'view_mode': 'tree',
'views' : [(view_id, 'form')],
'res_model': 'project.project',
'view_id': view_id,
'type': 'ir.actions.act_window',
# 'res_id': self.id,
'target': 'new',
'context': context,
}
和视图:
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_order_form_inherit_sale_timesheet" model="ir.ui.view">
<field name="name">Sale Order create project</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<data>
<xpath expr="//field[@name='partner_shipping_id']" position="after">
<field name="project_project_id" invisible="1"/>
<label for="action_create_project_project" string="Create project" invisible="[('project_project_id', '!=', False)]"/>
<button type="object"
name="action_create_project_project"
class="fa fa-external-link btn btn-default o_external_button"
string="New project"
groups="base.group_user"
attrs="{'invisible': [('project_project_id', '!=', False)]}">
</button>
</xpath>
</data>
</field>
</record>
</odoo>
但我真正想要的是 select 现有项目或创建一个新项目,当项目 selected 我需要访问该项目,获得 analytic_account_id
并使用此信息填写销售订单。
有什么帮助吗?
也许我可以修改 project_project_id
定义,让它可以在销售订单草稿上写入(由 sale_timesheet
创建,只读标志为 true),但我不知道我可以覆盖一个来自插件的字段(希望保持核心完整)...
原文:
project_project_id = fields.Many2one('project.project',
compute='_compute_project_project_id',
string='Project associated to this sale',
)
期望:
project_project_id = fields.Many2one('project.project',
'Project associated to this sale',
compute='_compute_project_project_id',
readonly=True,
states={'draft': [('readonly', False)]},
copy=False,
)
要覆盖现有字段,只需添加您需要的属性,如下所示:
project_project_id = fields.Many2one(
readonly=True,
states={'draft': [('readonly', False)]},
copy=False)
希望这个回答能对您有所帮助。