Пользовательский отчет Odoo11 с мастером - PullRequest
0 голосов
/ 03 сентября 2018

Я хотел бы напечатать некоторые штрих-коды продуктов с пользовательской конфигурацией.

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

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 Ответ

0 голосов
/ 06 сентября 2018

Я решил это методом 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,}                                                                    
...