#python #odoo #odoo-14
Вопрос:
В Odoo я хочу добавить функцию для вставки строки продажи между другими строками. Я делал это с:
в поле зрения:
<button name="add_line" type="object" string=" " icon="fa-add" class="oe_edit_only"/>
в модели:
def add_line(self):
for rec in self:
new_sequence = rec.sequence 1
# create new orderline
new_sale_line = self.env['sale.order.line'].create({
"order_id": rec.order_id and rec.order_id.id or False,
"sequence": new_sequence,
#supply default values
"product_id" : rec.product_id and rec.product_id.id or False,
"product_uom" : rec.product_uom and rec.product_uom.id or False,
"customer_lead" : 0,
"name" : "",
"price_unit" : 0,
"product_uom_qty" : 1
})
# update sequence of following orderlines
for line in rec.order_id.order_line:
if line.xaa_nif_regel_nr > new_sale_line.xaa_nif_regel_nr and line.sequence >= new_sale_line.sequence:
line.sequence = line.sequence 1
В принципе, это работает. Но когда у меня большой заказ, и я нажимаю кнопку «Добавить», страница перезагружается. А также этот метод требует установки продукта во вставленной строке, в то время как на самом деле мы хотим иметь новую пустую строку.)
Чего я хочу добиться, так это обратного эффекта для того, что delete
делает кнопка -: она удаляет строку и остается в активном положении прокрутки. Теперь я хочу вставить строку, и пусть браузер остается в активном положении прокрутки.
Комментарии:
1. Вы пробовали команду self._cr.execute для создания строк SO вместо использования ORM? { self._cr.выполнить(«»»ВСТАВИТЬ В строку заказа НА продажу ………) }
2. Нет, я этого не делал. Я не могу представить, что это решит всю проблему, потому что для этого нужен жесткий вызов базы данных, и я ищу метод в памяти (например, «добавление новой строки внизу»).