From 653ebec7864e54a7c9b300651f6bc405cccec221 Mon Sep 17 00:00:00 2001 From: miguelpadin Date: Tue, 29 Jun 2021 23:45:14 +0200 Subject: [PATCH 01/17] [FIX] pms: fix _check_adults @ pms_reservation --- pms/models/pms_reservation.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/pms/models/pms_reservation.py b/pms/models/pms_reservation.py index 38a3e0060..8194c1ed3 100644 --- a/pms/models/pms_reservation.py +++ b/pms/models/pms_reservation.py @@ -1426,13 +1426,13 @@ class PmsReservation(models.Model): @api.constrains("adults") def _check_adults(self): for record in self: - extra_bed = record.service_ids.filtered( - lambda r: r.product_id.is_extra_bed is True - ) - for room in record.reservation_line_ids.room_id: - if record.adults + record.children_occupying > room.get_capacity( - sum(extra_bed.mapped("product_qty")) - ): + for line in record.reservation_line_ids: + extra_beds = record.service_ids.service_line_ids.filtered( + lambda x: x.date == line.date and x.product_id.is_extra_bed is True + ) + if ( + record.adults + record.children_occupying + ) > line.room_id.get_capacity(len(extra_beds)): raise ValidationError( _( "Persons can't be higher than room capacity (%s)", From 36df78c9bccc795fec71dadf81cf800de012b7c9 Mon Sep 17 00:00:00 2001 From: miguelpadin Date: Tue, 29 Jun 2021 23:52:05 +0200 Subject: [PATCH 02/17] [IMP] pms: add field ine_code @ res.country.state & load ine codes from csv --- pms_l10n_es/data/res.country.state.csv | 53 +++++++++++++++++++++++++ pms_l10n_es/models/__init__.py | 1 + pms_l10n_es/models/res_country_state.py | 6 +++ 3 files changed, 60 insertions(+) create mode 100644 pms_l10n_es/data/res.country.state.csv create mode 100644 pms_l10n_es/models/res_country_state.py diff --git a/pms_l10n_es/data/res.country.state.csv b/pms_l10n_es/data/res.country.state.csv new file mode 100644 index 000000000..d72563a82 --- /dev/null +++ b/pms_l10n_es/data/res.country.state.csv @@ -0,0 +1,53 @@ +"id","ine_code" +base.state_es_c,"ES111" +base.state_es_vi,"ES211" +base.state_es_ab,"ES421" +base.state_es_a,"ES521" +base.state_es_al,"ES611" +base.state_es_o,"ES120" +base.state_es_av,"ES411" +base.state_es_ba,"ES431" +base.state_es_pm,"ES530" +base.state_es_b,"ES511" +base.state_es_bu,"ES412" +base.state_es_cc,"ES432" +base.state_es_ca,"ES612" +base.state_es_s,"ES130" +base.state_es_cs,"ES522" +base.state_es_ce,"ES630" +base.state_es_cr,"ES422" +base.state_es_co,"ES613" +base.state_es_cu,"ES423" +base.state_es_gi,"ES512" +base.state_es_gr,"ES614" +base.state_es_gu,"ES424" +base.state_es_ss,"ES212" +base.state_es_h,"ES615" +base.state_es_hu,"ES241" +base.state_es_j,"ES616" +base.state_es_lo,"ES230" +base.state_es_gc,"ES701" +base.state_es_le,"ES413" +base.state_es_l,"ES513" +base.state_es_lu,"ES112" +base.state_es_m,"ES300" +base.state_es_ma,"ES617" +base.state_es_ml,"ES640" +base.state_es_mu,"ES620" +base.state_es_na,"ES220" +base.state_es_or,"ES113" +base.state_es_p,"ES414" +base.state_es_po,"ES114" +base.state_es_sa,"ES415" +base.state_es_tf,"ES702" +base.state_es_sg,"ES416" +base.state_es_se,"ES618" +base.state_es_so,"ES417" +base.state_es_t,"ES514" +base.state_es_te,"ES242" +base.state_es_to,"ES425" +base.state_es_v,"ES523" +base.state_es_va,"ES418" +base.state_es_bi,"ES213" +base.state_es_za,"ES419" +base.state_es_z,"ES243" diff --git a/pms_l10n_es/models/__init__.py b/pms_l10n_es/models/__init__.py index 2e5d43f5f..2f6f191dd 100644 --- a/pms_l10n_es/models/__init__.py +++ b/pms_l10n_es/models/__init__.py @@ -2,3 +2,4 @@ # from . import pms_checkin_partner from . import pms_property from . import pms_log_institution_traveller_report +from . import res_country_state diff --git a/pms_l10n_es/models/res_country_state.py b/pms_l10n_es/models/res_country_state.py new file mode 100644 index 000000000..67b0ecb39 --- /dev/null +++ b/pms_l10n_es/models/res_country_state.py @@ -0,0 +1,6 @@ +from odoo import fields, models + + +class ResCountryState(models.Model): + _inherit = "res.country.state" + ine_code = fields.Char(string="INE State Code") From c178b96c09a625d24556d19b1a8c723fa8523ab9 Mon Sep 17 00:00:00 2001 From: miguelpadin Date: Tue, 29 Jun 2021 23:58:42 +0200 Subject: [PATCH 03/17] [ADD] pms: add pms.ine.tourism.category model to classify the properties according to the Spanish National Statistical Institute --- pms_l10n_es/models/__init__.py | 1 + .../models/pms_ine_tourism_category.py | 16 ++++++++ pms_l10n_es/security/ir.model.access.csv | 1 + .../views/pms_ine_tourism_category.xml | 39 +++++++++++++++++++ 4 files changed, 57 insertions(+) create mode 100644 pms_l10n_es/models/pms_ine_tourism_category.py create mode 100644 pms_l10n_es/views/pms_ine_tourism_category.xml diff --git a/pms_l10n_es/models/__init__.py b/pms_l10n_es/models/__init__.py index 2f6f191dd..7f0a2ff29 100644 --- a/pms_l10n_es/models/__init__.py +++ b/pms_l10n_es/models/__init__.py @@ -3,3 +3,4 @@ from . import pms_property from . import pms_log_institution_traveller_report from . import res_country_state +from . import pms_ine_tourism_category diff --git a/pms_l10n_es/models/pms_ine_tourism_category.py b/pms_l10n_es/models/pms_ine_tourism_category.py new file mode 100644 index 000000000..2680579ab --- /dev/null +++ b/pms_l10n_es/models/pms_ine_tourism_category.py @@ -0,0 +1,16 @@ +from odoo import fields, models + + +class PmsIneTourismCategory(models.Model): + _name = "pms.ine.tourism.category" + _description = "Hotel category in the Ministry of Tourism. Used for INE statistics." + + name = fields.Char("Category", required=True) + category_type = fields.Char("Category type", required=True) + + def name_get(self): + data = [] + for record in self: + display_value = record.category_type + " (" + record.name + ") " + data.append((record.id, display_value)) + return data diff --git a/pms_l10n_es/security/ir.model.access.csv b/pms_l10n_es/security/ir.model.access.csv index 36ef563cc..45ee01d1e 100644 --- a/pms_l10n_es/security/ir.model.access.csv +++ b/pms_l10n_es/security/ir.model.access.csv @@ -1,3 +1,4 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink user_access_traveller_report_wizard,user_access_traveller_report_wizard,model_traveller_report_wizard,pms.group_pms_user,1,1,1,1 user_access_traveller_report_logs,user_access_traveller_report_logs,model_pms_log_institution_traveller_report,pms.group_pms_user,1,1,1,1 +user_access_pms_ine_tourism_category,user_access_pms_ine_tourism_category,model_pms_ine_tourism_category,pms.group_pms_user,1,1,1,1 diff --git a/pms_l10n_es/views/pms_ine_tourism_category.xml b/pms_l10n_es/views/pms_ine_tourism_category.xml new file mode 100644 index 000000000..ff9064992 --- /dev/null +++ b/pms_l10n_es/views/pms_ine_tourism_category.xml @@ -0,0 +1,39 @@ + + + + pms.ine.tourism.category.form + pms.ine.tourism.category + +
+ + + + + + +
+
+
+ + pms.ine.tourism.category.tree + pms.ine.tourism.category + + + + + + + + + INE Categories + pms.ine.tourism.category + tree,form + + +
From 68519c206ae0029b7d6ed6f6374641327d1af7be Mon Sep 17 00:00:00 2001 From: miguelpadin Date: Wed, 30 Jun 2021 00:01:06 +0200 Subject: [PATCH 04/17] [ADD] pms: add specific fields of the Spanish National Statistical Institute to the property --- pms_l10n_es/models/pms_property.py | 20 ++++++++++++++++++++ pms_l10n_es/views/pms_property_views.xml | 21 +++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/pms_l10n_es/models/pms_property.py b/pms_l10n_es/models/pms_property.py index e34f02843..2084a9d0c 100644 --- a/pms_l10n_es/models/pms_property.py +++ b/pms_l10n_es/models/pms_property.py @@ -33,6 +33,26 @@ class PmsProperty(models.Model): string="Institution password", help="Password provided by institution to send the data.", ) + ine_tourism = fields.Char( + "Tourism number", + help="Registration number in the Ministry of Tourism. Used for INE statistics.", + ) + ine_rooms = fields.Integer( + "Rooms Available", default=0, help="Used for INE statistics." + ) + ine_seats = fields.Integer( + "Beds available", default=0, help="Used for INE statistics." + ) + ine_permanent_staff = fields.Integer( + "Permanent Staff", default=0, help="Used for INE statistics." + ) + ine_eventual_staff = fields.Integer( + "Eventual Staff", default=0, help="Used for INE statistics." + ) + ine_category_id = fields.Many2one( + "pms.ine.tourism.category", + help="Hotel category in the Ministry of Tourism. Used for INE statistics.", + ) def test_connection(self): headers = { diff --git a/pms_l10n_es/views/pms_property_views.xml b/pms_l10n_es/views/pms_property_views.xml index 117bc16e5..91592a56f 100644 --- a/pms_l10n_es/views/pms_property_views.xml +++ b/pms_l10n_es/views/pms_property_views.xml @@ -34,6 +34,27 @@ /> +
+
+
+ INE Settings +
+
+
+ + + + +
+
+ + + + + + +
+
From bbc02b2c63b035c4ffbf2cd4cc0fc5978a9a4c66 Mon Sep 17 00:00:00 2001 From: miguelpadin Date: Wed, 30 Jun 2021 00:18:16 +0200 Subject: [PATCH 05/17] [IMP] pms: add field to take into account or not specific rooms when INE report is generated. --- pms_l10n_es/models/__init__.py | 1 + pms_l10n_es/models/pms_room.py | 10 ++++++++++ pms_l10n_es/views/pms_room_views.xml | 13 +++++++++++++ 3 files changed, 24 insertions(+) create mode 100644 pms_l10n_es/models/pms_room.py create mode 100644 pms_l10n_es/views/pms_room_views.xml diff --git a/pms_l10n_es/models/__init__.py b/pms_l10n_es/models/__init__.py index 7f0a2ff29..38e6c37ae 100644 --- a/pms_l10n_es/models/__init__.py +++ b/pms_l10n_es/models/__init__.py @@ -4,3 +4,4 @@ from . import pms_property from . import pms_log_institution_traveller_report from . import res_country_state from . import pms_ine_tourism_category +from . import pms_room diff --git a/pms_l10n_es/models/pms_room.py b/pms_l10n_es/models/pms_room.py new file mode 100644 index 000000000..76dbc5efd --- /dev/null +++ b/pms_l10n_es/models/pms_room.py @@ -0,0 +1,10 @@ +from odoo import fields, models + + +class PmsRoom(models.Model): + _inherit = "pms.room" + in_ine = fields.Boolean( + string="In INE", + help="Take it into account to generate INE statistics", + default=True, + ) diff --git a/pms_l10n_es/views/pms_room_views.xml b/pms_l10n_es/views/pms_room_views.xml new file mode 100644 index 000000000..820fceaa9 --- /dev/null +++ b/pms_l10n_es/views/pms_room_views.xml @@ -0,0 +1,13 @@ + + + + Property Form l10n_es + pms.room + + + + + + + + From 0141a0be684f9718802e9421357fc9fa1ef9accb Mon Sep 17 00:00:00 2001 From: miguelpadin Date: Wed, 30 Jun 2021 00:30:00 +0200 Subject: [PATCH 06/17] [FIX] pms: fix manifest for previous changes --- pms_l10n_es/__manifest__.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pms_l10n_es/__manifest__.py b/pms_l10n_es/__manifest__.py index 536b9cc6c..ca44e6aa4 100644 --- a/pms_l10n_es/__manifest__.py +++ b/pms_l10n_es/__manifest__.py @@ -16,6 +16,7 @@ "partner_contact_gender", "partner_contact_birthdate", "partner_contact_nationality", + "base_iso3166", "queue_job", ], "external_dependencies": { @@ -24,13 +25,16 @@ ], }, "data": [ + "data/res.country.state.csv", "data/cron_jobs.xml", "data/pms_data.xml", "data/queue_data.xml", "data/queue_job_function_data.xml", "security/ir.model.access.csv", "views/pms_property_views.xml", + "views/pms_room_views.xml", "views/pms_log_institution_traveller_report_views.xml", + "views/pms_ine_tourism_category.xml", "wizards/traveller_report.xml", ], "installable": True, From 639c6dd2046da175c93a63cbab258a6474447588 Mon Sep 17 00:00:00 2001 From: miguelpadin Date: Wed, 30 Jun 2021 00:56:44 +0200 Subject: [PATCH 07/17] [ADD] pms: new wizard to manage INE generation --- pms_l10n_es/__manifest__.py | 1 + pms_l10n_es/security/ir.model.access.csv | 2 + pms_l10n_es/wizards/__init__.py | 1 + pms_l10n_es/wizards/wizard_ine.xml | 62 ++++++++++++++++++++++++ 4 files changed, 66 insertions(+) create mode 100644 pms_l10n_es/wizards/wizard_ine.xml diff --git a/pms_l10n_es/__manifest__.py b/pms_l10n_es/__manifest__.py index ca44e6aa4..4b2619c9a 100644 --- a/pms_l10n_es/__manifest__.py +++ b/pms_l10n_es/__manifest__.py @@ -36,6 +36,7 @@ "views/pms_log_institution_traveller_report_views.xml", "views/pms_ine_tourism_category.xml", "wizards/traveller_report.xml", + "wizards/wizard_ine.xml", ], "installable": True, } diff --git a/pms_l10n_es/security/ir.model.access.csv b/pms_l10n_es/security/ir.model.access.csv index 45ee01d1e..53873e987 100644 --- a/pms_l10n_es/security/ir.model.access.csv +++ b/pms_l10n_es/security/ir.model.access.csv @@ -2,3 +2,5 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink user_access_traveller_report_wizard,user_access_traveller_report_wizard,model_traveller_report_wizard,pms.group_pms_user,1,1,1,1 user_access_traveller_report_logs,user_access_traveller_report_logs,model_pms_log_institution_traveller_report,pms.group_pms_user,1,1,1,1 user_access_pms_ine_tourism_category,user_access_pms_ine_tourism_category,model_pms_ine_tourism_category,pms.group_pms_user,1,1,1,1 +user_access_pms_ine_wizard,user_access_pms_ine_wizard,model_pms_ine_wizard,pms.group_pms_user,1,1,1,1 + diff --git a/pms_l10n_es/wizards/__init__.py b/pms_l10n_es/wizards/__init__.py index 1a18223f3..52c12cbc4 100644 --- a/pms_l10n_es/wizards/__init__.py +++ b/pms_l10n_es/wizards/__init__.py @@ -1 +1,2 @@ from . import traveller_report +from . import wizard_ine diff --git a/pms_l10n_es/wizards/wizard_ine.xml b/pms_l10n_es/wizards/wizard_ine.xml new file mode 100644 index 000000000..29ecc2361 --- /dev/null +++ b/pms_l10n_es/wizards/wizard_ine.xml @@ -0,0 +1,62 @@ + + + + INE + pms.ine.wizard + +
+
+
+ + + + +
+
+ + + +
+
+ + + + + +
+
+