mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[IMP] incongruence partner fields on reservation/folio/checkin
This commit is contained in:
@@ -3788,8 +3788,8 @@ msgid "Income Account"
|
|||||||
msgstr "Cuenta de Ingresos"
|
msgstr "Cuenta de Ingresos"
|
||||||
|
|
||||||
#. module: pms
|
#. module: pms
|
||||||
#: model:ir.model.fields,field_description:pms.field_pms_checkin_partner__incongruences
|
#: model:ir.model.fields,field_description:pms.field_pms_checkin_partner__partner_incongruences
|
||||||
msgid "Incongruences"
|
msgid "partner_incongruences"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. module: pms
|
#. module: pms
|
||||||
@@ -7963,7 +7963,7 @@ msgstr "Computación técnica"
|
|||||||
|
|
||||||
#. module: pms
|
#. module: pms
|
||||||
#: model:ir.model.fields,help:pms.field_pms_checkin_partner__document_id
|
#: model:ir.model.fields,help:pms.field_pms_checkin_partner__document_id
|
||||||
#: model:ir.model.fields,help:pms.field_pms_checkin_partner__incongruences
|
#: model:ir.model.fields,help:pms.field_pms_checkin_partner__partner_incongruences
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "Technical field"
|
msgid "Technical field"
|
||||||
msgstr "Computación técnica"
|
msgstr "Computación técnica"
|
||||||
|
|||||||
@@ -3582,8 +3582,8 @@ msgid "Income Account"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. module: pms
|
#. module: pms
|
||||||
#: model:ir.model.fields,field_description:pms.field_pms_checkin_partner__incongruences
|
#: model:ir.model.fields,field_description:pms.field_pms_checkin_partner__partner_incongruences
|
||||||
msgid "Incongruences"
|
msgid "partner_incongruences"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. module: pms
|
#. module: pms
|
||||||
@@ -7586,7 +7586,7 @@ msgstr ""
|
|||||||
|
|
||||||
#. module: pms
|
#. module: pms
|
||||||
#: model:ir.model.fields,help:pms.field_pms_checkin_partner__document_id
|
#: model:ir.model.fields,help:pms.field_pms_checkin_partner__document_id
|
||||||
#: model:ir.model.fields,help:pms.field_pms_checkin_partner__incongruences
|
#: model:ir.model.fields,help:pms.field_pms_checkin_partner__partner_incongruences
|
||||||
msgid "Technical field"
|
msgid "Technical field"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
@@ -192,10 +192,12 @@ class PmsCheckinPartner(models.Model):
|
|||||||
ondelete="restrict",
|
ondelete="restrict",
|
||||||
)
|
)
|
||||||
|
|
||||||
incongruences = fields.Char(
|
partner_incongruences = fields.Char(
|
||||||
string="Incongruences",
|
string="partner_incongruences",
|
||||||
help="Technical field",
|
help="indicates that some partner fields \
|
||||||
compute="_compute_incongruences",
|
on the checkin do not correspond to that of \
|
||||||
|
the associated partner",
|
||||||
|
compute="_compute_partner_incongruences",
|
||||||
)
|
)
|
||||||
|
|
||||||
@api.depends("partner_id")
|
@api.depends("partner_id")
|
||||||
@@ -405,25 +407,29 @@ class PmsCheckinPartner(models.Model):
|
|||||||
"nationality_id",
|
"nationality_id",
|
||||||
"email",
|
"email",
|
||||||
"mobile",
|
"mobile",
|
||||||
|
"partner_id",
|
||||||
)
|
)
|
||||||
def _compute_incongruences(self):
|
def _compute_partner_incongruences(self):
|
||||||
for record in self:
|
for record in self:
|
||||||
incongruous_fields = ""
|
incongruous_fields = False
|
||||||
if record.partner_id:
|
if record.partner_id:
|
||||||
for field in record._checkin_partner_fields():
|
for field in record._checkin_partner_fields():
|
||||||
if (
|
if (
|
||||||
record.partner_id[field]
|
record.partner_id[field]
|
||||||
and record.partner_id[field] != record[field]
|
and record.partner_id[field] != record[field]
|
||||||
):
|
):
|
||||||
incongruous_fields += record._fields[field].string + ", "
|
if not incongruous_fields:
|
||||||
|
incongruous_fields = record._fields[field].string
|
||||||
|
else:
|
||||||
|
incongruous_fields += ", " + record._fields[field].string
|
||||||
if incongruous_fields:
|
if incongruous_fields:
|
||||||
record.incongruences = (
|
record.partner_incongruences = (
|
||||||
incongruous_fields + "field/s don't correspond to saved host"
|
incongruous_fields + " field/s don't correspond to saved host"
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
record.incongruences = False
|
record.partner_incongruences = False
|
||||||
else:
|
else:
|
||||||
record.incongruences = False
|
record.partner_incongruences = False
|
||||||
|
|
||||||
@api.constrains("departure", "arrival")
|
@api.constrains("departure", "arrival")
|
||||||
def _check_departure(self):
|
def _check_departure(self):
|
||||||
|
|||||||
@@ -338,6 +338,13 @@ class PmsFolio(models.Model):
|
|||||||
readonly=False,
|
readonly=False,
|
||||||
compute="_compute_mobile",
|
compute="_compute_mobile",
|
||||||
)
|
)
|
||||||
|
partner_incongruences = fields.Char(
|
||||||
|
string="partner_incongruences",
|
||||||
|
help="indicates that some partner fields \
|
||||||
|
on the folio do not correspond to that of \
|
||||||
|
the associated partner",
|
||||||
|
compute="_compute_partner_incongruences",
|
||||||
|
)
|
||||||
partner_internal_comment = fields.Text(
|
partner_internal_comment = fields.Text(
|
||||||
string="Internal Partner Notes",
|
string="Internal Partner Notes",
|
||||||
help="Internal notes of the partner",
|
help="Internal notes of the partner",
|
||||||
@@ -770,6 +777,36 @@ class PmsFolio(models.Model):
|
|||||||
elif not record.mobile:
|
elif not record.mobile:
|
||||||
record.mobile = False
|
record.mobile = False
|
||||||
|
|
||||||
|
@api.depends(
|
||||||
|
"partner_name",
|
||||||
|
"email",
|
||||||
|
"mobile",
|
||||||
|
"partner_id",
|
||||||
|
)
|
||||||
|
def _compute_partner_incongruences(self):
|
||||||
|
fields_mapping = {
|
||||||
|
"partner_name": "name",
|
||||||
|
"email": "email",
|
||||||
|
"mobile": "mobile",
|
||||||
|
}
|
||||||
|
for record in self:
|
||||||
|
incongruous_fields = False
|
||||||
|
if record.partner_id:
|
||||||
|
for k, v in fields_mapping.items():
|
||||||
|
if record.partner_id[v] and record.partner_id[v] != record[k]:
|
||||||
|
if not incongruous_fields:
|
||||||
|
incongruous_fields = v
|
||||||
|
else:
|
||||||
|
incongruous_fields += ", " + v
|
||||||
|
if incongruous_fields:
|
||||||
|
record.partner_incongruences = (
|
||||||
|
incongruous_fields + " field/s don't correspond to saved host"
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
record.partner_incongruences = False
|
||||||
|
else:
|
||||||
|
record.partner_incongruences = False
|
||||||
|
|
||||||
@api.depends("sale_line_ids.price_total")
|
@api.depends("sale_line_ids.price_total")
|
||||||
def _compute_amount_all(self):
|
def _compute_amount_all(self):
|
||||||
"""
|
"""
|
||||||
@@ -978,6 +1015,20 @@ class PmsFolio(models.Model):
|
|||||||
"target": "new",
|
"target": "new",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def open_partner(self):
|
||||||
|
""" Utility method used to add an "View Customer" button in folio views """
|
||||||
|
self.ensure_one()
|
||||||
|
partner_form_id = self.env.ref("base.view_partner_address_form").id
|
||||||
|
return {
|
||||||
|
"type": "ir.actions.act_window",
|
||||||
|
"res_model": "res.partner",
|
||||||
|
"view_mode": "form",
|
||||||
|
"views": [(partner_form_id, "form")],
|
||||||
|
"res_id": self.partner_id.id,
|
||||||
|
"target": "new",
|
||||||
|
"flags": {"form": {"action_buttons": True}},
|
||||||
|
}
|
||||||
|
|
||||||
def open_moves_folio(self):
|
def open_moves_folio(self):
|
||||||
invoices = self.mapped("move_ids")
|
invoices = self.mapped("move_ids")
|
||||||
action = self.env.ref("account.action_move_out_invoice_type").sudo().read()[0]
|
action = self.env.ref("account.action_move_out_invoice_type").sudo().read()[0]
|
||||||
|
|||||||
@@ -480,6 +480,13 @@ class PmsReservation(models.Model):
|
|||||||
readonly=False,
|
readonly=False,
|
||||||
compute="_compute_mobile",
|
compute="_compute_mobile",
|
||||||
)
|
)
|
||||||
|
partner_incongruences = fields.Char(
|
||||||
|
string="partner_incongruences",
|
||||||
|
help="indicates that some partner fields \
|
||||||
|
on the reservation do not correspond to that of \
|
||||||
|
the associated partner",
|
||||||
|
compute="_compute_partner_incongruences",
|
||||||
|
)
|
||||||
partner_internal_comment = fields.Text(
|
partner_internal_comment = fields.Text(
|
||||||
string="Internal Partner Notes",
|
string="Internal Partner Notes",
|
||||||
help="Internal reservation comment",
|
help="Internal reservation comment",
|
||||||
@@ -1176,6 +1183,36 @@ class PmsReservation(models.Model):
|
|||||||
elif not record.partner_mobile:
|
elif not record.partner_mobile:
|
||||||
record.partner_mobile = False
|
record.partner_mobile = False
|
||||||
|
|
||||||
|
@api.depends(
|
||||||
|
"partner_name",
|
||||||
|
"partner_email",
|
||||||
|
"partner_mobile",
|
||||||
|
"partner_id",
|
||||||
|
)
|
||||||
|
def _compute_partner_incongruences(self):
|
||||||
|
fields_mapping = {
|
||||||
|
"partner_name": "name",
|
||||||
|
"partner_email": "email",
|
||||||
|
"partner_mobile": "mobile",
|
||||||
|
}
|
||||||
|
for record in self:
|
||||||
|
incongruous_fields = False
|
||||||
|
if record.partner_id:
|
||||||
|
for k, v in fields_mapping.items():
|
||||||
|
if record.partner_id[v] and record.partner_id[v] != record[k]:
|
||||||
|
if not incongruous_fields:
|
||||||
|
incongruous_fields = v
|
||||||
|
else:
|
||||||
|
incongruous_fields += ", " + v
|
||||||
|
if incongruous_fields:
|
||||||
|
record.partner_incongruences = (
|
||||||
|
incongruous_fields + " field/s don't correspond to saved host"
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
record.partner_incongruences = False
|
||||||
|
else:
|
||||||
|
record.partner_incongruences = False
|
||||||
|
|
||||||
def _compute_checkin_partner_count(self):
|
def _compute_checkin_partner_count(self):
|
||||||
for record in self:
|
for record in self:
|
||||||
if record.reservation_type != "out":
|
if record.reservation_type != "out":
|
||||||
@@ -1369,6 +1406,20 @@ class PmsReservation(models.Model):
|
|||||||
raise ValidationError(_("booking agency with wrong configuration: "))
|
raise ValidationError(_("booking agency with wrong configuration: "))
|
||||||
|
|
||||||
# Action methods
|
# Action methods
|
||||||
|
def open_partner(self):
|
||||||
|
""" Utility method used to add an "View Customer" button in folio views """
|
||||||
|
self.ensure_one()
|
||||||
|
partner_form_id = self.env.ref("base.view_partner_address_form").id
|
||||||
|
return {
|
||||||
|
"type": "ir.actions.act_window",
|
||||||
|
"res_model": "res.partner",
|
||||||
|
"view_mode": "form",
|
||||||
|
"views": [(partner_form_id, "form")],
|
||||||
|
"res_id": self.partner_id.id,
|
||||||
|
"target": "new",
|
||||||
|
"flags": {"form": {"action_buttons": True}},
|
||||||
|
}
|
||||||
|
|
||||||
def print_all_checkins(self):
|
def print_all_checkins(self):
|
||||||
checkins = self.env["pms.checkin.partner"]
|
checkins = self.env["pms.checkin.partner"]
|
||||||
for record in self:
|
for record in self:
|
||||||
|
|||||||
@@ -29,9 +29,9 @@
|
|||||||
class="alert alert-danger"
|
class="alert alert-danger"
|
||||||
role="danger"
|
role="danger"
|
||||||
style="margin-bottom:0px;"
|
style="margin-bottom:0px;"
|
||||||
attrs="{'invisible': [('incongruences','=',False)]}"
|
attrs="{'invisible': [('partner_incongruences','=',False)]}"
|
||||||
>
|
>
|
||||||
<field name="incongruences" />
|
<field name="partner_incongruences" />
|
||||||
</div>
|
</div>
|
||||||
<group name="group_top">
|
<group name="group_top">
|
||||||
<group name="group_left">
|
<group name="group_left">
|
||||||
|
|||||||
@@ -39,6 +39,22 @@
|
|||||||
statusbar_visible="draft,sent,sale,done"
|
statusbar_visible="draft,sent,sale,done"
|
||||||
/>
|
/>
|
||||||
</header>
|
</header>
|
||||||
|
<div
|
||||||
|
class="alert alert-info"
|
||||||
|
role="alert"
|
||||||
|
style="margin-bottom:0px;"
|
||||||
|
attrs="{'invisible': [('partner_incongruences','=',False)]}"
|
||||||
|
>
|
||||||
|
<field name="partner_incongruences" />
|
||||||
|
<bold>
|
||||||
|
<button
|
||||||
|
class="alert-link"
|
||||||
|
type="object"
|
||||||
|
name="open_partner"
|
||||||
|
string="View Customer"
|
||||||
|
/>
|
||||||
|
</bold>
|
||||||
|
</div>
|
||||||
<sheet>
|
<sheet>
|
||||||
<div class="oe_button_box" name="button_box">
|
<div class="oe_button_box" name="button_box">
|
||||||
<button
|
<button
|
||||||
|
|||||||
@@ -61,6 +61,22 @@
|
|||||||
/>
|
/>
|
||||||
</bold>
|
</bold>
|
||||||
</div>
|
</div>
|
||||||
|
<div
|
||||||
|
class="alert alert-info"
|
||||||
|
role="alert"
|
||||||
|
style="margin-bottom:0px;"
|
||||||
|
attrs="{'invisible': [('partner_incongruences','=',False)]}"
|
||||||
|
>
|
||||||
|
<field name="partner_incongruences" />
|
||||||
|
<bold>
|
||||||
|
<button
|
||||||
|
class="alert-link"
|
||||||
|
type="object"
|
||||||
|
name="open_partner"
|
||||||
|
string="View Customer"
|
||||||
|
/>
|
||||||
|
</bold>
|
||||||
|
</div>
|
||||||
<div
|
<div
|
||||||
class="alert alert-warning"
|
class="alert alert-warning"
|
||||||
role="alert"
|
role="alert"
|
||||||
|
|||||||
Reference in New Issue
Block a user