odoo-addon-pms 16.0.0.24.0.1__py3-none-any.whl → 16.0.0.25.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,7 +11,7 @@ PMS (Property Management System)
11
11
  !! This file is generated by oca-gen-addon-readme !!
12
12
  !! changes will be overwritten. !!
13
13
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
14
- !! source digest: sha256:88334a9c85056b26b4f5f89e9ce6f476579984c113c68111c6d106f7c2ce2903
14
+ !! source digest: sha256:acdeee27b0dab0487ec1816ff0ecea93be6022a39cc558b8f40403305f2fe1f3
15
15
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
16
16
 
17
17
  .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
@@ -4,7 +4,7 @@
4
4
  {
5
5
  "name": "PMS (Property Management System)",
6
6
  "summary": "A property management system",
7
- "version": "16.0.0.24.0",
7
+ "version": "16.0.0.25.0",
8
8
  "development_status": "Beta",
9
9
  "category": "Generic Modules/Property Management System",
10
10
  "website": "https://github.com/OCA/pms",
@@ -2124,6 +2124,11 @@ msgstr ""
2124
2124
  msgid "Board Service Lines"
2125
2125
  msgstr ""
2126
2126
 
2127
+ #. module: pms
2128
+ #: model:ir.model.fields,field_description:pms.field_pms_reservation__board_service_room_manual
2129
+ msgid "Board Service Manually Set"
2130
+ msgstr ""
2131
+
2127
2132
  #. module: pms
2128
2133
  #: model:ir.model.fields,field_description:pms.field_pms_board_service__name
2129
2134
  #: model:ir.model.fields,help:pms.field_pms_board_service__name
@@ -12109,6 +12114,14 @@ msgstr ""
12109
12114
  msgid "Weight unit of measure label"
12110
12115
  msgstr ""
12111
12116
 
12117
+ #. module: pms
12118
+ #: model:ir.model.fields,help:pms.field_pms_reservation__board_service_room_manual
12119
+ msgid ""
12120
+ "When enabled, the reservation will NOT auto-assign a default board service "
12121
+ "even if the field is empty. This is set automatically when the user edits or"
12122
+ " clears the board service."
12123
+ msgstr ""
12124
+
12112
12125
  #. module: pms
12113
12126
  #: model:ir.model.fields,help:pms.field_pms_folio__force_nothing_to_invoice
12114
12127
  msgid ""
@@ -80,10 +80,25 @@ class PmsReservation(models.Model):
80
80
  store=True,
81
81
  comodel_name="pms.board.service.room.type",
82
82
  compute="_compute_board_service_room_id",
83
+ inverse="_inverse_board_service_room_id",
83
84
  index=True,
84
85
  tracking=True,
85
86
  check_pms_properties=True,
86
87
  )
88
+ # Manual override flag:
89
+ # - False: system is allowed to auto-fill the field from the default rule.
90
+ # - True: user has intervened (including clearing the value),
91
+ # so do NOT auto-fill again.
92
+ board_service_room_manual = fields.Boolean(
93
+ string="Board Service Manually Set",
94
+ default=False,
95
+ help=(
96
+ "When enabled, the reservation will NOT auto-assign a "
97
+ "default board service even if the field is empty. "
98
+ "This is set automatically when the user edits "
99
+ "or clears the board service."
100
+ ),
101
+ )
87
102
  room_type_id = fields.Many2one(
88
103
  string="Room Type",
89
104
  help="Room Type sold on the reservation,"
@@ -720,9 +735,47 @@ class PmsReservation(models.Model):
720
735
  for record in self:
721
736
  record.check_adults = True
722
737
 
723
- @api.depends("pricelist_id", "room_type_id")
738
+ @api.depends(
739
+ "pricelist_id",
740
+ "room_type_id",
741
+ "pms_property_id",
742
+ "board_service_room_manual",
743
+ )
724
744
  def _compute_board_service_room_id(self):
745
+ """
746
+ Compute default board service for the reservation.
747
+
748
+ Behavior:
749
+ 1) If 'board_service_room_manual' is True, DO NOT auto-fill again.
750
+ This prevents the default from coming back after the user
751
+ leared it.
752
+ 2) Otherwise, if we have the needed inputs (pricelist + room type),
753
+ fetch the configured default and assign it when appropriate.
754
+
755
+ Optional safety:
756
+ - If manual mode is True but the currently selected board service
757
+ is no longer compatible with the new room type, we clear it.
758
+ This avoids inconsistent data.
759
+ """
725
760
  for reservation in self:
761
+ # 1) Respect the user's manual decision
762
+ # (including "I want it empty").
763
+ if reservation.board_service_room_manual:
764
+ # Optional: if the current value becomes incompatible
765
+ # with the room type, clear it to avoid inconsistencies.
766
+ if (
767
+ reservation.board_service_room_id
768
+ and reservation.board_service_room_id.pms_room_type_id
769
+ and reservation.room_type_id
770
+ and (
771
+ reservation.board_service_room_id.pms_room_type_id
772
+ != reservation.room_type_id
773
+ )
774
+ ):
775
+ reservation.board_service_room_id = False
776
+ continue
777
+
778
+ # 2) Auto-fill only when we can compute the default.
726
779
  if reservation.pricelist_id and reservation.room_type_id:
727
780
  board_service_default = (
728
781
  reservation.room_type_id.get_default_board_service(
@@ -731,16 +784,38 @@ class PmsReservation(models.Model):
731
784
  pricelist_id=reservation.pricelist_id.id,
732
785
  )
733
786
  )
734
- if (
735
- not reservation.board_service_room_id
736
- or not reservation.board_service_room_id.pms_room_type_id
737
- == reservation.room_type_id
787
+
788
+ # Assign default if empty OR if current value
789
+ # doesn't match the room type.
790
+ if not reservation.board_service_room_id or (
791
+ reservation.board_service_room_id.pms_room_type_id
792
+ and (
793
+ reservation.board_service_room_id.pms_room_type_id
794
+ != reservation.room_type_id
795
+ )
738
796
  ):
739
797
  reservation.board_service_room_id = (
740
798
  board_service_default.id if board_service_default else False
741
799
  )
742
- elif not reservation.board_service_room_id:
743
- reservation.board_service_room_id = False
800
+
801
+ else:
802
+ # If we cannot compute (missing inputs), keep it empty.
803
+ if not reservation.board_service_room_id:
804
+ reservation.board_service_room_id = False
805
+
806
+ def _inverse_board_service_room_id(self):
807
+ """
808
+ Inverse method executed when the user manually
809
+ the computed field.
810
+
811
+ Key idea:
812
+ - Any manual edit (setting a value OR clearing it) is considered
813
+ user decision.
814
+ - Once the user has decided, we set a flag so future recomputes
815
+ won't restore the default automatically.
816
+ """
817
+ for reservation in self:
818
+ reservation.board_service_room_manual = True
744
819
 
745
820
  @api.depends("preferred_room_id")
746
821
  def _compute_room_type_id(self):
@@ -372,7 +372,7 @@ ul.auto-toc {
372
372
  !! This file is generated by oca-gen-addon-readme !!
373
373
  !! changes will be overwritten. !!
374
374
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
375
- !! source digest: sha256:88334a9c85056b26b4f5f89e9ce6f476579984c113c68111c6d106f7c2ce2903
375
+ !! source digest: sha256:acdeee27b0dab0487ec1816ff0ecea93be6022a39cc558b8f40403305f2fe1f3
376
376
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
377
377
  <p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/license-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/pms/tree/16.0/pms"><img alt="OCA/pms" src="https://img.shields.io/badge/github-OCA%2Fpms-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/pms-16-0/pms-16-0-pms"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/pms&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
378
378
  <p>This module is an all-in-one property management system (PMS) focused on medium-sized properties
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: odoo-addon-pms
3
- Version: 16.0.0.24.0.1
3
+ Version: 16.0.0.25.0
4
4
  Summary: A property management system
5
5
  Home-page: https://github.com/OCA/pms
6
6
  Author: Commit [Sun], Odoo Community Association (OCA)
@@ -36,7 +36,7 @@ PMS (Property Management System)
36
36
  !! This file is generated by oca-gen-addon-readme !!
37
37
  !! changes will be overwritten. !!
38
38
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
39
- !! source digest: sha256:88334a9c85056b26b4f5f89e9ce6f476579984c113c68111c6d106f7c2ce2903
39
+ !! source digest: sha256:acdeee27b0dab0487ec1816ff0ecea93be6022a39cc558b8f40403305f2fe1f3
40
40
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
41
41
 
42
42
  .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
@@ -1,6 +1,6 @@
1
- odoo/addons/pms/README.rst,sha256=NwZrq-MiqApYtX9kOakgwFQtZrYy0Qr6CK39O9_7XW4,3898
1
+ odoo/addons/pms/README.rst,sha256=PTosCde5wVynD80HzgCUl22VXC2CulddnVNYihwRPaY,3898
2
2
  odoo/addons/pms/__init__.py,sha256=uCUbRxtCubFHrz65XPTEmSu2XU6tpojVZ8MYot9bPMg,171
3
- odoo/addons/pms/__manifest__.py,sha256=-5VqIpFaY0UxL2folzy-uqggDtSNwpOuLzWthu_wu5s,4849
3
+ odoo/addons/pms/__manifest__.py,sha256=_OOKh9wNYO7ioRDmcWvoixZbJiq-mWLjZn5n2nfMhec,4849
4
4
  odoo/addons/pms/init_hook.py,sha256=2QMZH2wbC7SJxHUM1SQMqjdQqLITbt3w8vK5noEjIjw,518
5
5
  odoo/addons/pms/controllers/__init__.py,sha256=ac3kwg8QNSm7JicAACF5d8vPmqDydqO8gEiPh7SIeks,25
6
6
  odoo/addons/pms/controllers/pms_portal.py,sha256=Xkxi-vY16mSNQRhXokbLFaehb8Ni5qew_J7pDKEg-Gc,18528
@@ -24,7 +24,7 @@ odoo/addons/pms/demo/pms_reservation.xml,sha256=R35eu4ADsBuWjopoJv1_fg_b4g8NzNYd
24
24
  odoo/addons/pms/i18n/de.po,sha256=v65uGBMHmEbffzOXhlLpPDsPRox95I-nQS_UgHHQSXM,552548
25
25
  odoo/addons/pms/i18n/es.po,sha256=eAnTynaa7ZPMCUAqwZicNh5lGWo8hnLxG2v-53DsnQ4,589092
26
26
  odoo/addons/pms/i18n/it.po,sha256=QkZuIWrKW5sbbAPvNNlQwTSISFk8uaCsS8B6KoXC1k4,513513
27
- odoo/addons/pms/i18n/pms.pot,sha256=wg4Qwt3Dm0o-nduQTeUGW79de65rGuci_4z5LhOMaho,433329
27
+ odoo/addons/pms/i18n/pms.pot,sha256=0OOpOxXUW60lGwwn0ML53VbG3GorkmmLHJ-9Ku-d6Z0,433790
28
28
  odoo/addons/pms/migrations/16.0.0.1.0/pre-migration.py,sha256=9vggjeCFTw8IGpvRlB15ltRogJpI3lHazERyb_wxYOY,2236
29
29
  odoo/addons/pms/migrations/16.0.0.2.0/post-migration.py,sha256=AFl41LcMw2-drTltLY6L4pV2GStl5hcx0kKTYYwQ8oU,2049
30
30
  odoo/addons/pms/migrations/16.0.0.3.0/pre-migration.py,sha256=U-EIyeKdu_pkSgUbIgzwWGizAMZXHG1ZAWt8qef2wgc,505
@@ -57,7 +57,7 @@ odoo/addons/pms/models/pms_cancelation_rule.py,sha256=G6IoM_h4XYJUqx8SlgFB7lPmwy
57
57
  odoo/addons/pms/models/pms_checkin_partner.py,sha256=1lF0hkwwtjQMQdEi4PKfB6f_FHt1MQ9mqw7e1qh9C38,39521
58
58
  odoo/addons/pms/models/pms_folio.py,sha256=LIROpXxnBZmp6sI-n761Z5Et_E5txl4Bw-HrimpGHbM,108019
59
59
  odoo/addons/pms/models/pms_property.py,sha256=v42QM9A9xULsSd770pRRUrLgPBwg46U4mtlO6kyBQeI,45832
60
- odoo/addons/pms/models/pms_reservation.py,sha256=qNPGAUXL8BfRHQHXg_U4XGq2yjZJEz8_HxrcLYWqLCk,104476
60
+ odoo/addons/pms/models/pms_reservation.py,sha256=GmpCjdo8_Gl-SI-xCi0GTGrAIyRLUbs5M8XpC4pLnCU,107460
61
61
  odoo/addons/pms/models/pms_reservation_line.py,sha256=HIVtAHiDT4GU9c1A9r2xuuCViqDZen1qJAIQBSR0ukE,27669
62
62
  odoo/addons/pms/models/pms_room.py,sha256=QsTK1yaG9VfLZHDKPXzJ5HpljqD0brBnNi17zt_v7pc,12081
63
63
  odoo/addons/pms/models/pms_room_closure_reason.py,sha256=juZVeR1DgrpNfJEcRsDh5KSvoqM58bFGuyumeTqJWRw,903
@@ -94,7 +94,7 @@ odoo/addons/pms/security/ir.model.access.csv,sha256=yLqMoKZR8eAuUWOm9Fys0JCeCZlo
94
94
  odoo/addons/pms/security/pms_security.xml,sha256=ojrBeQtkn1D7EPnaVLRf4hT60JB4K2ma00hr9vv-LTo,13646
95
95
  odoo/addons/pms/static/description/avatar.png,sha256=CWIs64cZDPrrZVmRCyV_cD_h03lWUoQikvCllgrsELY,4370
96
96
  odoo/addons/pms/static/description/icon.png,sha256=_y1zF9kLND2nIpLMurvkkyiMfUq53JN26oN7_h-PfH0,24626
97
- odoo/addons/pms/static/description/index.html,sha256=gW7Rwf9PCFzPGFLMmbqx1wqFQis41EyHsdbfNe-U1zI,14070
97
+ odoo/addons/pms/static/description/index.html,sha256=wTolKdOCiSptRUik9k1FIqSHI7lS6Cxe31bVpSWfMeI,14070
98
98
  odoo/addons/pms/static/img/icon-door.svg,sha256=Vt62k1RKXIt7zha9_uZJKPrlgdEUto9d2q_IEbxRigI,1514
99
99
  odoo/addons/pms/static/img/icon-mail.svg,sha256=H0NQ5fACCKoJ7KLfPQvaHMwhD2qNk6-T7FEkoW9r0Vo,950
100
100
  odoo/addons/pms/static/img/icon-phone.svg,sha256=T03z7if6caEBtf_F_3HnRi6AgNeZxbgCGWeGzMMjZlw,1340
@@ -196,7 +196,7 @@ odoo/addons/pms/wizards/wizard_several_partners.py,sha256=nOYHInUyT7bV4opyk03_i-
196
196
  odoo/addons/pms/wizards/wizard_several_partners.xml,sha256=tuSIYJiqN_EprlwI7cBrteMPblHoybcHBDrHO1di0DY,1382
197
197
  odoo/addons/pms/wizards/wizard_split_join_swap_reservation.py,sha256=D0AFrimn4lViWSnQ0sgM1msVniUudbgqvS0hRIBkXfQ,13751
198
198
  odoo/addons/pms/wizards/wizard_split_join_swap_reservation.xml,sha256=MDyXIdQfumI7WnXqO5E4fCqM4BW32CIwS97tF66gBy8,5940
199
- odoo_addon_pms-16.0.0.24.0.1.dist-info/METADATA,sha256=WxoL60nmggBfNfp8eaADemx86XCFQmblVhlGwW_zwpE,5025
200
- odoo_addon_pms-16.0.0.24.0.1.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
201
- odoo_addon_pms-16.0.0.24.0.1.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
202
- odoo_addon_pms-16.0.0.24.0.1.dist-info/RECORD,,
199
+ odoo_addon_pms-16.0.0.25.0.dist-info/METADATA,sha256=2oZfkV2EwcMd5AUDVl89BU0Gxnf5sXXupKeZUYxRA3I,5023
200
+ odoo_addon_pms-16.0.0.25.0.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
201
+ odoo_addon_pms-16.0.0.25.0.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
202
+ odoo_addon_pms-16.0.0.25.0.dist-info/RECORD,,