Пользовательский отчет Odoo11 с мастером
Я хотел бы напечатать некоторые штрих-коды продукта с пользовательской конфигурацией.
Теперь проблема в том, что я создал мастер, но когда я нажимаю кнопку печати, данные не передаются в отчет.
class BarcodeConfig(models.Model):
_name = 'report.barcode.print'
@api.model
def _default_product_line(self):
active_ids = self._context.get('active_ids', [])
products = self.env['product.product'].browse(active_ids)
return [(0, 0, {'product_id': x.id, 'qty': 1}) for x in products]
product_line = fields.One2many('product.print.wizard', 'barcode_id', string="Products",
default=_default_product_line)
@api.multi
def print_report(self):
data = self.read()[0]
ids = [x.product_id.id for x in self.product_line]
config = self.env['barcode.config'].get_values()
data.update({
'config': config
})
datas = {'ids': ids,
'form': data
}
return self.env.ref('odoo_barcode.barcode_report').report_action(self,data=datas)
В приведенном выше коде у меня было ids
а также для product.product
модель.
<template id="report_barcode_temp">
<t t-call="web.html_container">
<t t-call="web.internal_layout">
<div class="page">
<h2>Report title</h2>
<strong t-esc="docs"/>
<strong t-esc="doc_ids"/>
<span t-esc="data"/>
<t t-foreach="docs" t-as="o">
<span t-esc="o"/>
<p>This object's name is
<span t-field="o.name"/>
</p>
</t>
</div>
</t>
</t>
В приведенном выше коде я просто пытаюсь напечатать, какие у меня есть данные, но в документах ничего нет.
<strong t-esc="docs"/>
печать этой строки product.product
модель также. но ids
не здесь, вот проблема у меня.
Может кто-нибудь помочь мне сказать, почему это происходит? Или есть другой способ добиться этого?
1 ответ
Я решил это get_report_values
метод.
class classname(models.AbstractModel):
_name = 'report.modulename.templatename'
@api.model
def get_report_values(self, docids, data=None):
# docids: pass from the wizard print button.
records = self.env[objectname].browse(docids)
return {
'doc_ids': docids,
'doc_model': objectname,
'docs': records,
'data': data,}