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_bank_statement
|
||||||
from . import account_journal
|
from . import account_journal
|
||||||
from . import pms_availability
|
from . import pms_availability
|
||||||
|
from . import res_partner_id_number
|
||||||
|
|||||||
@@ -25,11 +25,11 @@ class PmsCheckinPartner(models.Model):
|
|||||||
partner_id = fields.Many2one(
|
partner_id = fields.Many2one(
|
||||||
string="Partner",
|
string="Partner",
|
||||||
help="Partner associated with checkin partner",
|
help="Partner associated with checkin partner",
|
||||||
|
readonly=False,
|
||||||
|
store=True,
|
||||||
comodel_name="res.partner",
|
comodel_name="res.partner",
|
||||||
domain="[('is_company', '=', False)]",
|
domain="[('is_company', '=', False)]",
|
||||||
compute="_compute_partner_id",
|
compute="_compute_partner_id",
|
||||||
store=True,
|
|
||||||
readonly=False,
|
|
||||||
)
|
)
|
||||||
reservation_id = fields.Many2one(
|
reservation_id = fields.Many2one(
|
||||||
string="Reservation",
|
string="Reservation",
|
||||||
@@ -67,9 +67,9 @@ class PmsCheckinPartner(models.Model):
|
|||||||
mobile = fields.Char(
|
mobile = fields.Char(
|
||||||
string="Mobile",
|
string="Mobile",
|
||||||
help="Checkin Partner Mobile",
|
help="Checkin Partner Mobile",
|
||||||
compute="_compute_mobile",
|
|
||||||
store=True,
|
|
||||||
readonly=False,
|
readonly=False,
|
||||||
|
store=True,
|
||||||
|
compute="_compute_mobile",
|
||||||
)
|
)
|
||||||
image_128 = fields.Image(
|
image_128 = fields.Image(
|
||||||
string="Image",
|
string="Image",
|
||||||
@@ -79,8 +79,8 @@ class PmsCheckinPartner(models.Model):
|
|||||||
segmentation_ids = fields.Many2many(
|
segmentation_ids = fields.Many2many(
|
||||||
string="Segmentation",
|
string="Segmentation",
|
||||||
help="Segmentation tags to classify checkin partners",
|
help="Segmentation tags to classify checkin partners",
|
||||||
related="reservation_id.segmentation_ids",
|
|
||||||
readonly=True,
|
readonly=True,
|
||||||
|
related="reservation_id.segmentation_ids",
|
||||||
)
|
)
|
||||||
checkin = fields.Date(
|
checkin = fields.Date(
|
||||||
string="Checkin",
|
string="Checkin",
|
||||||
@@ -116,68 +116,77 @@ class PmsCheckinPartner(models.Model):
|
|||||||
)
|
)
|
||||||
|
|
||||||
gender = fields.Selection(
|
gender = fields.Selection(
|
||||||
[("male", "Male"), ("female", "Female"), ("other", "Other")],
|
|
||||||
string="Gender",
|
string="Gender",
|
||||||
compute="_compute_gender",
|
help="host gender",
|
||||||
store=True,
|
|
||||||
readonly=False,
|
readonly=False,
|
||||||
|
store=True,
|
||||||
|
compute="_compute_gender",
|
||||||
|
selection=[("male", "Male"), ("female", "Female"), ("other", "Other")],
|
||||||
)
|
)
|
||||||
nationality_id = fields.Many2one(
|
nationality_id = fields.Many2one(
|
||||||
string="Nationality ID",
|
string="Nationality ID",
|
||||||
|
help="host nationality",
|
||||||
|
readonly=False,
|
||||||
|
store=True,
|
||||||
compute="_compute_nationality",
|
compute="_compute_nationality",
|
||||||
comodel_name="res.country",
|
comodel_name="res.country",
|
||||||
store=True,
|
|
||||||
readonly=False,
|
|
||||||
)
|
)
|
||||||
firstname = fields.Char(
|
firstname = fields.Char(
|
||||||
string="First Name",
|
string="First Name",
|
||||||
compute="_compute_firstname",
|
help="host firstname",
|
||||||
store=True,
|
|
||||||
readonly=False,
|
readonly=False,
|
||||||
|
store=True,
|
||||||
|
compute="_compute_firstname",
|
||||||
)
|
)
|
||||||
lastname = fields.Char(
|
lastname = fields.Char(
|
||||||
string="Last Name",
|
string="Last Name",
|
||||||
|
help="host lastname",
|
||||||
readonly=False,
|
readonly=False,
|
||||||
store=True,
|
store=True,
|
||||||
compute="_compute_lastname",
|
compute="_compute_lastname",
|
||||||
)
|
)
|
||||||
lastname2 = fields.Char(
|
lastname2 = fields.Char(
|
||||||
string="Second Last Name",
|
string="Second Last Name",
|
||||||
compute="_compute_lastname2",
|
help="host second lastname",
|
||||||
store=True,
|
|
||||||
readonly=False,
|
readonly=False,
|
||||||
|
store=True,
|
||||||
|
compute="_compute_lastname2",
|
||||||
)
|
)
|
||||||
birthdate_date = fields.Date(
|
birthdate_date = fields.Date(
|
||||||
string="Birthdate",
|
string="Birthdate",
|
||||||
compute="_compute_birth_date",
|
help="host birthdate",
|
||||||
store=True,
|
|
||||||
readonly=False,
|
readonly=False,
|
||||||
|
store=True,
|
||||||
|
compute="_compute_birth_date",
|
||||||
)
|
)
|
||||||
document_number = fields.Char(
|
document_number = fields.Char(
|
||||||
string="Document Number",
|
string="Document Number",
|
||||||
compute="_compute_document_number",
|
help="Host document number",
|
||||||
store=True,
|
|
||||||
readonly=False,
|
readonly=False,
|
||||||
|
store=True,
|
||||||
|
compute="_compute_document_number",
|
||||||
)
|
)
|
||||||
document_type = fields.Many2one(
|
document_type = fields.Many2one(
|
||||||
string="Document Type",
|
string="Document Type",
|
||||||
comodel_name="res.partner.id_category",
|
|
||||||
help="Select a valid document type",
|
help="Select a valid document type",
|
||||||
compute="_compute_document_type",
|
|
||||||
store=True,
|
|
||||||
readonly=False,
|
readonly=False,
|
||||||
|
store=True,
|
||||||
|
comodel_name="res.partner.id_category",
|
||||||
|
compute="_compute_document_type",
|
||||||
)
|
)
|
||||||
document_expedition_date = fields.Date(
|
document_expedition_date = fields.Date(
|
||||||
string="Expedition Date",
|
string="Expedition Date",
|
||||||
help="Date on which document_type was issued",
|
help="Date on which document_type was issued",
|
||||||
compute="_compute_document_expedition_date",
|
|
||||||
store=True,
|
|
||||||
readonly=False,
|
readonly=False,
|
||||||
|
store=True,
|
||||||
|
compute="_compute_document_expedition_date",
|
||||||
)
|
)
|
||||||
|
|
||||||
document_id = fields.Many2one(
|
document_id = fields.Many2one(
|
||||||
string="Document",
|
string="Document",
|
||||||
help="Select a valid document type",
|
help="Technical field",
|
||||||
|
readonly=False,
|
||||||
|
store=True,
|
||||||
comodel_name="res.partner.id_number",
|
comodel_name="res.partner.id_number",
|
||||||
compute="_compute_document_id",
|
compute="_compute_document_id",
|
||||||
)
|
)
|
||||||
@@ -198,13 +207,6 @@ class PmsCheckinPartner(models.Model):
|
|||||||
record.document_type = record.partner_id.id_numbers[
|
record.document_type = record.partner_id.id_numbers[
|
||||||
0
|
0
|
||||||
].category_id
|
].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(
|
@api.depends(
|
||||||
"partner_id",
|
"partner_id",
|
||||||
@@ -217,16 +219,6 @@ class PmsCheckinPartner(models.Model):
|
|||||||
record.document_expedition_date = record.partner_id.id_numbers[
|
record.document_expedition_date = record.partner_id.id_numbers[
|
||||||
0
|
0
|
||||||
].valid_from
|
].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")
|
@api.depends("partner_id", "partner_id.firstname")
|
||||||
def _compute_firstname(self):
|
def _compute_firstname(self):
|
||||||
@@ -239,24 +231,18 @@ class PmsCheckinPartner(models.Model):
|
|||||||
for record in self:
|
for record in self:
|
||||||
if not record.lastname:
|
if not record.lastname:
|
||||||
record.lastname = record.partner_id.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")
|
@api.depends("partner_id", "partner_id.lastname2")
|
||||||
def _compute_lastname2(self):
|
def _compute_lastname2(self):
|
||||||
for record in self:
|
for record in self:
|
||||||
if not record.lastname2:
|
if not record.lastname2:
|
||||||
record.lastname2 = record.partner_id.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")
|
@api.depends("partner_id", "partner_id.birthdate_date")
|
||||||
def _compute_birth_date(self):
|
def _compute_birth_date(self):
|
||||||
for record in self:
|
for record in self:
|
||||||
if not record.birthdate_date:
|
if not record.birthdate_date:
|
||||||
record.birthdate_date = record.partner_id.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(
|
@api.depends(
|
||||||
"partner_id",
|
"partner_id",
|
||||||
@@ -264,18 +250,14 @@ class PmsCheckinPartner(models.Model):
|
|||||||
)
|
)
|
||||||
def _compute_gender(self):
|
def _compute_gender(self):
|
||||||
for record in self:
|
for record in self:
|
||||||
if not record.gender:
|
if not record.gender and record.partner_id.gender:
|
||||||
record.gender = 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")
|
@api.depends("partner_id", "partner_id.lastname")
|
||||||
def _compute_nationality(self):
|
def _compute_nationality(self):
|
||||||
for record in self:
|
for record in self:
|
||||||
if not record.nationality_id:
|
if not record.nationality_id:
|
||||||
record.nationality_id = record.partner_id.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")
|
@api.depends("reservation_id", "folio_id", "reservation_id.preferred_room_id")
|
||||||
def _compute_identifier(self):
|
def _compute_identifier(self):
|
||||||
@@ -331,30 +313,31 @@ class PmsCheckinPartner(models.Model):
|
|||||||
for record in self:
|
for record in self:
|
||||||
if not record.email:
|
if not record.email:
|
||||||
record.email = record.partner_id.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")
|
@api.depends("partner_id", "partner_id.mobile")
|
||||||
def _compute_mobile(self):
|
def _compute_mobile(self):
|
||||||
for record in self:
|
for record in self:
|
||||||
if not record.mobile:
|
if not record.mobile:
|
||||||
record.mobile = record.partner_id.mobile
|
record.mobile = record.partner_id.mobile
|
||||||
elif not record.partner_id.mobile:
|
|
||||||
record.partner_id.write({"mobile": record.mobile})
|
|
||||||
|
|
||||||
@api.depends("partner_id")
|
@api.depends("partner_id")
|
||||||
def _compute_document_id(self):
|
def _compute_document_id(self):
|
||||||
for record in self:
|
for record in self:
|
||||||
if record.partner_id:
|
if record.partner_id:
|
||||||
id_number_id = self.env["res.partner.id_number"].create(
|
if (
|
||||||
{
|
not record.document_id
|
||||||
"partner_id": record.partner_id.id,
|
and record.document_number
|
||||||
"name": record.document_number,
|
and record.document_type
|
||||||
"category_id": record.document_type.id,
|
):
|
||||||
"valid_from": record.document_expedition_date,
|
id_number_id = self.env["res.partner.id_number"].create(
|
||||||
}
|
{
|
||||||
)
|
"partner_id": record.partner_id.id,
|
||||||
record.document_id = id_number_id
|
"name": record.document_number,
|
||||||
|
"category_id": record.document_type.id,
|
||||||
|
"valid_from": record.document_expedition_date,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
record.document_id = id_number_id
|
||||||
else:
|
else:
|
||||||
record.document_id = False
|
record.document_id = False
|
||||||
|
|
||||||
|
|||||||
@@ -63,21 +63,124 @@ class ResPartner(models.Model):
|
|||||||
inverse_name="partner_id",
|
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(
|
firstname = fields.Char(
|
||||||
readonly=False,
|
readonly=False,
|
||||||
store=True,
|
store=True,
|
||||||
compute="_compute_firstname",
|
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")
|
@api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.firstname")
|
||||||
def _compute_firstname(self):
|
def _compute_firstname(self):
|
||||||
if hasattr(super(), "_compute_firstname"):
|
if hasattr(super(), "_compute_firstname"):
|
||||||
super()._compute_field()
|
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:
|
@api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.lastname")
|
||||||
# if not record.firstname:
|
def _compute_lastname(self):
|
||||||
# print(record.pms_checkin_partner_ids.mapped("firstname"))
|
if hasattr(super(), "_compute_lastname"):
|
||||||
# #record.firstname =
|
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):
|
def _compute_reservations_count(self):
|
||||||
# TODO: recuperar las reservas de los folios del partner
|
# 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