Как распечатать отчет с сайта в odoo11? - PullRequest
0 голосов
/ 16 октября 2018

Я хочу напечатать отчет, нажав на кнопку печати на веб-сайте.

Но он показывает некоторую ошибку:

Файл "/ home / priya / workspace / ODOO11 / odoo-11.0 / odoo / http.py ", строка 829, в диспетчере r = self._call_function (** self.params) Файл" /home/priya/workspace/ODOO11/odoo-11.0/odoo/http.py ", строка 342, в _call_function возвращает check_call (self.db, * args, ** kwargs) Файл "/home/priya/workspace/ODOO11/odoo-11.0/odoo/service/model.py", строка 97, в оболочке возвращает f (имя_базы), * args, ** kwargs) Файл "/home/priya/workspace/ODOO11/odoo-11.0/odoo/http.py", строка 335, в файле selected_call = файл self.endpoint (* a, ** kw) "/home/priya/workspace/ODOO11/odoo-11.0/odoo/http.py ", строка 936, в вызов возврат файла self.method (* args, ** kw)" / home / priya /workspace / ODOO11 / odoo-11.0 / odoo / http.py ", строка 515, в файле response_wrap response = f (* args, ** kw) Файл" / home / priya / repo / rp-group / rpg_quotation / controllers / web_page.py ", строка 1442, в update_quotation res = self.print_quotation_software_report (data, int (quotation_id)) Файл "/home/priya/repo/rp-group/rpg_quotation/controllers/web_page.py", строка 2699, в файле print_quotation_software_report pdf = request.env.ref ('rpg_quotation.rpg_quotation_software_ )rere_re_reportФайл .report_action (self, data = data, config = False) "/home/priya/workspace/ODOO11/odoo-11.0/odoo/addons/base/ir/ir_actions_report.py", строка 703, в контексте report_action = dict (self.env.context, active_ids = active_ids)

UnboundLocalError: local variable 'active_ids' referenced before assignment

Мой код js:

$(document).on('click', Quotation.elements.print_quotation_software_selector, function() {
 var self = $(this);
 var data = {
   'xpath': null,
   'cmd': 'print_quotation_software_report'
 };
 Quotation.methods.xhr(data, function(r) {
 });

});

Мой код Python:

def print_quotation_software_report(self,data,quotation_id):
 order_id = quotation_id
 if quotation_id:
   pdf = request.env.ref('rpg_quotation.rpg_quotation_software_setwise__report').report_action(self, data=data, config=False)
   pdfhttpheaders = [('Content-Type', 'application/pdf'), ('Content-Length', len(pdf))]
   return request.make_response(pdf, headers=pdfhttpheaders)

Здесь,

rpg_quotation - имя модуля, а rpg_quotation_software_setwise__report - идентификатор отчета.

Ответы [ 2 ]

0 голосов
/ 28 июня 2019

Вы можете попробовать это

Распечатал отчет, дав ссылку на кнопку, как это,

<a t-attf-href="'/report/pdf/account.report_invoice/%s' % i.id">
<button type="button" class="btn btn-primary btn-md o_website_form_send">Print Invoice</button>

В i.id у меня есть идентификаторсчета.Это формат отчета / type_of_the_report / module_name.template_name / id

Чтобы распечатать отчет с контроллера,

@http.route('/school/card', methods=['POST', 'GET'], csrf=False, type='http', auth="user", website=True)
def print_id(self, **kw):
    student_id = kw['stud_id']
    if student_id:
        pdf = request.env['report'].sudo().get_pdf([student_id], 'module_name.report_name', data=None)
        pdfhttpheaders = [('Content-Type', 'application/pdf'), ('Content-Length', len(pdf))]
        return request.make_response(pdf, headers=pdfhttpheaders)
    else:
        return request.redirect('/')
0 голосов
/ 16 октября 2018

Возможно, это потому, что вы передаете self в качестве значения позиционного аргумента docids для вызова метода report_action вместо quotation_id, чтобы удалить вашу фактическую ошибку.

Но этот вызов метода report_action не вернет данные файла pdf.Вам нужно будет изменить его на:

pdf = request.env.ref('rpg_quotation.rpg_quotation_software_setwise__report').sudo().render_qweb_pdf([quotation_id])[0]

См. Пример по адресу:

https://github.com/odoo/odoo/blob/b29b545fe8464610ce04ac8be11e0356962d10d9/addons/sale/controllers/portal.py#L196

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