From 2ab1663cb2d6ea7603a3e5294aa5bcfbf39a5aa9 Mon Sep 17 00:00:00 2001 From: Jose Luis Date: Wed, 20 Mar 2019 19:30:12 +0100 Subject: [PATCH] [ADD] Door Codes in Hotels --- hotel_door_codes/README.rst | 13 +++ hotel_door_codes/__init__.py | 22 +++++ hotel_door_codes/__manifest__.py | 47 +++++++++++ hotel_door_codes/data/menus.xml | 13 +++ hotel_door_codes/models/__init__.py | 23 ++++++ .../models/inherit_hotel_reservation.py | 71 ++++++++++++++++ .../models/inherit_res_company.py | 29 +++++++ hotel_door_codes/static/description/icon.png | Bin 0 -> 24484 bytes .../views/inherit_hotel_reservation.xml | 23 ++++++ .../views/inherit_report_viajero.xml | 14 ++++ .../views/inherit_res_company.xml | 18 ++++ hotel_door_codes/wizard/__init__.py | 21 +++++ hotel_door_codes/wizard/door_code.py | 78 ++++++++++++++++++ hotel_door_codes/wizard/door_code.xml | 33 ++++++++ .../views/report_viajero_document.xml | 2 + 15 files changed, 407 insertions(+) create mode 100644 hotel_door_codes/README.rst create mode 100644 hotel_door_codes/__init__.py create mode 100644 hotel_door_codes/__manifest__.py create mode 100644 hotel_door_codes/data/menus.xml create mode 100644 hotel_door_codes/models/__init__.py create mode 100644 hotel_door_codes/models/inherit_hotel_reservation.py create mode 100644 hotel_door_codes/models/inherit_res_company.py create mode 100644 hotel_door_codes/static/description/icon.png create mode 100644 hotel_door_codes/views/inherit_hotel_reservation.xml create mode 100644 hotel_door_codes/views/inherit_report_viajero.xml create mode 100644 hotel_door_codes/views/inherit_res_company.xml create mode 100644 hotel_door_codes/wizard/__init__.py create mode 100644 hotel_door_codes/wizard/door_code.py create mode 100644 hotel_door_codes/wizard/door_code.xml diff --git a/hotel_door_codes/README.rst b/hotel_door_codes/README.rst new file mode 100644 index 000000000..39b189275 --- /dev/null +++ b/hotel_door_codes/README.rst @@ -0,0 +1,13 @@ +DOOR CODES +========== + +Generate HOTEL DOOR CODES + + +Credits +======= + +Creator +------------ + +* Jose Luis Algara Toledo diff --git a/hotel_door_codes/__init__.py b/hotel_door_codes/__init__.py new file mode 100644 index 000000000..d81805226 --- /dev/null +++ b/hotel_door_codes/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2018-2019 Jose Luis Algara Toledo +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +############################################################################## +from . import models +from . import wizard diff --git a/hotel_door_codes/__manifest__.py b/hotel_door_codes/__manifest__.py new file mode 100644 index 000000000..299e75b83 --- /dev/null +++ b/hotel_door_codes/__manifest__.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Odoo, Open Source Management Solution +# Copyright (C) 2018-2019 Jose Luis Algara Toledo +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +############################################################################## + +{ + 'name': 'Hotel Door Codes', + 'version': '2.1', + 'author': "Jose Luis Algara Toledo ", + 'website': 'https://www.aldahotels.com', + 'category': 'hotel code', + 'summary': "Generate Hotel door codes, in Pseudo random system", + 'description': "Hotel Door Codes", + 'depends': [ + 'hotel', 'hotel_l10n_es' + ], + 'data': [ + 'wizard/door_code.xml', + 'data/menus.xml', + 'views/inherit_res_company.xml', + 'views/inherit_hotel_reservation.xml', + 'views/inherit_report_viajero.xml', + ], + 'qweb': [], + 'test': [ + ], + 'installable': True, + 'auto_install': False, + 'application': False, + 'license': 'AGPL-3', +} diff --git a/hotel_door_codes/data/menus.xml b/hotel_door_codes/data/menus.xml new file mode 100644 index 000000000..ce3b25d84 --- /dev/null +++ b/hotel_door_codes/data/menus.xml @@ -0,0 +1,13 @@ + + + + + + diff --git a/hotel_door_codes/models/__init__.py b/hotel_door_codes/models/__init__.py new file mode 100644 index 000000000..71658e650 --- /dev/null +++ b/hotel_door_codes/models/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2018-2019 Alda Hotels +# Jose Luis Algara +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +############################################################################## +from . import inherit_res_company +from . import inherit_hotel_reservation diff --git a/hotel_door_codes/models/inherit_hotel_reservation.py b/hotel_door_codes/models/inherit_hotel_reservation.py new file mode 100644 index 000000000..0ed077f4f --- /dev/null +++ b/hotel_door_codes/models/inherit_hotel_reservation.py @@ -0,0 +1,71 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2018-2019 Alda Hotels +# Jose Luis Algara +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +############################################################################## +from openerp import models, fields, api +from datetime import datetime, date, time, timedelta +from openerp.tools import DEFAULT_SERVER_DATE_FORMAT + + +class Inherit_hotel_reservation(models.Model): + _inherit = 'hotel.reservation' + + @api.multi + def doorcode4(self, fecha): + # Calculate de Door Code... need a date in String format "%Y-%m-%d" + compan = self.env.user.company_id + d = datetime.strptime(fecha, DEFAULT_SERVER_DATE_FORMAT) + dia_semana = datetime.weekday(d) # Dias a restar y ponerlo en lunes + d = d - timedelta(days=dia_semana) + dtxt = d.strftime('%s.%%06d') % d.microsecond + dtxt = compan.precode + dtxt[4:8] + compan.postcode + return dtxt + + @api.multi + def _compute_door_codes(self): + for res in self: + entrada = datetime.strptime( + res.checkin[:10], DEFAULT_SERVER_DATE_FORMAT) + if datetime.weekday(entrada) == 0: + entrada = entrada + timedelta(days=1) + salida = datetime.strptime( + res.checkout[:10], DEFAULT_SERVER_DATE_FORMAT) + if datetime.weekday(salida) == 0: + salida = salida - timedelta(days=1) + codes = (u'Código de entrada: ' + + '' + + res.doorcode4(datetime.strftime(entrada, "%Y-%m-%d")) + + '') + while entrada <= salida: + if datetime.weekday(entrada) == 0: + codes += ("
" + + u'Cambiará el Lunes ' + + datetime.strftime(entrada, "%d-%m-%Y") + + ' a: ' + + res.doorcode4(datetime.strftime( + entrada, "%Y-%m-%d")) + + '') + entrada = entrada + timedelta(days=1) + res.door_codes = codes + + door_codes = fields.Html(u'Códigos de entrada', + compute='_compute_door_codes') + box_number = fields.Integer ('Numero de Caja') + box_code = fields.Char ('Cod. Caja') diff --git a/hotel_door_codes/models/inherit_res_company.py b/hotel_door_codes/models/inherit_res_company.py new file mode 100644 index 000000000..181d6424c --- /dev/null +++ b/hotel_door_codes/models/inherit_res_company.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2018-2019 Alda Hotels +# Jose Luis Algara +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +############################################################################## +from openerp import models, fields, api + + +class Inherit_res_company(models.Model): + _inherit = 'res.company' + + precode = fields.Char('Characters before the door code', default='') + postcode = fields.Char('Characters after the code', default='') diff --git a/hotel_door_codes/static/description/icon.png b/hotel_door_codes/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0d7c99f06fafe4f012cab618e056e8652ec140d5 GIT binary patch literal 24484 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 KjTy_-E#^N^!qF`N literal 0 HcmV?d00001 diff --git a/hotel_door_codes/views/inherit_hotel_reservation.xml b/hotel_door_codes/views/inherit_hotel_reservation.xml new file mode 100644 index 000000000..3c236a4e4 --- /dev/null +++ b/hotel_door_codes/views/inherit_hotel_reservation.xml @@ -0,0 +1,23 @@ + + + + + + + door_code.reservation_form + hotel.reservation + + + + + + + + + + + + + + + diff --git a/hotel_door_codes/views/inherit_report_viajero.xml b/hotel_door_codes/views/inherit_report_viajero.xml new file mode 100644 index 000000000..0e1257ddf --- /dev/null +++ b/hotel_door_codes/views/inherit_report_viajero.xml @@ -0,0 +1,14 @@ + + + + + + + + diff --git a/hotel_door_codes/views/inherit_res_company.xml b/hotel_door_codes/views/inherit_res_company.xml new file mode 100644 index 000000000..b1638a40d --- /dev/null +++ b/hotel_door_codes/views/inherit_res_company.xml @@ -0,0 +1,18 @@ + + + + + + + door_code.config.view_company_form + res.company + + + + + + + + + + diff --git a/hotel_door_codes/wizard/__init__.py b/hotel_door_codes/wizard/__init__.py new file mode 100644 index 000000000..180966b56 --- /dev/null +++ b/hotel_door_codes/wizard/__init__.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2018-2019 Jose Luis Algara Toledo +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +############################################################################## +from . import door_code diff --git a/hotel_door_codes/wizard/door_code.py b/hotel_door_codes/wizard/door_code.py new file mode 100644 index 000000000..334be679a --- /dev/null +++ b/hotel_door_codes/wizard/door_code.py @@ -0,0 +1,78 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Odoo, Open Source Management Solution +# Copyright (C) 2018-2019 Jose Luis Algara Toledo +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +############################################################################## +import datetime +from datetime import datetime, date, time, timedelta +from odoo import api, fields, models, _ +from openerp.tools import DEFAULT_SERVER_DATE_FORMAT + + +class DoorCodeWizard(models.TransientModel): + _name = 'door_code' + + @api.model + def _get_default_date_start(self): + return datetime.now().strftime(DEFAULT_SERVER_DATE_FORMAT) + + date_start = fields.Date("Inicio periodo", + default=_get_default_date_start) + date_end = fields.Date("Fin del periodo", + default=_get_default_date_start) + door_code = fields.Html(u'Código para la puerta') + + @api.multi + def doorcode4(self, fecha): + # Calculate de Door Code... need a date in String format "%Y-%m-%d" + compan = self.env.user.company_id + d = datetime.strptime(fecha, DEFAULT_SERVER_DATE_FORMAT) + dia_semana = datetime.weekday(d) # Dias a restar y ponerlo en lunes + d = d - timedelta(days=dia_semana) + dtxt = d.strftime('%s.%%06d') % d.microsecond + dtxt = compan.precode + dtxt[4:8] + compan.postcode + return dtxt + + @api.multi + def check_code(self): + entrada = datetime.strptime( + self.date_start, DEFAULT_SERVER_DATE_FORMAT) + if datetime.weekday(entrada) == 0: + entrada = entrada + timedelta(days=1) + salida = datetime.strptime( + self.date_end, DEFAULT_SERVER_DATE_FORMAT) + if datetime.weekday(salida) == 0: + salida = salida - timedelta(days=1) + codes = (u'Código de entrada: ' + + '' + + self.doorcode4(self.date_start) + + '') + while entrada <= salida: + if datetime.weekday(entrada) == 0: + codes += ("
" + + u'Cambiará el Lunes ' + + datetime.strftime(entrada, "%d-%m-%Y") + + ' a: ' + + self.doorcode4(datetime.strftime( + entrada, "%Y-%m-%d")) + + '') + entrada = entrada + timedelta(days=1) + + return self.write({ + 'door_code': codes + }) diff --git a/hotel_door_codes/wizard/door_code.xml b/hotel_door_codes/wizard/door_code.xml new file mode 100644 index 000000000..f0506a79c --- /dev/null +++ b/hotel_door_codes/wizard/door_code.xml @@ -0,0 +1,33 @@ + + + + + door_code.view + door_code + +
+ + + + + + + + + + +
+
+
+
+
+
+ +
+
diff --git a/hotel_l10n_es/views/report_viajero_document.xml b/hotel_l10n_es/views/report_viajero_document.xml index e3b6f194f..e66c18ce7 100755 --- a/hotel_l10n_es/views/report_viajero_document.xml +++ b/hotel_l10n_es/views/report_viajero_document.xml @@ -56,6 +56,8 @@ Asimismo hemos solicitado que confirme esta autorización para ofrecerle nuestros servicios y poder fidelizarle como cliente.

+
+