[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", "base",
"mail", "mail",
# "account_payment_return", # "account_payment_return",
# "partner_firstname",
# "email_template_qweb", # "email_template_qweb",
"sale", "sale",
"multi_pms_properties", "multi_pms_properties",
"partner_identification",
"partner_firstname",
"partner_second_lastname",
"partner_contact_gender",
"partner_contact_birthdate",
"partner_contact_nationality",
], ],
"data": [ "data": [
"security/pms_security.xml", "security/pms_security.xml",

View File

@@ -52,5 +52,26 @@
<field name="name">Agency</field> <field name="name">Agency</field>
<field name="channel_type">indirect</field> <field name="channel_type">indirect</field>
</record> </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> </data>
</odoo> </odoo>

View File

@@ -116,7 +116,122 @@ class PmsCheckinPartner(models.Model):
compute="_compute_state", 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 # 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") @api.depends("reservation_id", "folio_id", "reservation_id.preferred_room_id")
def _compute_identifier(self): def _compute_identifier(self):
for record in self: for record in self:
@@ -303,7 +418,16 @@ class PmsCheckinPartner(models.Model):
# api.depends need "reservation_id.state" in the lambda function # api.depends need "reservation_id.state" in the lambda function
if depends: if depends:
return ["reservation_id.state", "name"] 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 @api.model
def _checkin_partner_fields(self): def _checkin_partner_fields(self):

View File

@@ -149,4 +149,6 @@ class ResPartner(models.Model):
@api.model @api.model
def _get_key_fields(self): 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"> <group name="group_left">
<field <field
name="partner_id" name="partner_id"
required="True"
domain="[('is_company','=', False)]" 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="pms_property_id" invisible="1" />
<field name="arrival" /> <field name="arrival" />
<field name="departure" /> <field name="departure" />
@@ -70,7 +77,15 @@
/> />
<field name="identifier" /> <field name="identifier" />
<field name="partner_id" /> <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="mobile" />
<field name="email" /> <field name="email" />
<field name="arrival" /> <field name="arrival" />
@@ -107,7 +122,15 @@
<field name="reservation_id" /> <field name="reservation_id" />
<field name="pms_property_id" invisible="1" /> <field name="pms_property_id" invisible="1" />
<field name="partner_id" domain="[('is_company','=', False)]" /> <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="mobile" />
<field name="email" /> <field name="email" />
<field name="arrival" invisible="1" /> <field name="arrival" invisible="1" />
@@ -139,7 +162,17 @@
/> />
<field name="identifier" /> <field name="identifier" />
<field name="partner_id" domain="[('is_company','=', False)]" /> <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="mobile" />
<field name="email" /> <field name="email" />
<field name="arrival" /> <field name="arrival" />
@@ -167,11 +200,21 @@
> >
<field name="id" /> <field name="id" />
<field name="identifier" /> <field name="identifier" />
<field name="partner_id" />
<field name="reservation_id" /> <field name="reservation_id" />
<field name="folio_id" /> <field name="folio_id" />
<field name="pms_property_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="email" />
<field name="mobile" /> <field name="mobile" />
<field name="arrival" /> <field name="arrival" />

View File

@@ -28,9 +28,8 @@
"data/queue_data.xml", "data/queue_data.xml",
"data/queue_job_function_data.xml", "data/queue_job_function_data.xml",
"security/ir.model.access.csv", "security/ir.model.access.csv",
"views/pms_checkin_partner_views.xml",
"views/pms_property_views.xml", "views/pms_property_views.xml",
"views/res_partner_views.xml", #"views/res_partner_views.xml",
"wizards/traveller_report.xml", "wizards/traveller_report.xml",
], ],
"installable": True, "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_checkin_partner
from . import pms_property from . import pms_property

View File

@@ -4,140 +4,6 @@ from odoo import api, fields, models
class PmsCheckinPartner(models.Model): class PmsCheckinPartner(models.Model):
_inherit = "pms.checkin.partner" _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( lastname2 = fields.Char(
"Second Last Name", required=True,
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.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): class ResPartner(models.Model):
_inherit = "res.partner" _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" ?> <!--<?xml version="1.0" encoding="utf-8" ?>-->
<odoo> <!--<odoo>-->
<record id="view_partner_pms_l10n_es" model="ir.ui.view"> <!-- <record id="view_partner_pms_l10n_es" model="ir.ui.view">-->
<field name="name">Legal Spanish information</field> <!-- <field name="name">Legal Spanish information</field>-->
<field name="model">res.partner</field> <!-- <field name="model">res.partner</field>-->
<field <!-- <field-->
name="inherit_id" <!-- name="inherit_id"-->
ref="partner_contact_personal_information_page.personal_information" <!-- ref="partner_contact_personal_information_page.personal_information"-->
/> <!-- />-->
<field name="arch" type="xml"> <!-- <field name="arch" type="xml">-->
<xpath expr="//group[@name='personal_information_group']" position="inside"> <!-- <xpath expr="//group[@name='personal_information_group']" position="inside">-->
<field name='document_type' /> <!-- <field name='document_type' />-->
<field name='document_number' /> <!-- <field name='document_number' />-->
<field name='document_expedition_date' /> <!-- <field name='document_expedition_date' />-->
</xpath> <!-- </xpath>-->
</field> <!-- </field>-->
</record> <!-- </record>-->
</odoo> <!--</odoo>-->