У меня есть продукты с дополнительными полями, которые поступают из пользовательского модуля. Я пытаюсь переписать функцию копирования, потому что в противном случае, когда я пытаюсь дублировать продукт, некоторые значения не дублируются.
Итак, в этой функции копирования мне удается добавить эти поля, но если я попытаюсь просто добавить идентификаторы из исходного поля продукта, это значение потеряется после дублирования продукта. Думаю, это имеет смысл.
Код:
class ProductTemplate(models.Model):
_inherit= 'product.template'
@api.multi
def copy(self, default=None):
default = dict(default or {})
array_attribute_line_ids = []
for value_id in self.attribute_line_ids.read([]):
array_attribute_line_ids += [(4,value_id['id'])]
print (array_attribute_line_ids)
default.update({
# General Information
# 'standard_price': self.standard_price,
# Variants > Attributes
'attribute_line_ids': array_attribute_line_ids,
# Purchase > Vendors
# Inventory
'weight': self.weight,
'volume': self.volume,
# Invoicing
'property_account_income_id': self.property_account_income_id,
'supplier_taxes_id': self.supplier_taxes_id, #NOT WORKING
'property_account_expense_id': self.property_account_expense_id,
'property_account_creditor_price_difference': self.property_account_creditor_price_difference,
})
return super(ProductTemplate, self).copy(default)
Вид: под рукой находится поле attribute_line_ids, показанное в нижней части изображения.
Проблема: я мог бы создать новые записи на основе исходных, но проблема в том, что одно из этих значений зависит от множества2, которому требуется значение "product_tmpl_id", которое является идентификатором продукта. Итак, как я могу создать это значение, если у меня еще нет идентификатора нового продукта, потому что он не был продублирован в данный момент.
Ранее в другой функции я создал запись, а затем, используя ее идентификатор, обновил эти значения. Теперь это невозможно.
Есть ли способ решить эту проблему? Есть ли функция .copy(), которая позволяет мне дублировать все эти записи без необходимости их создания вручную?
Спасибо в плюс.
Это предприятие odoo 11.