This commit is contained in:
oscar alvarez 2022-07-19 10:46:45 -05:00
parent 99be174a93
commit 36bafab94e
8 changed files with 250 additions and 24 deletions

View File

@ -19,6 +19,7 @@ from . import dash
from . import invoice
from . import statement
from . import stock
from . import operation
def register():
@ -36,6 +37,7 @@ def register():
configuration.Configuration,
product.Template,
product.PriceList,
operation.Maintenance,
booking.Booking,
booking.BookingDailyStart,
booking.ManagerStart,

View File

@ -83,13 +83,6 @@ this repository contains the full copyright notices and license terms. -->
<field name="count" eval="True"/>
<field name="act_window" ref="act_booking_form"/>
</record>
<!-- <record model="ir.action.act_window.domain" id="act_booking_form_domain_check_in">
<field name="name">Check In</field>
<field name="sequence" eval="30"/>
<field name="domain" eval="[('registration_state', '=', 'check_in')]" pyson="1"/>
<field name="count" eval="True"/>
<field name="act_window" ref="act_booking_form"/>
</record> -->
<record model="ir.action.act_window.domain" id="act_booking_form_domain_no_show">
<field name="name">No Show</field>
<field name="sequence" eval="50"/>
@ -100,13 +93,6 @@ this repository contains the full copyright notices and license terms. -->
<field name="count" eval="True"/>
<field name="act_window" ref="act_booking_form"/>
</record>
<record model="ir.action.act_window.domain" id="act_booking_form_domain_check_out">
<field name="name">Check Out</field>
<field name="sequence" eval="30"/>
<field name="domain" eval="[('registration_state', '=', 'check_out')]" pyson="1"/>
<field name="count" eval="True"/>
<field name="act_window" ref="act_booking_form"/>
</record>
<record model="ir.action.act_window.domain" id="act_booking_form_domain_all">
<field name="name">All</field>
<field name="sequence" eval="90"/>

101
operation.py Normal file
View File

@ -0,0 +1,101 @@
#This file is part of Presik. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.model import ModelView, ModelSQL, fields, Workflow
from trytond.pyson import Eval, Bool
STATES = {'readonly': Eval('state') != 'draft'}
class Maintenance(Workflow, ModelSQL, ModelView):
'Hotel Maintenance'
__name__ = 'hotel.maintenance'
room = fields.Many2One('hotel.room', 'Room', required=True, states=STATES)
start_date = fields.Date('Start Maintenance', states=STATES)
end_date = fields.Date('End Maintenance', states={
'required': Bool(Eval('start_date')),
'readonly': Eval('state') != 'draft'
})
total_days = fields.Function(fields.Integer('Total Days'), 'get_days')
issue = fields.Text('Issue', required=True)
action = fields.Text('Action', states={
'required': Eval('state') == 'finished',
'readonly': Eval('state') != 'confirmed'
})
inspected_by = fields.Many2One('company.employee', 'Inspected By',
required=True)
state = fields.Selection([
('draft', 'Draft'),
('confirmed', 'Confirmed'),
('finished', 'Finished'),
('cancelled', 'Canceled'),
], 'State', readonly=True, select=True)
criticality = fields.Selection([
('low', 'Low'),
('important', 'Important'),
('urgent', 'Urgent'),
], 'Criticality')
@classmethod
def __setup__(cls):
super(Maintenance, cls).__setup__()
cls._transitions |= set((
('draft', 'confirmed'),
('draft', 'cancelled'),
('confirmed', 'draft'),
('cancelled', 'draft'),
('confirmed', 'cancelled'),
('confirmed', 'finished'),
('finished', 'confirmed'),
))
cls._buttons.update({
'confirm': {
'invisible': Eval('state') != 'draft',
},
'finish': {
'invisible': Eval('state') != 'confirmed',
},
'draft': {
'invisible': Eval('state') != 'confirmed',
},
'cancel': {
'invisible': Eval('state') != 'finished',
}
})
@staticmethod
def default_state():
return 'draft'
@classmethod
@ModelView.button
@Workflow.transition('draft')
def draft(cls, records):
pass
@classmethod
@ModelView.button
@Workflow.transition('cancelled')
def cancel(cls, records):
pass
@classmethod
@ModelView.button
@Workflow.transition('confirmed')
def confirm(cls, records):
pass
@classmethod
@ModelView.button
@Workflow.transition('finished')
def finish(cls, records):
pass
@fields.depends('start_date', 'end_date')
def on_change_start_date(self):
if not self.start_date:
self.end_date = None
def get_days(self, name):
if self.end_date and self.start_date:
return (self.end_date - self.start_date).days

92
operation.xml Normal file
View File

@ -0,0 +1,92 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tryton>
<data>
<record model="ir.ui.view" id="hotel_maintenance_view_tree">
<field name="model">hotel.maintenance</field>
<field name="type">tree</field>
<field name="name">maintenance_tree</field>
</record>
<record model="ir.ui.view" id="hotel_maintenance_view_form">
<field name="model">hotel.maintenance</field>
<field name="type">form</field>
<field name="name">maintenance_form</field>
</record>
<record model="ir.action.act_window" id="act_hotel_maintenance_form">
<field name="name">Maintenance</field>
<field name="res_model">hotel.maintenance</field>
</record>
<record model="ir.action.act_window.view" id="act_maintenance_form_view1">
<field name="sequence" eval="10"/>
<field name="view" ref="hotel_maintenance_view_tree"/>
<field name="act_window" ref="act_hotel_maintenance_form"/>
</record>
<record model="ir.action.act_window.view" id="act_maintenance_form_view2">
<field name="sequence" eval="20"/>
<field name="view" ref="hotel_maintenance_view_form"/>
<field name="act_window" ref="act_hotel_maintenance_form"/>
</record>
<record model="ir.action.act_window.domain" id="act_hotel_maintenance_form_domain_draft">
<field name="name">Draft`</field>
<field name="sequence" eval="50"/>
<field name="domain" eval="['OR',
[('state', '=', 'draft')],
]" pyson="1"/>
<field name="count" eval="True"/>
<field name="act_window" ref="act_hotel_maintenance_form"/>
</record>
<record model="ir.action.act_window.domain" id="act_hotel_maintenance_form_domain_confirmed">
<field name="name">Confirmed</field>
<field name="sequence" eval="50"/>
<field name="domain" eval="['OR',
[('state', '=', 'confirmed')],
]" pyson="1"/>
<field name="count" eval="True"/>
<field name="act_window" ref="act_hotel_maintenance_form"/>
</record>
<record model="ir.action.act_window.domain" id="act_hotel_maintenance_form_domain_all">
<field name="name">All</field>
<field name="sequence" eval="90"/>
<field name="domain" eval="[]" pyson="1"/>
<field name="act_window" ref="act_hotel_maintenance_form"/>
</record>
<menuitem name="Maintenance" parent="hotel.menu_hotel"
sequence="20" action="act_hotel_maintenance_form"
id="menu_hotel_maintenance"/>
<!-- Model Access -->
<record model="ir.model.access" id="access_maintenance">
<field name="model" search="[('model', '=', 'hotel.maintenance')]"/>
<field name="perm_read" eval="False"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_delete" eval="False"/>
</record>
<record model="ir.model.access" id="access_maintenance_group_hotel">
<field name="model" search="[('model', '=', 'hotel.maintenance')]"/>
<field name="group" ref="group_hotel"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_delete" eval="False"/>
</record>
<record model="ir.model.access" id="access_maintenance_group_hotel_frontdesk">
<field name="model" search="[('model', '=', 'hotel.maintenance')]"/>
<field name="group" ref="group_hotel_frontdesk"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_delete" eval="False"/>
</record>
<record model="ir.model.access" id="access_maintenance_group_hotel_admin">
<field name="model" search="[('model', '=', 'hotel.maintenance')]"/>
<field name="group" ref="group_hotel_admin"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="perm_delete" eval="True"/>
</record>
</data>
</tryton>

13
room.py
View File

@ -25,7 +25,7 @@ class Room(ModelSQL, ModelView):
amenities = fields.Many2Many('hotel.room-hotel.amenities', 'room',
'amenities', 'Amenities')
space = fields.Integer('Space', help='Space on m2')
channel_id = fields.Char('Channel ID')
channel_id = fields.Char('Channel Manager ID')
main_accommodation = fields.Many2One('product.template',
'Main Accommodation', ondelete='RESTRICT', depends=['templates'],
domain=[('id', 'in', Eval('templates', []))],
@ -42,6 +42,11 @@ class Room(ModelSQL, ModelView):
def default_active():
return True
@fields.depends('start_mnt', 'end_mnt')
def on_change_start_mnt(self):
if not self.start_mnt:
self.end_mnt = None
class RoomAmenities(ModelSQL):
'Room - Amenities'
@ -93,13 +98,9 @@ class CleanningDays(ModelSQL, ModelView):
('5', 'Friday'),
('6', 'Saturday'),
('7', 'Sunday'),
], 'Weekday', required=True)
], 'Weekday', required=True)
note = fields.Text('Note')
@classmethod
def __setup__(cls):
super(CleanningDays, cls).__setup__()
class RoomTemplate(ModelSQL):
'Room - Template'

View File

@ -8,11 +8,11 @@ depends:
sale
product_price_list
sale_price_list
account_voucher
party_personal
commission
dash
account_statement
account_voucher
commission
party_personal
dash
sale_shop
xml:
hotel.xml
@ -32,3 +32,4 @@ xml:
sale.xml
policy.xml
message.xml
operation.xml

31
view/maintenance_form.xml Normal file
View File

@ -0,0 +1,31 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<form col="6">
<label name="room"/>
<field name="room"/>
<label name="criticality"/>
<field name="criticality"/>
<label name="create_uid"/>
<field name="create_uid"/>
<label name="start_date"/>
<field name="start_date"/>
<label name="end_date"/>
<field name="end_date"/>
<label name="total_days"/>
<field name="total_days"/>
<label name="inspected_by"/>
<field name="inspected_by"/>
<separator name="issue" colspan="4"/>
<field name="issue" colspan="4"/>
<separator name="action" colspan="4"/>
<field name="action" colspan="4"/>
<group col="6" colspan="4" id="buttons">
<label name="state"/>
<field name="state"/>
<button name="draft" string="Draft"/>
<button name="cancel" string="Cancel" icon="tryton-cancel"/>
<button name="confirm" string="Confirm" icon="tryton-forward"/>
<button name="finish" string="Finish" icon="tryton-cancel"/>
</group>
</form>

12
view/maintenance_tree.xml Normal file
View File

@ -0,0 +1,12 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tree>
<field name="room" expand="1"/>
<field name="start_date" expand="1"/>
<field name="end_date" expand="1"/>
<field name="inspected_by" expand="1"/>
<field name="criticality" expand="1"/>
<field name="total_days" expand="1"/>
<field name="state" expand="1"/>
</tree>