odoo-addon-pms 16.0.0.15.0.10__py3-none-any.whl → 16.0.0.24.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:1932d20cb515244c940884a7573b46a3b589228ee1ebb94ad7f300612769a869
14
+ !! source digest: sha256:88334a9c85056b26b4f5f89e9ce6f476579984c113c68111c6d106f7c2ce2903
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.15.0",
7
+ "version": "16.0.0.24.0",
8
8
  "development_status": "Beta",
9
9
  "category": "Generic Modules/Property Management System",
10
10
  "website": "https://github.com/OCA/pms",
@@ -5895,6 +5895,11 @@ msgstr "Vollst. fakturiert"
5895
5895
  msgid "Future"
5896
5896
  msgstr "Zukunft"
5897
5897
 
5898
+ #. module: pms
5899
+ #: model:ir.model.fields,field_description:pms.field_pms_property__global_location_number
5900
+ msgid "GLN"
5901
+ msgstr ""
5902
+
5898
5903
  #. module: pms
5899
5904
  #: model:ir.model.fields,field_description:pms.field_pms_checkin_partner__gender
5900
5905
  #: model:ir.model.fields,field_description:pms.field_pms_property__gender
@@ -5966,6 +5971,11 @@ msgid "Gives the different ways to package the same product."
5966
5971
  msgstr ""
5967
5972
  "Zeigt die verschiedenen Möglichkeiten, das gleiche Produkt zu verpacken."
5968
5973
 
5974
+ #. module: pms
5975
+ #: model:ir.model.fields,help:pms.field_pms_property__global_location_number
5976
+ msgid "Global Location Number"
5977
+ msgstr ""
5978
+
5969
5979
  #. module: pms
5970
5980
  #: model:pms.ubication,name:pms.pms_ubication_ground_floor
5971
5981
  msgid "Ground floor"
@@ -8082,6 +8092,7 @@ msgstr "Nachtnummer, ab der die Regel nicht mehr gilt (optional)"
8082
8092
  #: model:ir.model.fields,field_description:pms.field_folio_sale_line__reservation_line_ids
8083
8093
  #: model:ir.model.fields,field_description:pms.field_pms_reservation__nights
8084
8094
  #: model:ir.model.fields,field_description:pms.field_wizard_folio_changes__nights
8095
+ #: model_terms:ir.ui.view,arch_db:pms.pms_reservation_view_form
8085
8096
  msgid "Nights"
8086
8097
  msgstr "Nächte"
8087
8098
 
@@ -13115,20 +13126,6 @@ msgstr "Gesamtbetrag"
13115
13126
  msgid "Total amount"
13116
13127
  msgstr "Gesamtbetrag"
13117
13128
 
13118
- #. module: pms
13119
- #: model_terms:ir.ui.view,arch_db:pms.traveller_report
13120
- msgid ""
13121
- "Total amount\n"
13122
- " (Reservation Card):"
13123
- msgstr ""
13124
- "Gesamtbetrag\n"
13125
- " (Reservierungskarte):"
13126
-
13127
- #. module: pms
13128
- #: model_terms:ir.ui.view,arch_db:pms.traveller_report
13129
- msgid "Total amount (Reservation Card):"
13130
- msgstr "Gesamtbetrag (Reservierungskarte):"
13131
-
13132
13129
  #. module: pms
13133
13130
  #: model:ir.model.fields,help:pms.field_pms_property__credit
13134
13131
  msgid "Total amount this customer owes you."
@@ -14064,6 +14061,16 @@ msgstr ""
14064
14061
  msgid "{room_name}: No room available in {checkin} <-> {checkout}."
14065
14062
  msgstr "{room_name}: Kein Zimmer verfügbar in {checkin} <-> {checkout}."
14066
14063
 
14064
+ #~ msgid ""
14065
+ #~ "Total amount\n"
14066
+ #~ " (Reservation Card):"
14067
+ #~ msgstr ""
14068
+ #~ "Gesamtbetrag\n"
14069
+ #~ " (Reservierungskarte):"
14070
+
14071
+ #~ msgid "Total amount (Reservation Card):"
14072
+ #~ msgstr "Gesamtbetrag (Reservierungskarte):"
14073
+
14067
14074
  #, python-format
14068
14075
  #~ msgid ""
14069
14076
  #~ "The room %(room)s (type: %(room_type)s) is not\n"
@@ -5142,6 +5142,11 @@ msgstr "Totalmente Facturada"
5142
5142
  msgid "Future"
5143
5143
  msgstr "Futuro"
5144
5144
 
5145
+ #. module: pms
5146
+ #: model:ir.model.fields,field_description:pms.field_pms_property__global_location_number
5147
+ msgid "GLN"
5148
+ msgstr ""
5149
+
5145
5150
  #. module: pms
5146
5151
  #: model:ir.model.fields,field_description:pms.field_pms_checkin_partner__gender
5147
5152
  #: model:ir.model.fields,field_description:pms.field_pms_property__gender
@@ -5212,6 +5217,11 @@ msgstr "Obtener el precio con descuento aplicado"
5212
5217
  msgid "Gives the different ways to package the same product."
5213
5218
  msgstr "Ofrece diferentes formas de empaquetar el mismo producto."
5214
5219
 
5220
+ #. module: pms
5221
+ #: model:ir.model.fields,help:pms.field_pms_property__global_location_number
5222
+ msgid "Global Location Number"
5223
+ msgstr ""
5224
+
5215
5225
  #. module: pms
5216
5226
  #: model:pms.ubication,name:pms.pms_ubication_ground_floor
5217
5227
  msgid "Ground floor"
@@ -7299,6 +7309,7 @@ msgstr ""
7299
7309
  #: model:ir.model.fields,field_description:pms.field_folio_sale_line__reservation_line_ids
7300
7310
  #: model:ir.model.fields,field_description:pms.field_pms_reservation__nights
7301
7311
  #: model:ir.model.fields,field_description:pms.field_wizard_folio_changes__nights
7312
+ #: model_terms:ir.ui.view,arch_db:pms.pms_reservation_view_form
7302
7313
  msgid "Nights"
7303
7314
  msgstr "Noches"
7304
7315
 
@@ -12230,18 +12241,6 @@ msgstr ""
12230
12241
  msgid "Total amount"
12231
12242
  msgstr "Importe total"
12232
12243
 
12233
- #. module: pms
12234
- #: model_terms:ir.ui.view,arch_db:pms.traveller_report
12235
- msgid ""
12236
- "Total amount\n"
12237
- " (Reservation Card):"
12238
- msgstr ""
12239
-
12240
- #. module: pms
12241
- #: model_terms:ir.ui.view,arch_db:pms.traveller_report
12242
- msgid "Total amount (Reservation Card):"
12243
- msgstr "Importe total (Tarjeta de Reserva):"
12244
-
12245
12244
  #. module: pms
12246
12245
  #: model:ir.model.fields,help:pms.field_pms_property__credit
12247
12246
  msgid "Total amount this customer owes you."
@@ -13157,6 +13156,9 @@ msgstr ""
13157
13156
  msgid "{room_name}: No room available in {checkin} <-> {checkout}."
13158
13157
  msgstr ""
13159
13158
 
13159
+ #~ msgid "Total amount (Reservation Card):"
13160
+ #~ msgstr "Importe total (Tarjeta de Reserva):"
13161
+
13160
13162
  #, python-format
13161
13163
  #~ msgid "Room {} not available."
13162
13164
  #~ msgstr "Habitación {} no disponible."
@@ -5384,8 +5384,8 @@ msgid ""
5384
5384
  "Field that stores the number of checkin partners pending to checkin (with "
5385
5385
  "the state = draft)"
5386
5386
  msgstr ""
5387
- "Campo che archivia il numero dei partner del check-in in attesa di check-in ("
5388
- "con stato = bozza)"
5387
+ "Campo che archivia il numero dei partner del check-in in attesa di check-in "
5388
+ "(con stato = bozza)"
5389
5389
 
5390
5390
  #. module: pms
5391
5391
  #: model:ir.model.fields,help:pms.field_pms_reservation__avoid_mails
@@ -5871,6 +5871,11 @@ msgstr "Completamente fatturato"
5871
5871
  msgid "Future"
5872
5872
  msgstr "Futuro"
5873
5873
 
5874
+ #. module: pms
5875
+ #: model:ir.model.fields,field_description:pms.field_pms_property__global_location_number
5876
+ msgid "GLN"
5877
+ msgstr ""
5878
+
5874
5879
  #. module: pms
5875
5880
  #: model:ir.model.fields,field_description:pms.field_pms_checkin_partner__gender
5876
5881
  #: model:ir.model.fields,field_description:pms.field_pms_property__gender
@@ -5941,6 +5946,11 @@ msgstr "Ottieni il prezzo con lo sconto applicato"
5941
5946
  msgid "Gives the different ways to package the same product."
5942
5947
  msgstr "Consente di imballare diversamente lo stesso prodotto."
5943
5948
 
5949
+ #. module: pms
5950
+ #: model:ir.model.fields,help:pms.field_pms_property__global_location_number
5951
+ msgid "Global Location Number"
5952
+ msgstr ""
5953
+
5944
5954
  #. module: pms
5945
5955
  #: model:pms.ubication,name:pms.pms_ubication_ground_floor
5946
5956
  msgid "Ground floor"
@@ -6043,8 +6053,8 @@ msgid ""
6043
6053
  "Hi ${object.firstname}, do your check-in now in ${object.pms_property_id."
6044
6054
  "name}"
6045
6055
  msgstr ""
6046
- "Salve ${object.firstname}, esegui il check-in adesso in "
6047
- "${object.pms_property_id.name}"
6056
+ "Salve ${object.firstname}, esegui il check-in adesso in ${object."
6057
+ "pms_property_id.name}"
6048
6058
 
6049
6059
  #. module: pms
6050
6060
  #: model_terms:ir.ui.view,arch_db:pms.pms_checkin_partner_view_search
@@ -6334,8 +6344,8 @@ msgid ""
6334
6344
  msgstr ""
6335
6345
  "Nei prezzi standard & costi medi: valore del prodotto (calcolato "
6336
6346
  "automaticamente nei costi medi).\n"
6337
- " In FIFO: valore dell'unità successiva che lascerà il magazzino ("
6338
- "calcolato automaticamente).\n"
6347
+ " In FIFO: valore dell'unità successiva che lascerà il magazzino "
6348
+ "(calcolato automaticamente).\n"
6339
6349
  " Utilizzato per valutare il prodotto quando il costo di acquisto non "
6340
6350
  "è noto (es. rettifiche di inventario).\n"
6341
6351
  " Utilizzato per calcolare i margini negli ordini di vendita."
@@ -7671,7 +7681,8 @@ msgstr ""
7671
7681
  #. module: pms
7672
7682
  #: model:ir.model.fields,help:pms.field_pms_massive_changes_wizard__max_avail
7673
7683
  msgid "Maximum simultaneous availability on own Booking Engine."
7674
- msgstr "Disponibilità contemporanea massima nel proprio motore di prenotazione."
7684
+ msgstr ""
7685
+ "Disponibilità contemporanea massima nel proprio motore di prenotazione."
7675
7686
 
7676
7687
  #. module: pms
7677
7688
  #: model:ir.model.fields,help:pms.field_pms_availability_plan_rule__max_stay
@@ -8037,6 +8048,7 @@ msgstr "Numero della notte dalla quale la regola non si applica (opzionale)"
8037
8048
  #: model:ir.model.fields,field_description:pms.field_folio_sale_line__reservation_line_ids
8038
8049
  #: model:ir.model.fields,field_description:pms.field_pms_reservation__nights
8039
8050
  #: model:ir.model.fields,field_description:pms.field_wizard_folio_changes__nights
8051
+ #: model_terms:ir.ui.view,arch_db:pms.pms_reservation_view_form
8040
8052
  msgid "Nights"
8041
8053
  msgstr "Notti"
8042
8054
 
@@ -8219,7 +8231,8 @@ msgstr "Numero di partner al check-in in una prenotazione"
8219
8231
  #. module: pms
8220
8232
  #: model:ir.model.fields,help:pms.field_pms_reservation__checkin_partner_pending_count
8221
8233
  msgid "Number of checkin partners pending to checkin in a reservation"
8222
- msgstr "Numero di partner al check-in in attesa di check-in in una prenotazione"
8234
+ msgstr ""
8235
+ "Numero di partner al check-in in attesa di check-in in una prenotazione"
8223
8236
 
8224
8237
  #. module: pms
8225
8238
  #: model:ir.model.fields,help:pms.field_pms_reservation__children_occupying
@@ -8473,9 +8486,9 @@ msgid ""
8473
8486
  "Optional Products are suggested whenever the customer hits *Add to Cart* "
8474
8487
  "(cross-sell strategy, e.g. for computers: warranty, software, etc.)."
8475
8488
  msgstr ""
8476
- "I prodotti opzionali sono suggeriti quando il cliente fa clic su "
8477
- "\"Aggiungi al carrello\" (strategia cross-selling, es. per computer: "
8478
- "garanzia, programmi, ecc.)."
8489
+ "I prodotti opzionali sono suggeriti quando il cliente fa clic su \"Aggiungi "
8490
+ "al carrello\" (strategia cross-selling, es. per computer: garanzia, "
8491
+ "programmi, ecc.)."
8479
8492
 
8480
8493
  #. module: pms
8481
8494
  #: model_terms:ir.ui.view,arch_db:pms.report_folio_document
@@ -12825,18 +12838,6 @@ msgstr ""
12825
12838
  msgid "Total amount"
12826
12839
  msgstr ""
12827
12840
 
12828
- #. module: pms
12829
- #: model_terms:ir.ui.view,arch_db:pms.traveller_report
12830
- msgid ""
12831
- "Total amount\n"
12832
- " (Reservation Card):"
12833
- msgstr ""
12834
-
12835
- #. module: pms
12836
- #: model_terms:ir.ui.view,arch_db:pms.traveller_report
12837
- msgid "Total amount (Reservation Card):"
12838
- msgstr ""
12839
-
12840
12841
  #. module: pms
12841
12842
  #: model:ir.model.fields,help:pms.field_pms_property__credit
12842
12843
  msgid "Total amount this customer owes you."
@@ -4750,6 +4750,11 @@ msgstr ""
4750
4750
  msgid "Future"
4751
4751
  msgstr ""
4752
4752
 
4753
+ #. module: pms
4754
+ #: model:ir.model.fields,field_description:pms.field_pms_property__global_location_number
4755
+ msgid "GLN"
4756
+ msgstr ""
4757
+
4753
4758
  #. module: pms
4754
4759
  #: model:ir.model.fields,field_description:pms.field_pms_checkin_partner__gender
4755
4760
  #: model:ir.model.fields,field_description:pms.field_pms_property__gender
@@ -4820,6 +4825,11 @@ msgstr ""
4820
4825
  msgid "Gives the different ways to package the same product."
4821
4826
  msgstr ""
4822
4827
 
4828
+ #. module: pms
4829
+ #: model:ir.model.fields,help:pms.field_pms_property__global_location_number
4830
+ msgid "Global Location Number"
4831
+ msgstr ""
4832
+
4823
4833
  #. module: pms
4824
4834
  #: model:pms.ubication,name:pms.pms_ubication_ground_floor
4825
4835
  msgid "Ground floor"
@@ -5976,11 +5986,6 @@ msgstr ""
5976
5986
  msgid "Journal Items"
5977
5987
  msgstr ""
5978
5988
 
5979
- #. module: pms
5980
- #: model:ir.model.fields,help:pms.field_res_company__self_billed_journal_id
5981
- msgid "Journal used to create self billing"
5982
- msgstr ""
5983
-
5984
5989
  #. module: pms
5985
5990
  #: model:ir.model.fields,help:pms.field_pms_property__journal_normal_invoice_id
5986
5991
  msgid "Journal used to create the normal invoice"
@@ -6823,6 +6828,7 @@ msgstr ""
6823
6828
  #: model:ir.model.fields,field_description:pms.field_folio_sale_line__reservation_line_ids
6824
6829
  #: model:ir.model.fields,field_description:pms.field_pms_reservation__nights
6825
6830
  #: model:ir.model.fields,field_description:pms.field_wizard_folio_changes__nights
6831
+ #: model_terms:ir.ui.view,arch_db:pms.pms_reservation_view_form
6826
6832
  msgid "Nights"
6827
6833
  msgstr ""
6828
6834
 
@@ -9728,16 +9734,6 @@ msgstr ""
9728
9734
  msgid "Self"
9729
9735
  msgstr ""
9730
9736
 
9731
- #. module: pms
9732
- #: model:ir.model.fields,field_description:pms.field_res_company__self_billed_journal_id
9733
- msgid "Self billed journal"
9734
- msgstr ""
9735
-
9736
- #. module: pms
9737
- #: model:ir.model.fields,field_description:pms.field_res_company__self_billed_tax_ids
9738
- msgid "Self billed taxes"
9739
- msgstr ""
9740
-
9741
9737
  #. module: pms
9742
9738
  #: model_terms:ir.ui.view,arch_db:pms.pms_reservation_view_form
9743
9739
  msgid "Send Cancellation Email"
@@ -10494,11 +10490,6 @@ msgstr ""
10494
10490
  msgid "Taxes used for deposits"
10495
10491
  msgstr ""
10496
10492
 
10497
- #. module: pms
10498
- #: model:ir.model.fields,help:pms.field_res_company__self_billed_tax_ids
10499
- msgid "Taxes used to create self billing"
10500
- msgstr ""
10501
-
10502
10493
  #. module: pms
10503
10494
  #: model:ir.model.fields,field_description:pms.field_pms_property__user_id
10504
10495
  #: model_terms:ir.ui.view,arch_db:pms.pms_property_views_form
@@ -11585,18 +11576,6 @@ msgstr ""
11585
11576
  msgid "Total amount"
11586
11577
  msgstr ""
11587
11578
 
11588
- #. module: pms
11589
- #: model_terms:ir.ui.view,arch_db:pms.traveller_report
11590
- msgid ""
11591
- "Total amount\n"
11592
- " (Reservation Card):"
11593
- msgstr ""
11594
-
11595
- #. module: pms
11596
- #: model_terms:ir.ui.view,arch_db:pms.traveller_report
11597
- msgid "Total amount (Reservation Card):"
11598
- msgstr ""
11599
-
11600
11579
  #. module: pms
11601
11580
  #: model:ir.model.fields,help:pms.field_pms_property__credit
11602
11581
  msgid "Total amount this customer owes you."
@@ -130,7 +130,7 @@ class AccountMove(models.Model):
130
130
 
131
131
  pay_term_lines = move.line_ids.filtered(
132
132
  lambda line: line.account_id.account_type
133
- in ("asset_receivable", "payable")
133
+ in ("asset_receivable", "liability_payable")
134
134
  )
135
135
 
136
136
  payments_widget_vals = {
@@ -85,6 +85,8 @@ class PmsBoardServiceRoomType(models.Model):
85
85
  @api.constrains("by_default")
86
86
  def constrains_duplicated_board_default(self):
87
87
  for record in self:
88
+ if not record.by_default:
89
+ continue
88
90
  default_boards = (
89
91
  record.pms_room_type_id.board_service_room_type_ids.filtered(
90
92
  "by_default"
@@ -139,7 +139,7 @@ class PmsFolio(models.Model):
139
139
  check_pms_properties=True,
140
140
  compute="_compute_pricelist_id",
141
141
  )
142
- commission = fields.Float(
142
+ commission = fields.Monetary(
143
143
  readonly=True,
144
144
  store=True,
145
145
  compute="_compute_commission",
@@ -325,6 +325,10 @@ class PmsFolio(models.Model):
325
325
  # )
326
326
  fiscal_position_id = fields.Many2one(
327
327
  string="Fiscal Position",
328
+ compute="_compute_fiscal_position_id",
329
+ store=True,
330
+ readonly=False,
331
+ domain="[('company_id', '=', company_id)]",
328
332
  help="The fiscal position depends on the location of the client",
329
333
  comodel_name="account.fiscal.position",
330
334
  index=True,
@@ -566,6 +570,28 @@ class PmsFolio(models.Model):
566
570
  readonly=False,
567
571
  )
568
572
 
573
+ @api.depends("pms_property_id", "partner_id", "company_id")
574
+ def _compute_fiscal_position_id(self):
575
+ cache = {}
576
+ for folio in self:
577
+ if not folio.partner_id:
578
+ folio.fiscal_position_id = False
579
+ continue
580
+ key = (
581
+ folio.company_id.id,
582
+ folio.partner_id.id,
583
+ folio.pms_property_id.partner_id.id,
584
+ )
585
+ if key not in cache:
586
+ cache[key] = (
587
+ self.env["account.fiscal.position"]
588
+ .with_company(folio.company_id)
589
+ ._get_fiscal_position(
590
+ folio.partner_id, folio.pms_property_id.partner_id
591
+ )
592
+ )
593
+ folio.fiscal_position_id = cache[key]
594
+
569
595
  @api.model
570
596
  def _get_lang_selection_options(self):
571
597
  """Gets the available languages for the selection."""
@@ -1481,6 +1507,9 @@ class PmsFolio(models.Model):
1481
1507
  records = super().create(vals_list)
1482
1508
  for record in records:
1483
1509
  record.access_token = record._portal_ensure_token()
1510
+ if record.partner_id:
1511
+ partners = record.partner_id | record.partner_id.commercial_partner_id
1512
+ partners._increase_rank("customer_rank")
1484
1513
  return records
1485
1514
 
1486
1515
  def write(self, vals):
@@ -1491,6 +1520,9 @@ class PmsFolio(models.Model):
1491
1520
  services_to_update = self.get_services_to_update_channel(vals)
1492
1521
 
1493
1522
  res = super().write(vals)
1523
+ if vals.get("partner_id"):
1524
+ partners = self.partner_id | self.partner_id.commercial_partner_id
1525
+ partners._increase_rank("customer_rank")
1494
1526
  if reservations_to_update:
1495
1527
  reservations_to_update.sale_channel_origin_id = vals[
1496
1528
  "sale_channel_origin_id"
@@ -2120,10 +2152,7 @@ class PmsFolio(models.Model):
2120
2152
  "invoice_line_ids": [],
2121
2153
  "company_id": self.company_id.id,
2122
2154
  "payment_reference": self.name,
2123
- "fiscal_position_id": self.env["account.fiscal.position"]
2124
- .with_company(self.company_id.id)
2125
- ._get_fiscal_position(self.env["res.partner"].browse(partner_invoice_id))
2126
- .id,
2155
+ "fiscal_position_id": self.fiscal_position_id.id,
2127
2156
  }
2128
2157
  return invoice_vals
2129
2158
 
@@ -978,11 +978,6 @@ class PmsProperty(models.Model):
978
978
  self.ensure_one()
979
979
  partner = self.env["res.partner"].browse(partner_invoice_id)
980
980
  # For simplified invoices
981
- if (
982
- self.company_id.partner_id.id == partner.id
983
- and self.company_id.self_billed_journal_id
984
- ):
985
- return self.company_id.self_billed_journal_id
986
981
  if (
987
982
  not partner
988
983
  or partner.id == self.env.ref("pms.various_pms_partner").id
@@ -243,7 +243,7 @@ class PmsReservation(models.Model):
243
243
  compute="_compute_commission_percent",
244
244
  tracking=True,
245
245
  )
246
- commission_amount = fields.Float(
246
+ commission_amount = fields.Monetary(
247
247
  string="Commission amount",
248
248
  help="Amount corresponding to commission",
249
249
  store=True,
@@ -573,7 +573,7 @@ class PmsReservation(models.Model):
573
573
  compute="_compute_amount_reservation",
574
574
  tracking=True,
575
575
  )
576
- price_tax = fields.Float(
576
+ price_tax = fields.Monetary(
577
577
  string="Taxes Amount",
578
578
  help="Total of taxes in a reservation",
579
579
  readonly=True,
@@ -594,7 +594,7 @@ class PmsReservation(models.Model):
594
594
  store=True,
595
595
  compute="_compute_price_room_services_set",
596
596
  )
597
- discount = fields.Float(
597
+ discount = fields.Monetary(
598
598
  help="Discount of total price in reservation",
599
599
  readonly=False,
600
600
  store=True,
@@ -603,7 +603,7 @@ class PmsReservation(models.Model):
603
603
  tracking=True,
604
604
  )
605
605
 
606
- services_discount = fields.Float(
606
+ services_discount = fields.Monetary(
607
607
  help="Services discount",
608
608
  readonly=False,
609
609
  store=True,
@@ -1441,22 +1441,17 @@ class PmsReservation(models.Model):
1441
1441
  record.checkin_partner_count = 0
1442
1442
  record.checkin_partner_pending_count = 0
1443
1443
 
1444
- @api.depends("room_type_id", "partner_id")
1444
+ @api.depends("room_type_id", "partner_id", "folio_id.fiscal_position_id")
1445
1445
  def _compute_tax_ids(self):
1446
1446
  for record in self:
1447
1447
  record = record.with_company(record.company_id)
1448
- if (
1449
- record.partner_id == record.company_id.partner_id
1450
- and record.company_id.self_billed_tax_ids
1451
- ):
1452
- record.tax_ids = record.company_id.self_billed_tax_ids
1453
- else:
1454
- product = self.env["product.product"].browse(
1455
- record.room_type_id.product_id.id
1456
- )
1457
- record.tax_ids = product.taxes_id.filtered(
1448
+ product = record.room_type_id.product_id
1449
+ fiscal_position = record.folio_id.fiscal_position_id
1450
+ record.tax_ids = fiscal_position.map_tax(
1451
+ product.taxes_id.filtered(
1458
1452
  lambda t, r=record: t.company_id == r.env.company
1459
1453
  )
1454
+ )
1460
1455
 
1461
1456
  @api.depends("reservation_line_ids", "reservation_line_ids.room_id")
1462
1457
  def _compute_rooms(self):
@@ -2500,7 +2495,7 @@ class PmsReservation(models.Model):
2500
2495
  def _compute_tourist_tax_lines(self):
2501
2496
  """Return ORM commands to sync tourist tax services on this reservation."""
2502
2497
  self.ensure_one()
2503
- if self.reservation_type != "normal":
2498
+ if self.reservation_type != "normal" or not self.overnight_room:
2504
2499
  return False
2505
2500
  tax_products = self._get_tourist_tax_products(
2506
2501
  pms_property_id=self.pms_property_id.id
@@ -73,7 +73,7 @@ class PmsReservationLine(models.Model):
73
73
  pricelist_item_id = fields.Many2one(
74
74
  comodel_name="product.pricelist.item", compute="_compute_pricelist_item_id"
75
75
  )
76
- price = fields.Float(
76
+ price = fields.Monetary(
77
77
  help="The price in a reservation line",
78
78
  store=True,
79
79
  readonly=False,
@@ -105,7 +105,7 @@ class PmsReservationLine(models.Model):
105
105
  default=0.0,
106
106
  digits=("Discount"),
107
107
  )
108
- price_day_total = fields.Float(
108
+ price_day_total = fields.Monetary(
109
109
  string="Final price",
110
110
  help="Get the price with discount applied",
111
111
  store=True,
@@ -183,7 +183,7 @@ class PmsService(models.Model):
183
183
  store=True,
184
184
  compute="_compute_amount_service",
185
185
  )
186
- price_tax = fields.Float(
186
+ price_tax = fields.Monetary(
187
187
  string="Taxes Amount",
188
188
  help="Total of taxes in service",
189
189
  readonly=True,
@@ -191,7 +191,7 @@ class PmsService(models.Model):
191
191
  compute="_compute_amount_service",
192
192
  )
193
193
 
194
- discount = fields.Float(
194
+ discount = fields.Monetary(
195
195
  help="Discount of total price",
196
196
  readonly=False,
197
197
  store=True,
@@ -232,24 +232,16 @@ class PmsService(models.Model):
232
232
  origin = record.reservation_id if record.reservation_id else record.folio_id
233
233
  record.pricelist_id = origin.pricelist_id
234
234
 
235
- @api.depends("product_id", "folio_id.partner_id", "reservation_id.partner_id")
235
+ @api.depends("product_id", "folio_id.fiscal_position_id")
236
236
  def _compute_tax_ids(self):
237
237
  for service in self:
238
- partner = (
239
- service.reservation_id.partner_id
240
- if service.reservation_id
241
- else service.folio_id.partner_id
242
- )
243
- if (
244
- partner == service.company_id.partner_id
245
- and service.company_id.self_billed_tax_ids
246
- ):
247
- service.tax_ids = service.company_id.self_billed_tax_ids
248
- else:
249
- service.tax_ids = service.product_id.taxes_id.filtered(
238
+ fiscal_position = service.folio_id.fiscal_position_id
239
+ service.tax_ids = fiscal_position.map_tax(
240
+ service.product_id.taxes_id.filtered(
250
241
  lambda r, s=service: not s.company_id
251
242
  or r.company_id == s.company_id
252
243
  )
244
+ )
253
245
 
254
246
  @api.depends("service_line_ids", "service_line_ids.day_qty")
255
247
  def _compute_product_qty(self):
@@ -70,7 +70,7 @@ class PmsServiceLine(models.Model):
70
70
  string="Units",
71
71
  help="Amount to be consumed per day",
72
72
  )
73
- price_unit = fields.Float(
73
+ price_unit = fields.Monetary(
74
74
  string="Unit Price",
75
75
  help="Price per unit of service",
76
76
  digits=("Product Price"),
@@ -89,7 +89,7 @@ class PmsServiceLine(models.Model):
89
89
  store=True,
90
90
  compute="_compute_day_amount_service",
91
91
  )
92
- price_day_tax = fields.Float(
92
+ price_day_tax = fields.Monetary(
93
93
  string="Taxes Amount",
94
94
  help="",
95
95
  readonly=True,
@@ -56,20 +56,3 @@ class ResCompany(models.Model):
56
56
  index=True,
57
57
  ondelete="restrict",
58
58
  )
59
-
60
- self_billed_journal_id = fields.Many2one(
61
- string="Self billed journal",
62
- help="Journal used to create self billing",
63
- comodel_name="account.journal",
64
- index=True,
65
- ondelete="restrict",
66
- )
67
- self_billed_tax_ids = fields.Many2many(
68
- string="Self billed taxes",
69
- help="Taxes used to create self billing",
70
- comodel_name="account.tax",
71
- relation="company_autoinvoicing_tax_rel",
72
- column1="company_id",
73
- column2="tax_id",
74
- domain="[('company_id', '=', id)]",
75
- )
@@ -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:1932d20cb515244c940884a7573b46a3b589228ee1ebb94ad7f300612769a869
375
+ !! source digest: sha256:88334a9c85056b26b4f5f89e9ce6f476579984c113c68111c6d106f7c2ce2903
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
@@ -1479,3 +1479,86 @@ class TestPmsFolio(TestPms, AccountTestInvoicingCommon):
1479
1479
  def test_pms_folio_form_creation(self):
1480
1480
  folio_form = Form(self.env["pms.folio"])
1481
1481
  self.assertFalse(folio_form.possible_existing_customer_ids)
1482
+
1483
+ def test_pms_folio_fiscal_position_id(self):
1484
+ """
1485
+ Check that the fiscal_position_id field of the folio is correctly
1486
+ set when a partner is assigned to the folio.
1487
+ """
1488
+ fiscal_position = self.env["account.fiscal.position"].create(
1489
+ {"name": "Fiscal Position Test"}
1490
+ )
1491
+ partner = (
1492
+ self.env["res.partner"]
1493
+ .with_company(self.pms_property1.company_id)
1494
+ .create(
1495
+ {
1496
+ "name": "Fiscal Partner",
1497
+ "property_account_position_id": fiscal_position.id,
1498
+ }
1499
+ )
1500
+ )
1501
+ folio = self.env["pms.folio"].create(
1502
+ {
1503
+ "pms_property_id": self.pms_property1.id,
1504
+ "partner_name": partner.name,
1505
+ "partner_id": partner.id,
1506
+ }
1507
+ )
1508
+ folio.env.invalidate_all()
1509
+ self.assertEqual(
1510
+ folio.fiscal_position_id.id,
1511
+ fiscal_position.id,
1512
+ "The fiscal_position_id of the folio was not "
1513
+ "set correctly from the partner",
1514
+ )
1515
+
1516
+ def test_pms_folio_priority_fiscal_position_property(self):
1517
+ """
1518
+ Check that the fiscal_position_id field of the folio
1519
+ takes precedence from automatic assignation.
1520
+ """
1521
+ fiscal_position_property = self.env["account.fiscal.position"].create(
1522
+ {"name": "Fiscal Position Property"}
1523
+ )
1524
+ # automatic fiscal position for US country
1525
+ self.env["account.fiscal.position"].create(
1526
+ {
1527
+ "name": "Automatic Fiscal Position",
1528
+ "auto_apply": True,
1529
+ "country_id": self.env.ref("base.us").id,
1530
+ }
1531
+ )
1532
+ pms_propert_1 = self.env["pms.property"].create(
1533
+ {
1534
+ "name": "Property with Fiscal Position",
1535
+ "company_id": self.env.ref("base.main_company").id,
1536
+ }
1537
+ )
1538
+ pms_propert_1.partner_id.property_account_position_id = (
1539
+ fiscal_position_property.id
1540
+ )
1541
+ partner = (
1542
+ self.env["res.partner"]
1543
+ .with_company(pms_propert_1.company_id)
1544
+ .create(
1545
+ {
1546
+ "name": "Fiscal Partner",
1547
+ "country_id": self.env.ref("base.us").id,
1548
+ }
1549
+ )
1550
+ )
1551
+ folio = self.env["pms.folio"].create(
1552
+ {
1553
+ "pms_property_id": pms_propert_1.id,
1554
+ "partner_name": partner.name,
1555
+ "partner_id": partner.id,
1556
+ }
1557
+ )
1558
+ folio.env.invalidate_all()
1559
+ self.assertEqual(
1560
+ folio.fiscal_position_id.id,
1561
+ fiscal_position_property.id,
1562
+ "The fiscal_position_id of the folio was not set "
1563
+ "correctly from the property",
1564
+ )
@@ -843,6 +843,64 @@ class TestRoomType(TestPms):
843
843
  }
844
844
  )
845
845
 
846
+ def test_room_type_board_service_by_default_constraint(self):
847
+ room_type = self.env["pms.room.type"].create(
848
+ {
849
+ "name": "Room Type",
850
+ "default_code": "Type1",
851
+ "pms_property_ids": self.pms_property1,
852
+ "class_id": self.room_type_class1.id,
853
+ }
854
+ )
855
+ board_service_default = self.env["pms.board.service"].create(
856
+ {
857
+ "name": "Board service 1",
858
+ "default_code": "c1",
859
+ "pms_property_ids": self.pms_property1,
860
+ }
861
+ )
862
+ board_service_not_default = self.env["pms.board.service"].create(
863
+ {
864
+ "name": "Board service 2",
865
+ "default_code": "c2",
866
+ "pms_property_ids": self.pms_property1,
867
+ }
868
+ )
869
+ board_service_second_default = self.env["pms.board.service"].create(
870
+ {
871
+ "name": "Board service 3",
872
+ "default_code": "c3",
873
+ "pms_property_ids": self.pms_property1,
874
+ }
875
+ )
876
+ self.env["pms.board.service.room.type"].create(
877
+ {
878
+ "pms_board_service_id": board_service_default.id,
879
+ "pms_room_type_id": room_type.id,
880
+ "pms_property_id": self.pms_property1.id,
881
+ "by_default": True,
882
+ }
883
+ )
884
+ self.env["pms.board.service.room.type"].create(
885
+ {
886
+ "pms_board_service_id": board_service_not_default.id,
887
+ "pms_room_type_id": room_type.id,
888
+ "pms_property_id": self.pms_property1.id,
889
+ }
890
+ )
891
+ with self.assertRaises(
892
+ UserError,
893
+ msg="Only can set one default board service",
894
+ ):
895
+ self.env["pms.board.service.room.type"].create(
896
+ {
897
+ "pms_board_service_id": board_service_second_default.id,
898
+ "pms_room_type_id": room_type.id,
899
+ "pms_property_id": self.pms_property1.id,
900
+ "by_default": True,
901
+ }
902
+ )
903
+
846
904
  def test_check_amenities_property_integrity(self):
847
905
  self.amenity1 = self.env["pms.amenity"].create(
848
906
  {"name": "Amenity", "pms_property_ids": self.pms_property1}
@@ -248,18 +248,11 @@
248
248
  <group
249
249
  class="oe_subtotal_footer oe_right oe_inline"
250
250
  name="folio_total"
251
+ widget="monetary"
251
252
  attrs="{'invisible':[('reservation_type', '!=', 'normal')]}"
252
253
  >
253
- <field
254
- name="amount_untaxed"
255
- widget="monetary"
256
- options="{'currency_field': 'currency_id'}"
257
- />
258
- <field
259
- name="amount_tax"
260
- widget="monetary"
261
- options="{'currency_field': 'currency_id'}"
262
- />
254
+ <field name="amount_untaxed" widget="monetary" />
255
+ <field name="amount_tax" widget="monetary" />
263
256
  <div
264
257
  class="oe_subtotal_footer_separator oe_inline o_td_label"
265
258
  >
@@ -270,13 +263,8 @@
270
263
  nolabel="1"
271
264
  class="oe_subtotal_footer_separator"
272
265
  widget="monetary"
273
- options="{'currency_field': 'currency_id'}"
274
- />
275
- <field
276
- name="commission"
277
- widget='monetary'
278
- options="{'currency_field': 'currency_id'}"
279
266
  />
267
+ <field name="commission" widget='monetary' />
280
268
  </group>
281
269
  </group>
282
270
  <group>
@@ -467,7 +455,7 @@
467
455
  options='{"no_open": True}'
468
456
  optional="hide"
469
457
  />
470
- <field name="price_unit" />
458
+ <field name="price_unit" widget="monetary" />
471
459
  <field
472
460
  name="tax_ids"
473
461
  widget="many2many_tags"
@@ -532,6 +520,9 @@
532
520
  string="Invoicing"
533
521
  attrs="{'invisible':[('reservation_type', '!=', 'normal')]}"
534
522
  >
523
+ <group>
524
+ <field name="fiscal_position_id" />
525
+ </group>
535
526
  <div
536
527
  class="alert alert-info"
537
528
  role="alert"
@@ -556,7 +547,7 @@
556
547
  <field name="create_uid" />
557
548
  <field name="date" />
558
549
  <field name="payment_type" />
559
- <field name="amount" />
550
+ <field name="amount" widget="monetary" />
560
551
  <field name="partner_id" invisible="1" />
561
552
  <field
562
553
  name="state"
@@ -124,6 +124,7 @@
124
124
  <field name="max_amount_simplified_invoice" />
125
125
  <field name="avoid_simplified_max_amount_downpayment" />
126
126
  <field name="invoice_reservation_note_template" />
127
+ <field name="property_account_position_id" />
127
128
  </group>
128
129
  </page>
129
130
  <page string="Email Configuration">
@@ -498,16 +498,18 @@
498
498
  </group>
499
499
  <notebook>
500
500
  <page name="detail" string="Detail">
501
+ <separator string="Nights" />
501
502
  <field name="reservation_line_ids" nolabel="1">
502
503
  <tree create="false" delete="false" editable="bottom">
504
+ <field name="currency_id" invisible="1" />
503
505
  <field
504
506
  name="room_id"
505
507
  attrs="{'column_invisible': [('parent.splitted','=', False)]}"
506
508
  />
507
509
  <field name="date" readonly="1" force_save="1" />
508
- <field name="price" />
510
+ <field name="price" widget="monetary" />
509
511
  <field name="discount" />
510
- <field name="price_day_total" />
512
+ <field name="price_day_total" widget="monetary" />
511
513
  <field name="cancel_discount" invisible="1" />
512
514
  <field name="sale_channel_id" />
513
515
  <field name="default_invoice_to" />
@@ -539,6 +541,7 @@
539
541
  invisible="1"
540
542
  readonly="1"
541
543
  />
544
+ <field name="currency_id" invisible="1" />
542
545
  <field
543
546
  name="pms_property_id"
544
547
  invisible="1"
@@ -586,24 +589,38 @@
586
589
  optional="show"
587
590
  />
588
591
  <field name="board_service_line_id" invisible="1" />
589
- <field name="price_subtotal" optional="hide" />
590
- <field name="price_tax" optional="hide" />
591
- <field name="discount" />
592
- <field name="price_total" />
592
+ <field
593
+ name="price_subtotal"
594
+ optional="hide"
595
+ widget="monetary"
596
+ />
597
+ <field
598
+ name="price_tax"
599
+ optional="hide"
600
+ widget="monetary"
601
+ />
602
+ <field name="discount" widget="monetary" />
603
+ <field name="price_total" widget="monetary" />
593
604
  <field
594
605
  name="service_line_ids"
595
606
  invisible="1"
596
607
  readonly="1"
597
608
  >
598
609
  <tree name="Days">
599
- <field name="date" />
610
+ <field name="date" widget="date" />
600
611
  <field name="day_qty" />
601
612
  <field
602
613
  name="discount"
603
614
  attrs="{'readonly':[('is_board_service','=', True)]}"
604
615
  />
605
- <field name="price_unit" />
606
- <field name="price_day_total" />
616
+ <field
617
+ name="price_unit"
618
+ widget="monetary"
619
+ />
620
+ <field
621
+ name="price_day_total"
622
+ widget="monetary"
623
+ />
607
624
  <field
608
625
  name="is_board_service"
609
626
  invisible="1"
@@ -622,25 +639,21 @@
622
639
  name="price_services"
623
640
  string="Only Services"
624
641
  widget="monetary"
625
- options="{'currency_field': 'currency_id'}"
626
642
  />
627
643
  <field
628
644
  name="price_total"
629
645
  string="Only Room"
630
646
  widget="monetary"
631
- options="{'currency_field': 'currency_id'}"
632
647
  />
633
648
  <field
634
649
  name="discount"
635
650
  string="Discount Room"
636
651
  widget="monetary"
637
- options="{'currency_field': 'currency_id'}"
638
652
  />
639
653
  <field
640
654
  name="services_discount"
641
655
  string="Discount Services"
642
656
  widget="monetary"
643
- options="{'currency_field': 'currency_id'}"
644
657
  />
645
658
  <field name="price_subtotal" invisible="1" />
646
659
  <div
@@ -656,7 +669,6 @@
656
669
  nolabel="1"
657
670
  class="oe_subtotal_footer_separator"
658
671
  widget="monetary"
659
- options="{'currency_field': 'currency_id'}"
660
672
  />
661
673
  <field
662
674
  name="commission_percent"
@@ -666,7 +678,6 @@
666
678
  name="commission_amount"
667
679
  string="Commission Amount"
668
680
  widget='monetary'
669
- options="{'currency_field': 'currency_id'}"
670
681
  />
671
682
  <field name="invoice_status" invisible="1" />
672
683
  <field name="currency_id" invisible="1" />
@@ -823,6 +834,7 @@
823
834
  <field name="splitted" invisible="1" />
824
835
  <field name="is_reselling" invisible="1" />
825
836
  <field name="pricelist_id" invisible="1" />
837
+ <field name="currency_id" invisible="1" />
826
838
  <field name="rooms" />
827
839
  <field name="checkin" />
828
840
  <field name="checkout" />
@@ -843,9 +855,23 @@
843
855
  <field name="sale_channel_origin_id" optional="show" />
844
856
  <field name="sale_channel_ids" optional="show" />
845
857
  <field name="price_subtotal" invisible="1" />
846
- <field name="price_total" optional="hide" sum="Total" />
847
- <field name="commission_amount" optional="hide" sum="Commission" />
848
- <field name="folio_pending_amount" string="Folio Pending Amount" />
858
+ <field
859
+ name="price_total"
860
+ optional="hide"
861
+ sum="Total"
862
+ widget="monetary"
863
+ />
864
+ <field
865
+ name="commission_amount"
866
+ optional="hide"
867
+ sum="Commission"
868
+ widget="monetary"
869
+ />
870
+ <field
871
+ name="folio_pending_amount"
872
+ string="Folio Pending Amount"
873
+ widget="monetary"
874
+ />
849
875
  <field
850
876
  name="state"
851
877
  decoration-success="state == 'onboard'"
@@ -5,7 +5,7 @@
5
5
  <field name="model">res.users</field>
6
6
  <field name="inherit_id" ref="base.view_users_form" />
7
7
  <field name="arch" type="xml">
8
- <xpath expr="//page[@name='access_rights']/group" position="inside">
8
+ <xpath expr="//page[@name='access_rights']/group" position="after">
9
9
  <group string="Multi Properties">
10
10
  <field
11
11
  string="Allowed Properties"
@@ -16,11 +16,6 @@
16
16
  <span t-field="docs.identifier" />
17
17
  </strong> / <span t-field="docs.reservation_id" />
18
18
  </p>
19
- <p class="amount"> Total amount
20
- (Reservation Card): <strong>
21
- <span t-field="docs.reservation_id.folio_id.amount_total" />
22
- </strong>
23
- </p>
24
19
  <div class="property amount">
25
20
  <strong>
26
21
  <span t-field="docs.pms_property_id.name" />
@@ -182,10 +177,6 @@
182
177
  <span t-field="docs.identifier" />
183
178
  </strong> / <span t-field="docs.reservation_id" />
184
179
  </p>
185
- <p class="amount"> Total amount (Reservation Card): <strong>
186
- <span t-field="docs.reservation_id.folio_id.amount_total" />
187
- </strong>
188
- </p>
189
180
  <div class="property amount">
190
181
  <strong>
191
182
  <span t-field="docs.pms_property_id.name" />
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: odoo-addon-pms
3
- Version: 16.0.0.15.0.10
3
+ Version: 16.0.0.24.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:1932d20cb515244c940884a7573b46a3b589228ee1ebb94ad7f300612769a869
39
+ !! source digest: sha256:88334a9c85056b26b4f5f89e9ce6f476579984c113c68111c6d106f7c2ce2903
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=eP7ytH6uzmMRukYDcvHgiTxYteTiRyRvLIy1bLFf6hw,3898
1
+ odoo/addons/pms/README.rst,sha256=NwZrq-MiqApYtX9kOakgwFQtZrYy0Qr6CK39O9_7XW4,3898
2
2
  odoo/addons/pms/__init__.py,sha256=uCUbRxtCubFHrz65XPTEmSu2XU6tpojVZ8MYot9bPMg,171
3
- odoo/addons/pms/__manifest__.py,sha256=02smYrL-weYPBxqNpihOxZY89Lf7xmTqb6_DixIcgWw,4849
3
+ odoo/addons/pms/__manifest__.py,sha256=-5VqIpFaY0UxL2folzy-uqggDtSNwpOuLzWthu_wu5s,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=NE4LNs8oiineWsgZib3z17nMhZ_d2F-UFAX_uXQLudw,552698
25
- odoo/addons/pms/i18n/es.po,sha256=9Ai5qrJX4DgdwMP9DzEhut_eobyRCE9uHgxiT5lWkzs,589551
26
- odoo/addons/pms/i18n/it.po,sha256=B2J8Cy3ebaO-qiOURoCzSm3kUXtbEY7Sl4ZxewQNY5A,513963
27
- odoo/addons/pms/i18n/pms.pot,sha256=f9fv73VoMSOcBHiccRBJcYIEIIE90-FvCIUyJ2meFbs,433846
24
+ odoo/addons/pms/i18n/de.po,sha256=ziC1ii3bPSHf1eEOcLA3Fng0Y1vXrNKeaIan_bdggy4,552908
25
+ odoo/addons/pms/i18n/es.po,sha256=sZu-rBAd_3r5Ns7R4ud3733Tjzkv-BXzpsWz7AC53SQ,589660
26
+ odoo/addons/pms/i18n/it.po,sha256=mA22NAynlLrlW4C_qEddzsg7LHVAED-W3XRffzRkPHs,514020
27
+ odoo/addons/pms/i18n/pms.pot,sha256=wg4Qwt3Dm0o-nduQTeUGW79de65rGuci_4z5LhOMaho,433329
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
@@ -33,7 +33,7 @@ odoo/addons/pms/models/account_analytic_line.py,sha256=PDMCE41O3jNykfOLMrKrEnEU5
33
33
  odoo/addons/pms/models/account_bank_statement.py,sha256=x3twvY5dlGhGoaGd5KacH4-2DZxufRLRKUm_rlmLT64,917
34
34
  odoo/addons/pms/models/account_bank_statement_line.py,sha256=LCdgwgPKB7zcqvdveZOw0IU3KlXGlV_7_4X17o-xEr0,2196
35
35
  odoo/addons/pms/models/account_journal.py,sha256=rKRrGg-mF8zikzoamEUpu1fA53d-GIQmXeTUmIRG5rU,3856
36
- odoo/addons/pms/models/account_move.py,sha256=3f8LH_UCw-Z7uFIGvb_onAZr6spemn_D-OkdoYSR2Gg,16717
36
+ odoo/addons/pms/models/account_move.py,sha256=C98kPfkjSdYb3CHGCwc619f7Vq-XGkpShNV9rAAuKkc,16727
37
37
  odoo/addons/pms/models/account_move_line.py,sha256=spN3q7_C1qCazAUwzJ7a0qECV0vbUzXAq-UdxaZ5sq4,7371
38
38
  odoo/addons/pms/models/account_payment.py,sha256=qEla5djD1qU5PaKKgaqQxDl9z8jBcdWl9HeyL34qQqk,8680
39
39
  odoo/addons/pms/models/folio_sale_line.py,sha256=0F5K_1OrcBDM97gcpFB9sx8gm1naiY77-1aXIa-jA04,46045
@@ -51,28 +51,28 @@ odoo/addons/pms/models/pms_availability_plan.py,sha256=fcbazTAaAU481CE46W8y7IooP
51
51
  odoo/addons/pms/models/pms_availability_plan_rule.py,sha256=DG3lNzNZiWN_Y1IcOXN_U4n8fSoaSdxFeLvEOGA3Jgk,6378
52
52
  odoo/addons/pms/models/pms_board_service.py,sha256=QwrzILTsijuPmtReLSXtaE18kCGDV2kI-TkLfyymGFk,4976
53
53
  odoo/addons/pms/models/pms_board_service_line.py,sha256=_E4SckqTskSuVlxAtYNnNCE8iAkN1_yjIhKFleaWC3I,3250
54
- odoo/addons/pms/models/pms_board_service_room_type.py,sha256=3h1MDXCciquS6K92e2AaWQ-Tr-N2reZ9BbeQ9Lqd8yU,5720
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
57
  odoo/addons/pms/models/pms_checkin_partner.py,sha256=1lF0hkwwtjQMQdEi4PKfB6f_FHt1MQ9mqw7e1qh9C38,39521
58
- odoo/addons/pms/models/pms_folio.py,sha256=c66EZnD-isnCygSN84e7dxtY2C9OI-RVuZS-d1yGuFE,106879
59
- odoo/addons/pms/models/pms_property.py,sha256=ZjEZAQFj3UeCQsDX-K1lJR0l-VgS-tEdq4BpptI1Vu8,46025
60
- odoo/addons/pms/models/pms_reservation.py,sha256=igUQmgsTosC-eFYkGj_6uJpA61S_V4MLNHneKbeEY9Q,104616
61
- odoo/addons/pms/models/pms_reservation_line.py,sha256=7wnspjZCJ9DhLVXES0UH-LGuywIbeEi81YQ4IK4vgGQ,27663
58
+ odoo/addons/pms/models/pms_folio.py,sha256=LIROpXxnBZmp6sI-n761Z5Et_E5txl4Bw-HrimpGHbM,108019
59
+ odoo/addons/pms/models/pms_property.py,sha256=v42QM9A9xULsSd770pRRUrLgPBwg46U4mtlO6kyBQeI,45832
60
+ odoo/addons/pms/models/pms_reservation.py,sha256=qNPGAUXL8BfRHQHXg_U4XGq2yjZJEz8_HxrcLYWqLCk,104476
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
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
66
66
  odoo/addons/pms/models/pms_sale_channel.py,sha256=pSvRETRwwjCUR-i2rcinpl2k_XmDij3R5YK7jTxbdYA,1653
67
- odoo/addons/pms/models/pms_service.py,sha256=ZGVxTbGuYF_AVByKgnx5d2Ij9rLOeJuCSYwnO5MXUz8,25660
68
- odoo/addons/pms/models/pms_service_line.py,sha256=GkxOF8nD3DQRAGuYzra_O-V5HZ0PIU9b6dGoYFhy3QY,8325
67
+ odoo/addons/pms/models/pms_service.py,sha256=gNFuwW_iH4TipMx_-r3TDHYVJH2H41yi-wnTer9Me5Q,25344
68
+ odoo/addons/pms/models/pms_service_line.py,sha256=Ut7tIfNZvwase1S3z1MqtitK1W7hBXqm_n6Vc2p-wWs,8331
69
69
  odoo/addons/pms/models/pms_team_member.py,sha256=jAV0VoIdK7EmAR9HL6Eq_jgWzcRq66dsAVnpqn0zCmQ,1095
70
70
  odoo/addons/pms/models/pms_ubication.py,sha256=aXrbS-VO8OGULPW-W28wd9U5N1TwOgY6H34uNWasqkY,1602
71
71
  odoo/addons/pms/models/product_pricelist.py,sha256=eim9Zg8GMFP7G2nsSxDQrRduhtwdKi-wvkQShc2vF84,7942
72
72
  odoo/addons/pms/models/product_pricelist_item.py,sha256=TOBShwU2Hh3ni2JpqydlLDmg5WJeQGcyV4l6dVIYppE,10433
73
73
  odoo/addons/pms/models/product_product.py,sha256=kN8LSMtu-nHV-EN5SSd63mBtFm0_qqFpoXT1jqeIjxA,1963
74
74
  odoo/addons/pms/models/product_template.py,sha256=IJ7zw2-GfepoOuSXV9yHAGNXwfmVlEOc0wfwuewwIYs,5255
75
- odoo/addons/pms/models/res_company.py,sha256=fyMACnR9064wlvCxWBq1Vf9ZfKe5frFvdcikrXhuVpE,2439
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
77
  odoo/addons/pms/models/res_partner.py,sha256=ruGbPxfjRxRpWa5J5bmqng8hp_GepwOJk-qVeJyOv9A,31799
78
78
  odoo/addons/pms/models/res_partner_category.py,sha256=OQvfUDY8tSk-2KeKtSLuC0pZHH5DarR8kSmqRW2bh2A,179
@@ -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=YPp9O_KCgyqb4lc_emrhvrqawAGVzrLJVuN_EUMfyhU,14070
97
+ odoo/addons/pms/static/description/index.html,sha256=gW7Rwf9PCFzPGFLMmbqx1wqFQis41EyHsdbfNe-U1zI,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
@@ -108,7 +108,7 @@ odoo/addons/pms/tests/test_pms_availability_plan_rules.py,sha256=yukdmwgYJuDy1G3
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
110
  odoo/addons/pms/tests/test_pms_checkin_partner.py,sha256=RFt5-dJqnfL1RgaFJ-6m8myQ-5SMDk8It3ApoDYK4Fw,58387
111
- odoo/addons/pms/tests/test_pms_folio.py,sha256=XcwP5-hpNpssf9bdueD5t9EyKQlGCtD4d3xatqjHfDM,52726
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
114
114
  odoo/addons/pms/tests/test_pms_folio_sale_line.py,sha256=2ulz1TfCtaANlKI3MqNWuhrOREJ90BgX1uJnhptfPug,52316
@@ -121,7 +121,7 @@ odoo/addons/pms/tests/test_pms_res_users.py,sha256=J0JBA4s_Mz4yh6huw88lfNFdZk4kr
121
121
  odoo/addons/pms/tests/test_pms_reservation.py,sha256=ikjk8ii4cRIRTaA0DvzQ8Y5UWISi11xu_BvrxeJ7sig,131487
122
122
  odoo/addons/pms/tests/test_pms_reservation_line.py,sha256=XMTYVRrJNl90GVHy9Vnct2YIehU_yeBXaFkSGhaCCz4,7547
123
123
  odoo/addons/pms/tests/test_pms_room.py,sha256=BDqylLF77gCs4au7JrWVXjcFZjlDQipS5pa_P0hmOrM,15773
124
- odoo/addons/pms/tests/test_pms_room_type.py,sha256=BL3DOzXExHL3sbVl-STPO6gxScaP3Knnr4XOKLr7zsY,33049
124
+ odoo/addons/pms/tests/test_pms_room_type.py,sha256=mjRZuWcf8dgR4STTGODC-dJEuEq7_Tn7XejSKut_GB4,35185
125
125
  odoo/addons/pms/tests/test_pms_room_type_class.py,sha256=exoUeuOCVrvycQh_A1OZDImdcrMsIqMonPRS-jLzDE4,13547
126
126
  odoo/addons/pms/tests/test_pms_sale_channel.py,sha256=K44NzC2Rye6vMYhAttplV1P5mhAChFwVMM954sPwnqc,4181
127
127
  odoo/addons/pms/tests/test_pms_service.py,sha256=Hx_s7dzygxjR8uxCcrCy_i0g3pOsYTaZlNyEGMt2SaA,38679
@@ -152,9 +152,9 @@ odoo/addons/pms/views/pms_board_service_room_type_views.xml,sha256=GQHsAROcA1crZ
152
152
  odoo/addons/pms/views/pms_board_service_views.xml,sha256=3Vy3p87HgnvjAyC1M8GZma_YVEzEmRRBS8K5EYX_Rnc,2293
153
153
  odoo/addons/pms/views/pms_cancelation_rule_views.xml,sha256=dyyvG86ti1KGRi8q9qf_RUDWbtiomn08n7po2overUs,3127
154
154
  odoo/addons/pms/views/pms_checkin_partner_views.xml,sha256=-BudQeFfeo8No_uDwdsmee7jEWiGNFHEDdAbrr0gdM4,30965
155
- odoo/addons/pms/views/pms_folio_views.xml,sha256=FydsbgYWQyqgr3Qe8EQMkYfVZHXi0nJa3-YhvOrDA3A,43299
156
- odoo/addons/pms/views/pms_property_views.xml,sha256=Gfz72W52Ldce6WJOQRdU0MQD3tQH-Iqh_LAbMF-dLi8,14703
157
- odoo/addons/pms/views/pms_reservation_views.xml,sha256=kEwRpwA73Bd9GOseA_YfJRu_xHYAE9D74PhvCHBWJBI,58523
155
+ odoo/addons/pms/views/pms_folio_views.xml,sha256=g-Lzqs3lodmx8GazUlTi38S9DCwCeZvM62925wST5iQ,42942
156
+ odoo/addons/pms/views/pms_property_views.xml,sha256=OB4guPEs6ckD57LU6vD60MD6lNNcka6j4rJnN-57ciQ,14781
157
+ odoo/addons/pms/views/pms_reservation_views.xml,sha256=GmOng51r7jmPJQKLc85vMS62zWStm8hxqF8CDUDQsPE,59390
158
158
  odoo/addons/pms/views/pms_room_closure_reason_views.xml,sha256=Z5UvC02tvgS9TRI0zTG7J83_MKSDOw47tuGSCdMwuJ8,1643
159
159
  odoo/addons/pms/views/pms_room_type_class_views.xml,sha256=kzJHj6Bze6jjGeqwSbFEq-TSTgadx1p6bQgryRx3Wms,2763
160
160
  odoo/addons/pms/views/pms_room_type_views.xml,sha256=v0yKCLjPTObsD3lBgojiPzNTYPQOFcN9TPfMpg2m-fE,5848
@@ -172,9 +172,9 @@ odoo/addons/pms/views/res_partner_category.xml,sha256=PQ5bKkTCH0vCPdSK3SVAWJB4-F
172
172
  odoo/addons/pms/views/res_partner_id_category_views.xml,sha256=x5wngO1hD-idPO4HwZpwVQ_Xds7F8LWoaDo89g8D53M,1185
173
173
  odoo/addons/pms/views/res_partner_id_number_views.xml,sha256=I8SJAFC-B0z8vRWJYR0oZ53OBbkS8xeJ1Vbu-O00R18,1117
174
174
  odoo/addons/pms/views/res_partner_views.xml,sha256=MjOCL5SiavJq-Kk-5iqCf-aR0OTsii6Y-h_6WmpAJ70,8695
175
- odoo/addons/pms/views/res_users_views.xml,sha256=rRH9A0xOc-YV6wweFKM0bBhOhtVEKdWfiJhUdE_hBD0,928
175
+ odoo/addons/pms/views/res_users_views.xml,sha256=bkNhDj75dnK93YnCfl1ELNvobE-Xhg3SoiFZKn5OByc,927
176
176
  odoo/addons/pms/views/reservation_portal_templates.xml,sha256=i6Bz8mrMHbzy1vx9AbqG4uwr91OtX6cX37TZVLzS3eE,13530
177
- odoo/addons/pms/views/traveller_report_template.xml,sha256=whP4HiuJ4kcM_mkxpV7p6n8zVFiE_9e9AaOFdYBWF_Q,15948
177
+ odoo/addons/pms/views/traveller_report_template.xml,sha256=2MkRo0TsmmR-3vZvg_X4Hnad3QBLN6IV6SLmS8Qggec,15466
178
178
  odoo/addons/pms/wizards/__init__.py,sha256=GW9sc4cVPs-3swCnUa8pOdcmdQbGzKDrhpSxALLaZ9A,375
179
179
  odoo/addons/pms/wizards/folio_make_invoice_advance.py,sha256=37oO_pj3QHrj4VxVpgzsvoNuPJiL-Al9IzPRZXOGjCc,13354
180
180
  odoo/addons/pms/wizards/folio_make_invoice_advance_views.xml,sha256=5lWRyW7C_h2y6lkNG2gled_l40eUP2hnjqjA-tQfp_A,6308
@@ -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.15.0.10.dist-info/METADATA,sha256=CIRZqgnotsVZQZirrTepV8nL7S4abQ8Z7rD0y_uZn_s,5026
200
- odoo_addon_pms-16.0.0.15.0.10.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
201
- odoo_addon_pms-16.0.0.15.0.10.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
202
- odoo_addon_pms-16.0.0.15.0.10.dist-info/RECORD,,
199
+ odoo_addon_pms-16.0.0.24.0.dist-info/METADATA,sha256=DlY8vwzNfabDrvQYC_jET2O8sNMkSe8cCYkYbwHLiLQ,5023
200
+ odoo_addon_pms-16.0.0.24.0.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
201
+ odoo_addon_pms-16.0.0.24.0.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
202
+ odoo_addon_pms-16.0.0.24.0.dist-info/RECORD,,