mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[IMP] pms: partner creation and modification in checkin flow
This commit is contained in:
@@ -46,3 +46,4 @@ from . import account_bank_statement_line
|
||||
from . import account_bank_statement
|
||||
from . import account_journal
|
||||
from . import pms_availability
|
||||
from . import res_partner_id_number
|
||||
|
||||
@@ -25,11 +25,11 @@ class PmsCheckinPartner(models.Model):
|
||||
partner_id = fields.Many2one(
|
||||
string="Partner",
|
||||
help="Partner associated with checkin partner",
|
||||
readonly=False,
|
||||
store=True,
|
||||
comodel_name="res.partner",
|
||||
domain="[('is_company', '=', False)]",
|
||||
compute="_compute_partner_id",
|
||||
store=True,
|
||||
readonly=False,
|
||||
)
|
||||
reservation_id = fields.Many2one(
|
||||
string="Reservation",
|
||||
@@ -67,9 +67,9 @@ class PmsCheckinPartner(models.Model):
|
||||
mobile = fields.Char(
|
||||
string="Mobile",
|
||||
help="Checkin Partner Mobile",
|
||||
compute="_compute_mobile",
|
||||
store=True,
|
||||
readonly=False,
|
||||
store=True,
|
||||
compute="_compute_mobile",
|
||||
)
|
||||
image_128 = fields.Image(
|
||||
string="Image",
|
||||
@@ -79,8 +79,8 @@ class PmsCheckinPartner(models.Model):
|
||||
segmentation_ids = fields.Many2many(
|
||||
string="Segmentation",
|
||||
help="Segmentation tags to classify checkin partners",
|
||||
related="reservation_id.segmentation_ids",
|
||||
readonly=True,
|
||||
related="reservation_id.segmentation_ids",
|
||||
)
|
||||
checkin = fields.Date(
|
||||
string="Checkin",
|
||||
@@ -116,68 +116,77 @@ class PmsCheckinPartner(models.Model):
|
||||
)
|
||||
|
||||
gender = fields.Selection(
|
||||
[("male", "Male"), ("female", "Female"), ("other", "Other")],
|
||||
string="Gender",
|
||||
compute="_compute_gender",
|
||||
store=True,
|
||||
help="host gender",
|
||||
readonly=False,
|
||||
store=True,
|
||||
compute="_compute_gender",
|
||||
selection=[("male", "Male"), ("female", "Female"), ("other", "Other")],
|
||||
)
|
||||
nationality_id = fields.Many2one(
|
||||
string="Nationality ID",
|
||||
help="host nationality",
|
||||
readonly=False,
|
||||
store=True,
|
||||
compute="_compute_nationality",
|
||||
comodel_name="res.country",
|
||||
store=True,
|
||||
readonly=False,
|
||||
)
|
||||
firstname = fields.Char(
|
||||
string="First Name",
|
||||
compute="_compute_firstname",
|
||||
store=True,
|
||||
help="host firstname",
|
||||
readonly=False,
|
||||
store=True,
|
||||
compute="_compute_firstname",
|
||||
)
|
||||
lastname = fields.Char(
|
||||
string="Last Name",
|
||||
help="host lastname",
|
||||
readonly=False,
|
||||
store=True,
|
||||
compute="_compute_lastname",
|
||||
)
|
||||
lastname2 = fields.Char(
|
||||
string="Second Last Name",
|
||||
compute="_compute_lastname2",
|
||||
store=True,
|
||||
help="host second lastname",
|
||||
readonly=False,
|
||||
store=True,
|
||||
compute="_compute_lastname2",
|
||||
)
|
||||
birthdate_date = fields.Date(
|
||||
string="Birthdate",
|
||||
compute="_compute_birth_date",
|
||||
store=True,
|
||||
help="host birthdate",
|
||||
readonly=False,
|
||||
store=True,
|
||||
compute="_compute_birth_date",
|
||||
)
|
||||
document_number = fields.Char(
|
||||
string="Document Number",
|
||||
compute="_compute_document_number",
|
||||
store=True,
|
||||
help="Host document number",
|
||||
readonly=False,
|
||||
store=True,
|
||||
compute="_compute_document_number",
|
||||
)
|
||||
document_type = fields.Many2one(
|
||||
string="Document Type",
|
||||
comodel_name="res.partner.id_category",
|
||||
help="Select a valid document type",
|
||||
compute="_compute_document_type",
|
||||
store=True,
|
||||
readonly=False,
|
||||
store=True,
|
||||
comodel_name="res.partner.id_category",
|
||||
compute="_compute_document_type",
|
||||
)
|
||||
document_expedition_date = fields.Date(
|
||||
string="Expedition Date",
|
||||
help="Date on which document_type was issued",
|
||||
compute="_compute_document_expedition_date",
|
||||
store=True,
|
||||
readonly=False,
|
||||
store=True,
|
||||
compute="_compute_document_expedition_date",
|
||||
)
|
||||
|
||||
document_id = fields.Many2one(
|
||||
string="Document",
|
||||
help="Select a valid document type",
|
||||
help="Technical field",
|
||||
readonly=False,
|
||||
store=True,
|
||||
comodel_name="res.partner.id_number",
|
||||
compute="_compute_document_id",
|
||||
)
|
||||
@@ -198,13 +207,6 @@ class PmsCheckinPartner(models.Model):
|
||||
record.document_type = record.partner_id.id_numbers[
|
||||
0
|
||||
].category_id
|
||||
else:
|
||||
for number in record.partner_id.id_numbers:
|
||||
if record.document_number == number.name:
|
||||
if record.document_type != number.category_id:
|
||||
raise ValidationError(
|
||||
_("Document_type e document_number not match(DT)")
|
||||
)
|
||||
|
||||
@api.depends(
|
||||
"partner_id",
|
||||
@@ -217,16 +219,6 @@ class PmsCheckinPartner(models.Model):
|
||||
record.document_expedition_date = record.partner_id.id_numbers[
|
||||
0
|
||||
].valid_from
|
||||
else:
|
||||
id_number = self.env["res.partner.id_number"].search(
|
||||
[
|
||||
("partner_id", "=", record.partner_id.id),
|
||||
("category_id", "=", record.document_type),
|
||||
("name", "=", record.document_number),
|
||||
]
|
||||
)
|
||||
if not id_number.valid_from:
|
||||
id_number.write({"valid_from": record.document_expedition_date})
|
||||
|
||||
@api.depends("partner_id", "partner_id.firstname")
|
||||
def _compute_firstname(self):
|
||||
@@ -239,24 +231,18 @@ class PmsCheckinPartner(models.Model):
|
||||
for record in self:
|
||||
if not record.lastname:
|
||||
record.lastname = record.partner_id.lastname
|
||||
elif not record.partner_id.lastname:
|
||||
record.partner_id.write({"lastname": record.lastname})
|
||||
|
||||
@api.depends("partner_id", "partner_id.lastname2")
|
||||
def _compute_lastname2(self):
|
||||
for record in self:
|
||||
if not record.lastname2:
|
||||
record.lastname2 = record.partner_id.lastname2
|
||||
elif not record.partner_id.lastname2:
|
||||
record.partner_id.write({"lastname2": record.lastname2})
|
||||
|
||||
@api.depends("partner_id", "partner_id.birthdate_date")
|
||||
def _compute_birth_date(self):
|
||||
for record in self:
|
||||
if not record.birthdate_date:
|
||||
record.birthdate_date = record.partner_id.birthdate_date
|
||||
elif not record.partner_id.birthdate_date:
|
||||
record.partner_id.write({"birthdate_date": record.birthdate_date})
|
||||
|
||||
@api.depends(
|
||||
"partner_id",
|
||||
@@ -264,18 +250,14 @@ class PmsCheckinPartner(models.Model):
|
||||
)
|
||||
def _compute_gender(self):
|
||||
for record in self:
|
||||
if not record.gender:
|
||||
if not record.gender and record.partner_id.gender:
|
||||
record.gender = record.partner_id.gender
|
||||
elif not record.partner_id.gender:
|
||||
record.partner_id.write({"gender": record.gender})
|
||||
|
||||
@api.depends("partner_id", "partner_id.lastname")
|
||||
def _compute_nationality(self):
|
||||
for record in self:
|
||||
if not record.nationality_id:
|
||||
record.nationality_id = record.partner_id.nationality_id
|
||||
elif not record.partner_id.nationality_id:
|
||||
record.partner_id.write({"nationality_id": record.nationality_id})
|
||||
|
||||
@api.depends("reservation_id", "folio_id", "reservation_id.preferred_room_id")
|
||||
def _compute_identifier(self):
|
||||
@@ -331,30 +313,31 @@ class PmsCheckinPartner(models.Model):
|
||||
for record in self:
|
||||
if not record.email:
|
||||
record.email = record.partner_id.email
|
||||
elif not record.partner_id.email:
|
||||
record.partner_id.write({"email": record.email})
|
||||
|
||||
@api.depends("partner_id", "partner_id.mobile")
|
||||
def _compute_mobile(self):
|
||||
for record in self:
|
||||
if not record.mobile:
|
||||
record.mobile = record.partner_id.mobile
|
||||
elif not record.partner_id.mobile:
|
||||
record.partner_id.write({"mobile": record.mobile})
|
||||
|
||||
@api.depends("partner_id")
|
||||
def _compute_document_id(self):
|
||||
for record in self:
|
||||
if record.partner_id:
|
||||
id_number_id = self.env["res.partner.id_number"].create(
|
||||
{
|
||||
"partner_id": record.partner_id.id,
|
||||
"name": record.document_number,
|
||||
"category_id": record.document_type.id,
|
||||
"valid_from": record.document_expedition_date,
|
||||
}
|
||||
)
|
||||
record.document_id = id_number_id
|
||||
if (
|
||||
not record.document_id
|
||||
and record.document_number
|
||||
and record.document_type
|
||||
):
|
||||
id_number_id = self.env["res.partner.id_number"].create(
|
||||
{
|
||||
"partner_id": record.partner_id.id,
|
||||
"name": record.document_number,
|
||||
"category_id": record.document_type.id,
|
||||
"valid_from": record.document_expedition_date,
|
||||
}
|
||||
)
|
||||
record.document_id = id_number_id
|
||||
else:
|
||||
record.document_id = False
|
||||
|
||||
|
||||
@@ -63,21 +63,124 @@ class ResPartner(models.Model):
|
||||
inverse_name="partner_id",
|
||||
)
|
||||
|
||||
gender = fields.Selection(
|
||||
readonly=False,
|
||||
store=True,
|
||||
compute="_compute_gender",
|
||||
)
|
||||
|
||||
birthdate_date = fields.Date(
|
||||
readonly=False,
|
||||
store=True,
|
||||
compute="_compute_birthdate_date",
|
||||
)
|
||||
|
||||
nationality_id = fields.Many2one(
|
||||
readonly=False,
|
||||
store=True,
|
||||
compute="_compute_nationality_id",
|
||||
)
|
||||
|
||||
email = fields.Char(
|
||||
readonly=False,
|
||||
store=True,
|
||||
compute="_compute_email",
|
||||
)
|
||||
mobile = fields.Char(
|
||||
readonly=False,
|
||||
store=True,
|
||||
compute="_compute_mobile",
|
||||
)
|
||||
|
||||
firstname = fields.Char(
|
||||
readonly=False,
|
||||
store=True,
|
||||
compute="_compute_firstname",
|
||||
)
|
||||
|
||||
lastname = fields.Char(
|
||||
readonly=False,
|
||||
store=True,
|
||||
compute="_compute_lastname",
|
||||
)
|
||||
|
||||
lastname2 = fields.Char(
|
||||
readonly=False,
|
||||
store=True,
|
||||
compute="_compute_lastname2",
|
||||
)
|
||||
|
||||
@api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.gender")
|
||||
def _compute_gender(self):
|
||||
if hasattr(super(), "_compute_gender"):
|
||||
super()._compute_field()
|
||||
for record in self:
|
||||
gender = record.pms_checkin_partner_ids.mapped("gender")
|
||||
if not record.gender and gender:
|
||||
record.gender = gender[0]
|
||||
|
||||
@api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.birthdate_date")
|
||||
def _compute_birthdate_date(self):
|
||||
if hasattr(super(), "_compute_birthdate_date"):
|
||||
super()._compute_field()
|
||||
for record in self:
|
||||
birthdate = record.pms_checkin_partner_ids.mapped("birthdate_date")
|
||||
if not record.birthdate_date and birthdate:
|
||||
record.birthdate_date = birthdate[0]
|
||||
|
||||
@api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.nationality_id")
|
||||
def _compute_nationality_id(self):
|
||||
if hasattr(super(), "_compute_nationality_id"):
|
||||
super()._compute_field()
|
||||
for record in self:
|
||||
nationality = record.pms_checkin_partner_ids.nationality_id
|
||||
if not record.nationality_id and nationality:
|
||||
record.nationality_id = nationality[0]
|
||||
|
||||
@api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.email")
|
||||
def _compute_email(self):
|
||||
if hasattr(super(), "_compute_email"):
|
||||
super()._compute_field()
|
||||
for record in self:
|
||||
email = record.pms_checkin_partner_ids.mapped("email")
|
||||
if not record.email and email:
|
||||
record.email = email[0]
|
||||
|
||||
@api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.mobile")
|
||||
def _compute_mobile(self):
|
||||
if hasattr(super(), "_compute_mobile"):
|
||||
super()._compute_field()
|
||||
for record in self:
|
||||
mobile = record.pms_checkin_partner_ids.mapped("mobile")
|
||||
if not record.mobile and mobile:
|
||||
record.mobile = mobile[0]
|
||||
|
||||
@api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.firstname")
|
||||
def _compute_firstname(self):
|
||||
if hasattr(super(), "_compute_firstname"):
|
||||
super()._compute_field()
|
||||
for record in self:
|
||||
firstname = record.pms_checkin_partner_ids.mapped("firstname")
|
||||
if not record.firstname and firstname:
|
||||
record.firstname = firstname[0]
|
||||
|
||||
# for record in self:
|
||||
# if not record.firstname:
|
||||
# print(record.pms_checkin_partner_ids.mapped("firstname"))
|
||||
# #record.firstname =
|
||||
@api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.lastname")
|
||||
def _compute_lastname(self):
|
||||
if hasattr(super(), "_compute_lastname"):
|
||||
super()._compute_field()
|
||||
for record in self:
|
||||
lastname = record.pms_checkin_partner_ids.mapped("lastname")
|
||||
if not record.lastname and lastname:
|
||||
record.lastname = lastname[0]
|
||||
|
||||
@api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.lastname2")
|
||||
def _compute_lastname2(self):
|
||||
if hasattr(super(), "_compute_lastname2"):
|
||||
super()._compute_field()
|
||||
for record in self:
|
||||
lastname2 = record.pms_checkin_partner_ids.mapped("lastname2")
|
||||
if not record.lastname2 and lastname2:
|
||||
record.lastname2 = lastname2[0]
|
||||
|
||||
def _compute_reservations_count(self):
|
||||
# TODO: recuperar las reservas de los folios del partner
|
||||
|
||||
34
pms/models/res_partner_id_number.py
Normal file
34
pms/models/res_partner_id_number.py
Normal file
@@ -0,0 +1,34 @@
|
||||
# Copyright 2004-2010 Tiny SPRL http://tiny.be
|
||||
# Copyright 2010-2012 ChriCar Beteiligungs- und Beratungs- GmbH
|
||||
# http://www.camptocamp.at
|
||||
# Copyright 2015 Antiun Ingenieria, SL (Madrid, Spain)
|
||||
# http://www.antiun.com
|
||||
# Antonio Espinosa <antonioea@antiun.com>
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
|
||||
|
||||
from odoo import api, fields, models
|
||||
|
||||
|
||||
class ResPartnerIdNumber(models.Model):
|
||||
_inherit = "res.partner.id_number"
|
||||
|
||||
valid_from = fields.Date(
|
||||
readonly=False,
|
||||
store=True,
|
||||
compute="_compute_valid_from",
|
||||
)
|
||||
|
||||
@api.depends(
|
||||
"partner_id", "partner_id.pms_checkin_partner_ids.document_expedition_date"
|
||||
)
|
||||
def _compute_valid_from(self):
|
||||
if hasattr(super(), "_compute_valid_from"):
|
||||
super()._compute_field()
|
||||
for record in self:
|
||||
expedition_date = record.partner_id.pms_checkin_partner_ids.mapped(
|
||||
"document_expedition_date"
|
||||
)
|
||||
if expedition_date:
|
||||
if not record.valid_from and expedition_date[0]:
|
||||
record.valid_from = expedition_date[0]
|
||||
Reference in New Issue
Block a user