diff --git a/pms/models/pms_folio.py b/pms/models/pms_folio.py index e7b57a003..3f4e816fc 100644 --- a/pms/models/pms_folio.py +++ b/pms/models/pms_folio.py @@ -38,6 +38,9 @@ class PmsFolio(models.Model): external_reference = fields.Char( string="External Reference", help="Reference of this folio in an external system", + compute="_compute_external_reference", + readonly=False, + store=True, ) pms_property_id = fields.Many2one( string="Property", @@ -711,6 +714,20 @@ class PmsFolio(models.Model): ] return res + @api.depends("reservation_ids", "reservation_ids.external_reference") + def _compute_external_reference(self): + for folio in self: + folio.external_reference = folio._get_folio_external_reference() + + def _get_folio_external_reference(self): + self.ensure_one() + references = list(set(self.reservation_ids.mapped("external_reference"))) + references = list(filter(bool, references)) + if references: + return ",".join(references) + else: + return False + @api.depends("partner_id", "invoice_status", "last_checkout", "partner_invoice_ids") def _compute_autoinvoice_date(self): self.autoinvoice_date = False diff --git a/pms/models/pms_reservation.py b/pms/models/pms_reservation.py index 82db73d6b..13d92c2ba 100644 --- a/pms/models/pms_reservation.py +++ b/pms/models/pms_reservation.py @@ -26,6 +26,13 @@ class PmsReservation(models.Model): help="Reservation Code Identification", readonly=True, ) + external_reference = fields.Char( + string="External Reference", + help="Reference of this folio in an external system", + compute="_compute_external_reference", + store=True, + readonly=False, + ) folio_sequence = fields.Integer( string="Folio Sequence", help="Techinal field to get reservation name", @@ -668,6 +675,22 @@ class PmsReservation(models.Model): string="Language", comodel_name="res.lang", compute="_compute_lang" ) + @api.depends("folio_id", "folio_id.external_reference") + def _compute_external_reference(self): + for reservation in self: + if not reservation.external_reference: + reservation.external_reference = ( + reservation._get_reservation_external_reference() + ) + + def _get_reservation_external_reference(self): + self.ensure_one() + folio = self.folio_id + if folio and folio.external_reference: + return folio.external_reference + else: + return False + def _compute_date_order(self): for record in self: record.date_order = datetime.datetime.today() diff --git a/pms/views/pms_reservation_views.xml b/pms/views/pms_reservation_views.xml index fd93fbdd6..17188ed8b 100644 --- a/pms/views/pms_reservation_views.xml +++ b/pms/views/pms_reservation_views.xml @@ -436,6 +436,10 @@ name="agency_id" attrs="{'invisible': [('reservation_type', '!=', 'normal')]}" /> +