[ADD] Hotel Door Codes Module

This commit is contained in:
Jose Luis
2019-11-27 17:50:02 +01:00
parent c9a1699b15
commit d8381e8fd7
12 changed files with 250 additions and 98 deletions

View File

@@ -21,21 +21,22 @@
{
'name': 'Hotel Door Codes',
'version': '2.1',
'version': '3.0',
'author': "Jose Luis Algara Toledo <osotranquilo@gmail.com>",
'website': 'https://www.aldahotels.com',
'category': 'hotel code',
'summary': "Generate Hotel door codes, in Pseudo random system",
'description': "Hotel Door Codes",
'description': "Hotel Door Codes. Now multihotel",
'depends': [
'hotel', 'hotel_l10n_es'
'hotel',
# 'hotel_l10n_es'
],
'data': [
'wizard/door_code.xml',
'data/menus.xml',
'views/inherit_res_company.xml',
'views/inherit_hotel_property.xml',
'views/inherit_hotel_reservation.xml',
'views/inherit_report_viajero.xml',
# 'views/inherit_report_viajero.xml',
],
'qweb': [],
'test': [

View File

@@ -3,7 +3,7 @@
<data>
<menuitem
id="menu_hotel_door_code"
name="Codigos para la Puerta"
name="Check door codes"
parent="hotel.hotel_reports_menu"
action="door_code_act"
groups="hotel.group_hotel_user,hotel.group_hotel_manager"

162
hotel_door_codes/i18n/es.po Normal file
View File

@@ -0,0 +1,162 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * hotel_door_codes
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 11.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-11-27 12:40+0000\n"
"PO-Revision-Date: 2019-11-27 17:33+0100\n"
"Last-Translator: Jose Luis Algara Toledo <osotranquilo@gmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: \n"
"Language: es\n"
"X-Generator: Poedit 2.0.6\n"
#. module: hotel_door_codes
#: code:addons/hotel_door_codes/wizard/door_code.py:66
#, python-format
msgid " to:"
msgstr " a:"
#. module: hotel_door_codes
#: code:addons/hotel_door_codes/models/inherit_hotel_reservation.py:51
#, python-format
msgid " to: "
msgstr " a: "
#. module: hotel_door_codes
#: model:ir.model.fields,field_description:hotel_door_codes.field_hotel_reservation_box_number
msgid "Box Number"
msgstr "Numero de caja"
#. module: hotel_door_codes
#: model:ir.model.fields,field_description:hotel_door_codes.field_hotel_reservation_box_code
msgid "Box code"
msgstr "Código de caja"
#. module: hotel_door_codes
#: model:ir.model.fields,field_description:hotel_door_codes.field_hotel_property_postcode
msgid "Characters after the code"
msgstr "Caracteres después del código"
#. module: hotel_door_codes
#: model:ir.model.fields,field_description:hotel_door_codes.field_hotel_property_precode
msgid "Characters before the door code"
msgstr "Caracteres antes del código de la puerta"
#. module: hotel_door_codes
#: model:ir.ui.menu,name:hotel_door_codes.menu_hotel_door_code
msgid "Check door codes"
msgstr "Ver códigos de puertas"
#. module: hotel_door_codes
#: model:ir.model,name:hotel_door_codes.model_res_company
msgid "Companies"
msgstr "Empresas"
#. module: hotel_door_codes
#: model:ir.model.fields,field_description:hotel_door_codes.field_door_code_create_uid
msgid "Created by"
msgstr "Creado por"
#. module: hotel_door_codes
#: model:ir.model.fields,field_description:hotel_door_codes.field_door_code_create_date
msgid "Created on"
msgstr "Creado en"
#. module: hotel_door_codes
#: model:ir.model.fields,field_description:hotel_door_codes.field_door_code_display_name
msgid "Display Name"
msgstr "Nombre para mostrar"
#. module: hotel_door_codes
#: model:ir.actions.act_window,name:hotel_door_codes.door_code_act
#: model:ir.model,name:hotel_door_codes.model_door_code
#: model:ir.ui.view,arch_db:hotel_door_codes.hotel_door_code_view
msgid "Door Code Generator"
msgstr "Generador de códigos de puerta"
#. module: hotel_door_codes
#: model:ir.model.fields,field_description:hotel_door_codes.field_hotel_reservation_door_codes
#: model:ir.ui.view,arch_db:hotel_door_codes.door_code_view_property_form
msgid "Door Codes"
msgstr "Códigos de puerta"
#. module: hotel_door_codes
#: model:ir.model.fields,field_description:hotel_door_codes.field_door_code_door_code
msgid "Door code"
msgstr "Código de puerta"
#. module: hotel_door_codes
#: model:ir.model.fields,field_description:hotel_door_codes.field_door_code_date_end
msgid "End of period"
msgstr "Fin del periodo"
#. module: hotel_door_codes
#: code:addons/hotel_door_codes/models/inherit_hotel_reservation.py:42
#: code:addons/hotel_door_codes/wizard/door_code.py:57
#, python-format
msgid "Entry Code: "
msgstr "Código de entrada: "
#. module: hotel_door_codes
#: model:ir.ui.view,arch_db:hotel_door_codes.door_code_reservation_form
msgid "Entry Codes"
msgstr "Códigos de entrada"
#. module: hotel_door_codes
#: model:ir.ui.view,arch_db:hotel_door_codes.hotel_door_code_view
msgid "Generate Code"
msgstr "Generar códigos"
#. module: hotel_door_codes
#: model:ir.model,name:hotel_door_codes.model_hotel_property
msgid "Hotel"
msgstr "Hotel"
#. module: hotel_door_codes
#: model:ir.model,name:hotel_door_codes.model_hotel_reservation
msgid "Hotel Reservation"
msgstr "Hotel Reservation"
#. module: hotel_door_codes
#: model:ir.model.fields,field_description:hotel_door_codes.field_door_code_id
msgid "ID"
msgstr "ID"
#. module: hotel_door_codes
#: code:addons/hotel_door_codes/wizard/door_code.py:64
#, python-format
msgid "It will change on "
msgstr "Cambiará el "
#. module: hotel_door_codes
#: code:addons/hotel_door_codes/models/inherit_hotel_reservation.py:49
#, python-format
msgid "It will change on Monday "
msgstr "Cambiará el lunes "
#. module: hotel_door_codes
#: model:ir.model.fields,field_description:hotel_door_codes.field_door_code___last_update
msgid "Last Modified on"
msgstr "Última modificación el"
#. module: hotel_door_codes
#: model:ir.model.fields,field_description:hotel_door_codes.field_door_code_write_uid
msgid "Last Updated by"
msgstr "Última actualización por"
#. module: hotel_door_codes
#: model:ir.model.fields,field_description:hotel_door_codes.field_door_code_write_date
msgid "Last Updated on"
msgstr "Ultima actualización en"
#. module: hotel_door_codes
#: model:ir.model.fields,field_description:hotel_door_codes.field_door_code_date_start
msgid "Start of the period"
msgstr "Comienzo del periodo"

View File

@@ -19,5 +19,5 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from . import inherit_res_company
from . import inherit_hotel_property
from . import inherit_hotel_reservation

View File

@@ -19,11 +19,11 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from openerp import models, fields, api
from openerp import models, fields
class Inherit_res_company(models.Model):
_inherit = 'res.company'
class InheritHotelProperty(models.Model):
_inherit = 'hotel.property'
precode = fields.Char('Characters before the door code', default='')
postcode = fields.Char('Characters after the code', default='')
precode = fields.Char('Characters before the door code', default=' ')
postcode = fields.Char('Characters after the code', default=' ')

View File

@@ -19,29 +19,15 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from openerp import models, fields, api
from datetime import datetime, date, time, timedelta
from openerp import models, fields, api, _
from datetime import datetime, 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
if not compan.precode:
compan.precode = ""
if not compan.postcode:
compan.postcode = ""
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
# Default methods
@api.multi
def _compute_door_codes(self):
for res in self:
@@ -53,23 +39,41 @@ class Inherit_hotel_reservation(models.Model):
res.checkout[:10], DEFAULT_SERVER_DATE_FORMAT)
if datetime.weekday(salida) == 0:
salida = salida - timedelta(days=1)
codes = (u'Código de entrada: ' +
codes = (_('Entry Code: ') +
'<strong><span style="font-size: 1.4em;">' +
res.doorcode4(datetime.strftime(entrada, "%Y-%m-%d")) +
'</span></strong>')
while entrada <= salida:
if datetime.weekday(entrada) == 0:
codes += ("<br>" +
u'Cambiará el Lunes ' +
_('It will change on Monday ') +
datetime.strftime(entrada, "%d-%m-%Y") +
' a: <strong><span style="font-size: 1.4em;">' +
_(' to: ') +
'<strong><span style="font-size: 1.4em;">' +
res.doorcode4(datetime.strftime(
entrada, "%Y-%m-%d")) +
'</span></strong>')
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')
# Fields declaration
door_codes = fields.Html(
'Door Codes',
compute='_compute_door_codes')
box_number = fields.Integer('Box Number')
box_code = fields.Char('Box code')
@api.multi
def doorcode4(self, fecha):
# Calculate de Door Code... need a date in String format "%Y-%m-%d"
compan = self.env.user.hotel_id
if not compan.precode:
compan.precode = " "
if not compan.postcode:
compan.postcode = " "
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

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Hotel Property Settings -->
<data>
<!-- Inherit Property view to add 'door_code' -->
<record id="door_code_view_property_form" model="ir.ui.view">
<field name="name">door_code.config.view_property_form</field>
<field name="model">hotel.property</field>
<field name="inherit_id" ref="hotel.hotel_property_views_form"/>
<field name="arch" type="xml">
<xpath expr="//page[@name='hotel_settings']" position="inside">
<group colspan="4" col="4" name="door_codes" string="Door Codes">
<field name="precode"/>
<field name="postcode"/>
</group>
</xpath>
</field>
</record>
</data>
</odoo>

View File

@@ -9,7 +9,7 @@
<field name="inherit_id" ref="hotel.hotel_reservation_view_form" />
<field name="arch" type="xml">
<xpath expr="//page[@name='others']" position="after">
<page name="doorcode" string="Códigos entrada">
<page name="doorcode" string="Entry Codes">
<group>
<field name="door_codes" />
<field name="box_number" />

View File

@@ -1,14 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Hotel Settings -->
<data>
<!-- Inherit viajero repdort to add 'door_code' -->
<template id="door_code_view_report" inherit_id="hotel_l10n_es.report_viajero_document">
<xpath expr="//div[@class='final']" position="replace">
<div class ="doorcodes" style="font-size:1.8em;">
<span t-field="o.reservation_id.door_codes"/>
</div>
</xpath>
</template>
</data>
</odoo>

View File

@@ -1,20 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- Hotel Settings -->
<data>
<!-- Inherit Company view to add 'door_code' -->
<record id="door_code_view_company_form" model="ir.ui.view">
<field name="name">door_code.config.view_company_form</field>
<field name="model">res.company</field>
<field name="inherit_id" ref="base.view_company_form"/>
<field name="arch" type="xml">
<xpath expr="//page[@name='hotel_settings_page']" position="inside">
<group name="door_code" string="Door Codes">
<field name="precode"/>
<field name="postcode"/>
</group>
</xpath>
</field>
</record>
</data>
</odoo>

View File

@@ -18,38 +18,33 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import datetime
from datetime import datetime, date, time, timedelta
from datetime import datetime, timedelta
from odoo import api, fields, models, _
from openerp.tools import DEFAULT_SERVER_DATE_FORMAT
from odoo.tools import DEFAULT_SERVER_DATE_FORMAT
class DoorCodeWizard(models.TransientModel):
_name = 'door_code'
_description = 'Door Code Generator'
@api.model
# Default methods
@api.multi
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
# Fields declaration
date_start = fields.Date(
"Start of the period",
default=_get_default_date_start)
date_end = fields.Date(
"End of period",
default=_get_default_date_start)
door_code = fields.Html("Door code")
@api.multi
def check_code(self):
reservation = self.env['hotel.reservation']
entrada = datetime.strptime(
self.date_start, DEFAULT_SERVER_DATE_FORMAT)
if datetime.weekday(entrada) == 0:
@@ -58,21 +53,25 @@ class DoorCodeWizard(models.TransientModel):
self.date_end, DEFAULT_SERVER_DATE_FORMAT)
if datetime.weekday(salida) == 0:
salida = salida - timedelta(days=1)
codes = (u'Código de entrada: ' +
codes = (_('Entry Code: ') +
'<strong><span style="font-size: 2em;">' +
self.doorcode4(self.date_start) +
reservation.doorcode4(self.date_start) +
'</span></strong>')
while entrada <= salida:
if datetime.weekday(entrada) == 0:
codes += ("<br>" +
u'Cambiará el Lunes ' +
_('It will change on ') +
datetime.strftime(entrada, "%d-%m-%Y") +
' a: <strong><span style="font-size: 2em;">' +
self.doorcode4(datetime.strftime(
_(' to:') +
'<strong><span style="font-size: 2em;">' +
reservation.doorcode4(datetime.strftime(
entrada, "%Y-%m-%d")) +
'</span></strong>')
entrada = entrada + timedelta(days=1)
return self.write({
'door_code': codes
'door_code': codes,
'name': 'Ya te digo',
'clear_breadcrumb': True,
'target': 'current',
})

View File

@@ -2,7 +2,7 @@
<odoo>
<data>
<record model="ir.ui.view" id="hotel_door_code_view">
<field name="name">door_code.view</field>
<field name="name">Door codes</field>
<field name="model">door_code</field>
<field name="arch" type="xml">
<form string="Door Code Generator" >