Как создать записи в odoo tree view onclick button? - PullRequest
0 голосов
/ 19 ноября 2018

, пожалуйста, помогите мне, когда я нажимаю кнопку Enregistrer, чтобы создать эти поля в древовидном представлении внизу

для этого примера, у меня есть количество, равное 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 голосов
/ 20 ноября 2018

В вашей функции для кнопки 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
    })
...