From d4b0c6f2ab6646b1d9951605db979bb8176cd894 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dar=C3=ADo=20Lodeiros?= Date: Sat, 6 Mar 2021 10:46:41 +0100 Subject: [PATCH] [ADD]pms: sequence reservation --- pms/data/pms_sequence.xml | 7 +++++++ pms/models/ir_sequence.py | 19 ++++++++++++++++++- pms/models/pms_checkin_partner.py | 20 +++----------------- pms/models/pms_folio.py | 9 +++++---- pms/models/pms_reservation.py | 5 +++++ 5 files changed, 38 insertions(+), 22 deletions(-) diff --git a/pms/data/pms_sequence.xml b/pms/data/pms_sequence.xml index f1a56bbe2..cb2045870 100644 --- a/pms/data/pms_sequence.xml +++ b/pms/data/pms_sequence.xml @@ -8,6 +8,13 @@ 5 + + PMS Reservation + pms.reservation + R/ + 5 + + PMS Checkin pms.checkin.partner diff --git a/pms/models/ir_sequence.py b/pms/models/ir_sequence.py index 2749f4974..4330def6a 100644 --- a/pms/models/ir_sequence.py +++ b/pms/models/ir_sequence.py @@ -1,9 +1,26 @@ # Copyright 2017 Dario Lodeiros # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo import fields, models +from odoo import _, api, fields, models class IrSequence(models.Model): _inherit = "ir.sequence" pms_property_id = fields.Many2one("pms.property", string="Property") + + @api.model + def _next_sequence_property(self, pms_property_id, code): + sequence = self.search( + [ + ("code", "=", code), + ("pms_property_id", "=", pms_property_id), + ] + ) + if not sequence: + sequence = self.search( + [ + ("code", "=", code), + ("pms_property_id", "=", False), + ] + ) + return sequence._next_do() or _("New") diff --git a/pms/models/pms_checkin_partner.py b/pms/models/pms_checkin_partner.py index 873ef238d..882ba4caf 100644 --- a/pms/models/pms_checkin_partner.py +++ b/pms/models/pms_checkin_partner.py @@ -207,23 +207,9 @@ class PmsCheckinPartner(models.Model): ) if len(reservation.checkin_partner_ids) < reservation.adults: if vals.get("identifier", _("New")) == _("New") or "identifier" not in vals: - pms_property_id = ( - self.env.user.get_active_property_ids()[0] - if "pms_property_id" not in vals - else vals["pms_property_id"] - ) - vals["identifier"] = ( - self.env["ir.sequence"] - .search( - [ - ("code", "=", "pms.checkin.partner"), - "|", - ("pms_property_id", "=", pms_property_id), - ("pms_property_id", "=", False), - ] - ) - ._next_do() - or _("New") + vals["identifier"] = self.env["ir.sequence"]._next_sequence_property( + pms_property_id=reservation.pms_property_id.id, + code="pms.checkin.partner", ) return super(PmsCheckinPartner, self).create(vals) if len(draft_checkins) > 0: diff --git a/pms/models/pms_folio.py b/pms/models/pms_folio.py index 3b03cb965..4097a4b14 100644 --- a/pms/models/pms_folio.py +++ b/pms/models/pms_folio.py @@ -814,13 +814,14 @@ class PmsFolio(models.Model): def create(self, vals): if vals.get("name", _("New")) == _("New") or "name" not in vals: pms_property_id = ( - self.env.user.pms_property_id.id + self.env.user.get_active_property_ids()[0] if "pms_property_id" not in vals else vals["pms_property_id"] ) - vals["name"] = self.env["ir.sequence"].search( - [("pms_property_id", "=", pms_property_id)] - ).next_by_code("pms.folio") or _("New") + vals["name"] = self.env["ir.sequence"]._next_sequence_property( + pms_property_id=pms_property_id, + code="pms.folio", + ) result = super(PmsFolio, self).create(vals) return result diff --git a/pms/models/pms_reservation.py b/pms/models/pms_reservation.py index f89a329c5..4a182d655 100644 --- a/pms/models/pms_reservation.py +++ b/pms/models/pms_reservation.py @@ -1409,6 +1409,11 @@ class PmsReservation(models.Model): "reservation_type": vals.get("reservation_type"), } ) + if vals.get("name", _("New")) == _("New") or "name" not in vals: + vals["name"] = self.env["ir.sequence"]._next_sequence_property( + pms_property_id=folio.pms_property_id.id, + code="pms.reservation", + ) record = super(PmsReservation, self).create(vals) if record.preconfirm: record.confirm()