[ADD]pms: Button Booking Engine tree reservation

This commit is contained in:
Darío Lodeiros
2021-01-31 16:03:14 +01:00
parent c0aa3c49b7
commit 97cfc43787
7 changed files with 64 additions and 69 deletions

View File

@@ -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:

View 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);
});

View File

@@ -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);
});

View File

@@ -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>

View File

@@ -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"
):

View File

@@ -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>

View File

@@ -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>