如何在odoo树视图onclick按钮中创建记录?

时间:2018-11-18 21:29:21

标签: odoo odoo-10 odoo-9

请帮助 当我单击“注册器”按钮以在底部的树视图中创建那些字段时,我需要

在此示例中,我的数量等于12,因此需要在树视图上创建12行,并在向导视图中创建值

enter image description here

向导代码:

class LinesWizard(models.Model):
    _name = 'bons.wizard'
    w_contrat_name = fields.Many2one('contrat.contrat', string='Contrat')
    w_contrat_line = fields.Many2one('contrat.lignes', string='Ligne contrat')
    w_product_name = fields.Many2one('product.product', string='Produit')
    w_po_number = fields.Char(string='Numero PO')
    w_qtt = fields.Float('quantite', related='w_contrat_line.quantity')
    w_prix = fields.Float(string='Prix unitaire', related='w_contrat_line.unit_price')

    @api.onchange('w_contrat_name')
    def on_change_contrat_name(self):
        if self.w_contrat_name:
            self.w_contrat_line = False
            return {'domain': {'w_contrat_line' : [('ligne_ids', '=', self.w_contrat_name.id)]}}
        else:
            return {'domain': {'w_contrat_line': []}}

1 个答案:

答案 0 :(得分:0)

在Enregistrer按钮的功能中,您可以使用以下代码获取有效的sale.order ID。

session_id = self.env['sale.order'].browse(self._context.get('active_id'))

然后在同一函数中,只需创建并添加行即可。

session_id.write({
    'your_tree_ids': [(0, False, 
        {
        'w_contrat_name': self.w_contrat_name,
        'w_product_name': self.w_product_name,
        'etc': 'etc...'}
        )] * int(self.w_qtt) # assuming rows to be added are the same, create a list of w_qtt quantity of (0, _, values), since your qty is a float, need to convert to int first
    })