odoo-addon-pms 16.0.2.3.0__py3-none-any.whl → 16.0.2.5.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:b04a74ba87a4c58b7d10f993ec087d02735ac0ad109da0714584f498dc5ce853
14
+ !! source digest: sha256:91774a4d1ecfe9c726ac0f4341c1f39b78535f68ad335321ef941f95c455eeb1
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.2.3.0",
7
+ "version": "16.0.2.5.0",
8
8
  "development_status": "Beta",
9
9
  "category": "Generic Modules/Property Management System",
10
10
  "website": "https://github.com/OCA/pms",
@@ -1039,7 +1039,7 @@ class FolioSaleLine(models.Model):
1039
1039
  result = super().write(values)
1040
1040
  return result
1041
1041
 
1042
- def _prepare_invoice_line(self, qty=False, **optional_values):
1042
+ def _prepare_invoice_line(self, qty=False, invoice_fpos=None, **optional_values):
1043
1043
  """
1044
1044
  Prepare the dict of values to create the new invoice line for a folio sale line.
1045
1045
 
@@ -1048,6 +1048,11 @@ class FolioSaleLine(models.Model):
1048
1048
  should be added to the returned invoice line
1049
1049
  """
1050
1050
  self.ensure_one()
1051
+ taxes = invoice_fpos.map_tax(
1052
+ self.product_id.taxes_id.filtered(
1053
+ lambda t, r=self.folio_id: t.company_id == r.env.company
1054
+ )
1055
+ )
1051
1056
  if self.is_downpayment:
1052
1057
  downpayment_invoice = self.folio_id.move_ids.filtered(
1053
1058
  lambda x: x.payment_state != "reversed"
@@ -1067,7 +1072,7 @@ class FolioSaleLine(models.Model):
1067
1072
  "quantity": qty if qty else self.qty_to_invoice,
1068
1073
  "discount": self.discount,
1069
1074
  "price_unit": self.price_unit,
1070
- "tax_ids": [(6, 0, self.tax_ids.ids)],
1075
+ "tax_ids": [(6, 0, taxes.ids)],
1071
1076
  # "analytic_account_id": self.folio_id.analytic_account_id.id,
1072
1077
  # "analytic_tag_ids": [(6, 0, self.analytic_tag_ids.ids)],
1073
1078
  "folio_line_ids": [(6, 0, [self.id])],
@@ -498,25 +498,43 @@ class PmsCheckinPartner(models.Model):
498
498
  _("State and country of residence do not match")
499
499
  )
500
500
 
501
- def set_partner_address(self):
501
+ def set_partner_address(self, residence_vals=None):
502
502
  """
503
503
  Only sets the checkin.partner address in the associated partner if
504
- the partner don't have any address field filled.
504
+ the partner has no address yet or the changes do not conflict with
505
+ the partner's address.
505
506
  """
506
- for record in self:
507
- if record.partner_id:
508
- residence_vals = {
509
- "street": record.street,
510
- "street2": record.street2,
511
- "zip": record.zip,
512
- "city": record.city,
513
- "country_id": record.country_id.id,
514
- "state_id": record.state_id.id,
515
- }
516
- if any(residence_vals.values()):
517
- address_fields = residence_vals.keys()
518
- if not any(record.partner_id[field] for field in address_fields):
519
- record.partner_id.write(residence_vals)
507
+ self.ensure_one()
508
+ if not self.partner_id:
509
+ return
510
+ address_fields = {"street", "street2", "zip", "city", "country_id", "state_id"}
511
+ # If it comes form create, we take the values from the checkin.partner
512
+ if residence_vals is None:
513
+ residence_vals = {
514
+ field: self[field].id if hasattr(self[field], "id") else self[field]
515
+ for field in address_fields
516
+ }
517
+
518
+ if any(residence_vals.values()):
519
+ address_fields = residence_vals.keys()
520
+ if any(
521
+ (
522
+ self.partner_id[field].id
523
+ if hasattr(self.partner_id[field], "id")
524
+ else self.partner_id[field]
525
+ )
526
+ != residence_vals.get(field)
527
+ for field in address_fields
528
+ if self.partner_id[field]
529
+ ):
530
+ return
531
+ vals_to_write = {
532
+ field: residence_vals[field]
533
+ for field in address_fields
534
+ if residence_vals.get(field) and not self.partner_id[field]
535
+ }
536
+ if vals_to_write:
537
+ self.partner_id.write(vals_to_write)
520
538
 
521
539
  def set_partner_id(self):
522
540
  for record in self:
@@ -563,7 +581,8 @@ class PmsCheckinPartner(models.Model):
563
581
  records_without_partner = records.filtered(lambda r: not r.partner_id)
564
582
  if records_without_partner:
565
583
  records_without_partner.set_partner_id()
566
- records.set_partner_address()
584
+ for record in records:
585
+ record.set_partner_address()
567
586
  return records
568
587
 
569
588
  def write(self, vals):
@@ -573,11 +592,14 @@ class PmsCheckinPartner(models.Model):
573
592
  tourist_tax_services_cmds = reservation._compute_tourist_tax_lines()
574
593
  if tourist_tax_services_cmds:
575
594
  reservation.write({"service_ids": tourist_tax_services_cmds})
576
- records_without_partner = self.filtered(lambda r: not r.partner_id)
577
- if records_without_partner:
578
- records_without_partner.set_partner_id()
579
-
580
- self.set_partner_address()
595
+ if not self._context.get("skip_set_partner_data"):
596
+ records_without_partner = self.filtered(lambda r: not r.partner_id)
597
+ if records_without_partner:
598
+ records_without_partner.with_context(
599
+ skip_set_partner_data=True
600
+ ).set_partner_id()
601
+ for record in self:
602
+ record.set_partner_address()
581
603
  return res
582
604
 
583
605
  def unlink(self):
@@ -647,6 +647,10 @@ class PmsFolio(models.Model):
647
647
  invoice_vals = folio._prepare_invoice(
648
648
  partner_invoice_id=group["partner_id"]
649
649
  )
650
+ invoice_fpos_id = invoice_vals.get("fiscal_position_id")
651
+ invoice_fpos = self.env["account.fiscal.position"].browse(
652
+ invoice_fpos_id
653
+ )
650
654
  # Invoice line values (keep only necessary sections).
651
655
  current_section_vals = None
652
656
  invoice_lines_vals = []
@@ -654,7 +658,8 @@ class PmsFolio(models.Model):
654
658
  if line.display_type == "line_section":
655
659
  current_section_vals = line._prepare_invoice_line(
656
660
  sequence=invoice_item_sequence
657
- + folio.sale_line_ids.ids.index(line.id)
661
+ + folio.sale_line_ids.ids.index(line.id),
662
+ invoice_fpos=invoice_fpos,
658
663
  )
659
664
  continue
660
665
  if line.display_type != "line_note" and float_is_zero(
@@ -676,6 +681,7 @@ class PmsFolio(models.Model):
676
681
  sequence=invoice_item_sequence
677
682
  + folio.sale_line_ids.ids.index(line.id),
678
683
  qty=lines_to_invoice[line.id],
684
+ invoice_fpos=invoice_fpos,
679
685
  )
680
686
  invoice_lines_vals.append(prepared_line)
681
687
 
@@ -693,7 +699,8 @@ class PmsFolio(models.Model):
693
699
  invoice_item_sequence += 1
694
700
  invoice_down_payment_vals = down_payment._prepare_invoice_line(
695
701
  sequence=invoice_item_sequence
696
- + folio.sale_line_ids.ids.index(down_payment.id)
702
+ + folio.sale_line_ids.ids.index(down_payment.id),
703
+ invoice_fpos=invoice_fpos,
697
704
  )
698
705
  invoice_lines_vals.append(invoice_down_payment_vals)
699
706
 
@@ -2101,6 +2108,15 @@ class PmsFolio(models.Model):
2101
2108
  (making sure to call super() to establish a clean extension chain).
2102
2109
  """
2103
2110
  self.ensure_one()
2111
+ if partner_invoice_id and partner_invoice_id != self.partner_id.id:
2112
+ partner = self.env["res.partner"].browse(partner_invoice_id)
2113
+ fiscal_position = (
2114
+ self.env["account.fiscal.position"]
2115
+ .with_company(self.company_id)
2116
+ ._get_fiscal_position(partner)
2117
+ )
2118
+ else:
2119
+ fiscal_position = self.fiscal_position_id
2104
2120
  journal = self.pms_property_id._get_folio_default_journal(
2105
2121
  partner_invoice_id=partner_invoice_id,
2106
2122
  room_ids=self.reservation_ids.mapped("reservation_line_ids.room_id.id"),
@@ -2148,7 +2164,7 @@ class PmsFolio(models.Model):
2148
2164
  "invoice_line_ids": [],
2149
2165
  "company_id": self.company_id.id,
2150
2166
  "payment_reference": self.name,
2151
- "fiscal_position_id": self.fiscal_position_id.id,
2167
+ "fiscal_position_id": fiscal_position.id,
2152
2168
  }
2153
2169
  return invoice_vals
2154
2170
 
@@ -924,6 +924,7 @@ class PmsProperty(models.Model):
924
924
  )
925
925
  folio.sudo().message_post(body=mens)
926
926
  raise ValidationError(mens)
927
+ invoice_fpos = invoice.fiscal_position_id
927
928
  for downpayment in downpayments.filtered(
928
929
  lambda d, i=invoice: d.default_invoice_to == i.partner_id
929
930
  ):
@@ -933,6 +934,7 @@ class PmsProperty(models.Model):
933
934
  invoice_down_payment_vals = downpayment._prepare_invoice_line(
934
935
  sequence=max(invoice.invoice_line_ids.mapped("sequence"))
935
936
  + 1,
937
+ invoice_fpos=invoice_fpos,
936
938
  )
937
939
  invoice.write(
938
940
  {"invoice_line_ids": [(0, 0, invoice_down_payment_vals)]}
@@ -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:b04a74ba87a4c58b7d10f993ec087d02735ac0ad109da0714584f498dc5ce853
375
+ !! source digest: sha256:91774a4d1ecfe9c726ac0f4341c1f39b78535f68ad335321ef941f95c455eeb1
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
@@ -1204,3 +1204,141 @@ class TestPmsCheckinPartner(TestPms):
1204
1204
  self.partner_id[key],
1205
1205
  "The value of " + key + " is not correctly established",
1206
1206
  )
1207
+
1208
+ def test_partner_without_address_gets_checkin_address(self):
1209
+ """Test that a partner without an address gets the address from the
1210
+ checkin partner"""
1211
+ partner = self.env["res.partner"].create(
1212
+ {
1213
+ "firstname": "Test",
1214
+ "lastname": "Partner",
1215
+ }
1216
+ )
1217
+ checkin_partner = self.env["pms.checkin.partner"].create(
1218
+ {
1219
+ "partner_id": partner.id,
1220
+ "reservation_id": self.reservation_1.id,
1221
+ }
1222
+ )
1223
+ checkin_partner.write(
1224
+ {
1225
+ "street": "test",
1226
+ "city": "Madrid",
1227
+ "country_id": self.env.ref("base.es").id,
1228
+ }
1229
+ )
1230
+ self.assertEqual(partner.street, "test")
1231
+ self.assertEqual(partner.city, "Madrid")
1232
+ self.assertEqual(partner.country_id, self.env.ref("base.es"))
1233
+
1234
+ def test_partner_with_partial_address_gets_checkin_address(self):
1235
+ """Test that a partner with a partial address gets the missing fields
1236
+ from the checkin partner"""
1237
+ partner = self.env["res.partner"].create(
1238
+ {
1239
+ "firstname": "Test",
1240
+ "lastname": "Partner",
1241
+ "street": "existing street",
1242
+ }
1243
+ )
1244
+ checkin_partner = self.env["pms.checkin.partner"].create(
1245
+ {
1246
+ "partner_id": partner.id,
1247
+ "reservation_id": self.reservation_1.id,
1248
+ }
1249
+ )
1250
+ checkin_partner.write(
1251
+ {
1252
+ "city": "Madrid",
1253
+ "country_id": self.env.ref("base.es").id,
1254
+ }
1255
+ )
1256
+ self.assertEqual(partner.street, "existing street")
1257
+ self.assertEqual(partner.city, "Madrid")
1258
+ self.assertEqual(partner.country_id, self.env.ref("base.es"))
1259
+
1260
+ def test_partner_with_same_address_allows_new_fields(self):
1261
+ """Test that a partner with the same address allows updating address
1262
+ fields who are empty from the checkin partner"""
1263
+ partner = self.env["res.partner"].create(
1264
+ {
1265
+ "firstname": "Test",
1266
+ "lastname": "Partner",
1267
+ "street": "existing street",
1268
+ }
1269
+ )
1270
+ checkin_partner = self.env["pms.checkin.partner"].create(
1271
+ {
1272
+ "partner_id": partner.id,
1273
+ "reservation_id": self.reservation_1.id,
1274
+ }
1275
+ )
1276
+ checkin_partner.write(
1277
+ {
1278
+ "street": "existing street",
1279
+ "city": "Madrid",
1280
+ "country_id": self.env.ref("base.es").id,
1281
+ }
1282
+ )
1283
+ self.assertEqual(partner.street, "existing street")
1284
+ self.assertEqual(partner.city, "Madrid")
1285
+ self.assertEqual(partner.country_id, self.env.ref("base.es"))
1286
+
1287
+ def test_partner_address_used_over_checkin_address(self):
1288
+ """Test that a partner with a full address blocks updating the
1289
+ address from the checkin partner"""
1290
+ partner = self.env["res.partner"].create(
1291
+ {
1292
+ "firstname": "Test",
1293
+ "lastname": "Partner",
1294
+ "street": "existing street",
1295
+ "city": "Existing city",
1296
+ "country_id": self.env.ref("base.us").id,
1297
+ }
1298
+ )
1299
+ checkin_partner = self.env["pms.checkin.partner"].create(
1300
+ {
1301
+ "partner_id": partner.id,
1302
+ "reservation_id": self.reservation_1.id,
1303
+ }
1304
+ )
1305
+ checkin_partner.write(
1306
+ {
1307
+ "street": "test",
1308
+ "city": "Madrid",
1309
+ "country_id": self.env.ref("base.es").id,
1310
+ }
1311
+ )
1312
+ self.assertEqual(partner.street, "existing street")
1313
+ self.assertEqual(partner.city, "Existing city")
1314
+ self.assertEqual(partner.country_id, self.env.ref("base.us"))
1315
+
1316
+ def test_partner_with_different_many2one_address_field_blocks_update(self):
1317
+ """
1318
+ Test that a partner with a different country blocks updating
1319
+ the address from the checkin partner.
1320
+
1321
+ """
1322
+ partner = self.env["res.partner"].create(
1323
+ {
1324
+ "firstname": "Test",
1325
+ "lastname": "Partner",
1326
+ "country_id": self.env.ref("base.us").id,
1327
+ }
1328
+ )
1329
+ checkin_partner = self.env["pms.checkin.partner"].create(
1330
+ {
1331
+ "partner_id": partner.id,
1332
+ "reservation_id": self.reservation_1.id,
1333
+ }
1334
+ )
1335
+ checkin_partner.write(
1336
+ {
1337
+ "street": "test",
1338
+ "city": "Madrid",
1339
+ "country_id": self.env.ref("base.es").id,
1340
+ }
1341
+ )
1342
+ self.assertEqual(partner.country_id, self.env.ref("base.us"))
1343
+ self.assertFalse(partner.street)
1344
+ self.assertFalse(partner.city)
@@ -156,15 +156,28 @@ class FolioAdvancePaymentInv(models.TransientModel):
156
156
 
157
157
  def _prepare_invoice_values(self, order, name, amount, line):
158
158
  partner_id = (
159
- self.partner_invoice_id.id
160
- if self.partner_invoice_id
161
- else order.partner_invoice_id.id
159
+ self.partner_invoice_id if self.partner_invoice_id else order.partner_id
162
160
  )
161
+ taxes = line.tax_ids
162
+ if partner_id == order.partner_id:
163
+ fiscal_position = order.fiscal_position_id
164
+ else:
165
+ fiscal_position = (
166
+ self.env["account.fiscal.position"]
167
+ .with_company(order.company_id)
168
+ ._get_fiscal_position(partner_id)
169
+ )
170
+ product = line.product_id
171
+ taxes = fiscal_position.map_tax(
172
+ product.taxes_id.filtered(
173
+ lambda t, r=order: t.company_id == r.env.company
174
+ )
175
+ )
163
176
  invoice_vals = {
164
177
  "ref": order.name,
165
178
  "move_type": "out_invoice",
166
179
  "journal_id": order.pms_property_id._get_folio_default_journal(
167
- partner_invoice_id=partner_id,
180
+ partner_invoice_id=partner_id.id,
168
181
  room_ids=order.mapped(
169
182
  "reservation_ids.reservation_line_ids.room_id.id"
170
183
  ),
@@ -172,14 +185,12 @@ class FolioAdvancePaymentInv(models.TransientModel):
172
185
  "invoice_origin": order.name,
173
186
  "invoice_user_id": order.user_id.id,
174
187
  "narration": order.note,
175
- "partner_id": partner_id,
188
+ "partner_id": partner_id.id,
176
189
  "currency_id": order.pricelist_id.currency_id.id,
177
190
  "folio_ids": [(6, 0, order.ids)],
178
191
  "payment_reference": order.reference,
179
192
  "invoice_payment_term_id": order.payment_term_id.id,
180
- "fiscal_position_id": self.env["res.partner"]
181
- .browse(partner_id)
182
- .property_account_position_id.id,
193
+ "fiscal_position_id": fiscal_position.id,
183
194
  # 'campaign_id': order.campaign_id.id,
184
195
  # 'medium_id': order.medium_id.id,
185
196
  # 'source_id': order.source_id.id,
@@ -193,7 +204,7 @@ class FolioAdvancePaymentInv(models.TransientModel):
193
204
  "quantity": 1.0,
194
205
  "product_id": self.product_id.id,
195
206
  "product_uom_id": line.product_uom.id,
196
- "tax_ids": [(6, 0, line.tax_ids.ids)],
207
+ "tax_ids": [(6, 0, taxes.ids)],
197
208
  "folio_line_ids": [(6, 0, [line.id])],
198
209
  # "analytic_tag_ids": [(6, 0, line.analytic_tag_ids.ids)],
199
210
  # "analytic_account_id": order.analytic_account_id.id or False,
@@ -213,8 +224,6 @@ class FolioAdvancePaymentInv(models.TransientModel):
213
224
  amount, name = self._get_advance_details(order)
214
225
 
215
226
  invoice_vals = self._prepare_invoice_values(order, name, amount, line)
216
- if order.fiscal_position_id:
217
- invoice_vals["fiscal_position_id"] = order.fiscal_position_id.id
218
227
  invoice = (
219
228
  self.env["account.move"].sudo().create(invoice_vals).with_user(self.env.uid)
220
229
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: odoo-addon-pms
3
- Version: 16.0.2.3.0
3
+ Version: 16.0.2.5.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)
@@ -35,7 +35,7 @@ PMS (Property Management System)
35
35
  !! This file is generated by oca-gen-addon-readme !!
36
36
  !! changes will be overwritten. !!
37
37
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
38
- !! source digest: sha256:b04a74ba87a4c58b7d10f993ec087d02735ac0ad109da0714584f498dc5ce853
38
+ !! source digest: sha256:91774a4d1ecfe9c726ac0f4341c1f39b78535f68ad335321ef941f95c455eeb1
39
39
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
40
40
 
41
41
  .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
@@ -1,6 +1,6 @@
1
- odoo/addons/pms/README.rst,sha256=KI3pGRscR4Ps5dTtyFN_1UgD0ZSc8_1hVJOBxY3C5uw,3898
1
+ odoo/addons/pms/README.rst,sha256=rEvoJoBJabfozNWVSIwRuKyQUPZRVK4vryjIjfcijuM,3898
2
2
  odoo/addons/pms/__init__.py,sha256=uCUbRxtCubFHrz65XPTEmSu2XU6tpojVZ8MYot9bPMg,171
3
- odoo/addons/pms/__manifest__.py,sha256=SraaDKHlVvF2K2DLmaGEe_PTEB09wl_ML1kNEZU3vPc,4723
3
+ odoo/addons/pms/__manifest__.py,sha256=b2_6FAM2I62dR6rKZym3WrJy_B2YvK4v5saf8W3xLWE,4723
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
@@ -37,7 +37,7 @@ odoo/addons/pms/models/account_journal.py,sha256=rKRrGg-mF8zikzoamEUpu1fA53d-GIQ
37
37
  odoo/addons/pms/models/account_move.py,sha256=C98kPfkjSdYb3CHGCwc619f7Vq-XGkpShNV9rAAuKkc,16727
38
38
  odoo/addons/pms/models/account_move_line.py,sha256=SGjWLG9sbe-mo1eiqA1KMGK6GUHCayLGYUBF_nt3xRg,7429
39
39
  odoo/addons/pms/models/account_payment.py,sha256=qEla5djD1qU5PaKKgaqQxDl9z8jBcdWl9HeyL34qQqk,8680
40
- odoo/addons/pms/models/folio_sale_line.py,sha256=0F5K_1OrcBDM97gcpFB9sx8gm1naiY77-1aXIa-jA04,46045
40
+ odoo/addons/pms/models/folio_sale_line.py,sha256=bQfhWlGy3poyatGy8QJuQgYe_iFbxafJ1X6qUbUJR4E,46239
41
41
  odoo/addons/pms/models/ir_config_parameter.py,sha256=vPqpdoYuQen-PbWwubXhwRnvIBA73UKO7YL3nyZg2Lg,732
42
42
  odoo/addons/pms/models/ir_http.py,sha256=kTKKOGv4equREzHofRVNColahV71VD2rurJJacSAsAI,1877
43
43
  odoo/addons/pms/models/ir_pms_property.py,sha256=OliJaVyh0OVY_2T491aooo6sctQhtkFd17QwP8YsEIs,5013
@@ -55,9 +55,9 @@ odoo/addons/pms/models/pms_board_service_line.py,sha256=_E4SckqTskSuVlxAtYNnNCE8
55
55
  odoo/addons/pms/models/pms_board_service_room_type.py,sha256=PbDrVf50bwN49yKQDi8Sf92kxg0X3IHRLgfUzylSvt4,5783
56
56
  odoo/addons/pms/models/pms_board_service_room_type_line.py,sha256=Xt78_qJPn4wIxiQaloPBKpIAIncBY0bjIQ6FdsxMQqk,2028
57
57
  odoo/addons/pms/models/pms_cancelation_rule.py,sha256=G6IoM_h4XYJUqx8SlgFB7lPmwy7LBefJ4Gzreg0QUCA,3038
58
- odoo/addons/pms/models/pms_checkin_partner.py,sha256=-5IKBWzxpdqGtC3XHCata0XWd9wqWJchcfYYjJyHR9k,27996
59
- odoo/addons/pms/models/pms_folio.py,sha256=zgvXy8b5VzW3xol4B9tLsBedq1xzNMLt6EaRv8-4ciQ,107816
60
- odoo/addons/pms/models/pms_property.py,sha256=v42QM9A9xULsSd770pRRUrLgPBwg46U4mtlO6kyBQeI,45832
58
+ odoo/addons/pms/models/pms_checkin_partner.py,sha256=tc0g4yksqArmK9-OiIWiR4rIT0WxapmirsS5eMsDF-g,28856
59
+ odoo/addons/pms/models/pms_folio.py,sha256=wcy6yA49_2pj3s-ccHjSSuHwRePLaVFFkJXPVg8RxlE,108586
60
+ odoo/addons/pms/models/pms_property.py,sha256=-9dk7BHKUNaN_ms1fSzktPcHP0ofzGhRbNk3uZdjBsI,45949
61
61
  odoo/addons/pms/models/pms_reservation.py,sha256=8D0SNxiULBVzzbA8syc6aSsXpXE7GNIZIgRXY6bUsGo,107774
62
62
  odoo/addons/pms/models/pms_reservation_line.py,sha256=HIVtAHiDT4GU9c1A9r2xuuCViqDZen1qJAIQBSR0ukE,27669
63
63
  odoo/addons/pms/models/pms_room.py,sha256=CzeqXDrsDnYaGqRaw_LtWUIxJCdv4qYDpyBzaUpwbv4,12092
@@ -93,7 +93,7 @@ odoo/addons/pms/security/ir.model.access.csv,sha256=yLqMoKZR8eAuUWOm9Fys0JCeCZlo
93
93
  odoo/addons/pms/security/pms_security.xml,sha256=ojrBeQtkn1D7EPnaVLRf4hT60JB4K2ma00hr9vv-LTo,13646
94
94
  odoo/addons/pms/static/description/avatar.png,sha256=CWIs64cZDPrrZVmRCyV_cD_h03lWUoQikvCllgrsELY,4370
95
95
  odoo/addons/pms/static/description/icon.png,sha256=_y1zF9kLND2nIpLMurvkkyiMfUq53JN26oN7_h-PfH0,24626
96
- odoo/addons/pms/static/description/index.html,sha256=OW2RukCMYc7LlrHM0-tHImDMfw0L19OvP7_dT7zAsHc,14070
96
+ odoo/addons/pms/static/description/index.html,sha256=09-gIOYHo7pdT9JfUdYOs1YUbkz5oiP2bXHAELM3ugY,14070
97
97
  odoo/addons/pms/static/img/icon-door.svg,sha256=Vt62k1RKXIt7zha9_uZJKPrlgdEUto9d2q_IEbxRigI,1514
98
98
  odoo/addons/pms/static/img/icon-mail.svg,sha256=H0NQ5fACCKoJ7KLfPQvaHMwhD2qNk6-T7FEkoW9r0Vo,950
99
99
  odoo/addons/pms/static/img/icon-phone.svg,sha256=T03z7if6caEBtf_F_3HnRi6AgNeZxbgCGWeGzMMjZlw,1340
@@ -106,7 +106,7 @@ odoo/addons/pms/tests/test_automated_mails.py,sha256=kHGbqNRLtTif-2wZzep3ATMa-f8
106
106
  odoo/addons/pms/tests/test_pms_availability_plan_rules.py,sha256=yukdmwgYJuDy1G3GuqHgkMOtUtfyzBoR2RrP1wzH_0s,23516
107
107
  odoo/addons/pms/tests/test_pms_board_service.py,sha256=GEXYxLAEj4QG8rZjg-PPZMEwEE2Xe17JibjodCILclA,15364
108
108
  odoo/addons/pms/tests/test_pms_booking_engine.py,sha256=2Rxxl6NWI6w3ZBBu8BNEGKyQlDrvipO_JCVtyW8q3A0,32268
109
- odoo/addons/pms/tests/test_pms_checkin_partner.py,sha256=YWV7P-t0t9JhcuwjtSUqHFbr_WpR0LbjJIV9Gvu99yc,41538
109
+ odoo/addons/pms/tests/test_pms_checkin_partner.py,sha256=9iv5Jre8PYsCNYupIY07AFowty3xage4jPd1YksXQxg,46431
110
110
  odoo/addons/pms/tests/test_pms_folio.py,sha256=cld85Hfi3h7TJ5TP1ZmWjoKnKRJc3YWvlBBuN7CkOVQ,55345
111
111
  odoo/addons/pms/tests/test_pms_folio_invoice.py,sha256=BcrPyBWfjCWy5YTdh4RUEaKLS2UHQv1WJTMbq2vhyeg,35219
112
112
  odoo/addons/pms/tests/test_pms_folio_prices.py,sha256=tBqz6AyowOMStRM3-trLbkLpO3RoFvq3_U6zO3pxJQM,288
@@ -173,7 +173,7 @@ odoo/addons/pms/views/res_users_views.xml,sha256=bkNhDj75dnK93YnCfl1ELNvobE-Xhg3
173
173
  odoo/addons/pms/views/reservation_portal_templates.xml,sha256=i6Bz8mrMHbzy1vx9AbqG4uwr91OtX6cX37TZVLzS3eE,13530
174
174
  odoo/addons/pms/views/traveller_report_template.xml,sha256=3lq8ozeWAd03IFurWsGbOMAxoPfTXgsOOIDSnWOTm80,15334
175
175
  odoo/addons/pms/wizards/__init__.py,sha256=GW9sc4cVPs-3swCnUa8pOdcmdQbGzKDrhpSxALLaZ9A,375
176
- odoo/addons/pms/wizards/folio_make_invoice_advance.py,sha256=37oO_pj3QHrj4VxVpgzsvoNuPJiL-Al9IzPRZXOGjCc,13354
176
+ odoo/addons/pms/wizards/folio_make_invoice_advance.py,sha256=VvZ5vH1pc5O4hKksdWDeFSRHCSTTQGlEafoDRJAx6Cs,13683
177
177
  odoo/addons/pms/wizards/folio_make_invoice_advance_views.xml,sha256=5lWRyW7C_h2y6lkNG2gled_l40eUP2hnjqjA-tQfp_A,6308
178
178
  odoo/addons/pms/wizards/folio_payment_link.py,sha256=Z_2JqwneS4fnobiq70ftyX0sq4S3OF5YyAVYttwimZs,1816
179
179
  odoo/addons/pms/wizards/folio_payment_link_views.xml,sha256=i7bHNWlz73IbA6LKPzb7DGsomOZXAg43ZRWehPtdL5E,546
@@ -193,7 +193,7 @@ odoo/addons/pms/wizards/wizard_several_partners.py,sha256=nOYHInUyT7bV4opyk03_i-
193
193
  odoo/addons/pms/wizards/wizard_several_partners.xml,sha256=tuSIYJiqN_EprlwI7cBrteMPblHoybcHBDrHO1di0DY,1382
194
194
  odoo/addons/pms/wizards/wizard_split_join_swap_reservation.py,sha256=D0AFrimn4lViWSnQ0sgM1msVniUudbgqvS0hRIBkXfQ,13751
195
195
  odoo/addons/pms/wizards/wizard_split_join_swap_reservation.xml,sha256=MDyXIdQfumI7WnXqO5E4fCqM4BW32CIwS97tF66gBy8,5940
196
- odoo_addon_pms-16.0.2.3.0.dist-info/METADATA,sha256=4tUmiUpRqz8dpHxhnRF8BXyJwfl0aEV7lKdUNlwmUGI,4917
197
- odoo_addon_pms-16.0.2.3.0.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
198
- odoo_addon_pms-16.0.2.3.0.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
199
- odoo_addon_pms-16.0.2.3.0.dist-info/RECORD,,
196
+ odoo_addon_pms-16.0.2.5.0.dist-info/METADATA,sha256=YTH_dajCCPwUUReZDmkVmy4AGDmbzuq3CVg8Zrd2GWE,4917
197
+ odoo_addon_pms-16.0.2.5.0.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
198
+ odoo_addon_pms-16.0.2.5.0.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
199
+ odoo_addon_pms-16.0.2.5.0.dist-info/RECORD,,