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",
|
||||
compute="_compute_folio_id",
|
||||
readonly=False,
|
||||
store=True
|
||||
store=True,
|
||||
)
|
||||
reservation_id = fields.Many2one(
|
||||
"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
|
||||
)
|
||||
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(
|
||||
"account.tax",
|
||||
@@ -370,9 +373,7 @@ class PmsService(models.Model):
|
||||
else:
|
||||
service.price_unit = 0
|
||||
|
||||
@api.depends(
|
||||
"reservation_id"
|
||||
)
|
||||
@api.depends("reservation_id")
|
||||
def _compute_folio_id(self):
|
||||
for record in self:
|
||||
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" ?>
|
||||
<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">
|
||||
<button type="button" class="btn btn-secondary o_button_wizard_resevation">
|
||||
<button type="button" class="btn btn-primary o_button_booking_engine">
|
||||
Booking Engine
|
||||
</button>
|
||||
</t>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
from odoo.exceptions import ValidationError
|
||||
from odoo.tests import common, tagged
|
||||
from odoo.tests import common
|
||||
|
||||
|
||||
class TestPmsRoom(common.TransactionCase):
|
||||
def create_common_scenario(self):
|
||||
@@ -26,7 +27,6 @@ class TestPmsRoom(common.TransactionCase):
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
self.room_type_class = self.env["pms.room.type.class"].create(
|
||||
{"name": "Room Class"}
|
||||
)
|
||||
@@ -42,17 +42,17 @@ class TestPmsRoom(common.TransactionCase):
|
||||
)
|
||||
|
||||
def test_check_property_floor(self):
|
||||
#ARRANGE
|
||||
# ARRANGE
|
||||
self.create_common_scenario()
|
||||
floor = self.env["pms.floor"].create(
|
||||
{
|
||||
"name": "Floor",
|
||||
"pms_property_ids": [
|
||||
(4, self.property1.id),
|
||||
]
|
||||
],
|
||||
}
|
||||
)
|
||||
#ACT & ARRANGE
|
||||
# ACT & ARRANGE
|
||||
with self.assertRaises(
|
||||
ValidationError, msg="Room has been created and it should't"
|
||||
):
|
||||
|
||||
@@ -584,8 +584,11 @@
|
||||
class="o_sale_order"
|
||||
decoration-warning="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="pricelist_id" invisible="1" />
|
||||
<field name="rooms" />
|
||||
@@ -852,12 +855,12 @@
|
||||
enable_counters="1"
|
||||
select="multi"
|
||||
/>
|
||||
<!--<field
|
||||
<field
|
||||
name="folio_payment_state"
|
||||
string="Payment State"
|
||||
enable_counters="1"
|
||||
select="multi"
|
||||
/> -->
|
||||
/>
|
||||
</searchpanel>
|
||||
</search>
|
||||
</field>
|
||||
|
||||
@@ -12,6 +12,10 @@
|
||||
type="text/javascript"
|
||||
src="/pms/static/src/js/widgets/switch_property_menu.js"
|
||||
/>
|
||||
<script
|
||||
type="text/javascript"
|
||||
src="/pms/static/src/js/pms_list_controller.js"
|
||||
/>
|
||||
</xpath>
|
||||
</template>
|
||||
</data>
|
||||
|
||||
Reference in New Issue
Block a user