diff --git a/account_banking_mandate/data/mandate_reference_sequence.xml b/account_banking_mandate/data/mandate_reference_sequence.xml index 6a83bb8b914..34454eb3485 100644 --- a/account_banking_mandate/data/mandate_reference_sequence.xml +++ b/account_banking_mandate/data/mandate_reference_sequence.xml @@ -5,5 +5,6 @@ account.banking.mandate BM + diff --git a/account_banking_mandate/models/account_banking_mandate.py b/account_banking_mandate/models/account_banking_mandate.py index 3ea1e575179..7f9a5924553 100644 --- a/account_banking_mandate/models/account_banking_mandate.py +++ b/account_banking_mandate/models/account_banking_mandate.py @@ -60,7 +60,7 @@ def _get_default_partner_bank_id_domain(self): required=True, default=lambda self: self.env.company, ) - unique_mandate_reference = fields.Char(tracking=10, copy=False) + unique_mandate_reference = fields.Char(tracking=10, copy=False, default="/") signature_date = fields.Date( string="Date of Signature of the Mandate", tracking=50, @@ -173,14 +173,16 @@ def _check_valid_state(self): % mandate.unique_mandate_reference ) - @api.model - def create(self, vals=None): - unique_mandate_reference = vals.get("unique_mandate_reference") - if not unique_mandate_reference or unique_mandate_reference == "New": - vals["unique_mandate_reference"] = ( - self.env["ir.sequence"].next_by_code("account.banking.mandate") or "New" - ) - return super().create(vals) + @api.model_create_multi + def create(self, vals_list): + for vals in vals_list: + unique_mandate_reference = vals.get("unique_mandate_reference", "/") + if unique_mandate_reference == "/": + vals["unique_mandate_reference"] = ( + self.env["ir.sequence"].next_by_code("account.banking.mandate") + or "New" + ) + return super().create(vals_list) @api.onchange("partner_bank_id") def mandate_partner_bank_change(self): diff --git a/account_banking_mandate/models/account_move.py b/account_banking_mandate/models/account_move.py index 8af23c7722e..999b22e6f8c 100644 --- a/account_banking_mandate/models/account_move.py +++ b/account_banking_mandate/models/account_move.py @@ -20,25 +20,26 @@ class AccountMove(models.Model): related="payment_mode_id.payment_method_id.mandate_required", readonly=True ) - @api.model - def create(self, vals): + @api.model_create_multi + def create(self, vals_list): """Fill the mandate_id from the partner if none is provided on creation, using same method as upstream.""" onchanges = { "_onchange_partner_id": ["mandate_id"], "_onchange_payment_mode_id": ["mandate_id"], } - for onchange_method, changed_fields in list(onchanges.items()): - if any(f not in vals for f in changed_fields): - move = self.new(vals) - move = move.with_company(move.company_id.id) - getattr(move, onchange_method)() - for field in changed_fields: - if field not in vals and move[field]: - vals[field] = move._fields[field].convert_to_write( - move[field], move - ) - return super().create(vals) + for vals in vals_list: + for onchange_method, changed_fields in list(onchanges.items()): + if any(f not in vals for f in changed_fields): + move = self.new(vals) + move = move.with_company(move.company_id.id) + getattr(move, onchange_method)() + for field in changed_fields: + if field not in vals and move[field]: + vals[field] = move._fields[field].convert_to_write( + move[field], move + ) + return super().create(vals_list) def set_mandate(self): if self.payment_mode_id.payment_method_id.mandate_required: diff --git a/account_banking_mandate/tests/test_mandate.py b/account_banking_mandate/tests/test_mandate.py index b6b3687cd0e..0a9a8deb400 100644 --- a/account_banking_mandate/tests/test_mandate.py +++ b/account_banking_mandate/tests/test_mandate.py @@ -175,9 +175,8 @@ def test_mandate_reference_02(self): def test_mandate_reference_03(self): """ - Test case: create a mandate with "New" as reference - Expected result: the reference of the created mandate is not empty and - is not "New" + Test case: create a mandate with "TEST" as reference + Expected result: the reference of the created mandate is "TEST" """ bank_account = self.env.ref("account_payment_mode.res_partner_12_iban") mandate = self.env["account.banking.mandate"].create( @@ -185,16 +184,16 @@ def test_mandate_reference_03(self): "partner_bank_id": bank_account.id, "signature_date": "2015-01-01", "company_id": self.company.id, - "unique_mandate_reference": "New", + "unique_mandate_reference": "TEST", } ) self.assertTrue(mandate.unique_mandate_reference) - self.assertNotEqual(mandate.unique_mandate_reference, "New") + self.assertEqual(mandate.unique_mandate_reference, "TEST") - def test_mandate_reference_05(self): + def test_mandate_reference_04(self): """ - Test case: create a mandate with False as reference - Expected result: the reference of the created mandate is not empty + Test case: create a mandate with "/" as reference + Expected result: the reference of the created mandate is not "/" """ bank_account = self.env.ref("account_payment_mode.res_partner_12_iban") mandate = self.env["account.banking.mandate"].create( @@ -202,14 +201,15 @@ def test_mandate_reference_05(self): "partner_bank_id": bank_account.id, "signature_date": "2015-01-01", "company_id": self.company.id, - "unique_mandate_reference": False, + "unique_mandate_reference": "/", } ) self.assertTrue(mandate.unique_mandate_reference) + self.assertNotEqual(mandate.unique_mandate_reference, "/") - def test_mandate_reference_06(self): + def test_mandate_reference_05(self): """ - Test case: create a mandate with a empty string as reference + Test case: create a mandate without reference Expected result: the reference of the created mandate is not empty """ bank_account = self.env.ref("account_payment_mode.res_partner_12_iban") @@ -218,7 +218,6 @@ def test_mandate_reference_06(self): "partner_bank_id": bank_account.id, "signature_date": "2015-01-01", "company_id": self.company.id, - "unique_mandate_reference": "", } ) self.assertTrue(mandate.unique_mandate_reference) diff --git a/account_banking_mandate/views/account_banking_mandate_view.xml b/account_banking_mandate/views/account_banking_mandate_view.xml index 820808a21de..b9f97e7a087 100644 --- a/account_banking_mandate/views/account_banking_mandate_view.xml +++ b/account_banking_mandate/views/account_banking_mandate_view.xml @@ -50,7 +50,7 @@