Распечатать отчет в формате PDF из Javascript Odoo 12

Я пытаюсь напечатать этикетки со штрих-кодом для вложений. Я добавил новую кнопку в канбан-представлении страницы документов. Я пытаюсь распечатать отчет в формате PDF для выбранных документов. Вот код.

* .js

odoo.define('documents.DocumentsInspector.inherit', function (require) 
{
"use strict";

var model = require('documents.DocumentsInspector');
var core = require('web.core');
var _t = core._t;
var qweb = core.qweb;
var BaseImport = require('base_import.import')
var rpc = require('web.rpc')

model.include({

 events: {
  'click .o_inspector_archive': '_onArchive',
  'click .o_inspector_delete': '_onDelete',
  'click .o_inspector_download': '_onDownload',
  'click .o_inspector_replace': '_onReplace',
  'click .o_inspector_lock': '_onLock',
  'click .o_inspector_share': '_onShare',
  'click .o_inspector_open_chatter': '_onOpenChatter',
  'click .o_inspector_tag_add': '_onTagInputClicked',
  'click .o_inspector_tag_remove': '_onRemoveTag',
  'click .o_inspector_trigger_rule': '_onTriggerRule',
  'click .o_inspector_object_name': '_onOpenResource',
  'click .o_preview_available': '_onOpenPreview',
  'click .o_document_pdf': '_onOpenPDF',
  'mouseover .o_inspector_trigger_hover': '_onMouseoverRule',
  'mouseout .o_inspector_trigger_hover': '_onMouseoutRule',
  'click .o_inspector_print': '_onBarcodePrint',
},


/**
 * @private
 */
_onBarcodePrint: function (ev) {

 var attachment_ids = [];
_.each(this.records,function(data){
  // console.log('data',data);
  attachment_ids.push(data.res_id)
}),

rpc.query({model: 'ir.attachment', method: 'print_barcode',args:[attachment_ids]})
 },
 });



});

report.AbstractModel

 class PrintDocumentBarcode(models.AbstractModel):
_name = 'report.ean13_attachment.report_documentbarcode'
_description = 'Document Barcodes'

@api.model
def _get_report_values(self, docids, data=None):

    if data.get('atids'):
        doc = self.env['ir.attachment'].browse(data.get('atids'))
    else:
        doc = self.env['ir.attachment'].browse(docids)

    return {
        'doc_ids': docids,
        'doc_model': self.env['ir.attachment'],
        'docs': doc,

    }

ir.attachment

def print_barcode(self):
    data = {}
    data['atids']=self.ids
    return self.env.ref('ean13_attachment.action_report_documentbarcode').with_context(landscape=True).report_action(self, data=data)

Функция print_barcode выполняется успешно, но _get_report_values нет.

Как я могу этого добиться?


person KbiR    schedule 09.12.2018    source источник
comment
Как вы позвонили _get_report_values?   -  person Kenly    schedule 09.01.2019


Ответы (2)


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

person Quốc Khiêm    schedule 09.01.2019
comment
Ответ в небольшом формате кодирования (по крайней мере, пример) будет оценен! - person ray; 09.01.2019

Вот пример печати отчета в формате PDF с помощью настраиваемой кнопки с помощью odoo js.

events:{

    'click #mybutton': '_onClickPrint',
}


_onClickPrint: function(){
        var self = this;
        var reportname = 'sale.report_saleorder?docids=' +
                          this.userContext.activeids +
                          '&report_type=qweb-pdf&model_name=sale.order';
        var action = {
            'type': 'ir.actions.report',
            'report_type': 'qweb-pdf',
            'report_name': reportname,
            'report_file': 'sale.report_saleorder',
        };
        return this.do_action(action);
    },
person Atul Arvind    schedule 08.02.2021