mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[ADD] Hotel Door Codes Module
This commit is contained in:
@@ -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': [
|
||||
|
||||
@@ -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
162
hotel_door_codes/i18n/es.po
Normal 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"
|
||||
@@ -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
|
||||
|
||||
@@ -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=' ')
|
||||
@@ -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
|
||||
|
||||
20
hotel_door_codes/views/inherit_hotel_property.xml
Normal file
20
hotel_door_codes/views/inherit_hotel_property.xml
Normal 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>
|
||||
@@ -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" />
|
||||
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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',
|
||||
})
|
||||
|
||||
@@ -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" >
|
||||
|
||||
Reference in New Issue
Block a user