Загрузите пользовательскую модель и добавьте поле к pos.order.line в Point of Sale - Odoo 12 - PullRequest
0 голосов
/ 29 марта 2020

Нужен пример рабочего кода, чтобы я мог лучше понять, как это работает в приложении Point of Sale в Odoo 12.

Я пытаюсь добавить новое настраиваемое поле в "pos.order.line "для использования с приложением Point of Sale, и мне неудобно с Odoo 12 поз.

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

Это что-то вроде «налогов», когда пользователь выбирает продукт, а Odoo автоматически устанавливает налог информация о позиции «строка заказа».

Для лучшего понимания я попытаюсь воспроизвести шаги, которые я выполнил до сих пор.

1. Новая модель: для этого примера я назову его «Тип».

Эта модель будет заполнена «несколькими» типами и добавлена ​​к каждому имеющемуся у меня продукту.

class Types(models.Model):
    _name = 'types'
    _description = 'Sample Types Model'
    code = fields.Char('Code', required=True)
    name = fields.Char('Description', required=True)

2. Эта информация о "типах" будет добавляться ко всем имеющимся у меня продуктам, поэтому я добавил новое поле в модель "products.template":

class ProductTemplate(models.Model): 
    _inherit = "product.template"
    types_id = fields.Many2one('types', string='Product specific type') 

3. Поскольку мне нужно, чтобы это значение отображалось в каждой строке заказа pos, я добавил поле к модели pos.order.line, используя тот же подход:

class PosOrderLine(models.Model):
    _inherit = "pos.order.line"
    types_id = fields.Many2one('types', string='Product specific type')

4. Здесь начинается проблема.

Мне нужно загрузить новую модель и новое поле, добавленное в «product.template» и написать «тип» по умолчанию для каждого продукта в «pos.order.line». ", когда товар добавлен в корзину.

В PoS мне нужно:

  • Загрузить новую модель и поля;

  • Запишите значение в pos.order.line при добавлении заказа в корзину;

Кто-нибудь может мне помочь, пожалуйста?

1 Ответ

1 голос
/ 29 марта 2020

Вы можете установить types_id , относящиеся к product_id.product_tmpl_id.types_id, и оно будет заполнено автоматически.

class PosOrderLine(models.Model):
    _inherit = "pos.order.line"

    types_id = fields.Many2one(related='product_id.product_tmpl_id.types_id', 
                               string='Product specific type')
...