From 93f813f3dc91637e7b947b34f9219e0e9a91378a Mon Sep 17 00:00:00 2001 From: braisab Date: Thu, 10 Jun 2021 08:36:28 +0200 Subject: [PATCH] [IMP]pms: added check unique by category and number in doc category --- pms/__manifest__.py | 1 + pms/data/pms_data.xml | 5 + pms/models/pms_checkin_partner.py | 9 +- pms_l10n_es/data/pms_data.xml | 1 + pms_l10n_es/tests/test_partner.py | 149 ------------------------------ 5 files changed, 12 insertions(+), 153 deletions(-) delete mode 100644 pms_l10n_es/tests/test_partner.py diff --git a/pms/__manifest__.py b/pms/__manifest__.py index 6258e2f22..e29bbbed2 100644 --- a/pms/__manifest__.py +++ b/pms/__manifest__.py @@ -25,6 +25,7 @@ "partner_contact_gender", "partner_contact_birthdate", "partner_contact_nationality", + "partner_identification_unique_by_category", ], "data": [ "security/pms_security.xml", diff --git a/pms/data/pms_data.xml b/pms/data/pms_data.xml index cd852159b..093e75332 100644 --- a/pms/data/pms_data.xml +++ b/pms/data/pms_data.xml @@ -56,10 +56,12 @@ Passport P + True Driving License C + True Identification Document I + True Spanish Residence permit N + True European Residence permit X + True diff --git a/pms/models/pms_checkin_partner.py b/pms/models/pms_checkin_partner.py index 647f8e9f9..da35d241b 100644 --- a/pms/models/pms_checkin_partner.py +++ b/pms/models/pms_checkin_partner.py @@ -189,6 +189,7 @@ class PmsCheckinPartner(models.Model): store=True, comodel_name="res.partner.id_number", compute="_compute_document_id", + ondelete="restrict", ) incongruences = fields.Char( @@ -356,7 +357,9 @@ class PmsCheckinPartner(models.Model): else: record.document_id = False - @api.depends("document_number", "document_type", "firstname") + @api.depends( + "document_number", "document_type", "firstname", "lastname", "lastname2" + ) def _compute_partner_id(self): for record in self: if not record.partner_id: @@ -465,9 +468,7 @@ class PmsCheckinPartner(models.Model): for number in record.partner_id.id_numbers: if record.document_type == number.category_id: if record.document_number != number.name: - raise ValidationError( - _("Document_type e document_number not match(DN)") - ) + raise ValidationError(_("Document_type has already exists")) @api.model def create(self, vals): diff --git a/pms_l10n_es/data/pms_data.xml b/pms_l10n_es/data/pms_data.xml index b609ca96f..69347bd45 100644 --- a/pms_l10n_es/data/pms_data.xml +++ b/pms_l10n_es/data/pms_data.xml @@ -4,6 +4,7 @@ DNI D + True diff --git a/pms_l10n_es/tests/test_partner.py b/pms_l10n_es/tests/test_partner.py deleted file mode 100644 index 5e526ff35..000000000 --- a/pms_l10n_es/tests/test_partner.py +++ /dev/null @@ -1,149 +0,0 @@ -import datetime - -from freezegun import freeze_time - -from odoo import fields -from odoo.exceptions import ValidationError -from odoo.tests import common - - -@freeze_time("2011-03-16") -class TestResPartner(common.SavepointCase): - def create_common_scenario(self): - self.folio_sequence = self.env["ir.sequence"].create( - { - "name": "PMS Folio", - "code": "pms.folio", - "padding": 4, - "company_id": self.env.ref("base.main_company").id, - } - ) - self.reservation_sequence = self.env["ir.sequence"].create( - { - "name": "PMS Reservation", - "code": "pms.reservation", - "padding": 4, - "company_id": self.env.ref("base.main_company").id, - } - ) - self.checkin_sequence = self.env["ir.sequence"].create( - { - "name": "PMS Checkin", - "code": "pms.checkin.partner", - "padding": 4, - "company_id": self.env.ref("base.main_company").id, - } - ) - self.property_test = self.property = self.env["pms.property"].create( - { - "name": "My property test", - "company_id": self.env.ref("base.main_company").id, - "default_pricelist_id": self.env.ref("product.list0").id, - "folio_sequence_id": self.folio_sequence.id, - "reservation_sequence_id": self.reservation_sequence.id, - "checkin_sequence_id": self.checkin_sequence.id, - } - ) - - def test_check_precheckin_state(self): - # arrange - self.create_common_scenario() - today = fields.date.today() - partner = self.env["res.partner"].create( - { - "name": "name1", - # "lastname": "lastname1", - "lastname2": "secondlastname", - "document_expedition_date": "2011-02-20", - "birthdate_date": "1995-12-10", - "gender": "male", - "document_type": "D", - "document_number": "30065089H", - } - ) - reservation_vals = { - "checkin": today, - "checkout": today + datetime.timedelta(days=3), - "partner_id": partner.id, - "adults": 1, - "pms_property_id": self.property_test.id, - } - # action - reservation = self.env["pms.reservation"].create(reservation_vals) - checkin = self.env["pms.checkin.partner"].create( - { - "partner_id": partner.id, - "reservation_id": reservation.id, - } - ) - - # assert - - self.assertEqual( - checkin.state, "precheckin", "partner's fields weren't checked" - ) - - def test_error_action_on_board(self): - # arrange - self.create_common_scenario() - today = fields.date.today() - partner = self.env["res.partner"].create( - { - "name": "partner1", - } - ) - reservation_vals = { - "checkin": today, - "checkout": today + datetime.timedelta(days=3), - "partner_id": partner.id, - "adults": 1, - "pms_property_id": self.property_test.id, - } - # action - reservation = self.env["pms.reservation"].create(reservation_vals) - checkin = self.env["pms.checkin.partner"].create( - { - "partner_id": partner.id, - "reservation_id": reservation.id, - } - ) - - # arrange - with self.assertRaises(ValidationError): - checkin.action_on_board() - - def test_right_action_on_board(self): - # arrange - self.create_common_scenario() - today = fields.date.today() - partner = self.env["res.partner"].create( - { - "name": "name1", - # "lastname": "lastname1", - "lastname2": "secondlastname", - "document_expedition_date": "2011-02-20", - "birthdate_date": "1995-12-10", - "gender": "male", - "document_type": "D", - "document_number": "30065089H", - } - ) - reservation_vals = { - "checkin": today, - "checkout": today + datetime.timedelta(days=3), - "partner_id": partner.id, - "adults": 1, - "pms_property_id": self.property_test.id, - } - # action - reservation = self.env["pms.reservation"].create(reservation_vals) - checkin = self.env["pms.checkin.partner"].create( - { - "partner_id": partner.id, - "reservation_id": reservation.id, - } - ) - checkin.action_on_board() - # arrange - self.assertEqual(reservation.state, "onboard", "reservation's state is wrong") - self.assertEqual(checkin.state, "onboard", "checkin's state is wrong")