2016-12-29 10 views
0

2つのレポートcout_materiel_facture_detail_report.xml(詳細レポート)とcout_materiel_facture_report.xml(簡単なレポート)があり、ユーザーがデータを入力し、報告書または詳細なもの。odoo:ウィザードを使用してqwebレポートを印刷する

class CoutMaterielFactureWizard(models.TransientModel): 
_name = 'gc.cout_materiel_facture_wizard' 

directeur_parc_id = fields.Many2one('hr.employee', string='Directeur Parc') 

procedure = fields.Char(string='Procedure') 
version = fields.Char(string='Verion') 
date_realisation = fields.Date(string='Date realisation') 

# is_landscape = fields.Boolean(string='Mode paysage?') 
is_detail = fields.Boolean(string='Version simplifiee?') 

@api.multi 
def do_toggle_print(self): 
    cout_materiel = self.env['gc.cout_materiel'].browse(self._context.get('active_id', False)) 
    cout_materiel.write({ 
     'directeur_parc_id': self.directeur_parc_id.id 
    }) 
    # Print the simple report 
    if not self.is_detail: 

     return { 
      'type': 'ir.actions.report.xml', 
      'name': 'gestion_cout.cout_materiel_facture_report_template', 
      'report_name': 'gestion_cout.cout_materiel_facture_report_template', 
     } 
    # Print the detailed report 
    else: 
     sql = "SELECT SUM(h_sup)+SUM(h_exp),SUM(h_im),count(*),SUM(total), famille FROM gc_cout_materiel_line where " \ 
       "cout_materiel_id =%s group by famille " 
     self.env.cr.execute(sql, (cout_materiel.id,)) 
     results = self.env.cr.fetchall() 
     if len(results) > 0: 
      line_ids = [] 
      for nbht, nbhim, qte, prix_total, famille in results: 
       line_ids.append((0, 0, { 
        'famille': famille, 
        'type': 'VA', 
        'qte': qte, 
        'nbr_heures': nbht, 
        'nbr_heures_im': nbhim, 
        'nbr_jours': 28, 
        'prix_unitaire': 'VA', 
        'prix_total': prix_total, 
         })) 
      self.env['gc.cout_materiel_facture_temp'].create({ 
       'chantier_name': cout_materiel.chantier_id.name, 
       'mois_name': cout_materiel.mois_id.name, 
       'num_annexe': cout_materiel.num_annexe, 
       'expediteur': cout_materiel.expediteur, 
       'destinateur': cout_materiel.destinateur, 
       'application_date': cout_materiel.application_date, 
       'date_realisation': self.date_realisation, 
       'directeur_parc_name': self.directeur_parc_id.name, 
       'procedure': self.procedure, 
       'version': self.version, 
       'prix_total_global': cout_materiel.total_global, 
       'line_ids': line_ids, 
      }) 
     return { 
      'type': 'ir.actions.report.xml', 
      'name': 'gestion_cout.gc_cout_materiel_facture_detail_report_template', 
      'report_name': 'gestion_cout.gc_cout_materiel_facture_detail_report_template', 
     } 

But i get this error after i hit the print button

が、私は、データベースをチェックアウトし、両方の報告が存在しているが見つかりました:ここでは、ウィザードのクラスがあります。

助けが必要ですか?お願いします!!

答えて

0

最後に私は自分の問題を解決することができました!ここ は私がやったことです:

  • 私は印刷するwhantとQWEBレポートにウィザードをリンクされたオブジェクトのリストを返すウィザードモデル内のメソッドを作成しました。
  • 次に、t- foreachループでobject.my_mehtod()を使用してqwebレポートからメソッドを呼び出しました。ここでオブジェクトはウィザードを表します。私は複雑なレポートを作成し、それらを簡単に印刷することができています。この方法では

。このメソッドを使用して、複数のテーブルからデータを取得し、データを整理してリストとして返すことができます。

私はそれが誰かを助けることを願っています。

よろしくお願いいたします。

関連する問題