From 2efbf78f4adab64e919051a322b411e5c5d5fab7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dar=C3=ADo=20Lodeiros?= Date: Wed, 20 Jan 2021 23:28:53 +0100 Subject: [PATCH] [IMP] Improvements --- pms/__manifest__.py | 2 +- pms/data/menus.xml | 45 +++-- pms/models/pms_board_service_room_type.py | 23 +++ pms/models/pms_reservation.py | 29 +++ .../src/js/views/list/list_controller.js | 33 ---- .../src/js/views/list/pms_list_controller.js | 54 ++++++ .../xml/reservation_group_button_views.xml | 10 + pms/views/account_move_views.xml | 8 + pms/views/general.xml | 12 -- pms/views/pms_amenity_type_views.xml | 3 +- pms/views/pms_amenity_views.xml | 4 +- pms/views/pms_board_service_views.xml | 2 +- pms/views/pms_cancelation_rule_views.xml | 2 +- pms/views/pms_checkin_partner_views.xml | 2 +- pms/views/pms_floor_views.xml | 4 +- pms/views/pms_folio_views.xml | 26 +-- pms/views/pms_property_views.xml | 9 +- pms/views/pms_reservation_views.xml | 173 ++++++++++-------- pms/views/pms_room_closure_reason_views.xml | 2 +- .../pms_room_type_availability_plan_views.xml | 4 +- pms/views/pms_room_type_class_views.xml | 6 +- pms/views/pms_room_type_views.xml | 17 +- pms/views/pms_room_views.xml | 2 +- pms/views/pms_sale_channel.xml | 6 +- pms/views/pms_service_line_views.xml | 4 +- pms/views/pms_shared_room_views.xml | 4 +- pms/views/product_pricelist_views.xml | 10 +- pms/views/product_template_views.xml | 8 + pms/views/res_partner_views.xml | 33 +++- pms/wizards/folio_make_invoice_advance.py | 1 + pms/wizards/wizard_advanced_filters.xml | 2 +- pms/wizards/wizard_folio.xml | 6 +- pms/wizards/wizard_massive_changes.xml | 4 +- 33 files changed, 348 insertions(+), 202 deletions(-) delete mode 100644 pms/static/src/js/views/list/list_controller.js create mode 100644 pms/static/src/js/views/list/pms_list_controller.js create mode 100644 pms/static/src/xml/reservation_group_button_views.xml delete mode 100644 pms/views/general.xml diff --git a/pms/__manifest__.py b/pms/__manifest__.py index 8ddb84048..5147c917d 100644 --- a/pms/__manifest__.py +++ b/pms/__manifest__.py @@ -33,7 +33,6 @@ "report/pms_folio.xml", "report/pms_folio_templates.xml", # "templates/pms_email_template.xml", - "views/general.xml", "data/menus.xml", "wizards/wizard_payment_folio.xml", "wizards/folio_make_invoice_advance_views.xml", @@ -81,6 +80,7 @@ ], "qweb": [ "static/src/xml/pms_base_templates.xml", + "static/src/xml/reservation_group_button_views.xml", ], "post_init_hook": "post_init_hook", } diff --git a/pms/data/menus.xml b/pms/data/menus.xml index 4eb21769f..46b5751a4 100644 --- a/pms/data/menus.xml +++ b/pms/data/menus.xml @@ -5,33 +5,48 @@ name="PMS Management" sequence="8" web_icon="pms,static/description/icon.png" - groups="pms.group_pms_user,pms.group_pms_call" /> + + + diff --git a/pms/models/pms_board_service_room_type.py b/pms/models/pms_board_service_room_type.py index 3d64ce194..e5b029e8c 100644 --- a/pms/models/pms_board_service_room_type.py +++ b/pms/models/pms_board_service_room_type.py @@ -63,6 +63,7 @@ class PmsBoardServiceRoomType(models.Model): amount = fields.Float( "Amount", digits=("Product Price"), compute="_compute_board_amount", store=True ) + by_default = fields.Boolean("Apply by Default") # Compute and Search methods @api.depends("board_service_line_ids.amount") @@ -107,6 +108,28 @@ class PmsBoardServiceRoomType(models.Model): ) ) + @api.constrains("by_default", "pricelist_id") + def constrains_duplicated_board_defaul(self): + for record in self: + default_boards = ( + record.pms_room_type_id.board_service_room_type_ids.filtered( + "by_default" + ) + ) + # TODO Check properties (with different propertys is allowed) + if any( + default_boards.mapped( + lambda l: l.pricelist_id == record.pricelist_id + and l.id != record.id + ) + ): + raise UserError( + _( + """Only can set one default board service by + pricelist (or without pricelist)""" + ) + ) + # Action methods def open_board_lines_form(self): diff --git a/pms/models/pms_reservation.py b/pms/models/pms_reservation.py index 76975a598..64f14df92 100644 --- a/pms/models/pms_reservation.py +++ b/pms/models/pms_reservation.py @@ -111,6 +111,9 @@ class PmsReservation(models.Model): board_service_room_id = fields.Many2one( "pms.board.service.room.type", string="Board Service", + compute="_compute_board_service_room_id", + store=True, + readonly=False, ) room_type_id = fields.Many2one( "pms.room.type", @@ -504,6 +507,32 @@ class PmsReservation(models.Model): # TODO: Logic priority (100 by example) self.priority = 100 + @api.depends("pricelist_id", "room_type_id") + def _compute_board_service_room_id(self): + for reservation in self: + if reservation.pricelist_id and reservation.room_type_id: + board_service_default = self.env["pms.board.service.room.type"].search( + [ + "&", + "&", + ("pms_room_type_id", "=", reservation.room_type_id.id), + ("by_default", "=", True), + "|", + ("pricelist_id", "=", reservation.pricelist_id.id), + ("pricelist_id", "=", False), + ] + ) + if len(board_service_default) > 1: + reservation.board_service_room_id = board_service_default.filtered( + lambda b: b.pricelist_id == reservation.pricelist_id + ) + else: + reservation.board_service_room_id = ( + board_service_default.id if board_service_default else False + ) + elif not reservation.board_service_room_id: + reservation.board_service_room_id = False + @api.depends("preferred_room_id") def _compute_room_type_id(self): for reservation in self: diff --git a/pms/static/src/js/views/list/list_controller.js b/pms/static/src/js/views/list/list_controller.js deleted file mode 100644 index 58b995764..000000000 --- a/pms/static/src/js/views/list/list_controller.js +++ /dev/null @@ -1,33 +0,0 @@ -odoo.define("pms.ListController", function (require) { - "use strict"; - /* - * Pms - * GNU Public License - * Alexandre Díaz - */ - - var ListController = require("web.ListController"); - var Core = require("web.core"); - - var _t = Core._t; - - ListController.include({ - renderButtons: function () { - // Sets this.$buttons - this._super.apply(this, arguments); - var self = this; - if (this.modelName === "pms.reservation") { - this.$buttons.append( - "" - ); - this.$buttons - .find(".oe_open_reservation_wizard") - .on("click", function () { - self.do_action("pms.open_wizard_reservations"); - }); - } - }, - }); -}); diff --git a/pms/static/src/js/views/list/pms_list_controller.js b/pms/static/src/js/views/list/pms_list_controller.js new file mode 100644 index 000000000..1484e5a55 --- /dev/null +++ b/pms/static/src/js/views/list/pms_list_controller.js @@ -0,0 +1,54 @@ +odoo.define("pms.group.reservation.wizard", function (require) { + "use strict"; + + var core = require("web.core"); + var _t = core._t; + + var qweb = core.qweb; + + var ReservationWizard = { + start: function () { + // Define a unique uploadId and a callback method + this.fileUploadID = _.uniqueId("account_bill_file_upload"); + $(window).on(this.fileUploadID, this._onFileUploaded.bind(this)); + return this._super.apply(this, arguments); + }, + + _onNewReservationGroup: function (event) { + var self = this; + + return this.do_action("pms.pms_reservation_view_tree", { + on_close: function () { + self.reload(); + }, + }); + }, + }; + return ReservationWizard; +}); + +odoo.define("pms.reservation.group", function (require) { + "use strict"; + var core = require("web.core"); + var ListController = require("web.ListController"); + var ListView = require("web.ListView"); + var viewRegistry = require("web.view_registry"); + + var ReservationGroupRequestListController = ListController.extend( + ReservationWizard, + { + buttons_template: "ReservationGroupList.buttons", + events: _.extend({}, ListController.prototype.events, { + "click .o_button_wizard_resevation": "_onNewReservationGroup", + }), + } + ); + + var ReservationGroupRequestListView = ListView.extend({ + config: _.extend({}, ListView.prototype.config, { + Controller: ReservationGroupRequestListController, + }), + }); + + viewRegistry.add("reservation_group", ReservationGroupRequestListView); +}); diff --git a/pms/static/src/xml/reservation_group_button_views.xml b/pms/static/src/xml/reservation_group_button_views.xml new file mode 100644 index 000000000..d093d678c --- /dev/null +++ b/pms/static/src/xml/reservation_group_button_views.xml @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/pms/views/account_move_views.xml b/pms/views/account_move_views.xml index 5c09a2071..352f82997 100644 --- a/pms/views/account_move_views.xml +++ b/pms/views/account_move_views.xml @@ -39,4 +39,12 @@ --> + + diff --git a/pms/views/general.xml b/pms/views/general.xml deleted file mode 100644 index 7d5672a99..000000000 --- a/pms/views/general.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - -