Ошибки Many2one и One2Many в Odoo python - PullRequest
0 голосов
/ 03 апреля 2020

У меня возникла проблема, когда я унаследовал класс с sale.order, а другой класс - это просто __name или связанный с ним.

class module_A(models.Model):
       _name='new.module_a'
      
       sale_id = fields.Many2one(comodel_name='sale.order')
       currency_id = fields.Many2one('res.currency',     string="currency")
       price_value = fields.Monetary(related="sale_id.total_price", string="Initial Price value",
                                          currency_field="currency_id")

class module_B(models.Model):
       
    _inherit = 'sale.order'
    module_id = fields.One2many(string="module A",
                                    comodel_name='new.module_a', inverse_name='sale_id')
    total_price = fields.Monetary(string="Price Initial", store=True, readonly=True, compute='_amount_all',
                                  tracking=4)
    amount_untaxed = fields.Monetary(string="Untaxed Amount", store=True, readonly=True, compute='_amount_all',
                                     tracking=5)
    amount_tax = fields.Monetary(string="Taxes", store=True, readonly=True, compute='_amount_all')

    @api.depends('order_line.price_total')
    def _amount_all(self):
        for order in self:
            amount_untaxed = amount_tax = 0.0
            for line in order.order_line:
                amount_untaxed += line.price_subtotal
                amount_tax += line.price_tax

            total_price = amount_tax + amount_untaxed
            print(total_price)
            order.update({
                'amount_untaxed': amount_untaxed,
                'amount_tax': amount_tax,
                'amount_total': amount_untaxed + amount_tax,
                'total_price': amount_untaxed + amount_tax,
            })

Проблемы: 1. В древовидном представлении price_value равен 0. Это означает, что он не получил значения из total_price после того, как связал его с sale_id. Я не знаю почему.

но когда я разделил его с tree_view. Цена указана. enter image description here

xml:

<field name="module_id"/>
         tree view
             control
             field name="price_value" <- field in module A

    <group>
        <field name="total_price"/> <- field in module B

Примечание: поля не могут быть взаимозаменяемы, так как total_price будет искать унаследованную продажу .order, пока value_value не существует в module_b.

Если я суммирую все значения, мне также понадобятся значения из класса module_A и поместим его в module_B. Это большая проблема, так как она не будет работать, потому что оба используют одни и те же столбцы и таблицы.

Я должен добавить промежуточный итог к каждому элементу в древовидном представлении, в котором я должен взять задачу № 2. Пример вычисления общих значений в классе module_A и получения значений от A до B, чтобы я мог отобразить их в поле зрения.

Начальное значение цены по-прежнему равно нулю.

enter image description here

Ответы [ 2 ]

0 голосов
/ 06 апреля 2020

Я нашел ответ на этот вопрос. Просто чтобы architect_ids зависел от api.depends для доступа к полям в модуле A.

0 голосов
/ 03 апреля 2020

На модели _name='new.module_a' установите для поля sale_id one2many значение many2one,

sale_id = fields.Many2one('sale.order', string="Sale")

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...