как добавить товар в строку заказа sale.subscription с помощью функции создания odoo 13
Не могу понять, как добавить строку в sale.subscription с помощью функции create из другой модели
subscription_pak = self.env['product.template'].search([('name', '=', pak_name),('recurring_invoice', '=', True)], limit=1)
subscription_info = {
'partner_id': vals['name'],
}
add_subscription = self.env['sale.subscription'].create(subscription_info)
print('ssssss',subscription_pak)
#works
add_subscription_pak = {
'product_id': subscription_pak.id,
'partner_id': add_subscription.id,
}
link_user_to_subscription = self.env['sale.subscription.line'].create(add_subscription_pak)
Я создаю подписку, но не могу найти поле для добавления продукта в строки
не могли бы вы помочь
2 ответа
Решение
Благодаря odoo Mates на YouTube, это видео с канала odoo Mates Как обновить поле One2many из OnChange Of Field в Odoo и @bigbear3001
это то, что сработало для меня
supsctiption_pak = self.env['product.product'].search([('name', '=', pak_name),('recurring_invoice', '=', True)], limit=1)
supsctiption_info = {
'partner_id': vals['name'],
}
add_supsctiption = self.env['sale.subscription'].create(supsctiption_info)
supsctiption_to_pak = self.env['sale.subscription'].search([('partner_id', '=', vals['name'])], limit=1)
add_supsctiption_pak = {
'product_id': supsctiption_pak.product_variant_id.id,
'uom_id': supsctiption_pak.uom_id.id,
'price_unit': supsctiption_pak.list_price,
}
supsctiption_to_pak.write({'recurring_invoice_line_ids':[(5, 0, 0),(0,0,add_supsctiption_pak)]})
Ваш пакет subscription_pak имеет тип product.template
(Шаблон продукта), но поле product_id в sale.subscription.line
требует product.product
(Продукт (вариант)) (не могу ссылаться на него, так как это Odoo Enterprise)
так что это должно работать (если у вас есть только один вариант продукта):
...
add_subscription_pak = {
'product_id': subscription_pak.product_variant_id.id,
'partner_id': add_subscription.id,
}
...
для нескольких вариантов:
...
add_subscription_pak = {
'product_id': subscription_pak.product_variant_ids.filter(lambda pv: pv.attribute == 'value')[0].id,
'partner_id': add_subscription.id,
}
...