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()