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')
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