[REF] pms and pms_l10n_es: refactor checkin_partner/res_partner fields

This commit is contained in:
Sara Lago
2021-06-02 17:12:46 +02:00
parent 3c1ac33bd8
commit ec375c749b
12 changed files with 235 additions and 310 deletions

View File

@@ -16,10 +16,15 @@
"base",
"mail",
# "account_payment_return",
# "partner_firstname",
# "email_template_qweb",
"sale",
"multi_pms_properties",
"partner_identification",
"partner_firstname",
"partner_second_lastname",
"partner_contact_gender",
"partner_contact_birthdate",
"partner_contact_nationality",
],
"data": [
"security/pms_security.xml",

View File

@@ -52,5 +52,26 @@
<field name="name">Agency</field>
<field name="channel_type">indirect</field>
</record>
<!--res.partner_category_id-->
<record id="document_type_passport" model="res.partner.id_category">
<field name="name">Passport</field>
<field name="code">P</field>
</record>
<record id="document_type_driving_license" model="res.partner.id_category">
<field name="name">Driving License</field>
<field name="code">C</field>
</record>
<record id="document_type_identification_document" model="res.partner.id_category">
<field name="name">Identification Document</field>
<field name="code">I</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>
</record>
<record id="document_type_european_residence" model="res.partner.id_category">
<field name="name">European Residence permit</field>
<field name="code">X</field>
</record>
</data>
</odoo>

View File

@@ -116,7 +116,122 @@ class PmsCheckinPartner(models.Model):
compute="_compute_state",
)
gender = fields.Selection(
[("male", "Male"), ("female", "Female"), ("other", "Other")],
string="Gender",
compute="_compute_gender",
store=True,
readonly=False,
)
nationality_id = fields.Many2one(
string="Nationality ID",
compute="_compute_nationality",
comodel_name="res.country",
store=True,
readonly=False,
)
firstname = fields.Char(
"First Name",
compute="_compute_firstname",
store=True,
readonly=False,
)
lastname = fields.Char(
"Last Name",
compute="_compute_lastname",
store=True,
readonly=False,
)
lastname2 = fields.Char(
"Second Last Name",
compute="_compute_lastname2",
store=True,
readonly=False,
)
birthdate_date = fields.Date(
"Birthdate",
compute="_compute_birth_date",
store=True,
readonly=False,
)
document_number = fields.Char(
"Document Number",
#compute="_compute_document_number",
store=True,
readonly=False,
)
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,
)
document_expedition_date = fields.Date(
"Expedition Date",
#compute="_compute_document_expedition_date",
store=True,
readonly=False,
)
# Compute
# ****************************************************
# @api.depends("partner_id", "partner_id.document_number")
# def _compute_document_number(self):
# for record in self:
# if not record.document_number:
# record.document_number = record.partner_id.document_number
#
# @api.depends("partner_id", "partner_id.document_type")
# def _compute_document_type(self):
# for record in self:
# if not record.document_type:
# record.document_type = record.partner_id.document_type
#
# @api.depends("partner_id", "partner_id.document_expedition_date")
# def _compute_document_expedition_date(self):
# for record in self:
# if not record.document_expedition_date:
# record.document_expedition_date = (
# record.partner_id.document_expedition_date
# )
@api.depends("partner_id", "partner_id.firstname")
def _compute_firstname(self):
for record in self:
if not record.firstname:
record.firstname = record.partner_id.firstname
@api.depends("partner_id", "partner_id.lastname")
def _compute_lastname(self):
for record in self:
if not record.lastname:
record.lastname = record.partner_id.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
@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
@api.depends("partner_id", "partner_id.gender")
def _compute_gender(self):
for record in self:
if not record.gender:
record.gender = record.partner_id.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
@api.depends("reservation_id", "folio_id", "reservation_id.preferred_room_id")
def _compute_identifier(self):
for record in self:
@@ -303,7 +418,16 @@ class PmsCheckinPartner(models.Model):
# api.depends need "reservation_id.state" in the lambda function
if depends:
return ["reservation_id.state", "name"]
return ["name"]
mandatory_fields = [
"birthdate_date",
"document_number",
"document_type",
"document_expedition_date",
"gender",
"name"
]
return mandatory_fields
@api.model
def _checkin_partner_fields(self):

View File

@@ -149,4 +149,6 @@ class ResPartner(models.Model):
@api.model
def _get_key_fields(self):
return []
key_fields = super(ResPartner, self)._get_key_fields()
key_fields.extend(["document_number"])
return key_fields

View File

@@ -29,10 +29,17 @@
<group name="group_left">
<field
name="partner_id"
required="True"
domain="[('is_company','=', False)]"
/>
<field name="name" />
<field name="firstname"/>
<field name="lastname" />
<field name="lastname2" />
<field name="gender" />
<field name="birthdate_date" />
<field name="document_type" />
<field name="document_number" />
<field name="document_expedition_date" />
<field name="nationality_id" />
<field name="pms_property_id" invisible="1" />
<field name="arrival" />
<field name="departure" />
@@ -70,7 +77,15 @@
/>
<field name="identifier" />
<field name="partner_id" />
<field name="name" />
<field name="firstname"/>
<field name="lastname" />
<field name="lastname2" />
<field name="gender" />
<field name="birthdate_date" />
<field name="document_type" />
<field name="document_number" />
<field name="document_expedition_date" />
<field name="nationality_id" />
<field name="mobile" />
<field name="email" />
<field name="arrival" />
@@ -107,7 +122,15 @@
<field name="reservation_id" />
<field name="pms_property_id" invisible="1" />
<field name="partner_id" domain="[('is_company','=', False)]" />
<field name="name" />
<field name="firstname"/>
<field name="lastname" />
<field name="lastname2" />
<field name="gender" />
<field name="birthdate_date" />
<field name="document_type" />
<field name="document_number" />
<field name="document_expedition_date" />
<field name="nationality_id" />
<field name="mobile" />
<field name="email" />
<field name="arrival" invisible="1" />
@@ -139,7 +162,17 @@
/>
<field name="identifier" />
<field name="partner_id" domain="[('is_company','=', False)]" />
<field name="name" />
<field name="reservation_id" />
<field name="pms_property_id" invisible="1" />
<field name="firstname"/>
<field name="lastname" />
<field name="lastname2" />
<field name="gender" />
<field name="birthdate_date" />
<field name="document_type" />
<field name="document_number" />
<field name="document_expedition_date" />
<field name="nationality_id" />
<field name="mobile" />
<field name="email" />
<field name="arrival" />
@@ -167,11 +200,21 @@
>
<field name="id" />
<field name="identifier" />
<field name="partner_id" />
<field name="reservation_id" />
<field name="folio_id" />
<field name="pms_property_id" />
<field name="name" />
<field name="reservation_id" />
<field name="pms_property_id" invisible="1" />
<field name="partner_id" domain="[('is_company','=', False)]" />
<field name="firstname"/>
<field name="lastname" />
<field name="lastname2" />
<field name="gender" />
<field name="birthdate_date" />
<field name="document_type" />
<field name="document_number" />
<field name="document_expedition_date" />
<field name="nationality_id" />
<field name="email" />
<field name="mobile" />
<field name="arrival" />

View File

@@ -28,9 +28,8 @@
"data/queue_data.xml",
"data/queue_job_function_data.xml",
"security/ir.model.access.csv",
"views/pms_checkin_partner_views.xml",
"views/pms_property_views.xml",
"views/res_partner_views.xml",
#"views/res_partner_views.xml",
"wizards/traveller_report.xml",
],
"installable": True,

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="document_type_dni" model="res.partner.id_category">
<field name="name">DNI</field>
<field name="code">D</field>
</record>
</data>
</odoo>

View File

@@ -1,3 +1,3 @@
from . import res_partner
#from . import res_partner
from . import pms_checkin_partner
from . import pms_property

View File

@@ -4,140 +4,6 @@ from odoo import api, fields, models
class PmsCheckinPartner(models.Model):
_inherit = "pms.checkin.partner"
firstname = fields.Char(
"First Name",
compute="_compute_firstname",
store=True,
readonly=False,
)
lastname = fields.Char(
"Last Name",
compute="_compute_lastname",
store=True,
readonly=False,
)
lastname2 = fields.Char(
"Second Last Name",
compute="_compute_lastname2",
store=True,
readonly=False,
required=True,
)
birthdate_date = fields.Date(
"Birthdate",
compute="_compute_birth_date",
store=True,
readonly=False,
)
document_number = fields.Char(
"Document Number",
compute="_compute_document_number",
store=True,
readonly=False,
)
document_type = fields.Selection(
[
("D", "DNI"),
("P", "Passport"),
("C", "Driving License"),
("I", "Identification Document"),
("N", "Spanish residence permit"),
("X", "European residence permit"),
],
string="Document Type",
help="Select a valid document type",
compute="_compute_document_type",
store=True,
readonly=False,
)
document_expedition_date = fields.Date(
"Expedition Date",
compute="_compute_document_expedition_date",
store=True,
readonly=False,
)
gender = fields.Selection(
[("male", "Male"), ("female", "Female"), ("other", "Other")],
string="Gender",
compute="_compute_gender",
store=True,
readonly=False,
)
nationality_id = fields.Many2one(
string="Nationality ID",
compute="_compute_nationality",
comodel_name="res.country",
store=True,
readonly=False,
)
@api.depends("partner_id", "partner_id.firstname")
def _compute_firstname(self):
for record in self:
if not record.firstname:
record.firstname = record.partner_id.firstname
@api.depends("partner_id", "partner_id.lastname")
def _compute_lastname(self):
for record in self:
if not record.lastname:
record.lastname = record.partner_id.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
@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
@api.depends("partner_id", "partner_id.document_number")
def _compute_document_number(self):
for record in self:
if not record.document_number:
record.document_number = record.partner_id.document_number
@api.depends("partner_id", "partner_id.document_type")
def _compute_document_type(self):
for record in self:
if not record.document_type:
record.document_type = record.partner_id.document_type
@api.depends("partner_id", "partner_id.document_expedition_date")
def _compute_document_expedition_date(self):
for record in self:
if not record.document_expedition_date:
record.document_expedition_date = (
record.partner_id.document_expedition_date
)
@api.depends("partner_id", "partner_id.gender")
def _compute_gender(self):
for record in self:
if not record.gender:
record.gender = record.partner_id.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
@api.model
def _checkin_mandatory_fields(self, depends=False):
mandatory_fields = super(PmsCheckinPartner, self)._checkin_mandatory_fields(
depends
)
mandatory_fields.extend(
[
"birthdate_date",
"document_number",
"document_type",
"document_expedition_date",
"gender",
]
)
return mandatory_fields

View File

@@ -3,47 +3,3 @@ from odoo import _, api, fields, models
class ResPartner(models.Model):
_inherit = "res.partner"
document_type = fields.Selection(
[
("D", "DNI"),
("P", "Passport"),
("C", "Driving License"),
("I", "Identification Document"),
("N", "Spanish residence permit"),
("X", "European residence permit"),
],
help="Select a valid document type",
string="Doc. type",
)
document_number = fields.Char(
string="Document number",
)
document_expedition_date = fields.Date(string="Document expedition date")
@api.constrains("document_number", "document_type")
def _check_document(self):
for record in self.filtered("document_number"):
if not record.document_type:
raise models.ValidationError(_("Document Type field are mandatory"))
partner = self.search(
[
("document_number", "=", record.document_number),
("document_type", "=", record.document_type),
("id", "!=", record.id),
]
)
if partner:
raise models.ValidationError(
_(
"Document Number Partner %s already exist (%s)",
record.document_number,
partner.name,
)
)
@api.model
def _get_key_fields(self):
key_fields = super(ResPartner, self)._get_key_fields()
key_fields.extend(["document_number"])
return key_fields

View File

@@ -1,100 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="pms_checkin_partner_view_form" model="ir.ui.view">
<field name="name">Checkin partner view form Spain</field>
<field name="model">pms.checkin.partner</field>
<field name="inherit_id" ref="pms.pms_checkin_partner_view_form" />
<field name="arch" type="xml">
<data>
<xpath expr="//field[@name='partner_id']" position="after">
<field name="lastname" />
<field name="lastname2" />
<field name="gender" />
<field name="birthdate_date" />
<field name="document_type" />
<field name="document_number" />
<field name="document_expedition_date" />
<field name="nationality_id" />
</xpath>
</data>
</field>
</record>
<record id="pms_checkin_partner_reservation_view_tree" model="ir.ui.view">
<field name="name">Checkin partner view reservation tree Spain</field>
<field name="model">pms.checkin.partner</field>
<field name="inherit_id" ref="pms.pms_checkin_partner_reservation_view_tree" />
<field name="arch" type="xml">
<data>
<xpath expr="//field[@name='partner_id']" position="after">
<field name="lastname" />
<field name="lastname2" />
<field name="gender" />
<field name="birthdate_date" />
<field name="document_type" />
<field name="document_number" />
<field name="document_expedition_date" />
<field name="nationality_id" />
</xpath>
</data>
</field>
</record>
<record id="pms_checkin_partner_folio_view_tree" model="ir.ui.view">
<field name="name">Checkin partner view reservation tree Spain</field>
<field name="model">pms.checkin.partner</field>
<field name="inherit_id" ref="pms.pms_checkin_partner_folio_view_tree" />
<field name="arch" type="xml">
<data>
<xpath expr="//field[@name='partner_id']" position="after">
<field name="lastname" />
<field name="lastname2" />
<field name="gender" />
<field name="birthdate_date" />
<field name="document_type" />
<field name="document_number" />
<field name="document_expedition_date" />
<field name="nationality_id" />
</xpath>
</data>
</field>
</record>
<record id="pms_checkin_partner_view_tree" model="ir.ui.view">
<field name="name">Checkin partner view tree Spain</field>
<field name="model">pms.checkin.partner</field>
<field name="inherit_id" ref="pms.pms_checkin_partner_view_tree" />
<field name="arch" type="xml">
<data>
<xpath expr="//field[@name='partner_id']" position="after">
<field name="lastname" />
<field name="lastname2" />
<field name="gender" />
<field name="birthdate_date" />
<field name="document_type" />
<field name="document_number" />
<field name="document_expedition_date" />
<field name="nationality_id" />
</xpath>
</data>
</field>
</record>
<record id="pms_checkin_partner_view_search" model="ir.ui.view">
<field name="name">Checkin partner view tree Spain</field>
<field name="model">pms.checkin.partner</field>
<field name="inherit_id" ref="pms.pms_checkin_partner_view_search" />
<field name="arch" type="xml">
<data>
<xpath expr="//field[@name='partner_id']" position="after">
<field name="lastname" />
<field name="lastname2" />
<field name="gender" />
<field name="birthdate_date" />
<field name="document_type" />
<field name="document_number" />
<field name="document_expedition_date" />
</xpath>
</data>
</field>
</record>
</odoo>

View File

@@ -1,19 +1,19 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="view_partner_pms_l10n_es" model="ir.ui.view">
<field name="name">Legal Spanish information</field>
<field name="model">res.partner</field>
<field
name="inherit_id"
ref="partner_contact_personal_information_page.personal_information"
/>
<field name="arch" type="xml">
<xpath expr="//group[@name='personal_information_group']" position="inside">
<field name='document_type' />
<field name='document_number' />
<field name='document_expedition_date' />
</xpath>
</field>
</record>
<!--<?xml version="1.0" encoding="utf-8" ?>-->
<!--<odoo>-->
<!-- <record id="view_partner_pms_l10n_es" model="ir.ui.view">-->
<!-- <field name="name">Legal Spanish information</field>-->
<!-- <field name="model">res.partner</field>-->
<!-- <field-->
<!-- name="inherit_id"-->
<!-- ref="partner_contact_personal_information_page.personal_information"-->
<!-- />-->
<!-- <field name="arch" type="xml">-->
<!-- <xpath expr="//group[@name='personal_information_group']" position="inside">-->
<!-- <field name='document_type' />-->
<!-- <field name='document_number' />-->
<!-- <field name='document_expedition_date' />-->
<!-- </xpath>-->
<!-- </field>-->
<!-- </record>-->
</odoo>
<!--</odoo>-->