odoo-addon-pms 16.0.0.25.0__py3-none-any.whl → 16.0.0.27.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:acdeee27b0dab0487ec1816ff0ecea93be6022a39cc558b8f40403305f2fe1f3
14
+ !! source digest: sha256:4d03ad144a578a9ffdb92c5171f47eebd008e0930410951abcb6f1c51b634dbb
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.25.0",
7
+ "version": "16.0.0.27.0",
8
8
  "development_status": "Beta",
9
9
  "category": "Generic Modules/Property Management System",
10
10
  "website": "https://github.com/OCA/pms",
@@ -3170,6 +3170,11 @@ msgstr "Verpflegungszeile, in der dieser Dienst enthalten ist"
3170
3170
  msgid "Board Service Lines"
3171
3171
  msgstr "Verpflegungszeilen"
3172
3172
 
3173
+ #. module: pms
3174
+ #: model:ir.model.fields,field_description:pms.field_pms_reservation__board_service_room_manual
3175
+ msgid "Board Service Manually Set"
3176
+ msgstr ""
3177
+
3173
3178
  #. module: pms
3174
3179
  #: model:ir.model.fields,field_description:pms.field_pms_board_service__name
3175
3180
  #: model:ir.model.fields,help:pms.field_pms_board_service__name
@@ -13655,6 +13660,14 @@ msgstr "Gewicht"
13655
13660
  msgid "Weight unit of measure label"
13656
13661
  msgstr "Etikett für die Maßeinheit Gewicht"
13657
13662
 
13663
+ #. module: pms
13664
+ #: model:ir.model.fields,help:pms.field_pms_reservation__board_service_room_manual
13665
+ msgid ""
13666
+ "When enabled, the reservation will NOT auto-assign a default board service "
13667
+ "even if the field is empty. This is set automatically when the user edits or "
13668
+ "clears the board service."
13669
+ msgstr ""
13670
+
13658
13671
  #. module: pms
13659
13672
  #: model:ir.model.fields,help:pms.field_pms_folio__force_nothing_to_invoice
13660
13673
  msgid ""
@@ -2462,6 +2462,11 @@ msgstr ""
2462
2462
  msgid "Board Service Lines"
2463
2463
  msgstr "Servicios del Régimen"
2464
2464
 
2465
+ #. module: pms
2466
+ #: model:ir.model.fields,field_description:pms.field_pms_reservation__board_service_room_manual
2467
+ msgid "Board Service Manually Set"
2468
+ msgstr ""
2469
+
2465
2470
  #. module: pms
2466
2471
  #: model:ir.model.fields,field_description:pms.field_pms_board_service__name
2467
2472
  #: model:ir.model.fields,help:pms.field_pms_board_service__name
@@ -12761,6 +12766,14 @@ msgstr "Peso"
12761
12766
  msgid "Weight unit of measure label"
12762
12767
  msgstr "Etiqueta de unidad de medida de peso"
12763
12768
 
12769
+ #. module: pms
12770
+ #: model:ir.model.fields,help:pms.field_pms_reservation__board_service_room_manual
12771
+ msgid ""
12772
+ "When enabled, the reservation will NOT auto-assign a default board service "
12773
+ "even if the field is empty. This is set automatically when the user edits or "
12774
+ "clears the board service."
12775
+ msgstr ""
12776
+
12764
12777
  #. module: pms
12765
12778
  #: model:ir.model.fields,help:pms.field_pms_folio__force_nothing_to_invoice
12766
12779
  msgid ""
@@ -3149,6 +3149,11 @@ msgstr "Riga servizio pensione con servizio incluso"
3149
3149
  msgid "Board Service Lines"
3150
3150
  msgstr "Righe servizio pensione"
3151
3151
 
3152
+ #. module: pms
3153
+ #: model:ir.model.fields,field_description:pms.field_pms_reservation__board_service_room_manual
3154
+ msgid "Board Service Manually Set"
3155
+ msgstr ""
3156
+
3152
3157
  #. module: pms
3153
3158
  #: model:ir.model.fields,field_description:pms.field_pms_board_service__name
3154
3159
  #: model:ir.model.fields,help:pms.field_pms_board_service__name
@@ -13351,6 +13356,14 @@ msgstr ""
13351
13356
  msgid "Weight unit of measure label"
13352
13357
  msgstr ""
13353
13358
 
13359
+ #. module: pms
13360
+ #: model:ir.model.fields,help:pms.field_pms_reservation__board_service_room_manual
13361
+ msgid ""
13362
+ "When enabled, the reservation will NOT auto-assign a default board service "
13363
+ "even if the field is empty. This is set automatically when the user edits or "
13364
+ "clears the board service."
13365
+ msgstr ""
13366
+
13354
13367
  #. module: pms
13355
13368
  #: model:ir.model.fields,help:pms.field_pms_folio__force_nothing_to_invoice
13356
13369
  msgid ""
@@ -2052,8 +2052,6 @@ msgstr ""
2052
2052
  #. module: pms
2053
2053
  #: model:ir.model.fields,field_description:pms.field_pms_checkin_partner__birthdate_date
2054
2054
  #: model:ir.model.fields,field_description:pms.field_pms_property__birthdate_date
2055
- #: model:ir.model.fields,field_description:pms.field_res_partner__birthdate_date
2056
- #: model:ir.model.fields,field_description:pms.field_res_users__birthdate_date
2057
2055
  #: model_terms:ir.ui.view,arch_db:pms.traveller_report
2058
2056
  msgid "Birthdate"
2059
2057
  msgstr ""
@@ -4090,8 +4088,6 @@ msgstr ""
4090
4088
  #. module: pms
4091
4089
  #: model:ir.model.fields,field_description:pms.field_pms_property__email
4092
4090
  #: model:ir.model.fields,field_description:pms.field_pms_room__email
4093
- #: model:ir.model.fields,field_description:pms.field_res_partner__email
4094
- #: model:ir.model.fields,field_description:pms.field_res_users__email
4095
4091
  msgid "Email"
4096
4092
  msgstr ""
4097
4093
 
@@ -4390,8 +4386,6 @@ msgstr ""
4390
4386
 
4391
4387
  #. module: pms
4392
4388
  #: model:ir.model.fields,field_description:pms.field_pms_property__firstname
4393
- #: model:ir.model.fields,field_description:pms.field_res_partner__firstname
4394
- #: model:ir.model.fields,field_description:pms.field_res_users__firstname
4395
4389
  msgid "First name"
4396
4390
  msgstr ""
4397
4391
 
@@ -4763,7 +4757,6 @@ msgstr ""
4763
4757
  #. module: pms
4764
4758
  #: model:ir.model.fields,field_description:pms.field_pms_checkin_partner__gender
4765
4759
  #: model:ir.model.fields,field_description:pms.field_pms_property__gender
4766
- #: model:ir.model.fields,field_description:pms.field_res_partner__gender
4767
4760
  #: model_terms:ir.ui.view,arch_db:pms.traveller_report
4768
4761
  msgid "Gender"
4769
4762
  msgstr ""
@@ -6177,8 +6170,6 @@ msgstr ""
6177
6170
 
6178
6171
  #. module: pms
6179
6172
  #: model:ir.model.fields,field_description:pms.field_pms_property__lastname
6180
- #: model:ir.model.fields,field_description:pms.field_res_partner__lastname
6181
- #: model:ir.model.fields,field_description:pms.field_res_users__lastname
6182
6173
  msgid "Last name"
6183
6174
  msgstr ""
6184
6175
 
@@ -6594,8 +6585,6 @@ msgstr ""
6594
6585
  #: model:ir.model.fields,field_description:pms.field_pms_property__mobile
6595
6586
  #: model:ir.model.fields,field_description:pms.field_pms_reservation__mobile
6596
6587
  #: model:ir.model.fields,field_description:pms.field_pms_room__mobile
6597
- #: model:ir.model.fields,field_description:pms.field_res_partner__mobile
6598
- #: model:ir.model.fields,field_description:pms.field_res_users__mobile
6599
6588
  msgid "Mobile"
6600
6589
  msgstr ""
6601
6590
 
@@ -6722,8 +6711,6 @@ msgstr ""
6722
6711
  #. module: pms
6723
6712
  #: model:ir.model.fields,field_description:pms.field_pms_checkin_partner__nationality_id
6724
6713
  #: model:ir.model.fields,field_description:pms.field_pms_property__nationality_id
6725
- #: model:ir.model.fields,field_description:pms.field_res_partner__nationality_id
6726
- #: model:ir.model.fields,field_description:pms.field_res_users__nationality_id
6727
6714
  msgid "Nationality"
6728
6715
  msgstr ""
6729
6716
 
@@ -7831,8 +7818,6 @@ msgstr ""
7831
7818
  #: model:ir.model.fields,field_description:pms.field_pms_checkin_partner__phone
7832
7819
  #: model:ir.model.fields,field_description:pms.field_pms_property__phone
7833
7820
  #: model:ir.model.fields,field_description:pms.field_pms_room__phone
7834
- #: model:ir.model.fields,field_description:pms.field_res_partner__phone
7835
- #: model:ir.model.fields,field_description:pms.field_res_users__phone
7836
7821
  msgid "Phone"
7837
7822
  msgstr ""
7838
7823
 
@@ -9645,8 +9630,6 @@ msgstr ""
9645
9630
 
9646
9631
  #. module: pms
9647
9632
  #: model:ir.model.fields,field_description:pms.field_pms_property__lastname2
9648
- #: model:ir.model.fields,field_description:pms.field_res_partner__lastname2
9649
- #: model:ir.model.fields,field_description:pms.field_res_users__lastname2
9650
9633
  msgid "Second last name"
9651
9634
  msgstr ""
9652
9635
 
@@ -65,18 +65,21 @@ class PmsCheckinPartner(models.Model):
65
65
  readonly=False,
66
66
  store=True,
67
67
  compute="_compute_email",
68
+ inverse=lambda r: r._inverse_partner_fields("email", "email"),
68
69
  )
69
70
  mobile = fields.Char(
70
71
  help="Checkin Partner Mobile",
71
72
  readonly=False,
72
73
  store=True,
73
74
  compute="_compute_mobile",
75
+ inverse=lambda r: r._inverse_partner_fields("mobile", "mobile"),
74
76
  )
75
77
  phone = fields.Char(
76
78
  help="Checkin Partner Phone",
77
79
  readonly=False,
78
80
  store=True,
79
81
  compute="_compute_phone",
82
+ inverse=lambda r: r._inverse_partner_fields("phone", "phone"),
80
83
  )
81
84
  image_128 = fields.Image(
82
85
  string="Image",
@@ -130,6 +133,7 @@ class PmsCheckinPartner(models.Model):
130
133
  store=True,
131
134
  compute="_compute_gender",
132
135
  selection=[("male", "Male"), ("female", "Female"), ("other", "Other")],
136
+ inverse=lambda r: r._inverse_partner_fields("gender", "gender"),
133
137
  )
134
138
  nationality_id = fields.Many2one(
135
139
  string="Nationality",
@@ -139,6 +143,7 @@ class PmsCheckinPartner(models.Model):
139
143
  index=True,
140
144
  compute="_compute_nationality_id",
141
145
  comodel_name="res.country",
146
+ inverse=lambda r: r._inverse_partner_fields("nationality_id", "nationality_id"),
142
147
  )
143
148
  residence_street = fields.Char(
144
149
  string="Street",
@@ -194,6 +199,7 @@ class PmsCheckinPartner(models.Model):
194
199
  readonly=False,
195
200
  store=True,
196
201
  compute="_compute_firstname",
202
+ inverse=lambda r: r._inverse_partner_fields("firstname", "firstname"),
197
203
  )
198
204
  lastname = fields.Char(
199
205
  string="Last Name",
@@ -201,6 +207,7 @@ class PmsCheckinPartner(models.Model):
201
207
  readonly=False,
202
208
  store=True,
203
209
  compute="_compute_lastname",
210
+ inverse=lambda r: r._inverse_partner_fields("lastname", "lastname"),
204
211
  )
205
212
  lastname2 = fields.Char(
206
213
  string="Second Last Name",
@@ -208,6 +215,7 @@ class PmsCheckinPartner(models.Model):
208
215
  readonly=False,
209
216
  store=True,
210
217
  compute="_compute_lastname2",
218
+ inverse=lambda r: r._inverse_partner_fields("lastname2", "lastname2"),
211
219
  )
212
220
  birthdate_date = fields.Date(
213
221
  string="Birthdate",
@@ -215,6 +223,7 @@ class PmsCheckinPartner(models.Model):
215
223
  readonly=False,
216
224
  store=True,
217
225
  compute="_compute_birth_date",
226
+ inverse=lambda r: r._inverse_partner_fields("birthdate_date", "birthdate_date"),
218
227
  )
219
228
  document_number = fields.Char(
220
229
  help="Host document number",
@@ -285,6 +294,11 @@ class PmsCheckinPartner(models.Model):
285
294
  compute="_compute_sign_on",
286
295
  )
287
296
 
297
+ def _inverse_partner_fields(self, checkin_field_name, partner_field_name):
298
+ for record in self:
299
+ if record.partner_id:
300
+ record.partner_id[partner_field_name] = record[checkin_field_name]
301
+
288
302
  @api.depends("partner_id")
289
303
  def _compute_document_number(self):
290
304
  for record in self:
@@ -946,7 +946,7 @@ class PmsReservation(models.Model):
946
946
  reservation.reservation_line_ids = False
947
947
  reservation.check_in_out_dates()
948
948
 
949
- @api.depends("board_service_room_id")
949
+ @api.depends("board_service_room_id", "adults", "children")
950
950
  def _compute_board_service_ids(self):
951
951
  if self.env.context.get("skip_compute_board_service_ids", False):
952
952
  return
@@ -2255,10 +2255,10 @@ class PmsReservation(models.Model):
2255
2255
  )
2256
2256
 
2257
2257
  def _check_services(self, vals):
2258
- # If we create a reservation with board service and other service at the
2259
- # same time, compute_service_ids dont run (compute with readonly to False), and
2258
+ # If we create a reservation with board service, compute_service_ids dont run
2259
+ # (compute with readonly to False), and
2260
2260
  # we must force it to compute the services linked with the board service:
2261
- if "board_service_room_id" in vals and "service_ids" in vals:
2261
+ if "board_service_room_id" in vals:
2262
2262
  self._compute_board_service_ids()
2263
2263
 
2264
2264
  def get_folios_to_update_channel(self, vals):
@@ -2570,7 +2570,11 @@ class PmsReservation(models.Model):
2570
2570
  def _compute_tourist_tax_lines(self):
2571
2571
  """Return ORM commands to sync tourist tax services on this reservation."""
2572
2572
  self.ensure_one()
2573
- if self.reservation_type != "normal" or not self.overnight_room:
2573
+ if (
2574
+ self.reservation_type != "normal"
2575
+ or not self.overnight_room
2576
+ or self.state in ("draft", "cancel", "done")
2577
+ ):
2574
2578
  return False
2575
2579
  tax_products = self._get_tourist_tax_products(
2576
2580
  pms_property_id=self.pms_property_id.id
@@ -2642,12 +2646,20 @@ class PmsReservation(models.Model):
2642
2646
  )
2643
2647
 
2644
2648
  def _get_applicable_guest_count(self, product):
2645
- return len(
2649
+ count = len(
2646
2650
  self._get_guests_by_age(
2647
2651
  product.tourist_tax_min_age,
2648
2652
  product.tourist_tax_max_age,
2649
2653
  )
2650
2654
  )
2655
+ # If not hosts found, consider all guests (if not min_age or max_age is set)
2656
+ # or only adults min_age
2657
+ if count == 0:
2658
+ if not product.tourist_tax_min_age:
2659
+ count = self.adults + self.children
2660
+ else:
2661
+ count = self.adults
2662
+ return count
2651
2663
 
2652
2664
  def _get_product_price(self, product, quantity, night_date):
2653
2665
  product = product.with_context(
@@ -226,7 +226,7 @@ class PmsRoom(models.Model):
226
226
  "type": "other",
227
227
  "is_company": False,
228
228
  "active": True,
229
- "parent_id": record.pms_property_id.id,
229
+ "parent_id": record.pms_property_id.partner_id.id,
230
230
  }
231
231
  )
232
232
  )
@@ -87,53 +87,7 @@ class ResPartner(models.Model):
87
87
  comodel_name="pms.folio",
88
88
  inverse_name="partner_id",
89
89
  )
90
- gender = fields.Selection(
91
- readonly=False,
92
- store=True,
93
- compute="_compute_gender",
94
- )
95
- birthdate_date = fields.Date(
96
- readonly=False,
97
- store=True,
98
- compute="_compute_birthdate_date",
99
- )
100
- nationality_id = fields.Many2one(
101
- readonly=False,
102
- store=True,
103
- index=True,
104
- compute="_compute_nationality_id",
105
- )
106
- email = fields.Char(
107
- readonly=False,
108
- store=True,
109
- compute="_compute_email",
110
- )
111
- mobile = fields.Char(
112
- readonly=False,
113
- store=True,
114
- compute="_compute_mobile",
115
- )
116
- phone = fields.Char(
117
- readonly=False,
118
- store=True,
119
- compute="_compute_phone",
120
- )
121
- firstname = fields.Char(
122
- readonly=False,
123
- store=True,
124
- compute="_compute_firstname",
125
- )
126
90
 
127
- lastname = fields.Char(
128
- readonly=False,
129
- store=True,
130
- compute="_compute_lastname",
131
- )
132
- lastname2 = fields.Char(
133
- readonly=False,
134
- store=True,
135
- compute="_compute_lastname2",
136
- )
137
91
  country_id = fields.Many2one(
138
92
  readonly=False,
139
93
  store=True,
@@ -245,67 +199,6 @@ class ResPartner(models.Model):
245
199
  comodel_name="res.country.state",
246
200
  )
247
201
 
248
- # pylint: disable=W8110
249
- @api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.gender")
250
- def _compute_gender(self):
251
- if hasattr(super(), "_compute_gender"):
252
- super()._compute_gender()
253
- for record in self:
254
- if record.pms_checkin_partner_ids:
255
- last_update_gender = record.pms_checkin_partner_ids.filtered(
256
- lambda x, r=record: x.write_date
257
- == max(r.pms_checkin_partner_ids.mapped("write_date"))
258
- )
259
- if last_update_gender and last_update_gender[0].gender:
260
- record.gender = last_update_gender[0].gender
261
-
262
- # pylint: disable=W8110
263
- @api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.birthdate_date")
264
- def _compute_birthdate_date(self):
265
- if hasattr(super(), "_compute_birthdate_date"):
266
- super()._compute_birthdate_date()
267
- for record in self:
268
- if record.pms_checkin_partner_ids:
269
- last_update_birthdate = record.pms_checkin_partner_ids.filtered(
270
- lambda x, r=record: x.write_date
271
- == max(r.pms_checkin_partner_ids.mapped("write_date"))
272
- )
273
- if last_update_birthdate and last_update_birthdate[0].birthdate_date:
274
- record.birthdate_date = last_update_birthdate[0].birthdate_date
275
-
276
- # pylint: disable=W8110
277
- @api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.nationality_id")
278
- def _compute_nationality_id(self):
279
- if hasattr(super(), "_compute_nationality_id"):
280
- super()._compute_nationality_id()
281
- for record in self:
282
- if record.pms_checkin_partner_ids:
283
- last_update_nationality = record.pms_checkin_partner_ids.filtered(
284
- lambda x, r=record: x.write_date
285
- == max(r.pms_checkin_partner_ids.mapped("write_date"))
286
- )
287
- if (
288
- last_update_nationality
289
- and last_update_nationality[0].nationality_id
290
- ):
291
- record.nationality_id = last_update_nationality[0].nationality_id
292
- if not record.nationality_id and record.country_id:
293
- record.nationality_id = record.country_id
294
-
295
- # pylint: disable=W8110
296
- @api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.phone")
297
- def _compute_phone(self):
298
- if hasattr(super(), "_compute_phone"):
299
- super()._compute_phone()
300
- for record in self:
301
- if record.pms_checkin_partner_ids:
302
- last_update_phone = record.pms_checkin_partner_ids.filtered(
303
- lambda x, r=record: x.write_date
304
- == max(r.pms_checkin_partner_ids.mapped("write_date"))
305
- )
306
- if last_update_phone and last_update_phone[0].phone:
307
- record.phone = last_update_phone[0].phone
308
-
309
202
  # pylint: disable=W8110
310
203
  @api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.residence_street")
311
204
  def _compute_residence_street(self):
@@ -398,90 +291,6 @@ class ResPartner(models.Model):
398
291
  if last_update_state and last_update_state[0].residence_state_id:
399
292
  record.residence_state_id = last_update_state[0].residence_state_id
400
293
 
401
- # pylint: disable=W8110
402
- @api.depends(
403
- "pms_checkin_partner_ids",
404
- "pms_checkin_partner_ids.email",
405
- "pms_reservation_ids",
406
- "pms_reservation_ids.email",
407
- "pms_folio_ids",
408
- "pms_folio_ids.email",
409
- )
410
- def _compute_email(self):
411
- if hasattr(super(), "_compute_email"):
412
- super()._compute_email()
413
- for record in self:
414
- if record.pms_checkin_partner_ids:
415
- last_update_checkin_mail = record.pms_checkin_partner_ids.filtered(
416
- lambda x, r=record: x.write_date
417
- == max(r.pms_checkin_partner_ids.mapped("write_date"))
418
- )
419
- if last_update_checkin_mail and last_update_checkin_mail[0].email:
420
- record.email = last_update_checkin_mail[0].email
421
-
422
- # pylint: disable=W8110
423
- @api.depends(
424
- "pms_checkin_partner_ids",
425
- "pms_checkin_partner_ids.mobile",
426
- "pms_reservation_ids",
427
- "pms_reservation_ids.mobile",
428
- "pms_folio_ids",
429
- "pms_folio_ids.mobile",
430
- )
431
- def _compute_mobile(self):
432
- if hasattr(super(), "_compute_mobile"):
433
- super()._compute_mobile()
434
- for record in self:
435
- if record.pms_checkin_partner_ids:
436
- last_update_mobile = record.pms_checkin_partner_ids.filtered(
437
- lambda x, r=record: x.write_date
438
- == max(r.pms_checkin_partner_ids.mapped("write_date"))
439
- )
440
- if last_update_mobile and last_update_mobile[0].mobile:
441
- record.mobile = last_update_mobile[0].mobile
442
-
443
- # pylint: disable=W8110
444
- @api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.firstname")
445
- def _compute_firstname(self):
446
- if hasattr(super(), "_compute_firstname"):
447
- super()._compute_firstname()
448
- for record in self:
449
- if record.pms_checkin_partner_ids:
450
- last_update_firstname = record.pms_checkin_partner_ids.filtered(
451
- lambda x, r=record: x.write_date
452
- == max(r.pms_checkin_partner_ids.mapped("write_date"))
453
- )
454
- if last_update_firstname and last_update_firstname[0].firstname:
455
- record.firstname = last_update_firstname[0].firstname
456
-
457
- # pylint: disable=W8110
458
- @api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.lastname")
459
- def _compute_lastname(self):
460
- if hasattr(super(), "_compute_lastname"):
461
- super()._compute_lastname()
462
- for record in self:
463
- if record.pms_checkin_partner_ids:
464
- last_update_lastname = record.pms_checkin_partner_ids.filtered(
465
- lambda x, r=record: x.write_date
466
- == max(r.pms_checkin_partner_ids.mapped("write_date"))
467
- )
468
- if last_update_lastname and last_update_lastname[0].lastname:
469
- record.lastname = last_update_lastname[0].lastname
470
-
471
- # pylint: disable=W8110
472
- @api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.lastname2")
473
- def _compute_lastname2(self):
474
- if hasattr(super(), "_compute_lastname2"):
475
- super()._compute_lastname2()
476
- for record in self:
477
- if record.pms_checkin_partner_ids:
478
- last_update_lastname2 = record.pms_checkin_partner_ids.filtered(
479
- lambda x, r=record: x.write_date
480
- == max(r.pms_checkin_partner_ids.mapped("write_date"))
481
- )
482
- if last_update_lastname2 and last_update_lastname2[0].lastname2:
483
- record.lastname2 = last_update_lastname2[0].lastname2
484
-
485
294
  # pylint: disable=W8110
486
295
  @api.depends("id_numbers")
487
296
  def _compute_country_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:acdeee27b0dab0487ec1816ff0ecea93be6022a39cc558b8f40403305f2fe1f3
375
+ !! source digest: sha256:4d03ad144a578a9ffdb92c5171f47eebd008e0930410951abcb6f1c51b634dbb
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
@@ -1556,10 +1556,12 @@ class TestPmsCheckinPartner(TestPms):
1556
1556
  "The value of " + key + " is not correctly established",
1557
1557
  )
1558
1558
 
1559
- def test_compute_partner_fields(self):
1559
+ def test_compute_inverse_partner_fields(self):
1560
1560
  """
1561
1561
  Check that the computes of the checkin_partner fields related to your partner
1562
1562
  correctly add these fields to the checkin_partner.
1563
+ Also check if a change in checkin_partner fields correctly
1564
+ executes the inverse way.
1563
1565
  ---------------------------------------
1564
1566
  A reservation is created with an adult (checkin_partner) ql which is
1565
1567
  saved in the checkin_partner_id variable, a partner is also created with all
@@ -1624,3 +1626,22 @@ class TestPmsCheckinPartner(TestPms):
1624
1626
  self.partner_id[key],
1625
1627
  "The value of " + key + " is not correctly established",
1626
1628
  )
1629
+
1630
+ checkin_partner_vals = {
1631
+ "firstname": "Carlos",
1632
+ "lastname": "balenzuela",
1633
+ "lastname2": "Sota",
1634
+ "email": "paz2@example.com",
1635
+ "birthdate_date": datetime.date(1980, 10, 3),
1636
+ "gender": "male",
1637
+ "mobile": "626555444",
1638
+ "phone": "124456789",
1639
+ }
1640
+ checkin_partner.write(checkin_partner_vals)
1641
+ for key in checkin_partner_vals:
1642
+ with self.subTest(k=key):
1643
+ self.assertEqual(
1644
+ self.reservation.checkin_partner_ids[0][key],
1645
+ self.partner_id[key],
1646
+ "The value of " + key + " is not correctly established",
1647
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: odoo-addon-pms
3
- Version: 16.0.0.25.0
3
+ Version: 16.0.0.27.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:acdeee27b0dab0487ec1816ff0ecea93be6022a39cc558b8f40403305f2fe1f3
39
+ !! source digest: sha256:4d03ad144a578a9ffdb92c5171f47eebd008e0930410951abcb6f1c51b634dbb
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=PTosCde5wVynD80HzgCUl22VXC2CulddnVNYihwRPaY,3898
1
+ odoo/addons/pms/README.rst,sha256=tzd8y_18YJ8JarJU6QpFgDDsHwbKOOipFfajDEgxreQ,3898
2
2
  odoo/addons/pms/__init__.py,sha256=uCUbRxtCubFHrz65XPTEmSu2XU6tpojVZ8MYot9bPMg,171
3
- odoo/addons/pms/__manifest__.py,sha256=_OOKh9wNYO7ioRDmcWvoixZbJiq-mWLjZn5n2nfMhec,4849
3
+ odoo/addons/pms/__manifest__.py,sha256=R7UhbxWVZqUgEre-oc4x7xyZ6dZqzmFdnnqysMIaOeQ,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
@@ -21,10 +21,10 @@ odoo/addons/pms/demo/pms_folio.xml,sha256=IBTC503x2E80Z0DqhoMG6HyFy0JtbeoTplA1Hy
21
21
  odoo/addons/pms/demo/pms_master_data.xml,sha256=rDgCymoZVCRJkZq40WdGs5NWg6Hd5coiJDidppDHpKA,14532
22
22
  odoo/addons/pms/demo/pms_master_data_no_update.xml,sha256=nwjahlgP5HhiWQKmqHITO_ZdMkqL-7k2FJtTtSzbidc,234160
23
23
  odoo/addons/pms/demo/pms_reservation.xml,sha256=R35eu4ADsBuWjopoJv1_fg_b4g8NzNYdU9t7vvCQhBA,80237
24
- odoo/addons/pms/i18n/de.po,sha256=v65uGBMHmEbffzOXhlLpPDsPRox95I-nQS_UgHHQSXM,552548
25
- odoo/addons/pms/i18n/es.po,sha256=eAnTynaa7ZPMCUAqwZicNh5lGWo8hnLxG2v-53DsnQ4,589092
26
- odoo/addons/pms/i18n/it.po,sha256=QkZuIWrKW5sbbAPvNNlQwTSISFk8uaCsS8B6KoXC1k4,513513
27
- odoo/addons/pms/i18n/pms.pot,sha256=0OOpOxXUW60lGwwn0ML53VbG3GorkmmLHJ-9Ku-d6Z0,433790
24
+ odoo/addons/pms/i18n/de.po,sha256=QR2_LvIGiLn9zPK_1eJJ1C1RAA9cQGvYI5Sm0P05wGM,553009
25
+ odoo/addons/pms/i18n/es.po,sha256=z_uRX8EcaObbqgJDMxLox8fLic3Y7pMrAYYa5hB7XOc,589553
26
+ odoo/addons/pms/i18n/it.po,sha256=RZvf7WcugyzZEWOnfVTifny83NgYlWwEpsQE74clfEY,513974
27
+ odoo/addons/pms/i18n/pms.pot,sha256=QPLfwrBdbNkuW4zzsRyD5ANzxssUXsZXcW6U0RQlzWQ,432521
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
@@ -54,12 +54,12 @@ odoo/addons/pms/models/pms_board_service_line.py,sha256=_E4SckqTskSuVlxAtYNnNCE8
54
54
  odoo/addons/pms/models/pms_board_service_room_type.py,sha256=PbDrVf50bwN49yKQDi8Sf92kxg0X3IHRLgfUzylSvt4,5783
55
55
  odoo/addons/pms/models/pms_board_service_room_type_line.py,sha256=Xt78_qJPn4wIxiQaloPBKpIAIncBY0bjIQ6FdsxMQqk,2028
56
56
  odoo/addons/pms/models/pms_cancelation_rule.py,sha256=G6IoM_h4XYJUqx8SlgFB7lPmwy7LBefJ4Gzreg0QUCA,3038
57
- odoo/addons/pms/models/pms_checkin_partner.py,sha256=1lF0hkwwtjQMQdEi4PKfB6f_FHt1MQ9mqw7e1qh9C38,39521
57
+ odoo/addons/pms/models/pms_checkin_partner.py,sha256=JIqa4oWBHzKpeu1QR4yoqL2txjApmI9Tpe8cAbOccwI,40447
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=GmpCjdo8_Gl-SI-xCi0GTGrAIyRLUbs5M8XpC4pLnCU,107460
60
+ odoo/addons/pms/models/pms_reservation.py,sha256=5olhEBq1miJTYVjxoJUYAMMP5Gf1mOpPDwA8SnL7eNY,107831
61
61
  odoo/addons/pms/models/pms_reservation_line.py,sha256=HIVtAHiDT4GU9c1A9r2xuuCViqDZen1qJAIQBSR0ukE,27669
62
- odoo/addons/pms/models/pms_room.py,sha256=QsTK1yaG9VfLZHDKPXzJ5HpljqD0brBnNi17zt_v7pc,12081
62
+ odoo/addons/pms/models/pms_room.py,sha256=CzeqXDrsDnYaGqRaw_LtWUIxJCdv4qYDpyBzaUpwbv4,12092
63
63
  odoo/addons/pms/models/pms_room_closure_reason.py,sha256=juZVeR1DgrpNfJEcRsDh5KSvoqM58bFGuyumeTqJWRw,903
64
64
  odoo/addons/pms/models/pms_room_type.py,sha256=8A1t8x0eVV1kch6oSSwL_0VsVxaesnoBXN2OFOmXQMc,8796
65
65
  odoo/addons/pms/models/pms_room_type_class.py,sha256=1xpkkTEjDVKIC-Uas70J-THszmfjmLsGEhByL40yvSU,4746
@@ -74,7 +74,7 @@ odoo/addons/pms/models/product_product.py,sha256=kN8LSMtu-nHV-EN5SSd63mBtFm0_qqF
74
74
  odoo/addons/pms/models/product_template.py,sha256=IJ7zw2-GfepoOuSXV9yHAGNXwfmVlEOc0wfwuewwIYs,5255
75
75
  odoo/addons/pms/models/res_company.py,sha256=vkwuusDYau9a5Srh0w6So2SxxSSzeyXoGkxLSCfwG9A,1885
76
76
  odoo/addons/pms/models/res_country.py,sha256=xo0BuKE1ZYTd-CNLi1Owh-qGF4krai7hmPUy2sBjIdM,196
77
- odoo/addons/pms/models/res_partner.py,sha256=ruGbPxfjRxRpWa5J5bmqng8hp_GepwOJk-qVeJyOv9A,31799
77
+ odoo/addons/pms/models/res_partner.py,sha256=sfB2cZjRTlJZXiRpOuytMwoSkkd0RfX_GWfAuYdzmeA,24063
78
78
  odoo/addons/pms/models/res_partner_category.py,sha256=OQvfUDY8tSk-2KeKtSLuC0pZHH5DarR8kSmqRW2bh2A,179
79
79
  odoo/addons/pms/models/res_partner_id_category.py,sha256=wQp5U1kAgwvBvvSWp_PAn6Y4I-4lEsHvHP9n1GVTnFY,283
80
80
  odoo/addons/pms/models/res_partner_id_number.py,sha256=orUg1FSpVRwUd3YzTsAvXIiQEdK66LPw-iJnGGNR_U8,5578
@@ -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=wTolKdOCiSptRUik9k1FIqSHI7lS6Cxe31bVpSWfMeI,14070
97
+ odoo/addons/pms/static/description/index.html,sha256=CpuYP9zBYwupa3i2dS7pFO69K_9vryXFMqyuc5A9wqI,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
@@ -107,7 +107,7 @@ odoo/addons/pms/tests/test_automated_mails.py,sha256=kHGbqNRLtTif-2wZzep3ATMa-f8
107
107
  odoo/addons/pms/tests/test_pms_availability_plan_rules.py,sha256=yukdmwgYJuDy1G3GuqHgkMOtUtfyzBoR2RrP1wzH_0s,23516
108
108
  odoo/addons/pms/tests/test_pms_board_service.py,sha256=GEXYxLAEj4QG8rZjg-PPZMEwEE2Xe17JibjodCILclA,15364
109
109
  odoo/addons/pms/tests/test_pms_booking_engine.py,sha256=2Rxxl6NWI6w3ZBBu8BNEGKyQlDrvipO_JCVtyW8q3A0,32268
110
- odoo/addons/pms/tests/test_pms_checkin_partner.py,sha256=RFt5-dJqnfL1RgaFJ-6m8myQ-5SMDk8It3ApoDYK4Fw,58387
110
+ odoo/addons/pms/tests/test_pms_checkin_partner.py,sha256=P25tpcrgaAYYbc4qFP6EC_HbbwsKGbH6UWAv6GvFh18,59212
111
111
  odoo/addons/pms/tests/test_pms_folio.py,sha256=ZLAuXCyDUX1D2rCl5EUfJmDKngcegXLg6QTwtBsJbXk,55589
112
112
  odoo/addons/pms/tests/test_pms_folio_invoice.py,sha256=BcrPyBWfjCWy5YTdh4RUEaKLS2UHQv1WJTMbq2vhyeg,35219
113
113
  odoo/addons/pms/tests/test_pms_folio_prices.py,sha256=tBqz6AyowOMStRM3-trLbkLpO3RoFvq3_U6zO3pxJQM,288
@@ -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.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,,
199
+ odoo_addon_pms-16.0.0.27.0.dist-info/METADATA,sha256=ivEOqTHKKlw1ohc3aQWLb0N8MVb3X2fRQhfXDqymNJw,5023
200
+ odoo_addon_pms-16.0.0.27.0.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
201
+ odoo_addon_pms-16.0.0.27.0.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
202
+ odoo_addon_pms-16.0.0.27.0.dist-info/RECORD,,