mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[IMP]pms: added check unique by category and number in doc category
This commit is contained in:
@@ -25,6 +25,7 @@
|
||||
"partner_contact_gender",
|
||||
"partner_contact_birthdate",
|
||||
"partner_contact_nationality",
|
||||
"partner_identification_unique_by_category",
|
||||
],
|
||||
"data": [
|
||||
"security/pms_security.xml",
|
||||
|
||||
@@ -56,10 +56,12 @@
|
||||
<record id="document_type_passport" model="res.partner.id_category">
|
||||
<field name="name">Passport</field>
|
||||
<field name="code">P</field>
|
||||
<field name="has_unique_numbers">True</field>
|
||||
</record>
|
||||
<record id="document_type_driving_license" model="res.partner.id_category">
|
||||
<field name="name">Driving License</field>
|
||||
<field name="code">C</field>
|
||||
<field name="has_unique_numbers">True</field>
|
||||
</record>
|
||||
<record
|
||||
id="document_type_identification_document"
|
||||
@@ -67,14 +69,17 @@
|
||||
>
|
||||
<field name="name">Identification Document</field>
|
||||
<field name="code">I</field>
|
||||
<field name="has_unique_numbers">True</field>
|
||||
</record>
|
||||
<record id="document_type_spanish_residence" model="res.partner.id_category">
|
||||
<field name="name">Spanish Residence permit</field>
|
||||
<field name="code">N</field>
|
||||
<field name="has_unique_numbers">True</field>
|
||||
</record>
|
||||
<record id="document_type_european_residence" model="res.partner.id_category">
|
||||
<field name="name">European Residence permit</field>
|
||||
<field name="code">X</field>
|
||||
<field name="has_unique_numbers">True</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
<record id="document_type_dni" model="res.partner.id_category">
|
||||
<field name="name">DNI</field>
|
||||
<field name="code">D</field>
|
||||
<field name="has_unique_numbers">True</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
||||
@@ -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")
|
||||
Reference in New Issue
Block a user