mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[ADD]pms: Button Booking Engine tree reservation
This commit is contained in:
@@ -50,7 +50,7 @@ class PmsService(models.Model):
|
|||||||
string="Folio",
|
string="Folio",
|
||||||
compute="_compute_folio_id",
|
compute="_compute_folio_id",
|
||||||
readonly=False,
|
readonly=False,
|
||||||
store=True
|
store=True,
|
||||||
)
|
)
|
||||||
reservation_id = fields.Many2one(
|
reservation_id = fields.Many2one(
|
||||||
"pms.reservation", "Room", default=_default_reservation_id
|
"pms.reservation", "Room", default=_default_reservation_id
|
||||||
@@ -66,7 +66,10 @@ class PmsService(models.Model):
|
|||||||
related="folio_id.company_id", string="Company", store=True, readonly=True
|
related="folio_id.company_id", string="Company", store=True, readonly=True
|
||||||
)
|
)
|
||||||
pms_property_id = fields.Many2one(
|
pms_property_id = fields.Many2one(
|
||||||
comodel_name="pms.property", store=True, readonly=True, related="folio_id.pms_property_id"
|
comodel_name="pms.property",
|
||||||
|
store=True,
|
||||||
|
readonly=True,
|
||||||
|
related="folio_id.pms_property_id",
|
||||||
)
|
)
|
||||||
tax_ids = fields.Many2many(
|
tax_ids = fields.Many2many(
|
||||||
"account.tax",
|
"account.tax",
|
||||||
@@ -370,9 +373,7 @@ class PmsService(models.Model):
|
|||||||
else:
|
else:
|
||||||
service.price_unit = 0
|
service.price_unit = 0
|
||||||
|
|
||||||
@api.depends(
|
@api.depends("reservation_id")
|
||||||
"reservation_id"
|
|
||||||
)
|
|
||||||
def _compute_folio_id(self):
|
def _compute_folio_id(self):
|
||||||
for record in self:
|
for record in self:
|
||||||
if record.reservation_id:
|
if record.reservation_id:
|
||||||
|
|||||||
41
pms/static/src/js/pms_list_controller.js
Normal file
41
pms/static/src/js/pms_list_controller.js
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
odoo.define("booking.engine.tree", function (require) {
|
||||||
|
"use strict";
|
||||||
|
var ListController = require("web.ListController");
|
||||||
|
var ListView = require("web.ListView");
|
||||||
|
var viewRegistry = require("web.view_registry");
|
||||||
|
|
||||||
|
function renderBookingEngineButton() {
|
||||||
|
if (this.$buttons) {
|
||||||
|
var self = this;
|
||||||
|
this.$buttons.on("click", ".o_button_booking_engine", function () {
|
||||||
|
self.do_action({
|
||||||
|
name: "Booking Engine",
|
||||||
|
type: "ir.actions.act_window",
|
||||||
|
res_model: "pms.folio.wizard",
|
||||||
|
target: "new",
|
||||||
|
views: [[false, "form"]],
|
||||||
|
context: {is_modal: true},
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var BookingEngineRequestListController = ListController.extend({
|
||||||
|
start: function () {
|
||||||
|
return this._super.apply(this, arguments);
|
||||||
|
},
|
||||||
|
buttons_template: "BookingEngineRequestListView.buttons",
|
||||||
|
renderButtons: function () {
|
||||||
|
this._super.apply(this, arguments);
|
||||||
|
renderBookingEngineButton.apply(this, arguments);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
var BookingEngineRequestListView = ListView.extend({
|
||||||
|
config: _.extend({}, ListView.prototype.config, {
|
||||||
|
Controller: BookingEngineRequestListController,
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
viewRegistry.add("pms_booking_engine_request_tree", BookingEngineRequestListView);
|
||||||
|
});
|
||||||
@@ -1,54 +0,0 @@
|
|||||||
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.action_wizard_folio", {
|
|
||||||
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);
|
|
||||||
});
|
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<templates>
|
<templates>
|
||||||
<t t-extend="ListView.buttons" t-name="ReservationGroupList.buttons">
|
<t t-extend="ListView.buttons" t-name="BookingEngineRequestListView.buttons">
|
||||||
<t t-jquery="button.o_list_button_add" t-operation="after">
|
<t t-jquery="button.o_list_button_add" t-operation="after">
|
||||||
<button type="button" class="btn btn-secondary o_button_wizard_resevation">
|
<button type="button" class="btn btn-primary o_button_booking_engine">
|
||||||
Booking Engine
|
Booking Engine
|
||||||
</button>
|
</button>
|
||||||
</t>
|
</t>
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
from odoo.exceptions import ValidationError
|
from odoo.exceptions import ValidationError
|
||||||
from odoo.tests import common, tagged
|
from odoo.tests import common
|
||||||
|
|
||||||
|
|
||||||
class TestPmsRoom(common.TransactionCase):
|
class TestPmsRoom(common.TransactionCase):
|
||||||
def create_common_scenario(self):
|
def create_common_scenario(self):
|
||||||
@@ -26,7 +27,6 @@ class TestPmsRoom(common.TransactionCase):
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
self.room_type_class = self.env["pms.room.type.class"].create(
|
self.room_type_class = self.env["pms.room.type.class"].create(
|
||||||
{"name": "Room Class"}
|
{"name": "Room Class"}
|
||||||
)
|
)
|
||||||
@@ -42,17 +42,17 @@ class TestPmsRoom(common.TransactionCase):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def test_check_property_floor(self):
|
def test_check_property_floor(self):
|
||||||
#ARRANGE
|
# ARRANGE
|
||||||
self.create_common_scenario()
|
self.create_common_scenario()
|
||||||
floor = self.env["pms.floor"].create(
|
floor = self.env["pms.floor"].create(
|
||||||
{
|
{
|
||||||
"name": "Floor",
|
"name": "Floor",
|
||||||
"pms_property_ids": [
|
"pms_property_ids": [
|
||||||
(4, self.property1.id),
|
(4, self.property1.id),
|
||||||
]
|
],
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
#ACT & ARRANGE
|
# ACT & ARRANGE
|
||||||
with self.assertRaises(
|
with self.assertRaises(
|
||||||
ValidationError, msg="Room has been created and it should't"
|
ValidationError, msg="Room has been created and it should't"
|
||||||
):
|
):
|
||||||
|
|||||||
@@ -584,8 +584,11 @@
|
|||||||
class="o_sale_order"
|
class="o_sale_order"
|
||||||
decoration-warning="splitted"
|
decoration-warning="splitted"
|
||||||
decoration-bf="splitted"
|
decoration-bf="splitted"
|
||||||
|
js_class="pms_booking_engine_request_tree"
|
||||||
>
|
>
|
||||||
<!--inside <tree>: js_class="reservation_group"-->
|
<!--TODO: charget booking engine button (view type list is not present
|
||||||
|
in the view registry -->
|
||||||
|
<!--js_class="pms_booking_engine_request_tree"-->
|
||||||
<field name="splitted" invisible="1" />
|
<field name="splitted" invisible="1" />
|
||||||
<field name="pricelist_id" invisible="1" />
|
<field name="pricelist_id" invisible="1" />
|
||||||
<field name="rooms" />
|
<field name="rooms" />
|
||||||
@@ -852,12 +855,12 @@
|
|||||||
enable_counters="1"
|
enable_counters="1"
|
||||||
select="multi"
|
select="multi"
|
||||||
/>
|
/>
|
||||||
<!--<field
|
<field
|
||||||
name="folio_payment_state"
|
name="folio_payment_state"
|
||||||
string="Payment State"
|
string="Payment State"
|
||||||
enable_counters="1"
|
enable_counters="1"
|
||||||
select="multi"
|
select="multi"
|
||||||
/> -->
|
/>
|
||||||
</searchpanel>
|
</searchpanel>
|
||||||
</search>
|
</search>
|
||||||
</field>
|
</field>
|
||||||
|
|||||||
@@ -12,6 +12,10 @@
|
|||||||
type="text/javascript"
|
type="text/javascript"
|
||||||
src="/pms/static/src/js/widgets/switch_property_menu.js"
|
src="/pms/static/src/js/widgets/switch_property_menu.js"
|
||||||
/>
|
/>
|
||||||
|
<script
|
||||||
|
type="text/javascript"
|
||||||
|
src="/pms/static/src/js/pms_list_controller.js"
|
||||||
|
/>
|
||||||
</xpath>
|
</xpath>
|
||||||
</template>
|
</template>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
Reference in New Issue
Block a user