From 46605a8227db304fcb69b2bd7df10d8840faff8c Mon Sep 17 00:00:00 2001 From: Fabien BOURGEOIS Date: Sun, 5 Aug 2018 05:51:38 +0200 Subject: [PATCH] [FIX]GOLEM Activity Registration Payment : fix auto confirmation of all draft activities --- .../__manifest__.py | 2 +- .../golem_activity_registration_invoicing.py | 31 ++++++++++--------- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/golem_activity_registration_payment/__manifest__.py b/golem_activity_registration_payment/__manifest__.py index 4c8aa4d..238fdc8 100644 --- a/golem_activity_registration_payment/__manifest__.py +++ b/golem_activity_registration_payment/__manifest__.py @@ -19,7 +19,7 @@ 'name': 'GOLEM Activity Member Registration Payments', 'summary': 'GOLEM Activities Member Registration Payments', 'description': 'GOLEM Activities Member Registration Payments', - 'version': '10.0.0.3.4', + 'version': '10.0.0.3.5', 'category': 'GOLEM', 'author': 'Fabien Bourgeois', 'license': 'AGPL-3', diff --git a/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py b/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py index 97045a6..d21b3b4 100644 --- a/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py +++ b/golem_activity_registration_payment/wizard/golem_activity_registration_invoicing.py @@ -62,6 +62,21 @@ class GolemActivityRegistrationInvoicing(models.TransientModel): ondelete='cascade') payment_ids = fields.Many2many('account.payment', string='Generated payments') + + def _create_invoice_line(self, product, price, invoice): + """ Create invoice line : needs cache record for onchange, then real + writing... """ + invoice_line = self.env['account.invoice.line'].new({ + 'product_id': product.id, + 'invoice_id': invoice.id + }) + invoice_line._onchange_product_id() + line_values = dict(invoice_line._cache) + line_values['price_unit'] = price + invoice_line = self.env['account.invoice.line'].create(line_values) + invoice.compute_taxes() + return invoice_line + @api.multi def _create_invoice(self): """ Create invoice and lines """ @@ -74,17 +89,7 @@ class GolemActivityRegistrationInvoicing(models.TransientModel): }) for line in self.line_ids: product = line.activity_id.product_id - # Handling of invoice lines : needs cache record for onchange, then - # real writing... - invoice_line = self.env['account.invoice.line'].new({ - 'product_id': product.id, - 'invoice_id': invoice.id - }) - invoice_line._onchange_product_id() - line_values = dict(invoice_line._cache) - line_values['price_unit'] = line.price - invoice_line = self.env['account.invoice.line'].create(line_values) - invoice.compute_taxes() + invoice_line = self._create_invoice_line(product, line.price, invoice) line.registration_id.invoice_line_id = invoice_line.id return invoice @@ -120,9 +125,7 @@ class GolemActivityRegistrationInvoicing(models.TransientModel): def validate(self): """ Validate and create invoice and payments """ self.ensure_one() - draft_registrations = self.member_id.activity_registration_ids.filtered( - lambda r: r.state == 'draft') - draft_registrations.write({'state': 'confirmed'}) + self[0].line_ids.mapped('registration_id').write({'state': 'confirmed'}) invoice = self._create_invoice() self.invoice_id = invoice payments = self._create_payments(invoice)