#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
, поэтому вы должны создать таблицу в этом поле. За этим полем находится modelstock.move
, и вы можете выполнить цикл по его полюorder_finished_lot_ids
, чтобы получить все «созданные» партии за один ход.