odoo-addon-pms 16.0.0.29.0__py3-none-any.whl → 16.0.1.1.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.
- odoo/addons/pms/README.rst +1 -1
- odoo/addons/pms/__manifest__.py +1 -1
- odoo/addons/pms/i18n/de.po +6 -10
- odoo/addons/pms/i18n/es.po +6 -10
- odoo/addons/pms/i18n/it.po +0 -10
- odoo/addons/pms/i18n/pms.pot +18 -126
- odoo/addons/pms/migrations/16.0.1.0.0/pre-migration.py +48 -0
- odoo/addons/pms/models/pms_checkin_partner.py +87 -74
- odoo/addons/pms/models/pms_folio.py +0 -1
- odoo/addons/pms/models/pms_reservation.py +0 -1
- odoo/addons/pms/models/res_partner.py +0 -293
- odoo/addons/pms/static/description/index.html +1 -1
- odoo/addons/pms/tests/test_pms_checkin_partner.py +10 -10
- odoo/addons/pms/views/pms_checkin_partner_views.xml +11 -11
- odoo/addons/pms/views/res_partner_views.xml +0 -39
- {odoo_addon_pms-16.0.0.29.0.dist-info → odoo_addon_pms-16.0.1.1.0.dist-info}/METADATA +2 -2
- {odoo_addon_pms-16.0.0.29.0.dist-info → odoo_addon_pms-16.0.1.1.0.dist-info}/RECORD +19 -18
- {odoo_addon_pms-16.0.0.29.0.dist-info → odoo_addon_pms-16.0.1.1.0.dist-info}/WHEEL +0 -0
- {odoo_addon_pms-16.0.0.29.0.dist-info → odoo_addon_pms-16.0.1.1.0.dist-info}/top_level.txt +0 -0
|
@@ -145,51 +145,47 @@ class PmsCheckinPartner(models.Model):
|
|
|
145
145
|
comodel_name="res.country",
|
|
146
146
|
inverse=lambda r: r._inverse_partner_fields("nationality_id", "nationality_id"),
|
|
147
147
|
)
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
help="Street of the guest's residence",
|
|
148
|
+
street = fields.Char(
|
|
149
|
+
help="Street of the guest",
|
|
151
150
|
readonly=False,
|
|
152
151
|
store=True,
|
|
153
|
-
compute="
|
|
152
|
+
compute="_compute_street",
|
|
154
153
|
)
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
help="Second street of the guest's residence",
|
|
154
|
+
street2 = fields.Char(
|
|
155
|
+
help="Second street of the guest",
|
|
158
156
|
readonly=False,
|
|
159
157
|
store=True,
|
|
160
|
-
compute="
|
|
158
|
+
compute="_compute_street2",
|
|
161
159
|
)
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
help="Zip of the guest's residence",
|
|
160
|
+
zip = fields.Char(
|
|
161
|
+
help="Zip of the guest",
|
|
165
162
|
readonly=False,
|
|
166
163
|
store=True,
|
|
167
|
-
compute="
|
|
164
|
+
compute="_compute_zip",
|
|
168
165
|
change_default=True,
|
|
169
166
|
)
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
help="City of the guest's residence",
|
|
167
|
+
city = fields.Char(
|
|
168
|
+
help="City of the guest",
|
|
173
169
|
readonly=False,
|
|
174
170
|
store=True,
|
|
175
|
-
compute="
|
|
171
|
+
compute="_compute_city",
|
|
176
172
|
)
|
|
177
|
-
|
|
173
|
+
country_id = fields.Many2one(
|
|
178
174
|
string="Country of residence",
|
|
179
|
-
help="Country of the guest
|
|
175
|
+
help="Country of the guest",
|
|
180
176
|
readonly=False,
|
|
181
177
|
store=True,
|
|
182
178
|
index=True,
|
|
183
|
-
compute="
|
|
179
|
+
compute="_compute_country_id",
|
|
184
180
|
comodel_name="res.country",
|
|
185
181
|
)
|
|
186
|
-
|
|
182
|
+
state_id = fields.Many2one(
|
|
187
183
|
string="State of residence",
|
|
188
|
-
help="State of the guest
|
|
184
|
+
help="State of the guest",
|
|
189
185
|
readonly=False,
|
|
190
186
|
store=True,
|
|
191
187
|
index=True,
|
|
192
|
-
compute="
|
|
188
|
+
compute="_compute_state_id",
|
|
193
189
|
comodel_name="res.country.state",
|
|
194
190
|
)
|
|
195
191
|
|
|
@@ -272,7 +268,6 @@ class PmsCheckinPartner(models.Model):
|
|
|
272
268
|
string="Possible existing customer",
|
|
273
269
|
compute="_compute_possible_existing_customer_ids",
|
|
274
270
|
comodel_name="res.partner",
|
|
275
|
-
inverse_name="checkin_partner_possible_customer_id",
|
|
276
271
|
)
|
|
277
272
|
|
|
278
273
|
partner_relationship = fields.Char(help="Family relationship between travelers")
|
|
@@ -376,53 +371,52 @@ class PmsCheckinPartner(models.Model):
|
|
|
376
371
|
record.nationality_id = False
|
|
377
372
|
|
|
378
373
|
@api.depends("partner_id")
|
|
379
|
-
def
|
|
374
|
+
def _compute_street(self):
|
|
380
375
|
for record in self:
|
|
381
|
-
if not record.
|
|
382
|
-
record.
|
|
383
|
-
elif not record.
|
|
384
|
-
record.
|
|
376
|
+
if not record.street and record.partner_id.street:
|
|
377
|
+
record.street = record.partner_id.street
|
|
378
|
+
elif not record.street:
|
|
379
|
+
record.street = False
|
|
385
380
|
|
|
386
381
|
@api.depends("partner_id")
|
|
387
|
-
def
|
|
382
|
+
def _compute_street2(self):
|
|
388
383
|
for record in self:
|
|
389
|
-
if not record.
|
|
390
|
-
record.
|
|
391
|
-
elif not record.
|
|
392
|
-
record.
|
|
384
|
+
if not record.street2 and record.partner_id.street2:
|
|
385
|
+
record.street2 = record.partner_id.street2
|
|
386
|
+
elif not record.street2:
|
|
387
|
+
record.street2 = False
|
|
393
388
|
|
|
394
389
|
@api.depends("partner_id")
|
|
395
|
-
def
|
|
390
|
+
def _compute_zip(self):
|
|
396
391
|
for record in self:
|
|
397
|
-
if not record.
|
|
398
|
-
record.
|
|
399
|
-
elif not record.
|
|
400
|
-
record.
|
|
392
|
+
if not record.zip and record.partner_id.zip:
|
|
393
|
+
record.zip = record.partner_id.zip
|
|
394
|
+
elif not record.zip:
|
|
395
|
+
record.zip = False
|
|
401
396
|
|
|
402
397
|
@api.depends("partner_id")
|
|
403
|
-
def
|
|
398
|
+
def _compute_city(self):
|
|
404
399
|
for record in self:
|
|
405
|
-
if not record.
|
|
406
|
-
record.
|
|
407
|
-
elif not record.
|
|
408
|
-
record.
|
|
400
|
+
if not record.city and record.partner_id.city:
|
|
401
|
+
record.city = record.partner_id.city
|
|
402
|
+
elif not record.city:
|
|
403
|
+
record.city = False
|
|
409
404
|
|
|
410
405
|
@api.depends("partner_id", "nationality_id")
|
|
411
|
-
def
|
|
406
|
+
def _compute_country_id(self):
|
|
412
407
|
for record in self:
|
|
413
|
-
if
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
record.residence_country_id = record.partner_id.residence_country_id
|
|
408
|
+
if not record.country_id and record.partner_id.country_id:
|
|
409
|
+
record.country_id = record.partner_id.country_id
|
|
410
|
+
elif not record.state_id:
|
|
411
|
+
record.country_id = False
|
|
418
412
|
|
|
419
413
|
@api.depends("partner_id")
|
|
420
|
-
def
|
|
414
|
+
def _compute_state_id(self):
|
|
421
415
|
for record in self:
|
|
422
|
-
if not record.
|
|
423
|
-
record.
|
|
424
|
-
elif not record.
|
|
425
|
-
record.
|
|
416
|
+
if not record.state_id and record.partner_id.state_id:
|
|
417
|
+
record.state_id = record.partner_id.state_id
|
|
418
|
+
elif not record.state_id:
|
|
419
|
+
record.state_id = False
|
|
426
420
|
|
|
427
421
|
@api.depends(lambda self: self._checkin_manual_fields())
|
|
428
422
|
def _compute_state(self):
|
|
@@ -440,7 +434,7 @@ class PmsCheckinPartner(models.Model):
|
|
|
440
434
|
elif any(
|
|
441
435
|
not getattr(record, field)
|
|
442
436
|
for field in record._checkin_mandatory_fields(
|
|
443
|
-
|
|
437
|
+
country=record.country_id,
|
|
444
438
|
document_type=record.document_type,
|
|
445
439
|
birthdate_date=record.birthdate_date,
|
|
446
440
|
)
|
|
@@ -735,19 +729,38 @@ class PmsCheckinPartner(models.Model):
|
|
|
735
729
|
_("Document type and country of document do not match")
|
|
736
730
|
)
|
|
737
731
|
|
|
738
|
-
@api.constrains("
|
|
739
|
-
def
|
|
732
|
+
@api.constrains("state_id", "country_id")
|
|
733
|
+
def _check_state_id_country_id_consistence(self):
|
|
740
734
|
for record in self:
|
|
741
|
-
if record.
|
|
735
|
+
if record.state_id and record.country_id:
|
|
742
736
|
if (
|
|
743
|
-
record.
|
|
744
|
-
and record.
|
|
745
|
-
not in record.residence_state_id.country_id
|
|
737
|
+
record.state_id.country_id
|
|
738
|
+
and record.country_id not in record.state_id.country_id
|
|
746
739
|
):
|
|
747
740
|
raise ValidationError(
|
|
748
741
|
_("State and country of residence do not match")
|
|
749
742
|
)
|
|
750
743
|
|
|
744
|
+
def set_partner_address(self):
|
|
745
|
+
"""
|
|
746
|
+
Only sets the checkin.partner address in the associated partner if
|
|
747
|
+
the partner don't have any address field filled.
|
|
748
|
+
"""
|
|
749
|
+
for record in self:
|
|
750
|
+
if record.partner_id:
|
|
751
|
+
residence_vals = {
|
|
752
|
+
"street": record.street,
|
|
753
|
+
"street2": record.street2,
|
|
754
|
+
"zip": record.zip,
|
|
755
|
+
"city": record.city,
|
|
756
|
+
"country_id": record.country_id.id,
|
|
757
|
+
"state_id": record.state_id.id,
|
|
758
|
+
}
|
|
759
|
+
if any(residence_vals.values()):
|
|
760
|
+
address_fields = residence_vals.keys()
|
|
761
|
+
if not any(record.partner_id[field] for field in address_fields):
|
|
762
|
+
record.partner_id.write(residence_vals)
|
|
763
|
+
|
|
751
764
|
@api.model_create_multi
|
|
752
765
|
def create(self, vals_list):
|
|
753
766
|
records = self.env["pms.checkin.partner"]
|
|
@@ -782,6 +795,7 @@ class PmsCheckinPartner(models.Model):
|
|
|
782
795
|
"check-in in this reservation"
|
|
783
796
|
)
|
|
784
797
|
)
|
|
798
|
+
records.set_partner_address()
|
|
785
799
|
return records
|
|
786
800
|
|
|
787
801
|
def write(self, vals):
|
|
@@ -791,6 +805,7 @@ class PmsCheckinPartner(models.Model):
|
|
|
791
805
|
tourist_tax_services_cmds = reservation._compute_tourist_tax_lines()
|
|
792
806
|
if tourist_tax_services_cmds:
|
|
793
807
|
reservation.write({"service_ids": tourist_tax_services_cmds})
|
|
808
|
+
self.set_partner_address()
|
|
794
809
|
return res
|
|
795
810
|
|
|
796
811
|
def unlink(self):
|
|
@@ -814,12 +829,12 @@ class PmsCheckinPartner(models.Model):
|
|
|
814
829
|
"document_number",
|
|
815
830
|
"document_expedition_date",
|
|
816
831
|
"nationality_id",
|
|
817
|
-
"
|
|
818
|
-
"
|
|
819
|
-
"
|
|
820
|
-
"
|
|
821
|
-
"
|
|
822
|
-
"
|
|
832
|
+
"street",
|
|
833
|
+
"street2",
|
|
834
|
+
"zip",
|
|
835
|
+
"city",
|
|
836
|
+
"country_id",
|
|
837
|
+
"state_id",
|
|
823
838
|
"document_country_id",
|
|
824
839
|
"document_type",
|
|
825
840
|
]
|
|
@@ -833,7 +848,7 @@ class PmsCheckinPartner(models.Model):
|
|
|
833
848
|
|
|
834
849
|
@api.model
|
|
835
850
|
def _checkin_mandatory_fields(
|
|
836
|
-
self,
|
|
851
|
+
self, country=False, document_type=False, birthdate_date=False
|
|
837
852
|
):
|
|
838
853
|
mandatory_fields = []
|
|
839
854
|
return mandatory_fields
|
|
@@ -983,12 +998,10 @@ class PmsCheckinPartner(models.Model):
|
|
|
983
998
|
)
|
|
984
999
|
if values.get("document_type"):
|
|
985
1000
|
values.update({"document_type": int(values.get("document_type"))})
|
|
986
|
-
if values.get("
|
|
987
|
-
values.update({"
|
|
988
|
-
if values.get("
|
|
989
|
-
values.update(
|
|
990
|
-
{"residence_country_id": int(values.get("residence_country_id"))}
|
|
991
|
-
)
|
|
1001
|
+
if values.get("state_id"):
|
|
1002
|
+
values.update({"state_id": int(values.get("state_id"))})
|
|
1003
|
+
if values.get("country_id"):
|
|
1004
|
+
values.update({"country_id": int(values.get("country_id"))})
|
|
992
1005
|
|
|
993
1006
|
if values.get("document_expedition_date"):
|
|
994
1007
|
values.update(
|
|
@@ -527,7 +527,6 @@ class PmsFolio(models.Model):
|
|
|
527
527
|
string="Possible existing customer",
|
|
528
528
|
compute="_compute_possible_existing_customer_ids",
|
|
529
529
|
comodel_name="res.partner",
|
|
530
|
-
inverse_name="folio_possible_customer_id",
|
|
531
530
|
)
|
|
532
531
|
first_checkin = fields.Date(
|
|
533
532
|
string="First Folio Checkin",
|
|
@@ -644,7 +644,6 @@ class PmsReservation(models.Model):
|
|
|
644
644
|
string="Possible existing customer",
|
|
645
645
|
compute="_compute_possible_existing_customer_ids",
|
|
646
646
|
comodel_name="res.partner",
|
|
647
|
-
inverse_name="reservation_possible_customer_id",
|
|
648
647
|
)
|
|
649
648
|
|
|
650
649
|
avoid_mails = fields.Boolean(
|
|
@@ -88,51 +88,9 @@ class ResPartner(models.Model):
|
|
|
88
88
|
inverse_name="partner_id",
|
|
89
89
|
)
|
|
90
90
|
|
|
91
|
-
country_id = fields.Many2one(
|
|
92
|
-
readonly=False,
|
|
93
|
-
store=True,
|
|
94
|
-
index=True,
|
|
95
|
-
compute="_compute_country_id",
|
|
96
|
-
)
|
|
97
|
-
state_id = fields.Many2one(
|
|
98
|
-
readonly=False,
|
|
99
|
-
store=True,
|
|
100
|
-
index=True,
|
|
101
|
-
compute="_compute_state_id",
|
|
102
|
-
)
|
|
103
|
-
city = fields.Char(
|
|
104
|
-
readonly=False,
|
|
105
|
-
store=True,
|
|
106
|
-
compute="_compute_city",
|
|
107
|
-
)
|
|
108
|
-
street = fields.Char(
|
|
109
|
-
readonly=False,
|
|
110
|
-
store=True,
|
|
111
|
-
compute="_compute_street",
|
|
112
|
-
)
|
|
113
|
-
street2 = fields.Char(
|
|
114
|
-
readonly=False,
|
|
115
|
-
store=True,
|
|
116
|
-
compute="_compute_street2",
|
|
117
|
-
)
|
|
118
|
-
zip = fields.Char(
|
|
119
|
-
readonly=False,
|
|
120
|
-
store=True,
|
|
121
|
-
compute="_compute_zip",
|
|
122
|
-
)
|
|
123
91
|
comment = fields.Text(
|
|
124
92
|
tracking=True,
|
|
125
93
|
)
|
|
126
|
-
reservation_possible_customer_id = fields.Many2one(
|
|
127
|
-
string="Possible Customer In Reservation", comodel_name="pms.reservation"
|
|
128
|
-
)
|
|
129
|
-
folio_possible_customer_id = fields.Many2one(
|
|
130
|
-
string="Possible Customer In Folio", comodel_name="pms.folio"
|
|
131
|
-
)
|
|
132
|
-
checkin_partner_possible_customer_id = fields.Many2one(
|
|
133
|
-
string="Possible Customer In Checkin Partner",
|
|
134
|
-
comodel_name="pms.checkin.partner",
|
|
135
|
-
)
|
|
136
94
|
invoicing_policy = fields.Selection(
|
|
137
95
|
help="""The invoicing policy of the partner,
|
|
138
96
|
set Property to user the policy configured in the Property""",
|
|
@@ -151,208 +109,6 @@ class ResPartner(models.Model):
|
|
|
151
109
|
string="Days from Checkout",
|
|
152
110
|
help="Days from Checkout to generate the invoice",
|
|
153
111
|
)
|
|
154
|
-
residence_street = fields.Char(
|
|
155
|
-
string="Street of residence",
|
|
156
|
-
help="Street of the guest's residence",
|
|
157
|
-
readonly=False,
|
|
158
|
-
store=True,
|
|
159
|
-
compute="_compute_residence_street",
|
|
160
|
-
)
|
|
161
|
-
residence_street2 = fields.Char(
|
|
162
|
-
string="Second street of residence",
|
|
163
|
-
help="Second street of the guest's residence",
|
|
164
|
-
readonly=False,
|
|
165
|
-
store=True,
|
|
166
|
-
compute="_compute_residence_street2",
|
|
167
|
-
)
|
|
168
|
-
residence_zip = fields.Char(
|
|
169
|
-
string="Zip of residence",
|
|
170
|
-
help="Zip of the guest's residence",
|
|
171
|
-
readonly=False,
|
|
172
|
-
store=True,
|
|
173
|
-
compute="_compute_residence_zip",
|
|
174
|
-
change_default=True,
|
|
175
|
-
)
|
|
176
|
-
residence_city = fields.Char(
|
|
177
|
-
string="city of residence",
|
|
178
|
-
help="City of the guest's residence",
|
|
179
|
-
readonly=False,
|
|
180
|
-
store=True,
|
|
181
|
-
compute="_compute_residence_city",
|
|
182
|
-
)
|
|
183
|
-
residence_country_id = fields.Many2one(
|
|
184
|
-
string="Country of residence",
|
|
185
|
-
help="Partner country of residence",
|
|
186
|
-
readonly=False,
|
|
187
|
-
store=True,
|
|
188
|
-
index=True,
|
|
189
|
-
compute="_compute_residence_country_id",
|
|
190
|
-
comodel_name="res.country",
|
|
191
|
-
)
|
|
192
|
-
residence_state_id = fields.Many2one(
|
|
193
|
-
string="State of residence",
|
|
194
|
-
help="Partner state of residence",
|
|
195
|
-
readonly=False,
|
|
196
|
-
store=True,
|
|
197
|
-
index=True,
|
|
198
|
-
compute="_compute_residence_state_id",
|
|
199
|
-
comodel_name="res.country.state",
|
|
200
|
-
)
|
|
201
|
-
|
|
202
|
-
# pylint: disable=W8110
|
|
203
|
-
@api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.residence_street")
|
|
204
|
-
def _compute_residence_street(self):
|
|
205
|
-
if hasattr(super(), "_compute_residence_street"):
|
|
206
|
-
super()._compute_residence_street()
|
|
207
|
-
for record in self:
|
|
208
|
-
if record.pms_checkin_partner_ids:
|
|
209
|
-
last_update_street = record.pms_checkin_partner_ids.filtered(
|
|
210
|
-
lambda x, r=record: x.write_date
|
|
211
|
-
== max(r.pms_checkin_partner_ids.mapped("write_date"))
|
|
212
|
-
)
|
|
213
|
-
if last_update_street and last_update_street[0].residence_street:
|
|
214
|
-
record.residence_street = last_update_street[0].residence_street
|
|
215
|
-
|
|
216
|
-
# pylint: disable=W8110
|
|
217
|
-
@api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.residence_street2")
|
|
218
|
-
def _compute_residence_street2(self):
|
|
219
|
-
if hasattr(super(), "_compute_residence_street2"):
|
|
220
|
-
super()._compute_residence_street2()
|
|
221
|
-
for record in self:
|
|
222
|
-
if record.pms_checkin_partner_ids:
|
|
223
|
-
last_update_street2 = record.pms_checkin_partner_ids.filtered(
|
|
224
|
-
lambda x, r=record: x.write_date
|
|
225
|
-
== max(r.pms_checkin_partner_ids.mapped("write_date"))
|
|
226
|
-
)
|
|
227
|
-
if last_update_street2 and last_update_street2[0].residence_street2:
|
|
228
|
-
record.residence_street2 = last_update_street2[0].residence_street2
|
|
229
|
-
|
|
230
|
-
# pylint: disable=W8110
|
|
231
|
-
@api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.residence_zip")
|
|
232
|
-
def _compute_residence_zip(self):
|
|
233
|
-
if hasattr(super(), "_compute_residence_zip"):
|
|
234
|
-
super()._compute_residence_zip()
|
|
235
|
-
for record in self:
|
|
236
|
-
if record.pms_checkin_partner_ids:
|
|
237
|
-
last_update_zip = record.pms_checkin_partner_ids.filtered(
|
|
238
|
-
lambda x, r=record: x.write_date
|
|
239
|
-
== max(r.pms_checkin_partner_ids.mapped("write_date"))
|
|
240
|
-
)
|
|
241
|
-
if last_update_zip and last_update_zip[0].residence_zip:
|
|
242
|
-
record.residence_zip = last_update_zip[0].residence_zip
|
|
243
|
-
|
|
244
|
-
# pylint: disable=W8110
|
|
245
|
-
@api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.residence_city")
|
|
246
|
-
def _compute_residence_city(self):
|
|
247
|
-
if hasattr(super(), "_compute_residence_city"):
|
|
248
|
-
super()._compute_residence_city()
|
|
249
|
-
for record in self:
|
|
250
|
-
if record.pms_checkin_partner_ids:
|
|
251
|
-
last_update_city = record.pms_checkin_partner_ids.filtered(
|
|
252
|
-
lambda x, r=record: x.write_date
|
|
253
|
-
== max(r.pms_checkin_partner_ids.mapped("write_date"))
|
|
254
|
-
)
|
|
255
|
-
if last_update_city and last_update_city[0].residence_city:
|
|
256
|
-
record.residence_city = last_update_city[0].residence_city
|
|
257
|
-
|
|
258
|
-
# pylint: disable=W8110
|
|
259
|
-
@api.depends(
|
|
260
|
-
"pms_checkin_partner_ids",
|
|
261
|
-
"pms_checkin_partner_ids.residence_country_id",
|
|
262
|
-
"nationality_id",
|
|
263
|
-
)
|
|
264
|
-
def _compute_residence_country_id(self):
|
|
265
|
-
if hasattr(super(), "_compute_residence_country_id"):
|
|
266
|
-
super()._compute_residence_country_id()
|
|
267
|
-
for record in self:
|
|
268
|
-
if record.pms_checkin_partner_ids:
|
|
269
|
-
last_update_country = 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_country and last_update_country[0].residence_country_id:
|
|
274
|
-
record.residence_country_id = last_update_country[
|
|
275
|
-
0
|
|
276
|
-
].residence_country_id
|
|
277
|
-
|
|
278
|
-
# pylint: disable=W8110
|
|
279
|
-
@api.depends(
|
|
280
|
-
"pms_checkin_partner_ids", "pms_checkin_partner_ids.residence_state_id"
|
|
281
|
-
)
|
|
282
|
-
def _compute_residence_state_id(self):
|
|
283
|
-
if hasattr(super(), "_compute_residence_state_id"):
|
|
284
|
-
super()._compute_residence_state_id()
|
|
285
|
-
for record in self:
|
|
286
|
-
if record.pms_checkin_partner_ids:
|
|
287
|
-
last_update_state = record.pms_checkin_partner_ids.filtered(
|
|
288
|
-
lambda x, r=record: x.write_date
|
|
289
|
-
== max(r.pms_checkin_partner_ids.mapped("write_date"))
|
|
290
|
-
)
|
|
291
|
-
if last_update_state and last_update_state[0].residence_state_id:
|
|
292
|
-
record.residence_state_id = last_update_state[0].residence_state_id
|
|
293
|
-
|
|
294
|
-
# pylint: disable=W8110
|
|
295
|
-
@api.depends("id_numbers")
|
|
296
|
-
def _compute_country_id(self):
|
|
297
|
-
if hasattr(super(), "_compute_country_id"):
|
|
298
|
-
super()._compute_country_id()
|
|
299
|
-
for record in self:
|
|
300
|
-
if (
|
|
301
|
-
not record.parent_id
|
|
302
|
-
and not record.country_id
|
|
303
|
-
and record.id_numbers
|
|
304
|
-
and record.id_numbers.country_id
|
|
305
|
-
):
|
|
306
|
-
record.country_id = record.id_numbers[0].country_id
|
|
307
|
-
|
|
308
|
-
# pylint: disable=W8110
|
|
309
|
-
@api.depends("residence_state_id")
|
|
310
|
-
def _compute_state_id(self):
|
|
311
|
-
if hasattr(super(), "_compute_state_id"):
|
|
312
|
-
super()._compute_state_id()
|
|
313
|
-
for record in self:
|
|
314
|
-
if (
|
|
315
|
-
not record.parent_id
|
|
316
|
-
and not record.state_id
|
|
317
|
-
and record.residence_state_id
|
|
318
|
-
):
|
|
319
|
-
record.state_id = record.residence_state_id
|
|
320
|
-
|
|
321
|
-
# pylint: disable=W8110
|
|
322
|
-
@api.depends("residence_city")
|
|
323
|
-
def _compute_city(self):
|
|
324
|
-
if hasattr(super(), "_compute_city"):
|
|
325
|
-
super()._compute_city()
|
|
326
|
-
for record in self:
|
|
327
|
-
if not record.parent_id and not record.city and record.residence_city:
|
|
328
|
-
record.city = record.residence_city
|
|
329
|
-
|
|
330
|
-
# pylint: disable=W8110
|
|
331
|
-
@api.depends("residence_street")
|
|
332
|
-
def _compute_street(self):
|
|
333
|
-
if hasattr(super(), "_compute_street"):
|
|
334
|
-
super()._compute_street()
|
|
335
|
-
for record in self:
|
|
336
|
-
if not record.parent_id and not record.street and record.residence_street:
|
|
337
|
-
record.street = record.residence_street
|
|
338
|
-
|
|
339
|
-
# pylint: disable=W8110
|
|
340
|
-
@api.depends("residence_street2")
|
|
341
|
-
def _compute_street2(self):
|
|
342
|
-
if hasattr(super(), "_compute_street2"):
|
|
343
|
-
super()._compute_street2()
|
|
344
|
-
for record in self:
|
|
345
|
-
if not record.parent_id and not record.street2 and record.residence_street2:
|
|
346
|
-
record.street2 = record.residence_street2
|
|
347
|
-
|
|
348
|
-
# pylint: disable=W8110
|
|
349
|
-
@api.depends("residence_zip")
|
|
350
|
-
def _compute_zip(self):
|
|
351
|
-
if hasattr(super(), "_compute_zip"):
|
|
352
|
-
super()._compute_zip()
|
|
353
|
-
for record in self:
|
|
354
|
-
if not record.parent_id and not record.zip and record.residence_zip:
|
|
355
|
-
record.zip = record.residence_zip
|
|
356
112
|
|
|
357
113
|
def _compute_reservations_count(self):
|
|
358
114
|
# Return reservation with partner included in reservation and/or checkin
|
|
@@ -494,46 +250,6 @@ class ResPartner(models.Model):
|
|
|
494
250
|
if not record.is_agency and record.sale_channel_id:
|
|
495
251
|
record.sale_channel_id = None
|
|
496
252
|
|
|
497
|
-
# REVIEW: problems with odoo demo data
|
|
498
|
-
# @api.constrains("mobile", "email")
|
|
499
|
-
# def _check_duplicated(self):
|
|
500
|
-
# for record in self:
|
|
501
|
-
# partner, field = record._search_duplicated()
|
|
502
|
-
# if partner:
|
|
503
|
-
# raise models.ValidationError(
|
|
504
|
-
# _(
|
|
505
|
-
# "Partner %s found with same %s (%s)",
|
|
506
|
-
# partner.name,
|
|
507
|
-
# partner._fields[field].string,
|
|
508
|
-
# getattr(record, field),
|
|
509
|
-
# )
|
|
510
|
-
# )
|
|
511
|
-
|
|
512
|
-
@api.constrains("residence_state_id", "residence_country_id")
|
|
513
|
-
def _check_residence_state_id_residence_country_id_consistence(self):
|
|
514
|
-
for record in self:
|
|
515
|
-
if record.residence_state_id and record.residence_country_id:
|
|
516
|
-
if (
|
|
517
|
-
record.residence_state_id.country_id
|
|
518
|
-
and record.residence_country_id
|
|
519
|
-
not in record.residence_state_id.country_id
|
|
520
|
-
):
|
|
521
|
-
raise ValidationError(
|
|
522
|
-
_("State and country of residence do not match")
|
|
523
|
-
)
|
|
524
|
-
|
|
525
|
-
def _search_duplicated(self):
|
|
526
|
-
self.ensure_one()
|
|
527
|
-
partner = False
|
|
528
|
-
for field in self._get_key_fields():
|
|
529
|
-
if getattr(self, field):
|
|
530
|
-
partner = self.search(
|
|
531
|
-
[(field, "=", getattr(self, field)), ("id", "!=", self.id)]
|
|
532
|
-
)
|
|
533
|
-
if partner:
|
|
534
|
-
field = field
|
|
535
|
-
return partner, field
|
|
536
|
-
|
|
537
253
|
@api.model
|
|
538
254
|
def _get_key_fields(self):
|
|
539
255
|
key_fields = super()._get_key_fields()
|
|
@@ -545,15 +261,6 @@ class ResPartner(models.Model):
|
|
|
545
261
|
# Template to be inherited by localization modules
|
|
546
262
|
return True
|
|
547
263
|
|
|
548
|
-
def unlink(self):
|
|
549
|
-
various_partner_id = self.env.ref("pms.various_pms_partner").id
|
|
550
|
-
if various_partner_id in self.ids:
|
|
551
|
-
various_partner = self.browse(various_partner_id)
|
|
552
|
-
raise ValidationError(
|
|
553
|
-
_("The partner %s cannot be deleted"), various_partner.name
|
|
554
|
-
)
|
|
555
|
-
return super().unlink()
|
|
556
|
-
|
|
557
264
|
@api.model_create_multi
|
|
558
265
|
def create(self, vals_list):
|
|
559
266
|
for vals in vals_list:
|
|
@@ -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:
|
|
375
|
+
!! source digest: sha256:7a9133a071292495a65eeaa21c559b55701ed046c6b661f3728055fedda6f778
|
|
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&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
|
|
@@ -1535,7 +1535,7 @@ class TestPmsCheckinPartner(TestPms):
|
|
|
1535
1535
|
"email": "serafin@example.com",
|
|
1536
1536
|
"gender": "male",
|
|
1537
1537
|
"nationality_id": 1,
|
|
1538
|
-
"
|
|
1538
|
+
"state_id": 1,
|
|
1539
1539
|
}
|
|
1540
1540
|
checkin_partner._save_data_from_portal(checkin_partner_vals)
|
|
1541
1541
|
checkin_partner_vals.update(
|
|
@@ -1543,7 +1543,7 @@ class TestPmsCheckinPartner(TestPms):
|
|
|
1543
1543
|
"birthdate_date": datetime.date(1983, 10, 5),
|
|
1544
1544
|
"document_expedition_date": datetime.date(2010, 10, 7),
|
|
1545
1545
|
"nationality_id": self.env["res.country"].search([("id", "=", 1)]),
|
|
1546
|
-
"
|
|
1546
|
+
"state_id": self.env["res.country.state"].browse(1),
|
|
1547
1547
|
"document_type": self.id_category,
|
|
1548
1548
|
}
|
|
1549
1549
|
)
|
|
@@ -1597,12 +1597,12 @@ class TestPmsCheckinPartner(TestPms):
|
|
|
1597
1597
|
"mobile": "666555444",
|
|
1598
1598
|
"phone": "123456789",
|
|
1599
1599
|
"nationality_id": nationality.id,
|
|
1600
|
-
"
|
|
1601
|
-
"
|
|
1602
|
-
"
|
|
1603
|
-
"
|
|
1604
|
-
"
|
|
1605
|
-
"
|
|
1600
|
+
"street": "Calle 123",
|
|
1601
|
+
"street2": "Avda. Constitución 123",
|
|
1602
|
+
"zip": "15700",
|
|
1603
|
+
"city": "City Residence",
|
|
1604
|
+
"country_id": nationality.id,
|
|
1605
|
+
"state_id": state.id,
|
|
1606
1606
|
# "pms_checkin_partner_ids": checkin_partner_id,
|
|
1607
1607
|
}
|
|
1608
1608
|
self.partner_id = self.env["res.partner"].create(partner_vals)
|
|
@@ -1610,8 +1610,8 @@ class TestPmsCheckinPartner(TestPms):
|
|
|
1610
1610
|
partner_vals.update(
|
|
1611
1611
|
{
|
|
1612
1612
|
"nationality_id": nationality,
|
|
1613
|
-
"
|
|
1614
|
-
"
|
|
1613
|
+
"country_id": nationality,
|
|
1614
|
+
"state_id": state,
|
|
1615
1615
|
}
|
|
1616
1616
|
)
|
|
1617
1617
|
|