2016-03-25 8 views
0

forとif文の下でインデントした場合、generate_invoiceビューを開くための簡単なコードを実行しています。誰が私が行方不明を知っていますか?ここでforループのpython odoo 8のコードに影響していません。

は私のコードは

目的である:コードジョブはループが任意のアカウントがある場合は上げていない場合ははい、ビューを返すかどうかをチェックされるため、支払構造内の任意のエントリを持っている場合generate_invoiceビューを開くことです検証エラーです。

class res_student(models.Model): 
_name = 'res.student' 

このコードはエラーが発生していません。

@api.multi 
@api.depends('payment_structure') 
def generate_invoice(self): 
    for x in self: 
     for rec in x.payment_structure: 
      if rec.account == False: 
       raise ValidationError("Please define a payment structure to Generate Invoice") 
      else: 
       form = self.env['generate.invoice'] 
       id = self.id 
       record = form.create({'student_id': id, 
             'journal': x.journal.id, 
             'payment_type': x.payment_account.id}) 
       return {'name': "Generate Invoice", 
           'type': 'ir.actions.act_window', 
           'res_model': 'generate.invoice', 
           'view_id': False, 
           'view_type': 'form', 
           'view_mode': 'form', 
           'res_id' : record.id, 
           'target': 'new', 
           'domain': '[]'} 

forとif文を削除してから作業してください。私はこのコードをチェックしているため

@api.multi 
@api.depends('payment_structure') 
def generate_invoice(self): 
    form = self.env['generate.invoice'] 
    id = self.id 
    record = form.create({'student_id': id, 
          'journal': x.journal.id, 
          'payment_type': x.payment_account.id}) 
    return {'name': "Generate Invoice", 
      'type': 'ir.actions.act_window', 
      'res_model': 'generate.invoice', 
      'view_id': False, 
      'view_type': 'form', 
      'view_mode': 'form', 
      'res_id' : record.id, 
      'target': 'new', 
      'domain': '[]'} 

#accounting 
journal = fields.Many2one('account.journal') 
payment_account = fields.Many2one('nominal.account') 
payed = fields.Float(compute="get_payment") 
discount = fields.Float(compute="get_discount") 
payments = fields.One2many('invoice.line','student_id') 
payment_structure = fields.One2many('payment.structure','student_id') 




class payment_structure(models.Model): 
_name = "payment.structure" 

student_id = fields.Many2one('res.student') 
account = fields.Many2one('nominal.account') 
qty = fields.Integer() 
unit = fields.Selection([('once','Once'),('month','Month')]) 
price = fields.Float() 


class generate_invoice(models.TransientModel): 
_name = 'generate.invoice' 



student_id = fields.Many2one('res.student') 
month = fields.Integer(string="Months") 
payment_type = fields.Many2one('nominal.account', related="student_id.payment_account",) 
payment_structure = fields.One2many(related="student_id.payment_structure") 
journal = fields.Many2one('account.journal') 
+0

コードを編集してください。正しく表示されません。また、「うまくいきません」と記述します。エラーが発生していますか?出力はありませんか?予想とは異なる出力ですか? – Gabriel

答えて

0

あなたは、あなたが解決策をそこに着いてから

いるあなたは、このボタン「を作成し、View請求書」

を見つけることができ、販売注文からの参照を取ることができますコードにはいくつか違いがあります。 これを試してください。 幸運。

0

generate_invoice関数でforループを削除すると、変数 'x'が定義されていないため、エラーが発生します。

generate_invoice関数が呼び出された時点と、その中にselfが含まれていることを表示してください。

関連する問題