diff --git a/models/scop_cotisation.py b/models/scop_cotisation.py index 2232df73767cf6ae0e0182c020150c82e7e14e24..bfc64d76b0acae0ac2c9d3bd2040f4397631021c 100644 --- a/models/scop_cotisation.py +++ b/models/scop_cotisation.py @@ -69,30 +69,48 @@ class ScopCotisation(models.AbstractModel): liasse=None, amount=0): Invoice = self.env['account.invoice'] InvoiceLine = self.env['account.invoice.line'] - member_invoice = Invoice.create({ - 'partner_id': partner.id, - 'liasse_fiscale_id': liasse.id, - 'type': 'out_invoice', - 'year': self.year, - 'is_contribution': True, - 'type_contribution_id': type_contribution, - 'journal_id': self.company_id.contribution_journal_id.id, - 'state': 'draft', - 'account_id': partner.property_account_receivable_id.id, - 'payment_term_id': self.payment_term_id.id, - 'payment_mode_id': partner.customer_payment_mode_id.id, - 'date_invoice': self.date_cotisation, - }) + + exisiting_invoice = Invoice.search([ + ('partner_id', '=', partner.id), + ('year', '=', self.year), + ('type_contribution_id', '=', type_contribution) + ]) + if not exisiting_invoice: + member_invoice = Invoice.create({ + 'partner_id': partner.id, + 'liasse_fiscale_id': liasse.id, + 'type': 'out_invoice', + 'year': self.year, + 'is_contribution': True, + 'type_contribution_id': type_contribution, + 'journal_id': self.company_id.contribution_journal_id.id, + 'state': 'draft', + 'account_id': partner.property_account_receivable_id.id, + 'payment_term_id': self.payment_term_id.id, + 'payment_mode_id': partner.customer_payment_mode_id.id, + 'date_invoice': self.date_cotisation, + }) + else: + member_invoice = exisiting_invoice # Création de la ligne CG Scop - InvoiceLine.create({ - 'invoice_id': member_invoice.id, - 'product_id': product.id, - 'account_id': product.property_account_income_id.id, - 'invoice_line_tax_ids': [(6, 0, product.taxes_id.ids)], - 'name': product.name, - 'price_unit': amount - }) + exisiting_invoice_line_ids = InvoiceLine.search([ + ('invoice_id', '=', member_invoice.id), + ('product_id', '=', product.id) + ]) + if not exisiting_invoice_line_ids: + InvoiceLine.create({ + 'invoice_id': member_invoice.id, + 'product_id': product.id, + 'account_id': product.property_account_income_id.id, + 'invoice_line_tax_ids': [(6, 0, product.taxes_id.ids)], + 'name': product.name, + 'price_unit': amount + }) + else: + exisiting_invoice_line_ids[0].write({ + 'price_unit': amount + }) return member_invoice