Odoo 13 проблем с добавлением лота для продуктов в mrp_production_templates.xml

#python-3.x #odoo #odoo-13

#python-3.x #odoo #odoo-13

Вопрос:

Мне нужно добавить в отчет о производственном заказе в формате PDF партию продукта, который будет изготовлен. Проблема в том, что поле всегда пустое, как будто для lot не вызывается значение. Никаких исключений не происходит. Как мне сделать так, чтобы это значение отображалось внутри отчета?

Я создал новую модель внутри файла python, mrp_production_with_lot.py вызываемого MrpProductionWithLots для наследования MrpProduction модели и добавления finished_product_lot поля:

 from odoo import fields, models, tools


class MrpProductionWithLots(models.Model):

    _inherit = 'mrp.production'

    finished_product_lot = fields.Many2one(
        'stock.production.lot', 'Lot/Serial Number',
        domain="[('product_id', '=', product_id), ('company_id', '=', company_id)]",
        check_company=True)
  

Затем я унаследовал mrp_production_templates.xml и создал новый файл Python под названием mrp_production_with_lots.xml :

 <?xml version="1.0" encoding="utf-8"?>
<odoo>
    <template id="report_mrporder_inherit" inherit_id="report_mrporder">
        <xpath expr="//div[@class='row mt32 mb32']" position="after">
            <div class="row mt32 mb32" id="finished_product_lot">
                <div class="col-3">
                    <strong>Finished product lot:</strong><br/>
                    <span t-field="o.finished_product_lot"/>
                </div>
            </div>
        </xpath>
    </template>
</odoo>
  

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

Комментарии:

1. Как вы устанавливаете значение поля? В lot_id поле с именем finished_move_line_ids есть поле с именем finished_move_line_ids . Нужно ли показывать это поле?

2. Я думаю, что вы неправильно наследуете идентификатор. Попробуйте использовать mrp.report_mrporder. Используйте имя модуля в inherit id.mrp является примером. Используйте имя вашего родительского модуля.

3. @Kenly да, но я не могу этого сделать

4. Это работает? Все еще проблема?

5. @AndressaCabistani в исходном отчете нет ничего «законченного», поэтому я рекомендую добавить новую «часть» в этот отчет сразу после последней таблицы (цикл включен move_raw_ids ).). Если было создано что-то, что будет в поле move_finished_ids , поэтому вы должны создать таблицу в этом поле. За этим полем находится model stock.move , и вы можете выполнить цикл по его полю order_finished_lot_ids , чтобы получить все «созданные» партии за один ход.