2016-05-18 19 views
3

customer.paymentレコードのリストを印刷する方法。これはウィザードを使用して開いています。ここに私のモジュールです。私は、Odoo 9python odooでレポートを印刷

class CustomerPayment(models.Model): 
    _name = 'customer.payment' 
    _rec_name = 'name' 


    name = fields.Char(default="New") 
    invoice_number = fields.Many2one('account.invoice') 
    customer = fields.Many2one('res.partner') 
    application_id = fields.Many2one('admission.form') 
    date = fields.Date() 
    reference = fields.Char() 
    cashier = fields.Many2one('res.users') 
    journal_item = fields.Many2one('journal.item') 
    payment_account = fields.Many2one('erp.account', default=default_payment_account) 
    payment_line = fields.One2many('payment.line','payment_id') 
    description = fields.Text() 
    state = fields.Selection([('open','Open'), ('payed','Payed'),('refund','Refund')], default="open") 
    total = fields.Float(compute="get_total") 
    due_amount = fields.Float(compute="get_payable") 
    payed = fields.Float() 
    course_id = fields.Many2one('student.course') 
    payable = fields.Float() 
    discount = fields.Float(compute="get_discount") 
    journal = fields.Many2one('erp.journal', default=get_default_journal) 
    type = fields.Selection([('sale','Sale'),('purchase','Purchase')]) 

class report_wizard(models.TransientModel): 
    _name = 'report.wizard' 
ここ

機能のサンプルがあるを使用してあなたは私が何をしようとしています何を願っていますしています。 Account_reportはモジュール名で、payment_reportは印刷ボタンを使用して1つのレコードのみを印刷するレポートです。

@api.multi 
def print_report(self) 
    data = self.env['customer.payment'].search([('state','=','open')]) 
    return self.env['report'].render('account_report.payment_report', data) 
+0

@Ommed Totatkhel:あなたのような何かを試すことができますか? –

答えて

1

この関数は、印刷するレポート設定でオブジェクトを返す必要があります。あなたが問題を解決します

def print_report(self) 
    ids = self.env['customer.payment'].search([('state','=','open')])  
    if not ids: 
    if not isinstance(ids, list): 
     ids = [ids]   
    context = dict(self.env.context or {}, active_ids=ids, active_model=self._name) 

    return { 
    'type': 'ir.actions.report.xml', 
    'report_name': 'account_report.payment_report', 
    'context': context, 
    } 

Example 1

def print_report(self, cr, uid, ids, context=None): 
    active_id = context.get('active_id', []) 
    datas = {'ids' : [active_id]} 
    return { 
     'type': 'ir.actions.report.xml', 
     'report_name': 'pos.receipt', 
     'datas': datas, 
    } 
+0

次のエラーが発生しました。TypeError:customer.payment(1、)がJSONシリアライズ可能ではありません –

+0

'context = dict(self.env.contextまたは{}、active_ids = ids.ids、active_model = self._name)'を試してください ' –

0
@api.multi 
def print_report(self): 
return self.env['report'].get_action(self, 'account_report.payment_report') 
関連する問題