[IMP] pms: partner creation and modification in checkin flow

This commit is contained in:
Sara Lago
2021-06-07 12:17:31 +02:00
parent 69379e2cb2
commit 259a72a87e
4 changed files with 190 additions and 69 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View 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]