自动创建stock.location - Odoo v9社区

时间:2017-03-01 03:11:38

标签: python openerp odoo-9

我有这个方法继承自模块stock.location的{​​{1}}模型上的fleet.vehicle

fleet

所以,这会将class fleet_vehicle(models.Model): _inherit = 'fleet.vehicle' location_id = fields.Many2one("stock.location", string="Almacén Origen", store=True) 模型转化为stock.location模型,这是我的观点:

fleet.vehicle

到目前为止,非常好,现在,每次从 <record model='ir.ui.view' id='fleet_vehicle_form'> <field name="name">fleet.vehicle.form</field> <field name="model">fleet.vehicle</field> <field name="inherit_id" ref='fleet.fleet_vehicle_form'/> <field name="arch" type="xml"> <xpath expr="//form/sheet/group" position="after"> <group string="Almacén correspondiente" col="2"> <field name="location_id"/> </group> </xpath> </field> </record> 表格中将新车辆添加到数据库时,我都被要求创建一个位置。

正如您所看到的,我已经添加了模型和字段以添加位置,但是,每次保存新车辆时如何创建此位置?

例如,我创建了车辆fleet.vehicle,这应该在系统中自动创建一个名为Opel/Astra的新位置,我知道如何声明默认位置,源位置和目标位置,例如这样:

Opel/Astra

然后从字段中调用函数,如:

def _static_location(self):
    return self.env.ref('fleet_stock.location_stock')

当然在 x_location_dest_id = fields.Many2one('stock.location', string=u'Ubicacion Destino de Productos', required=True, readonly=False, default=_static_location, help="Location where the system will look for components.") 文件夹中的xml文件中声明了这一点,如:

data

现在,我如何“默认”此行为,而不是已经存在的位置,而是根据<?xml version="1.0" encoding="utf-8"?> <openerp> <data noupdate="1"> <record id="location_stock" model="stock.location"> <field name="name">ReparacionUnidades</field> <field name="location_id" ref="stock.stock_location_locations_virtual"/> <field name="usage">production</field> <field name="company_id"></field> </record> </data> </openerp> 车名创建一个新行为?

1 个答案:

答案 0 :(得分:2)

我想,你需要根据车名创建新的stock.location。 但我很困惑你为什么在你的例子中使用数据文件。

您需要做的事情:搜索已stock.location名称的fleet.vehicle。如果搜索成功,请设置location_id。如果没有创建新的stock.location并分配给location_id。我在这里看不到问题,为什么你不能自己做这个?

因为我不知道你的系统是如何工作的所以我不能给你代码。但是您需要onchange上的location_id方法。如果设置了名称,则可以搜索stock.location或创建并分配新名称。