[MIG] Views

This commit is contained in:
Darío Lodeiros
2020-07-09 09:37:03 +02:00
parent 0fb48fade2
commit 15f222bcbf
97 changed files with 315 additions and 369 deletions

View File

@@ -341,7 +341,6 @@ class CallCenterReportWizard(models.TransientModel):
'xls_binary': base64.encodestring(file_data.read()), 'xls_binary': base64.encodestring(file_data.read()),
} }
@api.multi
def export(self): def export(self):
self.write(self._export()) self.write(self._export())
return { return {

View File

@@ -34,7 +34,6 @@
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">call.center.report.wizard</field> <field name="res_model">call.center.report.wizard</field>
<field name="view_id" ref="view_call_center_report_wizard"/> <field name="view_id" ref="view_call_center_report_wizard"/>
<field name="view_type">form</field>
<field name="view_mode">form</field> <field name="view_mode">form</field>
<field name="target">new</field> <field name="target">new</field>
</record> </record>

View File

@@ -20,7 +20,6 @@
<record id="action_account_payments_internal" model="ir.actions.act_window"> <record id="action_account_payments_internal" model="ir.actions.act_window">
<field name="name">Internal Transfers</field> <field name="name">Internal Transfers</field>
<field name="res_model">account.payment</field> <field name="res_model">account.payment</field>
<field name="view_type">form</field>
<field name="view_mode">tree,kanban,form,graph</field> <field name="view_mode">tree,kanban,form,graph</field>
<field name="context">{'default_payment_type': 'transfer', 'search_default_transfers_filter': 1}</field> <field name="context">{'default_payment_type': 'transfer', 'search_default_transfers_filter': 1}</field>
<field name="domain">[]</field> <field name="domain">[]</field>

View File

@@ -299,7 +299,7 @@ class CashDailyReportWizard(models.TransientModel):
'xls_binary': base64.encodestring(file_data.read()), 'xls_binary': base64.encodestring(file_data.read()),
} }
@api.multi
def export(self): def export(self):
self.write(self._export()) self.write(self._export())
return { return {

View File

@@ -34,7 +34,6 @@
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">cash.daily.report.wizard</field> <field name="res_model">cash.daily.report.wizard</field>
<field name="view_id" ref="view_cash_daily_report_wizard"/> <field name="view_id" ref="view_cash_daily_report_wizard"/>
<field name="view_type">form</field>
<field name="view_mode">form</field> <field name="view_mode">form</field>
<field name="target">new</field> <field name="target">new</field>
</record> </record>

View File

@@ -242,7 +242,7 @@ class GlassofExporterWizard(models.TransientModel):
'xls_invoices_binary': base64.encodestring(file_data.read()), 'xls_invoices_binary': base64.encodestring(file_data.read()),
} }
@api.multi
def export(self): def export(self):
towrite = {} towrite = {}
if self.export_journals: if self.export_journals:

View File

@@ -45,7 +45,6 @@
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">glasof.exporter.wizard</field> <field name="res_model">glasof.exporter.wizard</field>
<field name="view_id" ref="view_glasof_exporter_wizard"/> <field name="view_id" ref="view_glasof_exporter_wizard"/>
<field name="view_type">form</field>
<field name="view_mode">form</field> <field name="view_mode">form</field>
<field name="target">new</field> <field name="target">new</field>
</record> </record>

View File

@@ -5,7 +5,6 @@
<field name="name">Hotel Calendar</field> <field name="name">Hotel Calendar</field>
<field name="res_model">hotel.reservation</field> <field name="res_model">hotel.reservation</field>
<field name="view_mode">pms</field> <field name="view_mode">pms</field>
<field name="view_type">form</field>
</record> </record>
<record id="action_hotel_calendar_management" model="ir.actions.act_window"> <record id="action_hotel_calendar_management" model="ir.actions.act_window">

View File

@@ -14,7 +14,7 @@ class HotelCalendarManagement(models.TransientModel):
_name = 'hotel.calendar.management' _name = 'hotel.calendar.management'
# Business methods # Business methods
@api.multi
def get_hcalendar_settings(self): def get_hcalendar_settings(self):
return { return {
'eday_week': self.env.user.hotel_id.pms_end_day_week, 'eday_week': self.env.user.hotel_id.pms_end_day_week,

View File

@@ -7,7 +7,7 @@ class HotelFolio(models.Model):
_inherit = 'hotel.folio' _inherit = 'hotel.folio'
# ORM overrides # ORM overrides
@api.multi
def write(self, vals): def write(self, vals):
ret = super(HotelFolio, self).write(vals) ret = super(HotelFolio, self).write(vals)
fields_to_check = ('reservation_ids', 'service_ids', 'pending_amount') fields_to_check = ('reservation_ids', 'service_ids', 'pending_amount')
@@ -17,7 +17,7 @@ class HotelFolio(models.Model):
record.reservation_ids.send_bus_notification('write', 'noshow') record.reservation_ids.send_bus_notification('write', 'noshow')
return ret return ret
@api.multi
def unlink(self): def unlink(self):
for record in self: for record in self:
record.reservation_ids.send_bus_notification('unlink', 'warn', record.reservation_ids.send_bus_notification('unlink', 'warn',
@@ -25,7 +25,7 @@ class HotelFolio(models.Model):
return super(HotelFolio, self).unlink() return super(HotelFolio, self).unlink()
# Business methods # Business methods
@api.multi
def compute_amount(self): def compute_amount(self):
ret = super(HotelFolio, self).compute_amount() ret = super(HotelFolio, self).compute_amount()
with self.env.norecompute(): with self.env.norecompute():

View File

@@ -19,7 +19,7 @@ class HotelReservation(models.Model):
store=True) store=True)
# TODO: Add the following method into _compute_color # TODO: Add the following method into _compute_color
@api.multi
def _generate_color(self): def _generate_color(self):
self.ensure_one() self.ensure_one()
company_id = self.env.user.company_id company_id = self.env.user.company_id
@@ -77,14 +77,14 @@ class HotelReservation(models.Model):
_("Reservation Created")) _("Reservation Created"))
return reservation_id return reservation_id
@api.multi
def write(self, vals): def write(self, vals):
_logger.info("RESERV WRITE") _logger.info("RESERV WRITE")
ret = super(HotelReservation, self).write(vals) ret = super(HotelReservation, self).write(vals)
self.send_bus_notification('write', 'noshow') self.send_bus_notification('write', 'noshow')
return ret return ret
@api.multi
def unlink(self): def unlink(self):
self.send_bus_notification('unlink', self.send_bus_notification('unlink',
'warn', 'warn',
@@ -429,7 +429,7 @@ class HotelReservation(models.Model):
'show_num_rooms': self.env.user.hotel_id.pms_show_num_rooms, 'show_num_rooms': self.env.user.hotel_id.pms_show_num_rooms,
} }
@api.multi
def generate_bus_values(self, naction, ntype, ntitle=''): def generate_bus_values(self, naction, ntype, ntitle=''):
self.ensure_one() self.ensure_one()
return { return {
@@ -475,7 +475,7 @@ class HotelReservation(models.Model):
if service.product_id.show_in_calendar] or False, if service.product_id.show_in_calendar] or False,
} }
@api.multi
def send_bus_notification(self, naction, ntype, ntitle=''): def send_bus_notification(self, naction, ntype, ntitle=''):
hotel_cal_obj = self.env['bus.hotel.calendar'] hotel_cal_obj = self.env['bus.hotel.calendar']
for record in self: for record in self:

View File

@@ -28,7 +28,7 @@ class HotelRoomTypeRestrictionItem(models.Model):
}) })
return res return res
@api.multi
def write(self, vals): def write(self, vals):
ret_vals = super(HotelRoomTypeRestrictionItem, self).write(vals) ret_vals = super(HotelRoomTypeRestrictionItem, self).write(vals)
bus_hotel_calendar_obj = self.env['bus.hotel.calendar'] bus_hotel_calendar_obj = self.env['bus.hotel.calendar']
@@ -48,7 +48,7 @@ class HotelRoomTypeRestrictionItem(models.Model):
}) })
return ret_vals return ret_vals
@api.multi
def unlink(self): def unlink(self):
default_restriction_id = self.env.user.hotel_id.default_restriction_id.id default_restriction_id = self.env.user.hotel_id.default_restriction_id.id
# Construct dictionary with relevant info of removed records # Construct dictionary with relevant info of removed records

View File

@@ -37,7 +37,7 @@ class ProductPricelistItem(models.Model):
}) })
return res return res
@api.multi
def write(self, vals): def write(self, vals):
# TODO: refactoring res.config.settings', 'default_pricelist_id' by the current hotel.property.pricelist_id # TODO: refactoring res.config.settings', 'default_pricelist_id' by the current hotel.property.pricelist_id
pricelist_default_id = self.env['ir.default'].sudo().get( pricelist_default_id = self.env['ir.default'].sudo().get(
@@ -77,7 +77,7 @@ class ProductPricelistItem(models.Model):
}) })
return ret_vals return ret_vals
@api.multi
def unlink(self): def unlink(self):
# TODO: refactoring res.config.settings', 'default_pricelist_id' by the current hotel.property.pricelist_id # TODO: refactoring res.config.settings', 'default_pricelist_id' by the current hotel.property.pricelist_id
pricelist_default_id = self.env['ir.default'].sudo().get( pricelist_default_id = self.env['ir.default'].sudo().get(

View File

@@ -4,7 +4,6 @@
<record model="ir.actions.act_window" id="hotel_reservation_action_checkin"> <record model="ir.actions.act_window" id="hotel_reservation_action_checkin">
<field name="name">Hotel folio checkin</field> <field name="name">Hotel folio checkin</field>
<field name="res_model">hotel.reservation</field> <field name="res_model">hotel.reservation</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
<field name="domain">[('real_checkin','=', datetime.datetime.now().strftime('%Y-%m-%d')), <field name="domain">[('real_checkin','=', datetime.datetime.now().strftime('%Y-%m-%d')),
('state', 'in', ['confirm']), ('state', 'in', ['confirm']),
@@ -14,7 +13,6 @@
<record model="ir.actions.act_window" id="hotel_reservation_action_checkout"> <record model="ir.actions.act_window" id="hotel_reservation_action_checkout">
<field name="name">Hotel folio checkout</field> <field name="name">Hotel folio checkout</field>
<field name="res_model">hotel.reservation</field> <field name="res_model">hotel.reservation</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
<field name="domain">[('real_checkout','=', datetime.datetime.now().strftime('%Y-%m-%d')), <field name="domain">[('real_checkout','=', datetime.datetime.now().strftime('%Y-%m-%d')),
('state', 'in', ['booking']), ('state', 'in', ['booking']),
@@ -24,7 +22,6 @@
<record model="ir.actions.act_window" id="hotel_calendar_action_form_tree"> <record model="ir.actions.act_window" id="hotel_calendar_action_form_tree">
<field name="name">Hotel Calendar</field> <field name="name">Hotel Calendar</field>
<field name="res_model">hotel.calendar</field> <field name="res_model">hotel.calendar</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
</record> </record>

View File

@@ -60,7 +60,7 @@ class HotelCalendarManagement(models.TransientModel):
} }
return vals return vals
@api.multi
def save_changes(self, pricelist_id, restriction_id, pricelist, def save_changes(self, pricelist_id, restriction_id, pricelist,
restrictions, availability={}): restrictions, availability={}):
res = super(HotelCalendarManagement, self).save_changes( res = super(HotelCalendarManagement, self).save_changes(

View File

@@ -8,7 +8,7 @@ _logger = logging.getLogger(__name__)
class HotelReservation(models.Model): class HotelReservation(models.Model):
_inherit = "hotel.reservation" _inherit = "hotel.reservation"
@api.multi
def _hcalendar_reservation_data(self, reservations): def _hcalendar_reservation_data(self, reservations):
vals = super(HotelReservation, self)._hcalendar_reservation_data(reservations) vals = super(HotelReservation, self)._hcalendar_reservation_data(reservations)
# TODO: Improve performance by doing a SQL as in get_hcalendar_reservations_data() # TODO: Improve performance by doing a SQL as in get_hcalendar_reservations_data()
@@ -35,7 +35,7 @@ class HotelReservation(models.Model):
# REVIEW: What happens if the reservation is splitted and no parent with channel_bind_ids ¿? # REVIEW: What happens if the reservation is splitted and no parent with channel_bind_ids ¿?
return vals return vals
@api.multi
def generate_bus_values(self, naction, ntype, ntitle=''): def generate_bus_values(self, naction, ntype, ntitle=''):
self.ensure_one() self.ensure_one()
vals = super(HotelReservation, self).generate_bus_values(naction, ntype, ntitle) vals = super(HotelReservation, self).generate_bus_values(naction, ntype, ntitle)
@@ -50,7 +50,7 @@ class HotelReservation(models.Model):
}) })
return vals return vals
@api.multi
def confirm(self): def confirm(self):
for record in self: for record in self:
if record.to_assign: if record.to_assign:

View File

@@ -25,7 +25,7 @@ class HotelRoomTypeAvailability(models.Model):
) )
return res return res
@api.multi
def write(self, vals): def write(self, vals):
ret_vals = super(HotelRoomTypeAvailability, self).write(vals) ret_vals = super(HotelRoomTypeAvailability, self).write(vals)
bus_hotel_calendar_obj = self.env['bus.hotel.calendar'] bus_hotel_calendar_obj = self.env['bus.hotel.calendar']
@@ -35,7 +35,7 @@ class HotelRoomTypeAvailability(models.Model):
) )
return ret_vals return ret_vals
@api.multi
def unlink(self): def unlink(self):
# Construct dictionary with relevant info of removed records # Construct dictionary with relevant info of removed records
unlink_vals = [] unlink_vals = []

View File

@@ -53,12 +53,12 @@ class ChannelBackend(models.Model):
'backend_id', 'backend_id',
string="OTA's") string="OTA's")
@api.multi
def generate_key(self): def generate_key(self):
for record in self: for record in self:
record.security_token = binascii.hexlify(os.urandom(16)).decode() record.security_token = binascii.hexlify(os.urandom(16)).decode()
@api.multi
def synchronize_push_urls(self): def synchronize_push_urls(self):
base_url = self.env['ir.config_parameter'].get_param('web.base.url') base_url = self.env['ir.config_parameter'].get_param('web.base.url')
base_url = base_url.replace("http://", "https://") base_url = base_url.replace("http://", "https://")
@@ -66,7 +66,7 @@ class ChannelBackend(models.Model):
for record in self: for record in self:
channel_ota_info_obj.push_activation(record, base_url) channel_ota_info_obj.push_activation(record, base_url)
@api.multi
def import_reservations(self): def import_reservations(self):
channel_hotel_reservation_obj = self.env['channel.hotel.reservation'] channel_hotel_reservation_obj = self.env['channel.hotel.reservation']
for backend in self: for backend in self:
@@ -80,7 +80,7 @@ class ChannelBackend(models.Model):
title="Import Reservations") title="Import Reservations")
return True return True
@api.multi
def import_reservations_range(self): def import_reservations_range(self):
channel_hotel_reservation_obj = self.env['channel.hotel.reservation'] channel_hotel_reservation_obj = self.env['channel.hotel.reservation']
for backend in self: for backend in self:
@@ -97,7 +97,7 @@ class ChannelBackend(models.Model):
title="Import Reservations") title="Import Reservations")
return True return True
@api.multi
def import_reservation(self): def import_reservation(self):
channel_hotel_reservation_obj = self.env['channel.hotel.reservation'] channel_hotel_reservation_obj = self.env['channel.hotel.reservation']
for backend in self: for backend in self:
@@ -110,7 +110,7 @@ class ChannelBackend(models.Model):
title="Import Reservations") title="Import Reservations")
return True return True
@api.multi
def import_rooms(self): def import_rooms(self):
channel_hotel_room_type_obj = self.env['channel.hotel.room.type'] channel_hotel_room_type_obj = self.env['channel.hotel.room.type']
for backend in self: for backend in self:
@@ -124,7 +124,7 @@ class ChannelBackend(models.Model):
title="Import Rooms") title="Import Rooms")
return True return True
@api.multi
def import_otas_info(self): def import_otas_info(self):
channel_ota_info_obj = self.env['channel.ota.info'] channel_ota_info_obj = self.env['channel.ota.info']
for backend in self: for backend in self:
@@ -134,7 +134,7 @@ class ChannelBackend(models.Model):
title="Import OTA's") title="Import OTA's")
return True return True
@api.multi
def import_availability(self): def import_availability(self):
channel_hotel_room_type_avail_obj = self.env['channel.hotel.room.type.availability'] channel_hotel_room_type_avail_obj = self.env['channel.hotel.room.type.availability']
for backend in self: for backend in self:
@@ -147,7 +147,7 @@ class ChannelBackend(models.Model):
title="Import Availability") title="Import Availability")
return True return True
@api.multi
def push_availability(self): def push_availability(self):
channel_hotel_room_type_avail_obj = self.env['channel.hotel.room.type.availability'] channel_hotel_room_type_avail_obj = self.env['channel.hotel.room.type.availability']
for backend in self: for backend in self:
@@ -157,7 +157,7 @@ class ChannelBackend(models.Model):
title="Export Availability") title="Export Availability")
return True return True
@api.multi
def import_restriction_plans(self): def import_restriction_plans(self):
channel_hotel_room_type_restr_obj = self.env['channel.hotel.room.type.restriction'] channel_hotel_room_type_restr_obj = self.env['channel.hotel.room.type.restriction']
for backend in self: for backend in self:
@@ -171,7 +171,7 @@ class ChannelBackend(models.Model):
title="Import Restrictions") title="Import Restrictions")
return True return True
@api.multi
def import_restriction_values(self): def import_restriction_values(self):
channel_hotel_restr_item_obj = self.env['channel.hotel.room.type.restriction.item'] channel_hotel_restr_item_obj = self.env['channel.hotel.room.type.restriction.item']
for backend in self: for backend in self:
@@ -185,7 +185,7 @@ class ChannelBackend(models.Model):
title="Import Restrictions") title="Import Restrictions")
return True return True
@api.multi
def push_restriction(self): def push_restriction(self):
channel_hotel_restr_item_obj = self.env['channel.hotel.room.type.restriction.item'] channel_hotel_restr_item_obj = self.env['channel.hotel.room.type.restriction.item']
for backend in self: for backend in self:
@@ -195,7 +195,7 @@ class ChannelBackend(models.Model):
title="Export Restrictions") title="Export Restrictions")
return True return True
@api.multi
def import_pricelist_plans(self): def import_pricelist_plans(self):
channel_product_pricelist_obj = self.env['channel.product.pricelist'] channel_product_pricelist_obj = self.env['channel.product.pricelist']
for backend in self: for backend in self:
@@ -209,7 +209,7 @@ class ChannelBackend(models.Model):
title="Import Pricelists") title="Import Pricelists")
return True return True
@api.multi
def import_pricelist_values(self): def import_pricelist_values(self):
channel_product_pricelist_item_obj = self.env['channel.product.pricelist.item'] channel_product_pricelist_item_obj = self.env['channel.product.pricelist.item']
for backend in self: for backend in self:
@@ -223,7 +223,7 @@ class ChannelBackend(models.Model):
title="Import Pricelists") title="Import Pricelists")
return True return True
@api.multi
def push_pricelist(self): def push_pricelist(self):
channel_product_pricelist_item_obj = self.env['channel.product.pricelist.item'] channel_product_pricelist_item_obj = self.env['channel.product.pricelist.item']
for backend in self: for backend in self:
@@ -233,7 +233,7 @@ class ChannelBackend(models.Model):
title="Export Pricelists") title="Export Pricelists")
return True return True
@api.multi
def close_online_sales(self): def close_online_sales(self):
channel_hotel_restr_item_obj = self.env['channel.hotel.room.type.restriction.item'] channel_hotel_restr_item_obj = self.env['channel.hotel.room.type.restriction.item']
for backend in self: for backend in self:
@@ -243,7 +243,7 @@ class ChannelBackend(models.Model):
title="Export Restrictions") title="Export Restrictions")
return True return True
@api.multi
def channel_availability_watchdog(self): def channel_availability_watchdog(self):
# search all availability to the future TODO: It not prepared for multiple backends # search all availability to the future TODO: It not prepared for multiple backends
availabilities = self.env['hotel.room.type.availability'].search([ availabilities = self.env['hotel.room.type.availability'].search([

View File

@@ -37,17 +37,17 @@ class HotelChannelConnectorIssue(models.Model):
title=_("Oops! %s Issue Reported!!") % issue_id.section) title=_("Oops! %s Issue Reported!!") % issue_id.section)
return issue_id return issue_id
@api.multi
def mark_readed(self): def mark_readed(self):
for record in self: for record in self:
record.to_read = False record.to_read = False
@api.multi
def toggle_to_read(self): def toggle_to_read(self):
for record in self: for record in self:
record.to_read = not record.to_read record.to_read = not record.to_read
@api.multi
def mark_as_read(self): def mark_as_read(self):
reserv_ids = [] reserv_ids = []
for record in self: for record in self:

View File

@@ -72,20 +72,20 @@ class ChannelHotelReservation(models.Model):
return importer.fetch_bookings(dfrom, dto) return importer.fetch_bookings(dfrom, dto)
@job(default_channel='root.channel') @job(default_channel='root.channel')
@api.multi
def cancel_reservation(self): def cancel_reservation(self):
with self.backend_id.work_on(self._name) as work: with self.backend_id.work_on(self._name) as work:
exporter = work.component(usage='hotel.reservation.exporter') exporter = work.component(usage='hotel.reservation.exporter')
return exporter.cancel_reservation(self) return exporter.cancel_reservation(self)
@job(default_channel='root.channel') @job(default_channel='root.channel')
@api.multi
def mark_booking(self): def mark_booking(self):
with self.backend_id.work_on(self._name) as work: with self.backend_id.work_on(self._name) as work:
exporter = work.component(usage='hotel.reservation.exporter') exporter = work.component(usage='hotel.reservation.exporter')
return exporter.mark_booking(self) return exporter.mark_booking(self)
@api.multi
def unlink(self): def unlink(self):
vals = [] vals = []
for record in self: for record in self:
@@ -116,7 +116,7 @@ class ChannelHotelReservation(models.Model):
class HotelReservation(models.Model): class HotelReservation(models.Model):
_inherit = 'hotel.reservation' _inherit = 'hotel.reservation'
@api.multi
def _set_access_for_channel_fields(self): def _set_access_for_channel_fields(self):
for record in self: for record in self:
user = self.env['res.users'].browse(self.env.uid) user = self.env['res.users'].browse(self.env.uid)
@@ -215,7 +215,7 @@ class HotelReservation(models.Model):
return reservation_id return reservation_id
@api.multi
def write(self, vals): def write(self, vals):
if self._context.get('connector_no_export', True) and \ if self._context.get('connector_no_export', True) and \
(vals.get('checkin') or vals.get('checkout') or (vals.get('checkin') or vals.get('checkout') or
@@ -267,7 +267,7 @@ class HotelReservation(models.Model):
res = super().write(vals) res = super().write(vals)
return res return res
@api.multi
def generate_copy_values(self, checkin=False, checkout=False): def generate_copy_values(self, checkin=False, checkout=False):
self.ensure_one() self.ensure_one()
res = super().generate_copy_values(checkin=checkin, checkout=checkout) res = super().generate_copy_values(checkin=checkin, checkout=checkout)
@@ -282,7 +282,7 @@ class HotelReservation(models.Model):
}) })
return res return res
@api.multi
def action_reservation_checkout(self): def action_reservation_checkout(self):
for record in self: for record in self:
if record.state != 'cancelled': if record.state != 'cancelled':
@@ -299,7 +299,7 @@ class HotelReservation(models.Model):
return (json_reservs, json_tooltips) return (json_reservs, json_tooltips)
@api.multi
def mark_as_readed(self): def mark_as_readed(self):
self.write({'to_assign': False}) self.write({'to_assign': False})

View File

@@ -87,7 +87,7 @@ class ChannelHotelRoomType(models.Model):
raise ValidationError(_("OTA's capacity can't be greater than room type capacity")) raise ValidationError(_("OTA's capacity can't be greater than room type capacity"))
@api.multi
@api.constrains('channel_short_code') @api.constrains('channel_short_code')
def _check_channel_short_code(self): def _check_channel_short_code(self):
for record in self: for record in self:
@@ -95,7 +95,7 @@ class ChannelHotelRoomType(models.Model):
raise ValidationError(_("Chanel short code can't be longer than 4 characters")) raise ValidationError(_("Chanel short code can't be longer than 4 characters"))
@job(default_channel='root.channel') @job(default_channel='root.channel')
@api.multi
def create_room(self): def create_room(self):
self.ensure_one() self.ensure_one()
if not self.external_id: if not self.external_id:
@@ -104,7 +104,7 @@ class ChannelHotelRoomType(models.Model):
exporter.create_room(self) exporter.create_room(self)
@job(default_channel='root.channel') @job(default_channel='root.channel')
@api.multi
def modify_room(self): def modify_room(self):
self.ensure_one() self.ensure_one()
if self.external_id: if self.external_id:
@@ -113,7 +113,7 @@ class ChannelHotelRoomType(models.Model):
exporter.modify_room(self) exporter.modify_room(self)
@job(default_channel='root.channel') @job(default_channel='root.channel')
@api.multi
def delete_room(self): def delete_room(self):
self.ensure_one() self.ensure_one()
if self.external_id: if self.external_id:
@@ -145,7 +145,7 @@ class HotelRoomType(models.Model):
_("You can not archive a room type with active rooms.") + " " + _("You can not archive a room type with active rooms.") + " " +
_("Please, change the %s room(s) to other room type.") % str(record.total_rooms_count)) _("Please, change the %s room(s) to other room type.") % str(record.total_rooms_count))
@api.multi
def get_restrictions(self, date, restriction_plan_id): def get_restrictions(self, date, restriction_plan_id):
self.ensure_one() self.ensure_one()
restriction = self.env['hotel.room.type.restriction.item'].search([ restriction = self.env['hotel.room.type.restriction.item'].search([
@@ -155,7 +155,7 @@ class HotelRoomType(models.Model):
], limit=1) ], limit=1)
return restriction return restriction
@api.multi
def open_channel_bind_ids(self): def open_channel_bind_ids(self):
channel_bind_ids = self.mapped('channel_bind_ids') channel_bind_ids = self.mapped('channel_bind_ids')
action = self.env.ref('hotel_channel_connector.channel_hotel_room_type_action').read()[0] action = self.env.ref('hotel_channel_connector.channel_hotel_room_type_action').read()[0]
@@ -176,12 +176,12 @@ class HotelRoomType(models.Model):
'default_total_rooms_count': self.total_rooms_count} 'default_total_rooms_count': self.total_rooms_count}
return action return action
@api.multi
def disconnect_channel_bind_ids(self): def disconnect_channel_bind_ids(self):
# TODO: multichannel rooms is not implemented # TODO: multichannel rooms is not implemented
self.channel_bind_ids.with_context({'connector_no_export': True}).unlink() self.channel_bind_ids.with_context({'connector_no_export': True}).unlink()
@api.multi
def write(self, vals): def write(self, vals):
if 'active' in vals and vals.get('active') is False: if 'active' in vals and vals.get('active') is False:
self.channel_bind_ids.unlink() self.channel_bind_ids.unlink()

View File

@@ -20,7 +20,7 @@ class ChannelHotelRoomTypeRestriction(models.Model):
ondelete='cascade') ondelete='cascade')
@job(default_channel='root.channel') @job(default_channel='root.channel')
@api.multi
def create_plan(self): def create_plan(self):
self.ensure_one() self.ensure_one()
if not self.external_id: if not self.external_id:
@@ -29,7 +29,7 @@ class ChannelHotelRoomTypeRestriction(models.Model):
exporter.create_rplan(self) exporter.create_rplan(self)
@job(default_channel='root.channel') @job(default_channel='root.channel')
@api.multi
def update_plan_name(self): def update_plan_name(self):
self.ensure_one() self.ensure_one()
if self.external_id: if self.external_id:
@@ -38,7 +38,7 @@ class ChannelHotelRoomTypeRestriction(models.Model):
exporter.rename_rplan(self) exporter.rename_rplan(self)
@job(default_channel='root.channel') @job(default_channel='root.channel')
@api.multi
def delete_plan(self): def delete_plan(self):
self.ensure_one() self.ensure_one()
if self.external_id: if self.external_id:
@@ -62,7 +62,7 @@ class HotelRoomTypeRestriction(models.Model):
inverse_name='odoo_id', inverse_name='odoo_id',
string='Hotel Channel Connector Bindings') string='Hotel Channel Connector Bindings')
@api.multi
@api.depends('name') @api.depends('name')
def name_get(self): def name_get(self):
room_type_restriction_obj = self.env['hotel.room.type.restriction'] room_type_restriction_obj = self.env['hotel.room.type.restriction']
@@ -80,7 +80,7 @@ class HotelRoomTypeRestriction(models.Model):
names.append((name[0], name[1])) names.append((name[0], name[1]))
return names return names
@api.multi
def open_channel_bind_ids(self): def open_channel_bind_ids(self):
channel_bind_ids = self.mapped('channel_bind_ids') channel_bind_ids = self.mapped('channel_bind_ids')
action = self.env.ref('hotel_channel_connector.channel_hotel_room_type_restriction_action').read()[0] action = self.env.ref('hotel_channel_connector.channel_hotel_room_type_restriction_action').read()[0]
@@ -98,12 +98,12 @@ class HotelRoomTypeRestriction(models.Model):
} }
return action return action
@api.multi
def disconnect_channel_bind_ids(self): def disconnect_channel_bind_ids(self):
# TODO: multichannel rooms is not implemented # TODO: multichannel rooms is not implemented
self.channel_bind_ids.with_context({'connector_no_export': True}).unlink() self.channel_bind_ids.with_context({'connector_no_export': True}).unlink()
@api.multi
def write(self, vals): def write(self, vals):
if 'active' in vals and vals.get('active') is False: if 'active' in vals and vals.get('active') is False:
self.channel_bind_ids.unlink() self.channel_bind_ids.unlink()

View File

@@ -28,7 +28,7 @@ class HotelFolio(models.Model):
importer = work.component(usage='channel.importer') importer = work.component(usage='channel.importer')
importer.fetch_new_bookings() importer.fetch_new_bookings()
@api.multi
def action_confirm(self): def action_confirm(self):
for rec in self: for rec in self:
rec.reservation_ids.write({ rec.reservation_ids.write({
@@ -36,7 +36,7 @@ class HotelFolio(models.Model):
}) })
return super().action_confirm() return super().action_confirm()
@api.multi
def get_grouped_reservations_json(self, state, import_all=False): def get_grouped_reservations_json(self, state, import_all=False):
super().get_grouped_reservations_json(state, import_all=import_all) super().get_grouped_reservations_json(state, import_all=import_all)
self.ensure_one() self.ensure_one()

View File

@@ -9,7 +9,7 @@ from odoo.tools import DEFAULT_SERVER_DATE_FORMAT
class HotelRoom(models.Model): class HotelRoom(models.Model):
_inherit = 'hotel.room' _inherit = 'hotel.room'
@api.multi
def write(self, vals): def write(self, vals):
""" """
Update default availability for segmentation management Update default availability for segmentation management

View File

@@ -10,14 +10,14 @@ class HotelRoomTypeClass(models.Model):
_locked_codes = [] _locked_codes = []
@api.multi
def write(self, vals): def write(self, vals):
for record in self: for record in self:
if record.code_class in self._locked_codes: if record.code_class in self._locked_codes:
raise ValidationError(_("Can't modify channel room type class")) raise ValidationError(_("Can't modify channel room type class"))
return super(HotelRoomTypeClass, self).write(vals) return super(HotelRoomTypeClass, self).write(vals)
@api.multi
def unlink(self): def unlink(self):
for record in self: for record in self:
if record.code_class in self._locked_codes: if record.code_class in self._locked_codes:

View File

@@ -22,7 +22,7 @@ class ChannelProductPricelist(models.Model):
ondelete='cascade') ondelete='cascade')
@job(default_channel='root.channel') @job(default_channel='root.channel')
@api.multi
def create_plan(self): def create_plan(self):
self.ensure_one() self.ensure_one()
if not self.external_id: if not self.external_id:
@@ -31,7 +31,7 @@ class ChannelProductPricelist(models.Model):
exporter.create_plan(self) exporter.create_plan(self)
@job(default_channel='root.channel') @job(default_channel='root.channel')
@api.multi
def create_vplan(self): def create_vplan(self):
self.ensure_one() self.ensure_one()
if not self.external_id: if not self.external_id:
@@ -40,7 +40,7 @@ class ChannelProductPricelist(models.Model):
exporter.create_vplan(self) exporter.create_vplan(self)
@job(default_channel='root.channel') @job(default_channel='root.channel')
@api.multi
def modify_vplan(self): def modify_vplan(self):
self.ensure_one() self.ensure_one()
if self.external_id: if self.external_id:
@@ -49,7 +49,7 @@ class ChannelProductPricelist(models.Model):
exporter.modify_vplan(self) exporter.modify_vplan(self)
@job(default_channel='root.channel') @job(default_channel='root.channel')
@api.multi
def update_plan_name(self): def update_plan_name(self):
self.ensure_one() self.ensure_one()
if self.external_id: if self.external_id:
@@ -58,7 +58,7 @@ class ChannelProductPricelist(models.Model):
exporter.update_plan_name(self) exporter.update_plan_name(self)
@job(default_channel='root.channel') @job(default_channel='root.channel')
@api.multi
def delete_plan(self): def delete_plan(self):
self.ensure_one() self.ensure_one()
if self.external_id: if self.external_id:
@@ -103,7 +103,7 @@ class ProductPricelist(models.Model):
for item in record.item_ids): for item in record.item_ids):
record.is_virtual_plan = False record.is_virtual_plan = False
@api.multi
@api.depends('name') @api.depends('name')
def name_get(self): def name_get(self):
pricelist_obj = self.env['product.pricelist'] pricelist_obj = self.env['product.pricelist']
@@ -121,7 +121,7 @@ class ProductPricelist(models.Model):
names.append((name[0], name[1])) names.append((name[0], name[1]))
return names return names
@api.multi
def open_channel_bind_ids(self): def open_channel_bind_ids(self):
channel_bind_ids = self.mapped('channel_bind_ids') channel_bind_ids = self.mapped('channel_bind_ids')
action = self.env.ref('hotel_channel_connector.channel_product_pricelist_action').read()[0] action = self.env.ref('hotel_channel_connector.channel_product_pricelist_action').read()[0]
@@ -140,12 +140,12 @@ class ProductPricelist(models.Model):
} }
return action return action
@api.multi
def disconnect_channel_bind_ids(self): def disconnect_channel_bind_ids(self):
# TODO: multichannel rooms is not implemented # TODO: multichannel rooms is not implemented
self.channel_bind_ids.with_context({'connector_no_export': True}).unlink() self.channel_bind_ids.with_context({'connector_no_export': True}).unlink()
@api.multi
def write(self, vals): def write(self, vals):
if 'active' in vals and vals.get('active') is False: if 'active' in vals and vals.get('active') is False:
self.channel_bind_ids.unlink() self.channel_bind_ids.unlink()

View File

@@ -40,7 +40,7 @@ class TestHotelWubook(TestHotel):
def _init_mock_hotel(cls): def _init_mock_hotel(cls):
super(TestHotelWubook, cls)._init_mock_hotel() super(TestHotelWubook, cls)._init_mock_hotel()
@api.multi
def wubook_ommit(self, *args, **kwargs): def wubook_ommit(self, *args, **kwargs):
return True return True

View File

@@ -205,7 +205,6 @@
<record id="action_channel_backend" model="ir.actions.act_window"> <record id="action_channel_backend" model="ir.actions.act_window">
<field name="name">Hotel Channel Backends</field> <field name="name">Hotel Channel Backends</field>
<field name="res_model">channel.backend</field> <field name="res_model">channel.backend</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
<field name="view_id" ref="channel_backend_view_tree"/> <field name="view_id" ref="channel_backend_view_tree"/>
</record> </record>

View File

@@ -30,9 +30,7 @@
<record id="channel_hotel_room_type_restriction_action" model="ir.actions.act_window"> <record id="channel_hotel_room_type_restriction_action" model="ir.actions.act_window">
<field name="name">Hotel Channel Connector Bindings</field> <field name="name">Hotel Channel Connector Bindings</field>
<field name="res_model">channel.hotel.room.type.restriction</field> <field name="res_model">channel.hotel.room.type.restriction</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
<field name="view_type">form</field>
<field name="domain">[]</field> <field name="domain">[]</field>
</record> </record>

View File

@@ -63,9 +63,7 @@
<record id="channel_hotel_room_type_action" model="ir.actions.act_window"> <record id="channel_hotel_room_type_action" model="ir.actions.act_window">
<field name="name">Hotel Channel Connector Bindings</field> <field name="name">Hotel Channel Connector Bindings</field>
<field name="res_model">channel.hotel.room.type</field> <field name="res_model">channel.hotel.room.type</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
<field name="view_type">form</field>
<field name="domain">[]</field> <field name="domain">[]</field>
</record> </record>
</odoo> </odoo>

View File

@@ -32,9 +32,7 @@
<record id="channel_product_pricelist_action" model="ir.actions.act_window"> <record id="channel_product_pricelist_action" model="ir.actions.act_window">
<field name="name">Hotel Channel Connector Bindings</field> <field name="name">Hotel Channel Connector Bindings</field>
<field name="res_model">channel.product.pricelist</field> <field name="res_model">channel.product.pricelist</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
<field name="view_type">form</field>
<field name="domain">[]</field> <field name="domain">[]</field>
</record> </record>

View File

@@ -77,7 +77,6 @@
<record model="ir.actions.act_window" id="open_hotel_channel_connector_issue_tree_all"> <record model="ir.actions.act_window" id="open_hotel_channel_connector_issue_tree_all">
<field name="name">Hotel Channel Connector Issues</field> <field name="name">Hotel Channel Connector Issues</field>
<field name="res_model">hotel.channel.connector.issue</field> <field name="res_model">hotel.channel.connector.issue</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
<field name="search_view_id" ref="view_hotel_channel_connector_issue_form_search"/> <field name="search_view_id" ref="view_hotel_channel_connector_issue_form_search"/>
<field name="context">{"search_default_to_read":True}</field> <field name="context">{"search_default_to_read":True}</field>

View File

@@ -56,7 +56,6 @@
<record model="ir.actions.act_window" id="hotel_room_type_availability_action"> <record model="ir.actions.act_window" id="hotel_room_type_availability_action">
<field name="name">Room Type Availability</field> <field name="name">Room Type Availability</field>
<field name="res_model">hotel.room.type.availability</field> <field name="res_model">hotel.room.type.availability</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
</record> </record>

View File

@@ -63,13 +63,13 @@ class MassiveChangesWizard(models.TransientModel):
'mail_create_nosubscribe': True, 'mail_create_nosubscribe': True,
}).create(vals) }).create(vals)
@api.multi
def massive_change(self): def massive_change(self):
res = super(MassiveChangesWizard, self).massive_change() res = super(MassiveChangesWizard, self).massive_change()
self.env['channel.backend'].cron_push_changes() self.env['channel.backend'].cron_push_changes()
return res return res
@api.multi
def massive_change_close(self): def massive_change_close(self):
res = super(MassiveChangesWizard, self).massive_change_close() res = super(MassiveChangesWizard, self).massive_change_close()
self.env['channel.backend'].cron_push_changes() self.env['channel.backend'].cron_push_changes()

View File

@@ -7,7 +7,7 @@ from odoo import models, api, _
class MassivePriceChangeWizard(models.TransientModel): class MassivePriceChangeWizard(models.TransientModel):
_inherit = 'hotel.wizard.massive.price.reservation.days' _inherit = 'hotel.wizard.massive.price.reservation.days'
@api.multi
def massive_price_change_days(self): def massive_price_change_days(self):
self.ensure_one() self.ensure_one()
hotel_reservation_obj = self.env['hotel.reservation'] hotel_reservation_obj = self.env['hotel.reservation']

View File

@@ -35,7 +35,7 @@ class ChannelBackend(models.Model):
default=_get_default_wubook_parity) default=_get_default_wubook_parity)
@contextmanager @contextmanager
@api.multi
def work_on(self, model_name, **kwargs): def work_on(self, model_name, **kwargs):
self.ensure_one() self.ensure_one()
wubook_login = WuBookLogin( wubook_login = WuBookLogin(

View File

@@ -51,7 +51,7 @@ class ChannelHotelReservation(models.Model):
class HotelReservation(models.Model): class HotelReservation(models.Model):
_inherit = 'hotel.reservation' _inherit = 'hotel.reservation'
@api.multi
def action_cancel(self): def action_cancel(self):
for record in self: for record in self:
# Can't cancel in Odoo # Can't cancel in Odoo
@@ -63,7 +63,7 @@ class HotelReservation(models.Model):
return super(HotelReservation, self).action_cancel() return super(HotelReservation, self).action_cancel()
@api.multi
def confirm(self): def confirm(self):
for record in self: for record in self:
if record.is_from_ota: if record.is_from_ota:

View File

@@ -10,14 +10,14 @@ class HotelRoomTypeClass(models.Model):
_locked_codes = ('1', '2', '3', '4', '5', '6', '7', '8') _locked_codes = ('1', '2', '3', '4', '5', '6', '7', '8')
@api.multi
def write(self, vals): def write(self, vals):
for record in self: for record in self:
if record.code_class in self._locked_codes: if record.code_class in self._locked_codes:
raise ValidationError(_("Can't modify channel room type class")) raise ValidationError(_("Can't modify channel room type class"))
return super(HotelRoomTypeClass, self).write(vals) return super(HotelRoomTypeClass, self).write(vals)
@api.multi
def unlink(self): def unlink(self):
for record in self: for record in self:
if record.code_class in self._locked_codes: if record.code_class in self._locked_codes:

View File

@@ -39,7 +39,7 @@ class TestHotelWubook(TestHotel):
def _init_mock_hotel(cls): def _init_mock_hotel(cls):
super()._init_mock_hotel() super()._init_mock_hotel()
@api.multi
def wubook_ommit(self, *args, **kwargs): def wubook_ommit(self, *args, **kwargs):
return True return True

View File

@@ -28,7 +28,7 @@ class Inherit_hotel_reservation(models.Model):
_inherit = 'hotel.reservation' _inherit = 'hotel.reservation'
# Default methods # Default methods
@api.multi
def _compute_door_codes(self): def _compute_door_codes(self):
for res in self: for res in self:
entrada = datetime.strptime( entrada = datetime.strptime(
@@ -63,7 +63,7 @@ class Inherit_hotel_reservation(models.Model):
box_number = fields.Integer('Box Number') box_number = fields.Integer('Box Number')
box_code = fields.Char('Box code') box_code = fields.Char('Box code')
@api.multi
def doorcode4(self, fecha): def doorcode4(self, fecha):
# Calculate de Door Code... need a date in String format "%Y-%m-%d" # Calculate de Door Code... need a date in String format "%Y-%m-%d"
compan = self.env.user.hotel_id compan = self.env.user.hotel_id

View File

@@ -28,7 +28,7 @@ class DoorCodeWizard(models.TransientModel):
_description = 'Door Code Generator' _description = 'Door Code Generator'
# Default methods # Default methods
@api.multi
def _get_default_date_start(self): def _get_default_date_start(self):
return datetime.now().strftime(DEFAULT_SERVER_DATE_FORMAT) return datetime.now().strftime(DEFAULT_SERVER_DATE_FORMAT)
@@ -41,7 +41,7 @@ class DoorCodeWizard(models.TransientModel):
default=_get_default_date_start) default=_get_default_date_start)
door_code = fields.Html("Door code") door_code = fields.Html("Door code")
@api.multi
def check_code(self): def check_code(self):
reservation = self.env['hotel.reservation'] reservation = self.env['hotel.reservation']

View File

@@ -68,7 +68,6 @@ class Wizard(models.TransientModel):
adr_screen = fields.Char() adr_screen = fields.Char()
rev_screen = fields.Char() rev_screen = fields.Char()
@api.one
def generate_file(self): def generate_file(self):
_logger.warning("Start Export INE XML file") _logger.warning("Start Export INE XML file")
last_day = calendar.monthrange(self.ine_year, self.ine_month)[1] last_day = calendar.monthrange(self.ine_year, self.ine_month)[1]

View File

@@ -28,7 +28,7 @@ class TourismCategory(models.Model):
name = fields.Char('Category', required=True) name = fields.Char('Category', required=True)
category_type = fields.Char('Category type', required=True) category_type = fields.Char('Category type', required=True)
@api.multi
def name_get(self): def name_get(self):
data = [] data = []
for record in self: for record in self:

View File

@@ -29,7 +29,7 @@ class CodeIne(models.Model):
name = fields.Char('Place', required=True) name = fields.Char('Place', required=True)
code = fields.Char('Code', required=True) code = fields.Char('Code', required=True)
@api.multi
def name_get(self): def name_get(self):
data = [] data = []
for record in self: for record in self:

View File

@@ -55,7 +55,7 @@ class HotelCheckinPartner(models.Model):
vals.pop('lastname') vals.pop('lastname')
return super(HotelCheckinPartner, self).create(vals) return super(HotelCheckinPartner, self).create(vals)
@api.multi
def write(self, vals): def write(self, vals):
for record in self: for record in self:
if not vals.get('partner_id') and not record.partner_id: if not vals.get('partner_id') and not record.partner_id:
@@ -71,7 +71,7 @@ class HotelCheckinPartner(models.Model):
vals.pop('lastname') vals.pop('lastname')
return super(HotelCheckinPartner, self).write(vals) return super(HotelCheckinPartner, self).write(vals)
@api.multi
def action_on_board(self): def action_on_board(self):
self.check_required_fields() self.check_required_fields()
return super(HotelCheckinPartner, self).action_on_board() return super(HotelCheckinPartner, self).action_on_board()
@@ -107,7 +107,7 @@ class HotelCheckinPartner(models.Model):
if partner: if partner:
record.update({'partner_id': partner}) record.update({'partner_id': partner})
@api.multi
def check_required_fields(self): def check_required_fields(self):
for record in self: for record in self:
missing_fields = [] missing_fields = []

View File

@@ -24,7 +24,7 @@ from openerp import models, api
class HotelReservation(models.Model): class HotelReservation(models.Model):
_inherit = 'hotel.reservation' _inherit = 'hotel.reservation'
@api.multi
def print_all_checkins(self): def print_all_checkins(self):
checkins = self.env['hotel.checkin.partner'] checkins = self.env['hotel.checkin.partner']
for record in self: for record in self:

View File

@@ -91,7 +91,7 @@ class ResPartner(models.Model):
duplicated_fields = ['vat', 'document_number'] duplicated_fields = ['vat', 'document_number']
return duplicated_fields return duplicated_fields
@api.multi
def write(self, vals): def write(self, vals):
if vals.get('vat') and not self._context.get( if vals.get('vat') and not self._context.get(
"ignore_vat_update", False): "ignore_vat_update", False):
@@ -198,7 +198,7 @@ class ResPartner(models.Model):
"The Document Number %s already exists in another " "The Document Number %s already exists in another "
"partner.") % record.document_number) "partner.") % record.document_number)
@api.multi
def open_main_partner(self): def open_main_partner(self):
self.ensure_one() self.ensure_one()
action = self.env.ref('base.action_partner_form').read()[0] action = self.env.ref('base.action_partner_form').read()[0]
@@ -439,7 +439,7 @@ class ResPartner(models.Model):
reverse=True, reverse=True,
) )
@api.multi
def _compute_models(self): def _compute_models(self):
""" Compute the different models needed by the system if you want to exclude some partners. """ """ Compute the different models needed by the system if you want to exclude some partners. """
model_mapping = {} model_mapping = {}

View File

@@ -39,7 +39,6 @@ class PoliceWizard(models.TransientModel):
log_police = fields.Char() log_police = fields.Char()
error_partner = fields.Many2one('res.partner') error_partner = fields.Many2one('res.partner')
@api.one
def generate_file(self): def generate_file(self):
company = self.env.user.company_id company = self.env.user.company_id
if company.police_number is not False and company.property_name is not False: if company.police_number is not False and company.property_name is not False:

View File

@@ -45,13 +45,13 @@ class KellysWizard(models.TransientModel):
required=True, required=True,
help='Establece el orden en el que se imprimira el listado') help='Establece el orden en el que se imprimira el listado')
@api.multi
def calculate_report(self): def calculate_report(self):
self.habitaciones = self.calculalimpiar( self.habitaciones = self.calculalimpiar(
datetime.strptime(self.date_start, "%Y-%m-%d")) datetime.strptime(self.date_start, "%Y-%m-%d"))
return return
@api.multi
def calculalimpiar(self, fechalimpieza=datetime.now()): def calculalimpiar(self, fechalimpieza=datetime.now()):
dates = datetime.strftime(fechalimpieza, "%Y-%m-%d") dates = datetime.strftime(fechalimpieza, "%Y-%m-%d")
grids = self.env['hotel.room'].search([], order='sequence ASC') grids = self.env['hotel.room'].search([], order='sequence ASC')
@@ -113,7 +113,7 @@ class KellysWizard(models.TransientModel):
}).id) }).id)
return self.env['kellysrooms'].search([('id', 'in', listid)]) return self.env['kellysrooms'].search([('id', 'in', listid)])
@api.multi
def print_rooms_report(self): def print_rooms_report(self):
rooms = self.env['kellysrooms'].search([('id', 'in', rooms = self.env['kellysrooms'].search([('id', 'in',
self.habitaciones.ids)], self.habitaciones.ids)],

View File

@@ -5,7 +5,7 @@ from odoo import models,api
class MailComposer(models.TransientModel): class MailComposer(models.TransientModel):
_inherit = 'mail.compose.message' _inherit = 'mail.compose.message'
@api.multi
def get_mail_values(self, res_ids): def get_mail_values(self, res_ids):
res = super(MailComposer, self).get_mail_values(res_ids) res = super(MailComposer, self).get_mail_values(res_ids)
if self.composition_mode == 'comment': if self.composition_mode == 'comment':

View File

@@ -4,7 +4,7 @@
{ {
'name': 'pms', 'name': 'pms',
'summary': "A property management system", 'summary': "A property management system",
'version': '11.0.2.0.0', 'version': '13.0.1.0.0',
'development_status': 'Beta', 'development_status': 'Beta',
'category': 'Generic Modules/Property Management System', 'category': 'Generic Modules/Property Management System',
'website': 'https://github.com/hootel/hootel', 'website': 'https://github.com/hootel/hootel',
@@ -13,14 +13,13 @@
'Jose Luis Algara, ' 'Jose Luis Algara, '
'Pablo Quesada ', 'Pablo Quesada ',
'license': "AGPL-3", 'license': "AGPL-3",
'application': False, 'application': True,
'installable': True, 'installable': True,
'depends': [ 'depends': [
'base', 'base',
'mail', 'mail',
'account_payment_return', 'account_payment_return',
'partner_firstname', 'partner_firstname',
'account_cancel',
'email_template_qweb' 'email_template_qweb'
], ],
'data': [ 'data': [

View File

@@ -6,8 +6,8 @@ import json
from odoo.tools import float_is_zero from odoo.tools import float_is_zero
class AccountInvoice(models.Model): class AccountMove(models.Model):
_inherit = 'account.invoice' _inherit = 'account.move'
# Field Declarations # Field Declarations
folio_ids = fields.Many2many( folio_ids = fields.Many2many(
@@ -23,20 +23,20 @@ class AccountInvoice(models.Model):
compute='_get_outstanding_folios_JSON') compute='_get_outstanding_folios_JSON')
# Compute and Search methods # Compute and Search methods
@api.multi
def _computed_folio_origin(self): def _computed_folio_origin(self):
for inv in self: for inv in self:
folios = inv.mapped('invoice_line_ids.reservation_ids.folio_id') folios = inv.mapped('move_line_ids.reservation_ids.folio_id')
folios |= inv.mapped('invoice_line_ids.service_ids.folio_id') folios |= inv.mapped('move_line_ids.service_ids.folio_id')
if folios: if folios:
inv.from_folio = True inv.from_folio = True
inv.folio_ids = [(6, 0, folios.ids)] inv.folio_ids = [(6, 0, folios.ids)]
# Action methods # Action methods
@api.multi
def action_folio_payments(self): def action_folio_payments(self):
self.ensure_one() self.ensure_one()
sales = self.mapped('invoice_line_ids.sale_line_ids.order_id') sales = self.mapped('move_line_ids.sale_line_ids.order_id')
folios = self.env['pms.folio'].search([ folios = self.env['pms.folio'].search([
('order_id.id', 'in', sales.ids) ('order_id.id', 'in', sales.ids)
]) ])
@@ -54,8 +54,8 @@ class AccountInvoice(models.Model):
} }
# Business methods # Business methods
@api.one
def _get_outstanding_folios_JSON(self): def _get_outstanding_folios_JSON(self):
self.ensure_one()
self.outstanding_folios_debits_widget = json.dumps(False) self.outstanding_folios_debits_widget = json.dumps(False)
if self.from_folio: if self.from_folio:
payment_ids = self.folio_ids.mapped('payment_ids.id') payment_ids = self.folio_ids.mapped('payment_ids.id')
@@ -82,7 +82,7 @@ class AccountInvoice(models.Model):
info = {'title': '', info = {'title': '',
'outstanding': True, 'outstanding': True,
'content': [], 'content': [],
'invoice_id': self.id} 'move_id': self.id}
lines = self.env['account.move.line'].search(domain) lines = self.env['account.move.line'].search(domain)
currency_id = self.currency_id currency_id = self.currency_id
if len(lines) != 0: if len(lines) != 0:

View File

@@ -4,22 +4,22 @@
from odoo import fields, models from odoo import fields, models
class AccountInvoiceLine(models.Model): class AccountMoveLine(models.Model):
_inherit = 'account.invoice.line' _inherit = 'account.move.line'
# Fields declaration # Fields declaration
reservation_ids = fields.Many2many( reservation_ids = fields.Many2many(
'pms.reservation', 'pms.reservation',
'reservation_invoice_rel', 'reservation_move_rel',
'invoice_line_id', 'reservation_id', 'move_line_id', 'reservation_id',
string='Reservations', readonly=True, copy=False) string='Reservations', readonly=True, copy=False)
service_ids = fields.Many2many( service_ids = fields.Many2many(
'pms.service', 'pms.service',
'service_line_invoice_rel', 'service_line_move_rel',
'invoice_line_id', 'service_id', 'move_line_id', 'service_id',
string='Services', readonly=True, copy=False) string='Services', readonly=True, copy=False)
reservation_line_ids = fields.Many2many( reservation_line_ids = fields.Many2many(
'pms.reservation.line', 'pms.reservation.line',
'reservation_line_invoice_rel', 'reservation_line_move_rel',
'invoice_line_id', 'reservation_line_id', 'move_line_id', 'reservation_line_id',
string='Reservation Lines', readonly=True, copy=False) string='Reservation Lines', readonly=True, copy=False)

View File

@@ -20,7 +20,7 @@ class AccountPayment(models.Model):
save_journal_id = fields.Integer() save_journal_id = fields.Integer()
# Compute and Search methods # Compute and Search methods
@api.multi
@api.depends('state') @api.depends('state')
def _compute_folio_amount(self): def _compute_folio_amount(self):
# FIXME: Finalize method # FIXME: Finalize method
@@ -52,7 +52,7 @@ class AccountPayment(models.Model):
# Action methods # Action methods
"""WIP""" """WIP"""
@api.multi
def return_payment_folio(self): def return_payment_folio(self):
journal = self.journal_id journal = self.journal_id
partner = self.partner_id partner = self.partner_id
@@ -81,7 +81,7 @@ class AccountPayment(models.Model):
return_pay.action_confirm() return_pay.action_confirm()
# Business methods # Business methods
@api.multi
def modify(self): def modify(self):
self.cancel() self.cancel()
vals = { vals = {
@@ -109,7 +109,7 @@ class AccountPayment(models.Model):
self.save_journal_id).name, self.journal_id.name) self.save_journal_id).name, self.journal_id.name)
self.folio_id.message_post(subject=_('Payment'), body=msg) self.folio_id.message_post(subject=_('Payment'), body=msg)
@api.multi
def delete(self): def delete(self):
msg = False msg = False
if self.folio_id: if self.folio_id:
@@ -121,7 +121,7 @@ class AccountPayment(models.Model):
if msg: if msg:
self.folio_id.message_post(subject=_('Payment Deleted'), body=msg) self.folio_id.message_post(subject=_('Payment Deleted'), body=msg)
@api.multi
def post(self): def post(self):
rec = super(AccountPayment, self).post() rec = super(AccountPayment, self).post()
if rec and not self._context.get("ignore_notification_post", False): if rec and not self._context.get("ignore_notification_post", False):
@@ -133,11 +133,11 @@ class AccountPayment(models.Model):
pay.communication, pay.journal_id.name) pay.communication, pay.journal_id.name)
pay.folio_id.message_post(subject=_('Payment'), body=msg) pay.folio_id.message_post(subject=_('Payment'), body=msg)
@api.multi
def modify_payment(self): def modify_payment(self):
self.ensure_one() self.ensure_one()
view_form_id = self.env.ref('pms.account_payment_view_form_folio').id view_form_id = self.env.ref('pms.account_payment_view_form_folio').id
# invoices = self.mapped('invoice_ids.id') # moves = self.mapped('move_ids.id')
return{ return{
'name': _('Payment'), 'name': _('Payment'),
'view_type': 'form', 'view_type': 'form',

View File

@@ -7,7 +7,7 @@ from odoo import api, models
class MailComposeMessage(models.TransientModel): class MailComposeMessage(models.TransientModel):
_inherit = 'mail.compose.message' _inherit = 'mail.compose.message'
@api.multi
def send_mail(self, auto_commit=False): def send_mail(self, auto_commit=False):
if self._context.get('default_model') == 'pms.folio' and \ if self._context.get('default_model') == 'pms.folio' and \
self._context.get('default_res_id') and \ self._context.get('default_res_id') and \

View File

@@ -17,7 +17,7 @@ class PaymentReturn(models.Model):
related='folio_id.pms_property_id') related='folio_id.pms_property_id')
# Business methods # Business methods
@api.multi
def action_confirm(self): def action_confirm(self):
pay = super(PaymentReturn, self).action_confirm() pay = super(PaymentReturn, self).action_confirm()
if pay: if pay:

View File

@@ -22,6 +22,6 @@ class ResUsers(models.Model):
'pms.property', 'pms.property',
'pms_property_users_rel', 'pms_property_users_rel',
'user_id', 'user_id',
'property_id', 'pms_property_id',
string='Properties', string='Properties',
default=_get_default_pms_property) default=_get_default_pms_property)

View File

@@ -13,7 +13,7 @@ class PmsBoardServiceRoomType(models.Model):
_description = 'Board Service included in Room' _description = 'Board Service included in Room'
# Default Methods ang Gets # Default Methods ang Gets
@api.multi
def name_get(self): def name_get(self):
result = [] result = []
for res in self: for res in self:
@@ -100,7 +100,7 @@ class PmsBoardServiceRoomType(models.Model):
can't repeat without pricelist")) can't repeat without pricelist"))
# Action methods # Action methods
@api.multi
def open_board_lines_form(self): def open_board_lines_form(self):
action = self.env.ref( action = self.env.ref(
'pms.action_pms_board_service_room_type_view').read()[0] 'pms.action_pms_board_service_room_type_view').read()[0]
@@ -111,7 +111,6 @@ class PmsBoardServiceRoomType(models.Model):
return action return action
# ORM Overrides # ORM Overrides
@api.model_cr
def init(self): def init(self):
self._cr.execute( self._cr.execute(
'SELECT indexname FROM pg_indexes WHERE indexname = %s', 'SELECT indexname FROM pg_indexes WHERE indexname = %s',
@@ -131,7 +130,7 @@ class PmsBoardServiceRoomType(models.Model):
) )
return super(PmsBoardServiceRoomType, self).create(vals) return super(PmsBoardServiceRoomType, self).create(vals)
@api.multi
def write(self, vals): def write(self, vals):
if 'pms_board_service_id' in vals: if 'pms_board_service_id' in vals:
vals.update( vals.update(

View File

@@ -111,7 +111,7 @@ class PmsCheckinPartner(models.Model):
track_visibility='onchange') track_visibility='onchange')
# Constraints and onchanges # Constraints and onchanges
@api.multi
@api.constrains('exit_date', 'enter_date') @api.constrains('exit_date', 'enter_date')
def _check_exit_date(self): def _check_exit_date(self):
for record in self: for record in self:
@@ -133,7 +133,7 @@ class PmsCheckinPartner(models.Model):
_('Departure date, is prior to arrival. Check it now. %s') % _('Departure date, is prior to arrival. Check it now. %s') %
date_out) date_out)
@api.multi
@api.onchange('partner_id') @api.onchange('partner_id')
def _check_partner_id(self): def _check_partner_id(self):
for record in self: for record in self:
@@ -152,7 +152,7 @@ class PmsCheckinPartner(models.Model):
_('This guest is already registered in the room')) _('This guest is already registered in the room'))
# Action methods # Action methods
@api.multi
def action_on_board(self): def action_on_board(self):
for record in self: for record in self:
if record.reservation_id.checkin > fields.Date.today(): if record.reservation_id.checkin > fields.Date.today():
@@ -185,7 +185,7 @@ class PmsCheckinPartner(models.Model):
"type": "ir.actions.do_nothing", "type": "ir.actions.do_nothing",
} }
@api.multi
def action_done(self): def action_done(self):
for record in self: for record in self:
if record.state == 'booking': if record.state == 'booking':

View File

@@ -113,8 +113,8 @@ class PmsFolio(models.Model):
checkin_partner_ids = fields.One2many( checkin_partner_ids = fields.One2many(
'pms.checkin.partner', 'pms.checkin.partner',
'folio_id') 'folio_id')
invoice_ids = fields.Many2many( move_ids = fields.Many2many(
'account.invoice', 'account.move',
string='Invoices', string='Invoices',
compute='_get_invoiced', compute='_get_invoiced',
readonly=True, readonly=True,
@@ -279,14 +279,14 @@ class PmsFolio(models.Model):
refund is not directly linked to the Folio. refund is not directly linked to the Folio.
""" """
for folio in self: for folio in self:
invoice_ids = folio.reservation_ids.mapped('invoice_line_ids').\ move_ids = folio.reservation_ids.mapped('move_line_ids').\
mapped('invoice_id').filtered(lambda r: r.type in [ mapped('move_id').filtered(lambda r: r.type in [
'out_invoice', 'out_refund']) 'out_invoice', 'out_refund'])
invoice_ids |= folio.service_ids.mapped('invoice_line_ids').mapped( invoice_ids |= folio.service_ids.mapped('move_line_ids').mapped(
'invoice_id').filtered(lambda r: r.type in [ 'move_id').filtered(lambda r: r.type in [
'out_invoice', 'out_refund']) 'out_invoice', 'out_refund'])
# TODO: Search for invoices which have been 'cancelled' # TODO: Search for invoices which have been 'cancelled'
# (filter_refund = 'modify' in 'account.invoice.refund') # (filter_refund = 'modify' in 'account.move.refund')
# use like as origin may contains multiple references # use like as origin may contains multiple references
# (e.g. 'SO01, SO02') # (e.g. 'SO01, SO02')
refunds = invoice_ids.search([ refunds = invoice_ids.search([
@@ -296,7 +296,7 @@ class PmsFolio(models.Model):
invoice_ids |= refunds.filtered( invoice_ids |= refunds.filtered(
lambda r: folio.id in r.folio_ids.ids) lambda r: folio.id in r.folio_ids.ids)
# Search for refunds as well # Search for refunds as well
refund_ids = self.env['account.invoice'].browse() refund_ids = self.env['account.move'].browse()
if invoice_ids: if invoice_ids:
for inv in invoice_ids: for inv in invoice_ids:
refund_ids += refund_ids.search([ refund_ids += refund_ids.search([
@@ -330,8 +330,8 @@ class PmsFolio(models.Model):
invoice_status = 'no' invoice_status = 'no'
folio.update({ folio.update({
'invoice_count': len(set(invoice_ids.ids + refund_ids.ids)), 'invoice_count': len(set(move_ids.ids + refund_ids.ids)),
'invoice_ids': invoice_ids.ids + refund_ids.ids, 'invoice_ids': move_ids.ids + refund_ids.ids,
'invoice_status': invoice_status 'invoice_status': invoice_status
}) })
@@ -357,7 +357,7 @@ class PmsFolio(models.Model):
@api.depends('amount_total', 'payment_ids', 'return_ids', @api.depends('amount_total', 'payment_ids', 'return_ids',
'reservation_type', 'state') 'reservation_type', 'state')
@api.multi
def compute_amount(self): def compute_amount(self):
acc_pay_obj = self.env['account.payment'] acc_pay_obj = self.env['account.payment']
for record in self: for record in self:
@@ -466,7 +466,7 @@ class PmsFolio(models.Model):
self.has_checkout_to_send = False self.has_checkout_to_send = False
# Constraints and onchanges # Constraints and onchanges
@api.multi
@api.onchange('partner_id') @api.onchange('partner_id')
def onchange_partner_id(self): def onchange_partner_id(self):
""" """
@@ -478,13 +478,13 @@ class PmsFolio(models.Model):
""" """
if not self.partner_id: if not self.partner_id:
self.update({ self.update({
'partner_invoice_id': False, 'partner_move_id': False,
'payment_term_id': False, 'payment_term_id': False,
'fiscal_position_id': False, 'fiscal_position_id': False,
}) })
return return
addr = self.partner_id.address_get(['invoice']) addr = self.partner_id.address_get(['move'])
pricelist = self.partner_id.property_product_pricelist and \ pricelist = self.partner_id.property_product_pricelist and \
self.partner_id.property_product_pricelist.id or \ self.partner_id.property_product_pricelist.id or \
self.env.user.pms_property_id.default_pricelist_id.id self.env.user.pms_property_id.default_pricelist_id.id
@@ -506,7 +506,7 @@ class PmsFolio(models.Model):
values['team_id'] = self.partner_id.team_id.id values['team_id'] = self.partner_id.team_id.id
self.update(values) self.update(values)
@api.multi
@api.onchange('pricelist_id') @api.onchange('pricelist_id')
def onchange_pricelist_id(self): def onchange_pricelist_id(self):
values = {'reservation_type': self.env['pms.folio']. values = {'reservation_type': self.env['pms.folio'].
@@ -517,7 +517,7 @@ class PmsFolio(models.Model):
self.update(values) self.update(values)
# Action methods # Action methods
@api.multi
def action_pay(self): def action_pay(self):
self.ensure_one() self.ensure_one()
partner = self.partner_id.id partner = self.partner_id.id
@@ -541,31 +541,31 @@ class PmsFolio(models.Model):
'target': 'new', 'target': 'new',
} }
@api.multi
def open_invoices_folio(self): def open_moves_folio(self):
invoices = self.mapped('invoice_ids') invoices = self.mapped('move_ids')
action = self.env.ref('account.action_invoice_tree1').read()[0] action = self.env.ref('account.action_move_out_invoice_type').read()[0]
if len(invoices) > 1: if len(invoices) > 1:
action['domain'] = [('id', 'in', invoices.ids)] action['domain'] = [('id', 'in', invoices.ids)]
elif len(invoices) == 1: elif len(invoices) == 1:
action['views'] = [ action['views'] = [
(self.env.ref('account.invoice_form').id, 'form')] (self.env.ref('account.view_move_form').id, 'form')]
action['res_id'] = invoices.ids[0] action['res_id'] = invoices.ids[0]
else: else:
action = {'type': 'ir.actions.act_window_close'} action = {'type': 'ir.actions.act_window_close'}
return action return action
@api.multi
def action_return_payments(self): def action_return_payments(self):
self.ensure_one() self.ensure_one()
return_move_ids = [] return_move_ids = []
acc_pay_obj = self.env['account.payment'] acc_pay_obj = self.env['account.payment']
payments = acc_pay_obj.search([ payments = acc_pay_obj.search([
'|', '|',
('invoice_ids', 'in', self.invoice_ids.ids), ('move_ids', 'in', self.move_ids.ids),
('folio_id', '=', self.id) ('folio_id', '=', self.id)
]) ])
return_move_ids += self.invoice_ids.filtered( return_move_ids += self.move_ids.filtered(
lambda invoice: invoice.type == 'out_refund').mapped( lambda invoice: invoice.type == 'out_refund').mapped(
'payment_move_line_ids.move_id.id') 'payment_move_line_ids.move_id.id')
return_lines = self.env['payment.return.line'].search([ return_lines = self.env['payment.return.line'].search([
@@ -582,7 +582,7 @@ class PmsFolio(models.Model):
'domain': [('id', 'in', return_move_ids)], 'domain': [('id', 'in', return_move_ids)],
} }
@api.multi
def action_checks(self): def action_checks(self):
self.ensure_one() self.ensure_one()
rooms = self.mapped('reservation_ids.id') rooms = self.mapped('reservation_ids.id')
@@ -596,7 +596,7 @@ class PmsFolio(models.Model):
'target': 'new', 'target': 'new',
} }
@api.multi
def send_reservation_mail(self): def send_reservation_mail(self):
''' '''
This function opens a window to compose an email, This function opens a window to compose an email,
@@ -642,7 +642,7 @@ class PmsFolio(models.Model):
'force_send': True 'force_send': True
} }
@api.multi
def send_exit_mail(self): def send_exit_mail(self):
''' '''
This function opens a window to compose an email, This function opens a window to compose an email,
@@ -688,7 +688,7 @@ class PmsFolio(models.Model):
'force_send': True 'force_send': True
} }
@api.multi
def send_cancel_mail(self): def send_cancel_mail(self):
''' '''
This function opens a window to compose an email, This function opens a window to compose an email,
@@ -773,14 +773,14 @@ class PmsFolio(models.Model):
else: else:
return 'normal' return 'normal'
@api.multi
def action_done(self): def action_done(self):
reservation_ids = self.mapped('reservation_ids') reservation_ids = self.mapped('reservation_ids')
for line in reservation_ids: for line in reservation_ids:
if line.state == "booking": if line.state == "booking":
line.action_reservation_checkout() line.action_reservation_checkout()
@api.multi
def action_cancel(self): def action_cancel(self):
for folio in self: for folio in self:
for reservation in folio.reservation_ids.filtered( for reservation in folio.reservation_ids.filtered(
@@ -791,7 +791,7 @@ class PmsFolio(models.Model):
}) })
return True return True
@api.multi
def action_confirm(self): def action_confirm(self):
for folio in self.filtered(lambda folio: folio.partner_id not in for folio in self.filtered(lambda folio: folio.partner_id not in
folio.message_partner_ids): folio.message_partner_ids):
@@ -814,7 +814,7 @@ class PmsFolio(models.Model):
CHECKIN/OUT PROCESS CHECKIN/OUT PROCESS
""" """
@api.multi
def _compute_checkin_partner_count(self): def _compute_checkin_partner_count(self):
for record in self: for record in self:
if record.reservation_type == 'normal' and record.reservation_ids: if record.reservation_type == 'normal' and record.reservation_ids:
@@ -830,7 +830,7 @@ class PmsFolio(models.Model):
record.checkin_partner_pending_count = sum( record.checkin_partner_pending_count = sum(
mapped_checkin_partner_count) mapped_checkin_partner_count)
@api.multi
def get_grouped_reservations_json(self, state, import_all=False): def get_grouped_reservations_json(self, state, import_all=False):
self.ensure_one() self.ensure_one()
info_grouped = [] info_grouped = []
@@ -873,7 +873,7 @@ class PmsFolio(models.Model):
reverse=True), reverse=True),
key=lambda k: k['room_type']['id']) key=lambda k: k['room_type']['id'])
@api.multi
def _get_tax_amount_by_group(self): def _get_tax_amount_by_group(self):
self.ensure_one() self.ensure_one()
res = {} res = {}

View File

@@ -163,11 +163,11 @@ class PmsReservation(models.Model):
string='Taxes', string='Taxes',
ondelete='restrict', ondelete='restrict',
domain=['|', ('active', '=', False), ('active', '=', True)]) domain=['|', ('active', '=', False), ('active', '=', True)])
invoice_line_ids = fields.Many2many( move_line_ids = fields.Many2many(
'account.invoice.line', 'account.move.line',
'reservation_invoice_rel', 'reservation_move_rel',
'reservation_id', 'reservation_id',
'invoice_line_id', 'move_line_id',
string='Invoice Lines', string='Invoice Lines',
copy=False) copy=False)
analytic_tag_ids = fields.Many2many( analytic_tag_ids = fields.Many2many(
@@ -386,8 +386,8 @@ class PmsReservation(models.Model):
else: else:
line.qty_to_invoice = 0 line.qty_to_invoice = 0
@api.depends('invoice_line_ids.invoice_id.state', @api.depends('move_line_ids.move_id.state',
'invoice_line_ids.quantity') 'move_line_ids.quantity')
def _get_invoice_qty(self): def _get_invoice_qty(self):
""" """
Compute the quantity invoiced. If case of a refund, the quantity Compute the quantity invoiced. If case of a refund, the quantity
@@ -397,12 +397,12 @@ class PmsReservation(models.Model):
for line in self: for line in self:
qty_invoiced = 0.0 qty_invoiced = 0.0
for day in line.reservation_line_ids: for day in line.reservation_line_ids:
invoice_lines = day.invoice_line_ids.filtered( invoice_lines = day.move_line_ids.filtered(
lambda r: r.invoice_id.state != 'cancel') lambda r: r.move_id.state != 'cancel')
qty_invoiced += len(invoice_lines.filtered( qty_invoiced += len(invoice_lines.filtered(
lambda r: r.invoice_id.type == 'out_invoice') lambda r: r.move_id.type == 'out_invoice')
) - len(invoice_lines.filtered( ) - len(invoice_lines.filtered(
lambda r: r.invoice_id.type == lambda r: r.move_id.type ==
'out_refund')) 'out_refund'))
line.qty_invoiced = qty_invoiced line.qty_invoiced = qty_invoiced
@@ -512,7 +512,7 @@ class PmsReservation(models.Model):
reservation period: %s ') % occupied_name reservation period: %s ') % occupied_name
raise ValidationError(warning_msg) raise ValidationError(warning_msg)
@api.multi
@api.constrains('checkin_partner_ids') @api.constrains('checkin_partner_ids')
def _max_checkin_partner_ids(self): def _max_checkin_partner_ids(self):
for record in self: for record in self:
@@ -554,7 +554,7 @@ class PmsReservation(models.Model):
} }
self.update(values) self.update(values)
@api.multi
@api.onchange('pricelist_id') @api.onchange('pricelist_id')
def onchange_pricelist_id(self): def onchange_pricelist_id(self):
values = {'reservation_type': self.env['pms.folio']. values = {'reservation_type': self.env['pms.folio'].
@@ -569,7 +569,7 @@ class PmsReservation(models.Model):
self.update({'partner_id': self.update({'partner_id':
self.env.user.company_id.partner_id.id}) self.env.user.company_id.partner_id.id})
@api.multi
@api.onchange('checkin_partner_ids') @api.onchange('checkin_partner_ids')
def onchange_checkin_partner_ids(self): def onchange_checkin_partner_ids(self):
for record in self: for record in self:
@@ -640,7 +640,7 @@ class PmsReservation(models.Model):
for service in services: for service in services:
service.onchange_product_id() service.onchange_product_id()
@api.multi
@api.onchange('checkin', 'checkout', 'room_id') @api.onchange('checkin', 'checkout', 'room_id')
def onchange_room_availabiltiy_domain(self): def onchange_room_availabiltiy_domain(self):
self.ensure_one() self.ensure_one()
@@ -704,15 +704,15 @@ class PmsReservation(models.Model):
service.price_unit = service._compute_price_unit() service.price_unit = service._compute_price_unit()
# Action methods # Action methods
@api.multi
def open_invoices_reservation(self): def open_invoices_reservation(self):
invoices = self.folio_id.mapped('invoice_ids') invoices = self.folio_id.mapped('move_ids')
action = self.env.ref('account.action_invoice_tree1').read()[0] action = self.env.ref('account.action_move_out_invoice_type').read()[0]
if len(invoices) > 1: if len(invoices) > 1:
action['domain'] = [('id', 'in', invoices.ids)] action['domain'] = [('id', 'in', invoices.ids)]
elif len(invoices) == 1: elif len(invoices) == 1:
action['views'] = [ action['views'] = [
(self.env.ref('account.invoice_form').id, 'form')] (self.env.ref('account.view_move_form').id, 'form')]
action['res_id'] = invoices.ids[0] action['res_id'] = invoices.ids[0]
else: else:
action = self.env.ref( action = self.env.ref(
@@ -721,7 +721,7 @@ class PmsReservation(models.Model):
'default_folio_id': self.folio_id.id} 'default_folio_id': self.folio_id.id}
return action return action
@api.multi
def create_invoice(self): def create_invoice(self):
action = self.env.ref( action = self.env.ref(
'pms.action_view_folio_advance_payment_inv').read()[0] 'pms.action_view_folio_advance_payment_inv').read()[0]
@@ -729,7 +729,7 @@ class PmsReservation(models.Model):
'default_folio_id': self.folio_id.id} 'default_folio_id': self.folio_id.id}
return action return action
@api.multi
def open_folio(self): def open_folio(self):
action = self.env.ref( action = self.env.ref(
'pms.open_pms_folio1_form_tree_all').read()[0] 'pms.open_pms_folio1_form_tree_all').read()[0]
@@ -741,7 +741,7 @@ class PmsReservation(models.Model):
action = {'type': 'ir.actions.act_window_close'} action = {'type': 'ir.actions.act_window_close'}
return action return action
@api.multi
def open_reservation_form(self): def open_reservation_form(self):
action = self.env.ref( action = self.env.ref(
'pms.open_pms_reservation_form_tree_all').read()[0] 'pms.open_pms_reservation_form_tree_all').read()[0]
@@ -750,12 +750,12 @@ class PmsReservation(models.Model):
action['res_id'] = self.id action['res_id'] = self.id
return action return action
@api.multi
def action_pay_folio(self): def action_pay_folio(self):
self.ensure_one() self.ensure_one()
return self.folio_id.action_pay() return self.folio_id.action_pay()
@api.multi
def action_pay_reservation(self): def action_pay_reservation(self):
self.ensure_one() self.ensure_one()
partner = self.partner_id.id partner = self.partner_id.id
@@ -795,7 +795,7 @@ class PmsReservation(models.Model):
return super(PmsReservation, self).name_search( return super(PmsReservation, self).name_search(
name='', args=args, operator='ilike', limit=limit) name='', args=args, operator='ilike', limit=limit)
@api.multi
def name_get(self): def name_get(self):
result = [] result = []
for res in self: for res in self:
@@ -853,7 +853,7 @@ class PmsReservation(models.Model):
record.confirm() record.confirm()
return record return record
@api.multi
def write(self, vals): def write(self, vals):
if self.notify_update(vals): if self.notify_update(vals):
vals.update({ vals.update({
@@ -937,7 +937,7 @@ class PmsReservation(models.Model):
return record return record
# Business methods # Business methods
@api.multi
def _computed_shared(self): def _computed_shared(self):
# Has this reservation more charges associates in folio?, # Has this reservation more charges associates in folio?,
# Yes?, then, this is share folio ;) # Yes?, then, this is share folio ;)
@@ -948,7 +948,7 @@ class PmsReservation(models.Model):
or any(record.folio_id.service_ids.filtered( or any(record.folio_id.service_ids.filtered(
lambda x: x.reservation_id.id != record.id)) lambda x: x.reservation_id.id != record.id))
@api.multi
def compute_board_services(self, vals): def compute_board_services(self, vals):
""" """
We must compute service_ids when we have a board_service_id without We must compute service_ids when we have a board_service_id without
@@ -963,7 +963,7 @@ class PmsReservation(models.Model):
return True return True
return False return False
@api.multi
def compute_qty_service_day(self, vals): def compute_qty_service_day(self, vals):
""" """
Compute if it is necesary calc price in write/create Compute if it is necesary calc price in write/create
@@ -1047,7 +1047,7 @@ class PmsReservation(models.Model):
subtype='mt_comment', body=msg) subtype='mt_comment', body=msg)
return True return True
@api.multi
def notify_update(self, vals): def notify_update(self, vals):
if 'checkin' in vals or \ if 'checkin' in vals or \
'checkout' in vals or \ 'checkout' in vals or \
@@ -1058,12 +1058,12 @@ class PmsReservation(models.Model):
return True return True
return False return False
@api.multi
def overbooking_button(self): def overbooking_button(self):
self.ensure_one() self.ensure_one()
self.overbooking = not self.overbooking self.overbooking = not self.overbooking
@api.multi
def generate_copy_values(self, checkin=False, checkout=False): def generate_copy_values(self, checkin=False, checkout=False):
self.ensure_one() self.ensure_one()
return { return {
@@ -1091,7 +1091,7 @@ class PmsReservation(models.Model):
STATE WORKFLOW ----------------------------------------------------- STATE WORKFLOW -----------------------------------------------------
""" """
@api.multi
def confirm(self): def confirm(self):
''' '''
@param self: object pointer @param self: object pointer
@@ -1130,7 +1130,7 @@ class PmsReservation(models.Model):
splitted_reservs.confirm() splitted_reservs.confirm()
return True return True
@api.multi
def button_done(self): def button_done(self):
''' '''
@param self: object pointer @param self: object pointer
@@ -1139,7 +1139,7 @@ class PmsReservation(models.Model):
record.action_reservation_checkout() record.action_reservation_checkout()
return True return True
@api.multi
def action_cancel(self): def action_cancel(self):
for record in self: for record in self:
cancel_reason = 'intime' if self._context.get( cancel_reason = 'intime' if self._context.get(
@@ -1166,7 +1166,7 @@ class PmsReservation(models.Model):
splitted_reservs.action_cancel() splitted_reservs.action_cancel()
record.folio_id.compute_amount() record.folio_id.compute_amount()
@api.multi
def compute_cancelation_reason(self): def compute_cancelation_reason(self):
self.ensure_one() self.ensure_one()
pricelist = self.pricelist_id pricelist = self.pricelist_id
@@ -1184,7 +1184,7 @@ class PmsReservation(models.Model):
return 'intime' return 'intime'
return False return False
@api.multi
def draft(self): def draft(self):
for record in self: for record in self:
record.state = 'draft' record.state = 'draft'
@@ -1207,7 +1207,7 @@ class PmsReservation(models.Model):
""" """
PRICE PROCESS ------------------------------------------------------ PRICE PROCESS ------------------------------------------------------
""" """
@api.multi
def compute_price_out_vals(self, vals): def compute_price_out_vals(self, vals):
""" """
Compute if It is necesary calc price in write/create Compute if It is necesary calc price in write/create
@@ -1220,7 +1220,7 @@ class PmsReservation(models.Model):
return True return True
return False return False
@api.multi
def _compute_cancelled_discount(self): def _compute_cancelled_discount(self):
self.ensure_one() self.ensure_one()
pricelist = self.pricelist_id pricelist = self.pricelist_id
@@ -1378,7 +1378,7 @@ class PmsReservation(models.Model):
CHECKIN/OUT PROCESS ------------------------------------------------ CHECKIN/OUT PROCESS ------------------------------------------------
""" """
@api.multi
def _compute_checkin_partner_count(self): def _compute_checkin_partner_count(self):
_logger.info('_compute_checkin_partner_count') _logger.info('_compute_checkin_partner_count')
for record in self: for record in self:
@@ -1392,14 +1392,14 @@ class PmsReservation(models.Model):
record.checkin_partner_pending_count = 0 record.checkin_partner_pending_count = 0
# https://www.odoo.com/es_ES/forum/ayuda-1/question/calculated-fields-in-search-filter-possible-118501 # https://www.odoo.com/es_ES/forum/ayuda-1/question/calculated-fields-in-search-filter-possible-118501
@api.multi
def _search_checkin_partner_pending(self, operator, value): def _search_checkin_partner_pending(self, operator, value):
self.ensure_one() self.ensure_one()
recs = self.search([]).filtered( recs = self.search([]).filtered(
lambda x: x.checkin_partner_pending_count > 0) lambda x: x.checkin_partner_pending_count > 0)
return [('id', 'in', [x.id for x in recs])] if recs else [] return [('id', 'in', [x.id for x in recs])] if recs else []
@api.multi
def action_reservation_checkout(self): def action_reservation_checkout(self):
for record in self: for record in self:
record.state = 'done' record.state = 'done'
@@ -1421,7 +1421,7 @@ class PmsReservation(models.Model):
splitted_reservs.update({'state': 'done'}) splitted_reservs.update({'state': 'done'})
return True return True
@api.multi
def action_checks(self): def action_checks(self):
self.ensure_one() self.ensure_one()
action = self.env.ref( action = self.env.ref(
@@ -1437,7 +1437,7 @@ class PmsReservation(models.Model):
RESERVATION SPLITTED ----------------------------------------------- RESERVATION SPLITTED -----------------------------------------------
""" """
@api.multi
def split(self, nights): def split(self, nights):
for record in self: for record in self:
date_start_dt = fields.Date.from_string(record.checkin) date_start_dt = fields.Date.from_string(record.checkin)
@@ -1463,7 +1463,7 @@ class PmsReservation(models.Model):
'price': rline.price, 'price': rline.price,
'cancel_discount': rline.cancel_discount, 'cancel_discount': rline.cancel_discount,
'discount': rline.discount, 'discount': rline.discount,
'invoice_line_ids': rline.invoice_line_ids, 'move_line_ids': rline.move_line_ids,
'state': rline.state, 'state': rline.state,
})) }))
reservation_lines[0].append((2, rline.id, False)) reservation_lines[0].append((2, rline.id, False))
@@ -1490,7 +1490,7 @@ class PmsReservation(models.Model):
}) })
return True return True
@api.multi
def unify(self): def unify(self):
self.ensure_one() self.ensure_one()
if not self.splitted: if not self.splitted:
@@ -1548,7 +1548,7 @@ class PmsReservation(models.Model):
'price': rline.price, 'price': rline.price,
'cancel_discount': rline.cancel_discount, 'cancel_discount': rline.cancel_discount,
'discount': rline.discount, 'discount': rline.discount,
'invoice_line_ids': rline.invoice_line_ids, 'move_line_ids': rline.move_line_ids,
'state': rline.state, 'state': rline.state,
})) }))
@@ -1570,7 +1570,7 @@ class PmsReservation(models.Model):
}) })
return True return True
@api.multi
def open_master(self): def open_master(self):
self.ensure_one() self.ensure_one()
if not self.parent_reservation: if not self.parent_reservation:
@@ -1586,15 +1586,15 @@ class PmsReservation(models.Model):
MAILING PROCESS MAILING PROCESS
""" """
@api.multi
def send_reservation_mail(self): def send_reservation_mail(self):
return self.folio_id.send_reservation_mail() return self.folio_id.send_reservation_mail()
@api.multi
def send_exit_mail(self): def send_exit_mail(self):
return self.folio_id.send_exit_mail() return self.folio_id.send_exit_mail()
@api.multi
def send_cancel_mail(self): def send_cancel_mail(self):
return self.folio_id.send_cancel_mail() return self.folio_id.send_cancel_mail()
@@ -1602,7 +1602,7 @@ class PmsReservation(models.Model):
INVOICING PROCESS INVOICING PROCESS
""" """
@api.multi
def _compute_tax_ids(self): def _compute_tax_ids(self):
for record in self: for record in self:
# If company_id is set, always filter taxes by the company # If company_id is set, always filter taxes by the company
@@ -1613,7 +1613,7 @@ class PmsReservation(models.Model):
lambda r: not record.company_id or lambda r: not record.company_id or
r.company_id == folio.company_id) r.company_id == folio.company_id)
@api.multi
def set_call_center_user(self): def set_call_center_user(self):
user = self.env['res.users'].browse(self.env.uid) user = self.env['res.users'].browse(self.env.uid)
return user.has_group('pms.group_pms_call') return user.has_group('pms.group_pms_call')

View File

@@ -11,7 +11,7 @@ class PmsReservationLine(models.Model):
_order = "date" _order = "date"
# Default Methods ang Gets # Default Methods ang Gets
@api.multi
def name_get(self): def name_get(self):
result = [] result = []
for res in self: for res in self:
@@ -27,11 +27,11 @@ class PmsReservationLine(models.Model):
ondelete='cascade', ondelete='cascade',
required=True, required=True,
copy=False) copy=False)
invoice_line_ids = fields.Many2many( move_line_ids = fields.Many2many(
'account.invoice.line', 'account.move.line',
'reservation_line_invoice_rel', 'reservation_line_move_rel',
'reservation_line_id', 'reservation_line_id',
'invoice_line_id', 'move_line_id',
string='Invoice Lines', string='Invoice Lines',
readonly=True, readonly=True,
copy=False) copy=False)

View File

@@ -67,7 +67,7 @@ class PmsRoom(models.Model):
of another property.")) of another property."))
return super().create(vals) return super().create(vals)
@api.multi
def write(self, vals): def write(self, vals):
for record in self: for record in self:
if vals.get('pms_property_id', record.pms_property_id.id) != record.pms_property_id.id: if vals.get('pms_property_id', record.pms_property_id.id) != record.pms_property_id.id:
@@ -86,7 +86,7 @@ class PmsRoom(models.Model):
return super().write(vals) return super().write(vals)
# Business methods # Business methods
@api.multi
def get_capacity(self, extra_bed=0): def get_capacity(self, extra_bed=0):
if not self.shared_room_id: if not self.shared_room_id:
return self.capacity + extra_bed return self.capacity + extra_bed

View File

@@ -80,14 +80,14 @@ class PmsRoomType(models.Model):
}) })
return super().create(vals) return super().create(vals)
@api.multi
def unlink(self): def unlink(self):
for record in self: for record in self:
record.product_id.unlink() record.product_id.unlink()
return super().unlink() return super().unlink()
# Business methods # Business methods
@api.multi
def get_capacity(self): def get_capacity(self):
self.ensure_one() self.ensure_one()
capacities = self.room_ids.mapped('capacity') capacities = self.room_ids.mapped('capacity')

View File

@@ -29,7 +29,7 @@ class PmsRoomTypeRestrictionItem(models.Model):
day for the same room type!')] day for the same room type!')]
# Constraints and onchanges # Constraints and onchanges
@api.multi
@api.constrains('min_stay', 'min_stay_arrival', 'max_stay', @api.constrains('min_stay', 'min_stay_arrival', 'max_stay',
'max_stay_arrival') 'max_stay_arrival')
def _check_min_stay(self): def _check_min_stay(self):

View File

@@ -17,7 +17,7 @@ class PmsService(models.Model):
_description = 'Services and its charges' _description = 'Services and its charges'
# Default methods # Default methods
@api.multi
def name_get(self): def name_get(self):
result = [] result = []
for rec in self: for rec in self:
@@ -77,12 +77,12 @@ class PmsService(models.Model):
'account.tax', 'account.tax',
string='Taxes', string='Taxes',
domain=['|', ('active', '=', False), ('active', '=', True)]) domain=['|', ('active', '=', False), ('active', '=', True)])
invoice_line_ids = fields.Many2many( move_line_ids = fields.Many2many(
'account.invoice.line', 'account.move.line',
'service_line_invoice_rel', 'service_line_move_rel',
'service_id', 'service_id',
'invoice_line_id', 'move_line_id',
string='Invoice Lines', string='move Lines',
copy=False) copy=False)
analytic_tag_ids = fields.Many2many( analytic_tag_ids = fields.Many2many(
'account.analytic.tag', 'account.analytic.tag',
@@ -102,7 +102,7 @@ class PmsService(models.Model):
# Non-stored related field to allow portal user to # Non-stored related field to allow portal user to
# see the image of the product he has ordered # see the image of the product he has ordered
product_image = fields.Binary( product_image = fields.Binary(
'Product Image', related="product_id.image", 'Product Image', related="product_id.image_1024",
store=False, related_sudo=True) store=False, related_sudo=True)
invoice_status = fields.Selection([ invoice_status = fields.Selection([
('invoiced', 'Fully Invoiced'), ('invoiced', 'Fully Invoiced'),
@@ -169,8 +169,8 @@ class PmsService(models.Model):
else: else:
line.qty_to_invoice = 0 line.qty_to_invoice = 0
@api.depends('invoice_line_ids.invoice_id.state', @api.depends('move_line_ids.move_id.state',
'invoice_line_ids.quantity') 'move_line_ids.quantity')
def _get_invoice_qty(self): def _get_invoice_qty(self):
""" """
Compute the quantity invoiced. If case of a refund, Compute the quantity invoiced. If case of a refund,
@@ -183,13 +183,13 @@ class PmsService(models.Model):
""" """
for line in self: for line in self:
qty_invoiced = 0.0 qty_invoiced = 0.0
for invoice_line in line.invoice_line_ids: for invoice_line in line.move_line_ids:
if invoice_line.invoice_id.state != 'cancel': if invoice_line.move_id.state != 'cancel':
if invoice_line.invoice_id.type == 'out_invoice': if invoice_line.move_id.type == 'out_invoice':
qty_invoiced += invoice_line.uom_id._compute_quantity( qty_invoiced += invoice_line.uom_id._compute_quantity(
invoice_line.quantity, line.product_id.uom_id) invoice_line.quantity, line.product_id.uom_id)
elif invoice_line.invoice_id.type == 'out_refund': elif invoice_line.move_id.type == 'out_refund':
qty_invoiced -= invoice_line.uom_id._compute_quantity( qty_invoiced -= move_line.uom_id._compute_quantity(
invoice_line.quantity, line.product_id.uom_id) invoice_line.quantity, line.product_id.uom_id)
line.qty_invoiced = qty_invoiced line.qty_invoiced = qty_invoiced
@@ -337,7 +337,7 @@ class PmsService(models.Model):
record.update(vals) record.update(vals)
# Action methods # Action methods
@api.multi
def open_service_ids(self): def open_service_ids(self):
action = self.env.ref('pms.action_pms_services_form').read()[0] action = self.env.ref('pms.action_pms_services_form').read()[0]
action['views'] = [ action['views'] = [
@@ -387,7 +387,7 @@ class PmsService(models.Model):
record = super(PmsService, self).create(vals) record = super(PmsService, self).create(vals)
return record return record
@api.multi
def write(self, vals): def write(self, vals):
# If you write product, We must check if its necesary create or delete # If you write product, We must check if its necesary create or delete
# service lines # service lines
@@ -439,7 +439,7 @@ class PmsService(models.Model):
line[field], line) line[field], line)
return res return res
@api.multi
def compute_lines_out_vals(self, vals): def compute_lines_out_vals(self, vals):
""" """
Compute if It is necesary service days in write/create Compute if It is necesary service days in write/create
@@ -453,7 +453,7 @@ class PmsService(models.Model):
return True return True
return False return False
@api.multi
def _compute_tax_ids(self): def _compute_tax_ids(self):
for record in self: for record in self:
# If company_id is set, always filter taxes by the company # If company_id is set, always filter taxes by the company
@@ -466,7 +466,7 @@ class PmsService(models.Model):
lambda r: not record.company_id or lambda r: not record.company_id or
r.company_id == origin.company_id) r.company_id == origin.company_id)
@api.multi
def _get_display_price(self, product): def _get_display_price(self, product):
folio = self.folio_id or self.env.context.get('default_folio_id') folio = self.folio_id or self.env.context.get('default_folio_id')
reservation = self.reservation_id or self.env.context.get( reservation = self.reservation_id or self.env.context.get(
@@ -499,7 +499,7 @@ class PmsService(models.Model):
# negative discounts (= surcharge) are included in the display price # negative discounts (= surcharge) are included in the display price
return max(base_price, final_price) return max(base_price, final_price)
@api.multi
def _compute_price_unit(self): def _compute_price_unit(self):
self.ensure_one() self.ensure_one()
folio = self.folio_id or self.env.context.get('default_folio_id') folio = self.folio_id or self.env.context.get('default_folio_id')

View File

@@ -1,19 +1,19 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<odoo> <odoo>
<record id="invoice_form" model="ir.ui.view"> <record id="move_form" model="ir.ui.view">
<field name="model">account.invoice</field> <field name="model">account.move</field>
<field name="inherit_id" ref="account.invoice_form" /> <field name="inherit_id" ref="account.view_move_form" />
<field name="arch" type="xml"> <field name="arch" type="xml">
<xpath expr="//field[@name='date_invoice']" position="after"> <xpath expr="//field[@name='invoice_date']" position="after">
<field name="folio_ids" widget="many2many_tags"/> <field name="folio_ids" widget="many2many_tags"/>
<field name="from_folio" invisible="1" /> <field name="from_folio" invisible="1" />
<field name="pms_property_id" invisible="1"/> <field name="pms_property_id" invisible="1"/>
</xpath> </xpath>
<xpath expr="//button[@name='%(account.action_account_invoice_payment)d']" position="attributes"> <xpath expr="//button[@name='action_invoice_register_payment']" position="attributes">
<attribute name="attrs">{'invisible': ['|',('from_folio','=',True)]}</attribute> <attribute name="attrs">{'invisible': ['|',('from_folio','=',True)]}</attribute>
</xpath> </xpath>
<xpath expr="//field[@name='outstanding_credits_debits_widget']" position="before"> <xpath expr="//field[@name='invoice_outstanding_credits_debits_widget']" position="before">
<field name="outstanding_folios_debits_widget" colspan="2" nolabel="1" widget="payment" attrs="{'invisible': [('state', 'not in', 'open')]}"/> <field name="outstanding_folios_debits_widget" colspan="2" nolabel="1" widget="payment" attrs="{'invisible': [('state', 'not in', 'open')]}"/>
</xpath> </xpath>
</field> </field>

View File

@@ -36,7 +36,6 @@
<record model="ir.actions.act_window" id="action_pms_room_amenity_type_view_form"> <record model="ir.actions.act_window" id="action_pms_room_amenity_type_view_form">
<field name="name">Room amenity Type</field> <field name="name">Room amenity Type</field>
<field name="res_model">pms.amenity.type</field> <field name="res_model">pms.amenity.type</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
</record> </record>

View File

@@ -1,8 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<odoo> <odoo>
<!--===== Room Amenities ===== -->
<!-- Form view of pms room amenities -->
<record id="pms_amenity_view_form" model="ir.ui.view"> <record id="pms_amenity_view_form" model="ir.ui.view">
<field name="name">pms.amenity.form</field> <field name="name">pms.amenity.form</field>
<field name="model">pms.amenity</field> <field name="model">pms.amenity</field>
@@ -64,7 +62,6 @@
</field> </field>
</record> </record>
<!-- Search view of pms room amenities -->
<record model="ir.ui.view" id="pms_amenity_search"> <record model="ir.ui.view" id="pms_amenity_search">
<field name="name">pms.room_amenity_search</field> <field name="name">pms.room_amenity_search</field>
<field name="model">pms.amenity</field> <field name="model">pms.amenity</field>
@@ -83,7 +80,6 @@
</field> </field>
</record> </record>
<!-- Tree view of pms room amenities -->
<record model="ir.ui.view" id="pms_amenity_view_list"> <record model="ir.ui.view" id="pms_amenity_view_list">
<field name="name">pms.room_amenity_list</field> <field name="name">pms.room_amenity_list</field>
<field name="model">pms.amenity</field> <field name="model">pms.amenity</field>
@@ -96,11 +92,9 @@
</field> </field>
</record> </record>
<!-- Action for pms room amenities -->
<record model="ir.actions.act_window" id="action_pms_room_amenity_view_form"> <record model="ir.actions.act_window" id="action_pms_room_amenity_view_form">
<field name="name">Room Amenities</field> <field name="name">Room Amenities</field>
<field name="res_model">pms.amenity</field> <field name="res_model">pms.amenity</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
<field name="view_id" ref="pms_amenity_view_list" /> <field name="view_id" ref="pms_amenity_view_list" />
</record> </record>

View File

@@ -22,8 +22,7 @@
<record model="ir.actions.act_window" id="action_pms_board_service_room_type_view"> <record model="ir.actions.act_window" id="action_pms_board_service_room_type_view">
<field name="name">Board Service</field> <field name="name">Board Service</field>
<field name="res_model">board.service.room.type</field> <field name="res_model">pms.board.service.room.type</field>
<field name="view_type">form</field>
<field name="view_mode">form</field> <field name="view_mode">form</field>
</record> </record>

View File

@@ -36,7 +36,6 @@
<record model="ir.actions.act_window" id="open_pms_board_service_form_tree"> <record model="ir.actions.act_window" id="open_pms_board_service_form_tree">
<field name="name">Board Services</field> <field name="name">Board Services</field>
<field name="res_model">pms.board.service</field> <field name="res_model">pms.board.service</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
</record> </record>

View File

@@ -54,7 +54,6 @@
<record model="ir.actions.act_window" id="action_pms_cancelation_rule"> <record model="ir.actions.act_window" id="action_pms_cancelation_rule">
<field name="name">Cancelation Rules</field> <field name="name">Cancelation Rules</field>
<field name="res_model">pms.cancelation.rule</field> <field name="res_model">pms.cancelation.rule</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
</record> </record>

View File

@@ -103,13 +103,13 @@
<search string="Checkin Detail"> <search string="Checkin Detail">
<field name="partner_id" /> <field name="partner_id" />
<field name="reservation_id" /> <field name="reservation_id" />
<filter string="On Board" <filter string="On Board" name="on_board"
domain="[('state','in',['booking'])]" domain="[('state','=','booking')]"
help="Current Booking" /> help="Current Booking" />
<filter string="To enter" <filter string="To enter" name="to_enter"
domain="[('state', '=', 'draft')]" domain="[('state', '=', 'draft')]"
/> />
<filter string="Out" <filter string="Out" name="out"
domain="[('state', '=', 'done')]" domain="[('state', '=', 'done')]"
/> />
<filter string="Checkins Tomorrow" name="enter_tomorrow" <filter string="Checkins Tomorrow" name="enter_tomorrow"

View File

@@ -32,7 +32,6 @@
<record model="ir.actions.act_window" id="open_pms_floor_form_tree"> <record model="ir.actions.act_window" id="open_pms_floor_form_tree">
<field name="name">Floor Structure</field> <field name="name">Floor Structure</field>
<field name="res_model">pms.floor</field> <field name="res_model">pms.floor</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
</record> </record>

View File

@@ -3,10 +3,10 @@
<act_window id="action_view_folio_advance_payment_inv" <act_window id="action_view_folio_advance_payment_inv"
name="Invoice Folio" name="Invoice Folio"
src_model="pms.folio" binding_model="pms.folio"
res_model="folio.advance.payment.inv" res_model="folio.advance.payment.inv"
key2="client_action_multi" target="new" target="new"
view_mode="form" multi="True"/> view_mode="form" />
<record model="ir.ui.view" id="pms_folio_view_form"> <record model="ir.ui.view" id="pms_folio_view_form">
<field name="name">pms.folio.form</field> <field name="name">pms.folio.form</field>
@@ -114,7 +114,7 @@
</group> </group>
</group> </group>
<group invisible="1"> <group invisible="1">
<field name="invoice_ids" invisible="1"/> <field name="move_ids" invisible="1"/>
<field name="invoice_status" invisible="1" /> <field name="invoice_status" invisible="1" />
<field name="currency_id" invisible="1"/> <field name="currency_id" invisible="1"/>
<field name="refund_amount" invisible="1" /> <field name="refund_amount" invisible="1" />
@@ -300,11 +300,11 @@
domain="[('pending_amount', '&gt;', 0)]" /> domain="[('pending_amount', '&gt;', 0)]" />
<group expand="0" string="Group By"> <group expand="0" string="Group By">
<filter string="Customer" icon="terp-stock_symbol-selection" <filter string="Customer" icon="terp-stock_symbol-selection"
context="{'group_by':'partner_id'}" /> name="group_customer" context="{'group_by':'partner_id'}" />
<filter string="Invoice Contact" <filter string="Invoice Contact"
context="{'group_by':'partner_invoice_id'}" /> name="group_invoice_contact" context="{'group_by':'partner_invoice_id'}" />
<filter string="Tour Operator" domain="[]" <filter string="Tour Operator" domain="[]"
context="{'group_by':'tour_operator_id'}"/> name="group_tour_operator" context="{'group_by':'tour_operator_id'}"/>
</group> </group>
</search> </search>
</field> </field>
@@ -323,12 +323,9 @@
<act_window name="Send Confirm Mail" <act_window name="Send Confirm Mail"
res_model="mail.compose.message" res_model="mail.compose.message"
src_model="pms.folio" binding_model="pms.folio"
view_mode="form" view_mode="form"
multi="False"
view_type="form"
target="new" target="new"
key2="client_action_multi"
id="action_view_folio_send_confirm_mail" id="action_view_folio_send_confirm_mail"
context="{ context="{
'default_model': 'pms.folio', 'default_model': 'pms.folio',
@@ -343,7 +340,6 @@
<record model="ir.actions.act_window" id="open_pms_folio1_form_tree_all"> <record model="ir.actions.act_window" id="open_pms_folio1_form_tree_all">
<field name="name">Folio</field> <field name="name">Folio</field>
<field name="res_model">pms.folio</field> <field name="res_model">pms.folio</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,graph</field> <field name="view_mode">tree,form,graph</field>
</record> </record>

View File

@@ -62,7 +62,6 @@
<record id="pms_property_action" model="ir.actions.act_window"> <record id="pms_property_action" model="ir.actions.act_window">
<field name="name">pmss</field> <field name="name">pmss</field>
<field name="res_model">pms.property</field> <field name="res_model">pms.property</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
</record> </record>

View File

@@ -3,7 +3,6 @@
<record model="ir.actions.act_window" id="open_pms_reservation_form_tree_all"> <record model="ir.actions.act_window" id="open_pms_reservation_form_tree_all">
<field name="name">Reservation</field> <field name="name">Reservation</field>
<field name="res_model">pms.reservation</field> <field name="res_model">pms.reservation</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,graph,pivot</field> <field name="view_mode">tree,form,graph,pivot</field>
<field name="context">{'from_room': True}</field> <field name="context">{'from_room': True}</field>
</record> </record>
@@ -557,18 +556,18 @@
<field name="folio_id" /> <field name="folio_id" />
<field name="tour_operator_id" /> <field name="tour_operator_id" />
<filter string="My Reservations" <filter string="My Reservations"
domain="[('create_uid', '=', uid)]" name="my_reservations" domain="[('create_uid', '=', uid)]"
/> />
<filter string="Cancelled" <filter string="Cancelled"
domain="[('state', '=', 'cancelled')]" name="cancelled" domain="[('state', '=', 'cancelled')]"
/> />
<filter string="On Board" <filter string="On Board" name="on_board"
domain="[('state','in',['booking'])]" domain="[('state','in',['booking'])]"
help="Current Booking" /> help="Current Booking" />
<filter string="To enter" <filter string="To enter" name="to_enter"
domain="[('state', '=', 'confirm')]" domain="[('state', '=', 'confirm')]"
/> />
<filter string="Overbookings" <filter string="Overbookings" name="overbookings"
domain="[('overbooking', '=', 'True')]" domain="[('overbooking', '=', 'True')]"
/> />
<filter string="Reservations to 7 days" name="next_res_week" <filter string="Reservations to 7 days" name="next_res_week"
@@ -583,52 +582,52 @@
domain="[('checkin', '&lt;', (context_today()+datetime.timedelta(days=30)).strftime('%Y-%m-%d')), domain="[('checkin', '&lt;', (context_today()+datetime.timedelta(days=30)).strftime('%Y-%m-%d')),
('state', '=', 'confirm')]" ('state', '=', 'confirm')]"
help="Show all reservations for which date enter is before than aprox. 1 month"/> help="Show all reservations for which date enter is before than aprox. 1 month"/>
<filter string="To Assign" <filter string="To Assign" name="to_assign"
domain="[('to_assign','=',True)]" domain="[('to_assign','=',True)]"
/> />
<separator/> <separator/>
<filter string="Call Center" <filter string="Call Center" name="call_center"
domain="[('channel_type', '=', 'call')]" domain="[('channel_type', '=', 'call')]"
/> />
<filter string="Web" <filter string="Web" name="web"
domain="[('channel_type', '=', 'web')]" domain="[('channel_type', '=', 'web')]"
/> />
<filter string="Door" <filter string="Door" name="door"
domain="[('channel_type', '=', 'door')]" domain="[('channel_type', '=', 'door')]"
/> />
<filter string="Mail" <filter string="Mail" name="mail"
domain="[('channel_type', '=', 'mail')]" domain="[('channel_type', '=', 'mail')]"
/> />
<filter string="Phone" <filter string="Phone" name="phone"
domain="[('channel_type', '=', 'phone')]" domain="[('channel_type', '=', 'phone')]"
/> />
<separator/> <separator/>
<filter string="Still to be paid" <filter string="Still to be paid" name="still_to_be_paid"
domain="[('folio_id.pending_amount','&gt;',0)]" domain="[('folio_id.pending_amount','&gt;',0)]"
/> />
<filter string="Late Payment" <filter string="Late Payment" name="late_payment"
domain="[('folio_id.pending_amount','&gt;',0),('state','in',['done'])]" domain="[('folio_id.pending_amount','&gt;',0),('state','in',['done'])]"
/> />
<filter string="Lates and NoShows" <filter string="Lates and NoShows" name="lates_and_noshows"
domain="[('cancelled_reason','in',['late','noshow'])]" domain="[('cancelled_reason','in',['late','noshow'])]"
/> />
<separator/> <separator/>
<filter string="Staff" <filter string="Staff" name="staff"
domain="[('reservation_type','in',['staff'])]" domain="[('reservation_type','in',['staff'])]"
/> />
<filter string="Out of Service" <filter string="Out of Service" name="out_of_service"
domain="[('reservation_type','in',['dontsell'])]" domain="[('reservation_type','in',['dontsell'])]"
/> />
<group expand="0" string="Group By"> <group expand="0" string="Group By">
<!-- <filter string="Room Type" domain="[]" <!-- <filter string="Room Type" domain="[]"
context="{'group_by':'room_type_id'}"/> --> context="{'group_by':'room_type_id'}"/> -->
<filter string="Room Type" domain="[]" <filter string="Room Type" domain="[]" name="room_type"
context="{'group_by':'room_type_id'}"/> context="{'group_by':'room_type_id'}"/>
<filter string="Creation Date" domain="[]" <filter string="Creation Date" domain="[]" name="creation_date"
context="{'group_by':'create_date'}" /> context="{'group_by':'create_date'}" />
<filter string="Checkin Date" domain="[]" <filter string="Checkin Date" domain="[]" name="checkin_date"
context="{'group_by':'checkin'}" /> context="{'group_by':'checkin'}" />
<filter string="Created By" domain="[]" <filter string="Created By" domain="[]" name="created_by"
context="{'group_by':'create_uid'}" /> context="{'group_by':'create_uid'}" />
</group> </group>
</search> </search>

View File

@@ -30,7 +30,6 @@
<record model="ir.actions.act_window" id="open_pms_room_closure_reason_form_tree"> <record model="ir.actions.act_window" id="open_pms_room_closure_reason_form_tree">
<field name="name">Room Closure Reason</field> <field name="name">Room Closure Reason</field>
<field name="res_model">room.closure.reason</field> <field name="res_model">room.closure.reason</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
</record> </record>
<menuitem name="Closure Reasons" id="menu_pms_room_closure_reason_form_tree" <menuitem name="Closure Reasons" id="menu_pms_room_closure_reason_form_tree"

View File

@@ -48,7 +48,6 @@
<record model="ir.actions.act_window" id="open_pms_room_type_class_form_tree"> <record model="ir.actions.act_window" id="open_pms_room_type_class_form_tree">
<field name="name">Room Type Class</field> <field name="name">Room Type Class</field>
<field name="res_model">pms.room.type.class</field> <field name="res_model">pms.room.type.class</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
</record> </record>
<menuitem name="Type Class" id="menu_open_pms_room_type_class_form_tree" <menuitem name="Type Class" id="menu_open_pms_room_type_class_form_tree"

View File

@@ -52,7 +52,6 @@
<record model="ir.actions.act_window" id="room_type_restriction_action"> <record model="ir.actions.act_window" id="room_type_restriction_action">
<field name="name">Reservation restrictions</field> <field name="name">Reservation restrictions</field>
<field name="res_model">pms.room.type.restriction</field> <field name="res_model">pms.room.type.restriction</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
</record> </record>

View File

@@ -78,7 +78,6 @@
<record model="ir.actions.act_window" id="open_pms_room_type_form_tree"> <record model="ir.actions.act_window" id="open_pms_room_type_form_tree">
<field name="name">Room Type</field> <field name="name">Room Type</field>
<field name="res_model">pms.room.type</field> <field name="res_model">pms.room.type</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
</record> </record>
<menuitem id="menu_pms_room" name="Room" <menuitem id="menu_pms_room" name="Room"

View File

@@ -201,7 +201,6 @@
<record model="ir.actions.act_window" id="action_pms_room_form"> <record model="ir.actions.act_window" id="action_pms_room_form">
<field name="name">pms Room</field> <field name="name">pms Room</field>
<field name="res_model">pms.room</field> <field name="res_model">pms.room</field>
<field name="view_type">form</field>
<!-- <field name="context">{'default_isroom':1,'default_rental':1} <!-- <field name="context">{'default_isroom':1,'default_rental':1}
</field> --> </field> -->
<field name="view_id" ref="pms_room_view_tree" /> <field name="view_id" ref="pms_room_view_tree" />
@@ -236,7 +235,6 @@
<!-- <record id="action_room_cate" model="ir.actions.act_window"> <!-- <record id="action_room_cate" model="ir.actions.act_window">
<field name="name">Category Items</field> <field name="name">Category Items</field>
<field name="res_model">product.product</field> <field name="res_model">product.product</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
<field name="domain">['|','|',('isroom','=',True), ('iscategid' , '=', True), ('isservice', '=', True)]</field> <field name="domain">['|','|',('isroom','=',True), ('iscategid' , '=', True), ('isservice', '=', True)]</field>
<field name="context">{'search_default_categ_id':active_id, 'default_categ_id':active_id}</field> <field name="context">{'search_default_categ_id':active_id, 'default_categ_id':active_id}</field>

View File

@@ -85,7 +85,6 @@
<record model="ir.actions.act_window" id="action_pms_service_line_form"> <record model="ir.actions.act_window" id="action_pms_service_line_form">
<field name="name">Services</field> <field name="name">Services</field>
<field name="res_model">pms.service.line</field> <field name="res_model">pms.service.line</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
</record> </record>

View File

@@ -110,7 +110,6 @@
<record model="ir.actions.act_window" id="action_pms_services_form"> <record model="ir.actions.act_window" id="action_pms_services_form">
<field name="name">Services</field> <field name="name">Services</field>
<field name="res_model">pms.service</field> <field name="res_model">pms.service</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
</record> </record>

View File

@@ -102,7 +102,6 @@
<record model="ir.actions.act_window" id="action_pms_shared_room_form"> <record model="ir.actions.act_window" id="action_pms_shared_room_form">
<field name="name">Shared Room</field> <field name="name">Shared Room</field>
<field name="res_model">pms.shared.room</field> <field name="res_model">pms.shared.room</field>
<field name="view_type">form</field>
<!-- <field name="context">{'default_isroom':1,'default_rental':1} <!-- <field name="context">{'default_isroom':1,'default_rental':1}
</field> --> </field> -->
<field name="view_id" ref="pms_shared_room_view_tree" /> <field name="view_id" ref="pms_shared_room_view_tree" />

View File

@@ -106,7 +106,7 @@ class FolioAdvancePaymentInv(models.TransientModel):
return {'value': {'amount': 0}} return {'value': {'amount': 0}}
return {} return {}
@api.multi
def _create_invoice(self, folio, service, amount): def _create_invoice(self, folio, service, amount):
inv_obj = self.env['account.invoice'] inv_obj = self.env['account.invoice']
ir_property_obj = self.env['ir.property'] ir_property_obj = self.env['ir.property']
@@ -201,7 +201,7 @@ class FolioAdvancePaymentInv(models.TransientModel):
invoice.assign_outstanding_credit(line.id) invoice.assign_outstanding_credit(line.id)
return True return True
@api.multi
def create_invoices(self): def create_invoices(self):
inv_obj = self.env['account.invoice'] inv_obj = self.env['account.invoice']
precision = self.env['decimal.precision'].precision_get('Product Unit of Measure') precision = self.env['decimal.precision'].precision_get('Product Unit of Measure')
@@ -474,7 +474,7 @@ class LineAdvancePaymentInv(models.TransientModel):
((fields.Date.from_string(record.reservation_line_ids[-1].date)) + \ ((fields.Date.from_string(record.reservation_line_ids[-1].date)) + \
timedelta(days=1)).strftime(DEFAULT_SERVER_DATE_FORMAT) timedelta(days=1)).strftime(DEFAULT_SERVER_DATE_FORMAT)
@api.multi
def invoice_line_create(self, invoice_id, qty): def invoice_line_create(self, invoice_id, qty):
""" Create an invoice line. """ Create an invoice line.
:param invoice_id: integer :param invoice_id: integer

View File

@@ -91,7 +91,6 @@
<field name="name">Invoice Order</field> <field name="name">Invoice Order</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">folio.advance.payment.inv</field> <field name="res_model">folio.advance.payment.inv</field>
<field name="view_type">form</field>
<field name="view_mode">form</field> <field name="view_mode">form</field>
<field name="target">new</field> <field name="target">new</field>
<field name="groups_id" eval="[(4,ref('sales_team.group_sale_salesman'))]"/> <field name="groups_id" eval="[(4,ref('sales_team.group_sale_salesman'))]"/>

View File

@@ -91,7 +91,7 @@ class MassiveChangesWizard(models.TransientModel):
self.date_end = self.date_start self.date_end = self.date_start
# Action methods # Action methods
@api.multi
def _get_restrictions_values(self, record): def _get_restrictions_values(self, record):
self.ensure_one() self.ensure_one()
vals = {} vals = {}
@@ -208,7 +208,7 @@ class MassiveChangesWizard(models.TransientModel):
elif record.section == 'prices': elif record.section == 'prices':
self._save_prices(ndate, room_types, record) self._save_prices(ndate, room_types, record)
@api.multi
def _do_massive_change(self): def _do_massive_change(self):
pms_room_type_obj = self.env['pms.room.type'] pms_room_type_obj = self.env['pms.room.type']
for record in self: for record in self:
@@ -230,20 +230,20 @@ class MassiveChangesWizard(models.TransientModel):
self._save(ndate, room_types, record) self._save(ndate, room_types, record)
return True return True
@api.multi
def massive_change(self): def massive_change(self):
self._do_massive_change() self._do_massive_change()
return { return {
"type": "ir.actions.do_nothing", "type": "ir.actions.do_nothing",
} }
@api.multi
def massive_change_close(self): def massive_change_close(self):
self._do_massive_change() self._do_massive_change()
return True return True
# TODO: method deprecated and not used anywhere # TODO: method deprecated and not used anywhere
@api.multi
def is_valid_date(self, chkdate): def is_valid_date(self, chkdate):
self.ensure_one() self.ensure_one()
wday = chkdate.timetuple()[6] wday = chkdate.timetuple()[6]

View File

@@ -74,7 +74,6 @@
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">pms.wizard.massive.changes</field> <field name="res_model">pms.wizard.massive.changes</field>
<field name="view_id" ref="view_pms_massive_changes_wizard"/> <field name="view_id" ref="view_pms_massive_changes_wizard"/>
<field name="view_type">form</field>
<field name="view_mode">form</field> <field name="view_mode">form</field>
<field name="target">new</field> <field name="target">new</field>
</record> </record>

View File

@@ -11,7 +11,7 @@ class MassivePriceChangeWizard(models.TransientModel):
new_discount = fields.Float('New Discount', default=0, min=1) new_discount = fields.Float('New Discount', default=0, min=1)
change_discount = fields.Boolean('Change Discounts', default=False) change_discount = fields.Boolean('Change Discounts', default=False)
@api.multi
def massive_price_change_days(self): def massive_price_change_days(self):
self.ensure_one() self.ensure_one()
pms_reservation_obj = self.env['pms.reservation'] pms_reservation_obj = self.env['pms.reservation']

View File

@@ -31,7 +31,6 @@
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">pms.wizard.massive.price.reservation.days</field> <field name="res_model">pms.wizard.massive.price.reservation.days</field>
<field name="view_id" ref="view_pms_massive_price_change_wizard"/> <field name="view_id" ref="view_pms_massive_price_change_wizard"/>
<field name="view_type">form</field>
<field name="view_mode">form</field> <field name="view_mode">form</field>
<field name="target">new</field> <field name="target">new</field>
</record> </record>

View File

@@ -18,7 +18,7 @@ class ServiceOnDay(models.TransientModel):
product_qty = fields.Integer('Quantity', default=1) product_qty = fields.Integer('Quantity', default=1)
date = fields.Date('Date', default=_get_default_date) date = fields.Date('Date', default=_get_default_date)
@api.multi
def set_service(self): def set_service(self):
self.ensure_one() self.ensure_one()
pms_reservation_obj = self.env['pms.reservation'] pms_reservation_obj = self.env['pms.reservation']

View File

@@ -26,7 +26,6 @@
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">service.on.day</field> <field name="res_model">service.on.day</field>
<field name="view_id" ref="service_on_day_view_form"/> <field name="view_id" ref="service_on_day_view_form"/>
<field name="view_type">form</field>
<field name="view_mode">form</field> <field name="view_mode">form</field>
<field name="target">new</field> <field name="target">new</field>
</record> </record>

View File

@@ -13,7 +13,7 @@ class SplitReservationWizard(models.TransientModel):
nights = fields.Integer('Nights', default=1, min=1) nights = fields.Integer('Nights', default=1, min=1)
@api.multi
def split_reservation(self): def split_reservation(self):
reservation_id = self.env['pms.reservation'].browse( reservation_id = self.env['pms.reservation'].browse(
self.env.context.get('active_id')) self.env.context.get('active_id'))

View File

@@ -25,7 +25,6 @@
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">pms.wizard.split.reservation</field> <field name="res_model">pms.wizard.split.reservation</field>
<field name="view_id" ref="view_pms_split_reservation_wizard"/> <field name="view_id" ref="view_pms_split_reservation_wizard"/>
<field name="view_type">form</field>
<field name="view_mode">form</field> <field name="view_mode">form</field>
<field name="target">new</field> <field name="target">new</field>
</record> </record>

View File

@@ -159,7 +159,7 @@ class FolioWizard(models.TransientModel):
})) }))
self.reservation_wizard_ids = cmds self.reservation_wizard_ids = cmds
@api.multi
@api.onchange('checkin', 'checkout') @api.onchange('checkin', 'checkout')
def onchange_checks(self): def onchange_checks(self):
''' '''
@@ -213,7 +213,7 @@ class FolioWizard(models.TransientModel):
total += line.price total += line.price
self.total = total self.total = total
@api.multi
def create_folio(self): def create_folio(self):
self.ensure_one() self.ensure_one()
if not self.partner_id: if not self.partner_id:
@@ -276,7 +276,7 @@ class FolioWizard(models.TransientModel):
class PmsRoomTypeWizards(models.TransientModel): class PmsRoomTypeWizards(models.TransientModel):
_name = 'pms.room.type.wizard' _name = 'pms.room.type.wizard'
@api.multi
def _get_default_checkin(self): def _get_default_checkin(self):
return self.folio_wizard_id.checkin return self.folio_wizard_id.checkin
@@ -303,7 +303,7 @@ class PmsRoomTypeWizards(models.TransientModel):
board_service_room_id = fields.Many2one('pms.board.service.room.type', board_service_room_id = fields.Many2one('pms.board.service.room.type',
string="Board Service") string="Board Service")
@api.multi
@api.onchange('rooms_num') @api.onchange('rooms_num')
def domain_board_service(self): def domain_board_service(self):
for line in self: for line in self:
@@ -317,7 +317,7 @@ class PmsRoomTypeWizards(models.TransientModel):
domain_boardservice = [('id', 'in', board_service_room_ids)] domain_boardservice = [('id', 'in', board_service_room_ids)]
return {'domain': {'board_service_room_id': domain_boardservice}} return {'domain': {'board_service_room_id': domain_boardservice}}
@api.multi
def _can_confirm(self): def _can_confirm(self):
for record in self: for record in self:
date_start = fields.Date.from_string(record.checkin) date_start = fields.Date.from_string(record.checkin)
@@ -458,14 +458,14 @@ class ReservationWizard(models.TransientModel):
board_service_room_id = fields.Many2one('pms.board.service.room.type', board_service_room_id = fields.Many2one('pms.board.service.room.type',
string="Board Service") string="Board Service")
@api.multi
def _compute_assign(self): def _compute_assign(self):
for rec in self: for rec in self:
user = self.env['res.users'].browse(self.env.uid) user = self.env['res.users'].browse(self.env.uid)
if user.has_group('pms.group_pms_call'): if user.has_group('pms.group_pms_call'):
rec.to_assign = True rec.to_assign = True
@api.multi
@api.onchange('room_id') @api.onchange('room_id')
def onchange_room_id(self): def onchange_room_id(self):
for line in self: for line in self:
@@ -483,7 +483,7 @@ class ReservationWizard(models.TransientModel):
raise ValidationError(_("This room is occupied!, please, \ raise ValidationError(_("This room is occupied!, please, \
choice other room or change the reservation date")) choice other room or change the reservation date"))
@api.multi
@api.onchange('checkin', 'checkout', 'room_type_id', @api.onchange('checkin', 'checkout', 'room_type_id',
'discount', 'board_service_room_id', 'product_ids') 'discount', 'board_service_room_id', 'product_ids')
def onchange_dates(self): def onchange_dates(self):

View File

@@ -112,7 +112,6 @@
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">pms.folio.wizard</field> <field name="res_model">pms.folio.wizard</field>
<field name="view_id" ref="pms.pms_folio_wizard"/> <field name="view_id" ref="pms.pms_folio_wizard"/>
<field name="view_type">form</field>
<field name="view_mode">form</field> <field name="view_mode">form</field>
<field name="target">new</field> <field name="target">new</field>
</record> </record>