2016-03-25 7 views
0

Ich führe einen einfachen Code, um die generate_invoice Ansicht zu öffnen, wenn ich es unter der for und if-Anweisung einrücken es funktioniert nicht. Weiß jemand, was ich vermisse?Code hat keinen Effekt unter for Schleife python odoo 8

Hier ist mein Code

Ziel: Der Code Job, wenn generate_invoice Ansicht zu öffnen ist in der Zahlungsstruktur einen Eintrag hat, wird die for-Schleife überprüft, ob es eine Rechnung, wenn ja dann die Ansicht zurück, wenn nicht erhöhen Validierungsfehler.

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

Dieser Code funktioniert nicht fehlerfrei.

@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': '[]'} 

Wenn ich die for und if-Anweisung dann zu entfernen.

@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

Bitte bearbeiten Sie Ihren Code, es sieht nicht richtig aus. Beschreiben Sie auch "es funktioniert nicht". Erhalten Sie einen Fehler? Keine Leistung? Eine andere Ausgabe als erwartet? – Gabriel

Antwort

0

können Sie anhand von Verkaufsauftrag nehmen,

, in dem Sie auf diese Schaltfläche finden „erstellen und anzeigen Rechnung“

von dort aus kann man Lösung bekam, weil ich diesen Code überprüft und Ihre Code gibt es dort einen Unterschied. also bitte versuchen Sie es. Viel Glück.

0

Wenn Sie for-Schleife in Ihrer generate_invoice-Funktion entfernen, erhalten Sie einen Fehler, da die Variable 'x' nicht definiert ist.

Bitte zeigen Sie uns, wann die generate_invoice-Funktion aufgerufen wurde, und den Inhalt von self.