mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[REF] fix precommit
This commit is contained in:
committed by
Darío Lodeiros
parent
587aac7f96
commit
66a985eb36
@@ -1,39 +1,39 @@
|
||||
odoo.define('pos_pms_link.ReservationSelectionButton', function(require) {
|
||||
'use strict';
|
||||
odoo.define("pos_pms_link.ReservationSelectionButton", function (require) {
|
||||
"use strict";
|
||||
|
||||
const PosComponent = require('point_of_sale.PosComponent');
|
||||
const ProductScreen = require('point_of_sale.ProductScreen');
|
||||
const { useListener } = require('web.custom_hooks');
|
||||
const Registries = require('point_of_sale.Registries');
|
||||
const { Gui } = require('point_of_sale.Gui');
|
||||
var core = require('web.core');
|
||||
const PosComponent = require("point_of_sale.PosComponent");
|
||||
const ProductScreen = require("point_of_sale.ProductScreen");
|
||||
const {useListener} = require("web.custom_hooks");
|
||||
const Registries = require("point_of_sale.Registries");
|
||||
const {Gui} = require("point_of_sale.Gui");
|
||||
var core = require("web.core");
|
||||
var QWeb = core.qweb;
|
||||
|
||||
var _t = core._t;
|
||||
var _t = core._t;
|
||||
|
||||
class ReservationSelectionButton extends PosComponent {
|
||||
constructor() {
|
||||
super(...arguments);
|
||||
useListener('click', this.onClick);
|
||||
useListener("click", this.onClick);
|
||||
}
|
||||
get currentOrder() {
|
||||
return this.env.pos.get_order();
|
||||
}
|
||||
async onClick() {
|
||||
const { confirmed, payload: newReservation } = await this.showTempScreen(
|
||||
'ReservationListScreen',
|
||||
{ reservation: null }
|
||||
);
|
||||
const {
|
||||
confirmed,
|
||||
payload: newReservation,
|
||||
} = await this.showTempScreen("ReservationListScreen", {reservation: null});
|
||||
if (confirmed) {
|
||||
this.currentOrder.add_reservation_services(newReservation);
|
||||
}
|
||||
}
|
||||
}
|
||||
ReservationSelectionButton.template = 'ReservationSelectionButton';
|
||||
ReservationSelectionButton.template = "ReservationSelectionButton";
|
||||
|
||||
ProductScreen.addControlButton({
|
||||
component: ReservationSelectionButton,
|
||||
condition: function() {
|
||||
condition: function () {
|
||||
return true;
|
||||
},
|
||||
});
|
||||
|
||||
@@ -1,37 +1,44 @@
|
||||
odoo.define('pos_pms_link.PaymentScreen', function (require) {
|
||||
'use strict';
|
||||
odoo.define("pos_pms_link.PaymentScreen", function (require) {
|
||||
"use strict";
|
||||
|
||||
const PaymentScreen = require('point_of_sale.PaymentScreen');
|
||||
const Registries = require('point_of_sale.Registries');
|
||||
const session = require('web.session');
|
||||
const PaymentScreen = require("point_of_sale.PaymentScreen");
|
||||
const Registries = require("point_of_sale.Registries");
|
||||
const session = require("web.session");
|
||||
|
||||
const PosPMSLinkPaymentScreen = (PaymentScreen) =>
|
||||
class extends PaymentScreen {
|
||||
async selectReservation() {
|
||||
const { confirmed, payload: newReservation } = await this.showTempScreen(
|
||||
'ReservationListScreen',
|
||||
{ reservation: null }
|
||||
const {confirmed, payload: newReservation} = await this.showTempScreen(
|
||||
"ReservationListScreen",
|
||||
{
|
||||
reservation: null,
|
||||
}
|
||||
);
|
||||
if (confirmed) {
|
||||
var self = this;
|
||||
|
||||
const { confirmed } = await this.showPopup('ConfirmPopup', {
|
||||
title: this.env._t('Pay order with reservation ?'),
|
||||
const {confirmed} = await this.showPopup("ConfirmPopup", {
|
||||
title: this.env._t("Pay order with reservation ?"),
|
||||
body: this.env._t(
|
||||
'This operation will add all the products in the order to the reservation. RESERVATION: ' + newReservation['name'] + ' PARTNER : ' + newReservation['partner_name'] + ' ROOM: ' + newReservation['rooms']
|
||||
"This operation will add all the products in the order to the reservation. RESERVATION: " +
|
||||
newReservation.name +
|
||||
" PARTNER : " +
|
||||
newReservation.partner_name +
|
||||
" ROOM: " +
|
||||
newReservation.rooms
|
||||
),
|
||||
});
|
||||
if (confirmed) {
|
||||
var payment_method = {
|
||||
'id': self.env.pos.config.pay_on_reservation_method_id[0],
|
||||
'name': self.env.pos.config.pay_on_reservation_method_id[1],
|
||||
'is_cash_count': false,
|
||||
'pos_mercury_config_id': false,
|
||||
'use_payment_terminal': false,
|
||||
}
|
||||
self.trigger('new-payment-line', payment_method);
|
||||
id: self.env.pos.config.pay_on_reservation_method_id[0],
|
||||
name: self.env.pos.config.pay_on_reservation_method_id[1],
|
||||
is_cash_count: false,
|
||||
pos_mercury_config_id: false,
|
||||
use_payment_terminal: false,
|
||||
};
|
||||
self.trigger("new-payment-line", payment_method);
|
||||
this.currentOrder.set_paid_on_reservation(true);
|
||||
this.currentOrder.set_pms_reservation_id(newReservation['id']);
|
||||
this.currentOrder.set_pms_reservation_id(newReservation.id);
|
||||
self.validateOrder(false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
odoo.define('pos_pms_link.OrderReceipt', function (require) {
|
||||
'use strict';
|
||||
odoo.define("pos_pms_link.OrderReceipt", function (require) {
|
||||
"use strict";
|
||||
|
||||
const OrderReceipt = require('point_of_sale.OrderReceipt');
|
||||
const Registries = require('point_of_sale.Registries');
|
||||
const session = require('web.session');
|
||||
const OrderReceipt = require("point_of_sale.OrderReceipt");
|
||||
const Registries = require("point_of_sale.Registries");
|
||||
const session = require("web.session");
|
||||
|
||||
const PosPMSLinkOrderReceipt = (OrderReceipt) =>
|
||||
class extends OrderReceipt {
|
||||
@@ -11,7 +11,11 @@ odoo.define('pos_pms_link.OrderReceipt', function (require) {
|
||||
return this.receiptEnv.receipt.paid_on_reservation;
|
||||
}
|
||||
get reservation_name() {
|
||||
return this.env.pos.db.get_reservation_by_id(this.receiptEnv.receipt.pms_reservation_id).partner_name || "";
|
||||
return (
|
||||
this.env.pos.db.get_reservation_by_id(
|
||||
this.receiptEnv.receipt.pms_reservation_id
|
||||
).partner_name || ""
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
odoo.define('pos_pms_link.ReservationDetailsEdit', function(require) {
|
||||
'use strict';
|
||||
odoo.define("pos_pms_link.ReservationDetailsEdit", function (require) {
|
||||
"use strict";
|
||||
|
||||
const { _t } = require('web.core');
|
||||
const { getDataURLFromFile } = require('web.utils');
|
||||
const PosComponent = require('point_of_sale.PosComponent');
|
||||
const Registries = require('point_of_sale.Registries');
|
||||
const {_t} = require("web.core");
|
||||
const {getDataURLFromFile} = require("web.utils");
|
||||
const PosComponent = require("point_of_sale.PosComponent");
|
||||
const Registries = require("point_of_sale.Registries");
|
||||
|
||||
class ReservationDetailsEdit extends PosComponent {
|
||||
constructor() {
|
||||
@@ -12,10 +12,10 @@ odoo.define('pos_pms_link.ReservationDetailsEdit', function(require) {
|
||||
const reservation = this.props.reservation;
|
||||
}
|
||||
mounted() {
|
||||
this.env.bus.on('save-reservation', this, this.saveChanges);
|
||||
this.env.bus.on("save-reservation", this, this.saveChanges);
|
||||
}
|
||||
willUnmount() {
|
||||
this.env.bus.off('save-reservation', this);
|
||||
this.env.bus.off("save-reservation", this);
|
||||
}
|
||||
/**
|
||||
* Save to field `changes` all input changes from the form fields.
|
||||
@@ -24,25 +24,27 @@ odoo.define('pos_pms_link.ReservationDetailsEdit', function(require) {
|
||||
this.changes[event.target.name] = event.target.value;
|
||||
}
|
||||
saveChanges() {
|
||||
let processedChanges = {};
|
||||
for (let [key, value] of Object.entries(this.changes)) {
|
||||
const processedChanges = {};
|
||||
for (const [key, value] of Object.entries(this.changes)) {
|
||||
if (this.intFields.includes(key)) {
|
||||
processedChanges[key] = parseInt(value) || false;
|
||||
} else {
|
||||
processedChanges[key] = value;
|
||||
}
|
||||
}
|
||||
if ((!this.props.reservation.name && !processedChanges.name) ||
|
||||
processedChanges.name === '' ){
|
||||
return this.showPopup('ErrorPopup', {
|
||||
title: _t('A Customer Name Is Required'),
|
||||
if (
|
||||
(!this.props.reservation.name && !processedChanges.name) ||
|
||||
processedChanges.name === ""
|
||||
) {
|
||||
return this.showPopup("ErrorPopup", {
|
||||
title: _t("A Customer Name Is Required"),
|
||||
});
|
||||
}
|
||||
processedChanges.id = this.props.reservation.id || false;
|
||||
this.trigger('save-changes', { processedChanges });
|
||||
this.trigger("save-changes", {processedChanges});
|
||||
}
|
||||
}
|
||||
ReservationDetailsEdit.template = 'ReservationDetailsEdit';
|
||||
ReservationDetailsEdit.template = "ReservationDetailsEdit";
|
||||
|
||||
Registries.Component.add(ReservationDetailsEdit);
|
||||
|
||||
|
||||
@@ -1,15 +1,17 @@
|
||||
odoo.define('pos_pms_link.ReservationLine', function(require) {
|
||||
'use strict';
|
||||
odoo.define("pos_pms_link.ReservationLine", function (require) {
|
||||
"use strict";
|
||||
|
||||
const PosComponent = require('point_of_sale.PosComponent');
|
||||
const Registries = require('point_of_sale.Registries');
|
||||
const PosComponent = require("point_of_sale.PosComponent");
|
||||
const Registries = require("point_of_sale.Registries");
|
||||
|
||||
class ReservationLine extends PosComponent {
|
||||
get highlight() {
|
||||
return this.props.reservation !== this.props.selectedReservation ? '' : 'highlight';
|
||||
return this.props.reservation !== this.props.selectedReservation
|
||||
? ""
|
||||
: "highlight";
|
||||
}
|
||||
}
|
||||
ReservationLine.template = 'ReservationLine';
|
||||
ReservationLine.template = "ReservationLine";
|
||||
|
||||
Registries.Component.add(ReservationLine);
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
odoo.define('pos_pms_link.ReservationListScreen', function(require) {
|
||||
'use strict';
|
||||
odoo.define("pos_pms_link.ReservationListScreen", function (require) {
|
||||
"use strict";
|
||||
|
||||
const { debounce } = owl.utils;
|
||||
const PosComponent = require('point_of_sale.PosComponent');
|
||||
const Registries = require('point_of_sale.Registries');
|
||||
const { useListener } = require('web.custom_hooks');
|
||||
const { isRpcError } = require('point_of_sale.utils');
|
||||
const { useAsyncLockedMethod } = require('point_of_sale.custom_hooks');
|
||||
const {debounce} = owl.utils;
|
||||
const PosComponent = require("point_of_sale.PosComponent");
|
||||
const Registries = require("point_of_sale.Registries");
|
||||
const {useListener} = require("web.custom_hooks");
|
||||
const {isRpcError} = require("point_of_sale.utils");
|
||||
const {useAsyncLockedMethod} = require("point_of_sale.custom_hooks");
|
||||
|
||||
/**
|
||||
* Render this screen using `showTempScreen` to select client.
|
||||
@@ -27,9 +27,9 @@ odoo.define('pos_pms_link.ReservationListScreen', function(require) {
|
||||
constructor() {
|
||||
super(...arguments);
|
||||
this.lockedSaveChanges = useAsyncLockedMethod(this.saveChanges);
|
||||
useListener('click-save', () => this.env.bus.trigger('save-customer'));
|
||||
useListener('click-edit', () => this.editReservation());
|
||||
useListener('save-changes', this.lockedSaveChanges);
|
||||
useListener("click-save", () => this.env.bus.trigger("save-customer"));
|
||||
useListener("click-edit", () => this.editReservation());
|
||||
useListener("save-changes", this.lockedSaveChanges);
|
||||
|
||||
// We are not using useState here because the object
|
||||
// passed to useState converts the object and its contents
|
||||
@@ -42,7 +42,7 @@ odoo.define('pos_pms_link.ReservationListScreen', function(require) {
|
||||
detailIsShown: false,
|
||||
isEditMode: false,
|
||||
editModeProps: {
|
||||
reservation: {}
|
||||
reservation: {},
|
||||
},
|
||||
};
|
||||
this.updateReservationList = debounce(this.updateReservationList, 70);
|
||||
@@ -50,17 +50,20 @@ odoo.define('pos_pms_link.ReservationListScreen', function(require) {
|
||||
|
||||
// Lifecycle hooks
|
||||
back() {
|
||||
if(this.state.detailIsShown) {
|
||||
if (this.state.detailIsShown) {
|
||||
this.state.detailIsShown = false;
|
||||
this.render();
|
||||
} else {
|
||||
this.props.resolve({ confirmed: false, payload: false });
|
||||
this.trigger('close-temp-screen');
|
||||
this.props.resolve({confirmed: false, payload: false});
|
||||
this.trigger("close-temp-screen");
|
||||
}
|
||||
}
|
||||
confirm() {
|
||||
this.props.resolve({ confirmed: true, payload: this.state.selectedReservation });
|
||||
this.trigger('close-temp-screen');
|
||||
this.props.resolve({
|
||||
confirmed: true,
|
||||
payload: this.state.selectedReservation,
|
||||
});
|
||||
this.trigger("close-temp-screen");
|
||||
}
|
||||
// Getters
|
||||
|
||||
@@ -69,14 +72,13 @@ odoo.define('pos_pms_link.ReservationListScreen', function(require) {
|
||||
}
|
||||
|
||||
get reservations() {
|
||||
if (this.state.query && this.state.query.trim() !== '') {
|
||||
if (this.state.query && this.state.query.trim() !== "") {
|
||||
return this.env.pos.db.search_reservation(this.state.query.trim());
|
||||
} else {
|
||||
return this.env.pos.db.get_reservations_sorted(1000);
|
||||
}
|
||||
return this.env.pos.db.get_reservations_sorted(1000);
|
||||
}
|
||||
get isNextButtonVisible() {
|
||||
return this.state.selectedReservation ? true : false;
|
||||
return Boolean(this.state.selectedReservation);
|
||||
}
|
||||
/**
|
||||
* Returns the text and command of the next button.
|
||||
@@ -84,12 +86,14 @@ odoo.define('pos_pms_link.ReservationListScreen', function(require) {
|
||||
*/
|
||||
get nextButton() {
|
||||
if (!this.props.reservation) {
|
||||
return { command: 'set', text: this.env._t('Set Reservation') };
|
||||
} else if (this.props.reservation && this.props.reservation === this.state.selectedReservation) {
|
||||
return { command: 'deselect', text: this.env._t('Deselect Reservation') };
|
||||
} else {
|
||||
return { command: 'set', text: this.env._t('Change Reservation') };
|
||||
return {command: "set", text: this.env._t("Set Reservation")};
|
||||
} else if (
|
||||
this.props.reservation &&
|
||||
this.props.reservation === this.state.selectedReservation
|
||||
) {
|
||||
return {command: "deselect", text: this.env._t("Deselect Reservation")};
|
||||
}
|
||||
return {command: "set", text: this.env._t("Change Reservation")};
|
||||
}
|
||||
|
||||
// Methods
|
||||
@@ -99,7 +103,7 @@ odoo.define('pos_pms_link.ReservationListScreen', function(require) {
|
||||
updateReservationList(event) {
|
||||
this.state.query = event.target.value;
|
||||
const reservations = this.reservations;
|
||||
if (event.code === 'Enter' && reservations.length === 1) {
|
||||
if (event.code === "Enter" && reservations.length === 1) {
|
||||
this.state.selectedReservation = reservations[0];
|
||||
this.clickNext();
|
||||
} else {
|
||||
@@ -107,7 +111,7 @@ odoo.define('pos_pms_link.ReservationListScreen', function(require) {
|
||||
}
|
||||
}
|
||||
clickReservation(event) {
|
||||
let reservation = event.detail.reservation;
|
||||
const reservation = event.detail.reservation;
|
||||
if (this.state.selectedReservation === reservation) {
|
||||
this.state.selectedCReservation = null;
|
||||
} else {
|
||||
@@ -123,11 +127,14 @@ odoo.define('pos_pms_link.ReservationListScreen', function(require) {
|
||||
this.render();
|
||||
}
|
||||
clickNext() {
|
||||
this.state.selectedReservation = this.nextButton.command === 'set' ? this.state.selectedReservation : null;
|
||||
this.state.selectedReservation =
|
||||
this.nextButton.command === "set"
|
||||
? this.state.selectedReservation
|
||||
: null;
|
||||
this.confirm();
|
||||
}
|
||||
activateEditMode(event) {
|
||||
const { isNewReservation } = event.detail;
|
||||
const {isNewReservation} = event.detail;
|
||||
this.state.isEditMode = true;
|
||||
this.state.detailIsShown = true;
|
||||
this.state.isNewReservation = isNewReservation;
|
||||
@@ -149,7 +156,7 @@ odoo.define('pos_pms_link.ReservationListScreen', function(require) {
|
||||
this.deactivateEditMode();
|
||||
}
|
||||
}
|
||||
ReservationListScreen.template = 'ReservationListScreen';
|
||||
ReservationListScreen.template = "ReservationListScreen";
|
||||
|
||||
Registries.Component.add(ReservationListScreen);
|
||||
|
||||
|
||||
@@ -34,72 +34,89 @@ odoo.define("pos_pms_link.db", function (require) {
|
||||
this.reservation_search_string = "";
|
||||
this.reservation_id = null;
|
||||
},
|
||||
get_reservation_by_id: function(id){
|
||||
get_reservation_by_id: function (id) {
|
||||
return this.reservation_by_id[id];
|
||||
},
|
||||
get_reservations_sorted: function(max_count){
|
||||
max_count = max_count ? Math.min(this.reservation_sorted.length, max_count) : this.reservation_sorted.length;
|
||||
get_reservations_sorted: function (max_count) {
|
||||
max_count = max_count
|
||||
? Math.min(this.reservation_sorted.length, max_count)
|
||||
: this.reservation_sorted.length;
|
||||
var reservations = [];
|
||||
for (var i = 0; i < max_count; i++) {
|
||||
reservations.push(this.reservation_by_id[this.reservation_sorted[i]]);
|
||||
}
|
||||
return reservations;
|
||||
},
|
||||
search_reservation: function(query){
|
||||
search_reservation: function (query) {
|
||||
try {
|
||||
query = query.replace(/[\[\]\(\)\+\*\?\.\-\!\&\^\$\|\~\_\{\}\:\,\\\/]/g,'.');
|
||||
query = query.replace(/ /g,'.+');
|
||||
var re = RegExp("([0-9]+):.*?"+utils.unaccent(query),"gi");
|
||||
}catch(e){
|
||||
query = query.replace(
|
||||
/[\[\]\(\)\+\*\?\.\-\!\&\^\$\|\~\_\{\}\:\,\\\/]/g,
|
||||
"."
|
||||
);
|
||||
query = query.replace(/ /g, ".+");
|
||||
var re = RegExp("([0-9]+):.*?" + utils.unaccent(query), "gi");
|
||||
} catch (e) {
|
||||
return [];
|
||||
}
|
||||
var results = [];
|
||||
for(var i = 0; i < this.limit; i++){
|
||||
for (var i = 0; i < this.limit; i++) {
|
||||
var r = re.exec(this.reservation_search_string);
|
||||
if(r){
|
||||
if (r) {
|
||||
var id = Number(r[1]);
|
||||
results.push(this.get_reservation_by_id(id));
|
||||
}else{
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return results;
|
||||
},
|
||||
_reservation_search_string: function(reservation){
|
||||
var str = reservation.name || '';
|
||||
var room_str = reservation.rooms || '';
|
||||
var partner_str = reservation.partner_name || '';
|
||||
str = '' + reservation.id + ':' + str.replace(':', '').replace(/\n/g, ' ') + ':' + room_str.replace(':', '').replace(/\n/g, ' ') + ':' + partner_str.replace(':', '').replace(/\n/g, ' ') + '\n';
|
||||
_reservation_search_string: function (reservation) {
|
||||
var str = reservation.name || "";
|
||||
var room_str = reservation.rooms || "";
|
||||
var partner_str = reservation.partner_name || "";
|
||||
str =
|
||||
String(reservation.id) +
|
||||
":" +
|
||||
str.replace(":", "").replace(/\n/g, " ") +
|
||||
":" +
|
||||
room_str.replace(":", "").replace(/\n/g, " ") +
|
||||
":" +
|
||||
partner_str.replace(":", "").replace(/\n/g, " ") +
|
||||
"\n";
|
||||
return str;
|
||||
},
|
||||
add_reservations: function(reservations){
|
||||
add_reservations: function (reservations) {
|
||||
var updated_count = 0;
|
||||
var reservation;
|
||||
for(var i = 0, len = reservations.length; i < len; i++){
|
||||
for (var i = 0, len = reservations.length; i < len; i++) {
|
||||
reservation = reservations[i];
|
||||
|
||||
if (!this.reservation_by_id[reservation.id]) {
|
||||
this.reservation_sorted.push(reservation.id);
|
||||
}
|
||||
this.reservation_by_id[reservation.id] = reservation;
|
||||
|
||||
|
||||
updated_count += 1;
|
||||
}
|
||||
|
||||
if (updated_count) {
|
||||
|
||||
if (updated_count) {
|
||||
this.reservation_search_string = "";
|
||||
this.reservation_by_barcode = {};
|
||||
|
||||
|
||||
for (var id in this.reservation_by_id) {
|
||||
reservation = this.reservation_by_id[id];
|
||||
|
||||
if(reservation.barcode){
|
||||
|
||||
if (reservation.barcode) {
|
||||
this.reservation_by_barcode[reservation.barcode] = reservation;
|
||||
}
|
||||
this.reservation_search_string += this._reservation_search_string(reservation);
|
||||
this.reservation_search_string += this._reservation_search_string(
|
||||
reservation
|
||||
);
|
||||
}
|
||||
|
||||
this.reservation_search_string = utils.unaccent(this.reservation_search_string);
|
||||
|
||||
this.reservation_search_string = utils.unaccent(
|
||||
this.reservation_search_string
|
||||
);
|
||||
}
|
||||
return updated_count;
|
||||
},
|
||||
|
||||
@@ -20,130 +20,157 @@
|
||||
##############################################################################
|
||||
*/
|
||||
|
||||
odoo.define('pos_pms_link.models', function (require) {
|
||||
odoo.define("pos_pms_link.models", function (require) {
|
||||
"use strict";
|
||||
|
||||
var models = require('point_of_sale.models');
|
||||
var utils = require('web.utils');
|
||||
var models = require("point_of_sale.models");
|
||||
var utils = require("web.utils");
|
||||
var round_di = utils.round_decimals;
|
||||
var core = require('web.core');
|
||||
const { Gui } = require('point_of_sale.Gui');
|
||||
var core = require("web.core");
|
||||
const {Gui} = require("point_of_sale.Gui");
|
||||
var QWeb = core.qweb;
|
||||
const session = require('web.session');
|
||||
const session = require("web.session");
|
||||
|
||||
var _t = core._t;
|
||||
var _t = core._t;
|
||||
|
||||
var _super_order = models.Order.prototype;
|
||||
|
||||
models.Order = models.Order.extend({
|
||||
initialize: function(attr, options) {
|
||||
_super_order.initialize.apply(this,arguments);
|
||||
initialize: function (attr, options) {
|
||||
_super_order.initialize.apply(this, arguments);
|
||||
this.paid_on_reservation = this.paid_on_reservation || null;
|
||||
this.pms_reservation_id = this.pms_reservation_id || null;
|
||||
},
|
||||
|
||||
get_paid_on_reservation: function() {
|
||||
get_paid_on_reservation: function () {
|
||||
var paid_on_reservation = this.paid_on_reservation;
|
||||
return paid_on_reservation;
|
||||
},
|
||||
|
||||
set_paid_on_reservation: function(value) {
|
||||
set_paid_on_reservation: function (value) {
|
||||
this.paid_on_reservation = value;
|
||||
this.trigger('change', this);
|
||||
this.trigger("change", this);
|
||||
},
|
||||
|
||||
get_pms_reservation_id: function() {
|
||||
get_pms_reservation_id: function () {
|
||||
var pms_reservation_id = this.pms_reservation_id;
|
||||
return pms_reservation_id;
|
||||
},
|
||||
|
||||
set_pms_reservation_id: function(value) {
|
||||
set_pms_reservation_id: function (value) {
|
||||
this.pms_reservation_id = value;
|
||||
this.trigger('change', this);
|
||||
this.trigger("change", this);
|
||||
},
|
||||
|
||||
export_as_JSON: function() {
|
||||
var json = _super_order.export_as_JSON.apply(this,arguments);
|
||||
export_as_JSON: function () {
|
||||
var json = _super_order.export_as_JSON.apply(this, arguments);
|
||||
json.paid_on_reservation = this.paid_on_reservation;
|
||||
json.pms_reservation_id = this.pms_reservation_id;
|
||||
return json;
|
||||
},
|
||||
},
|
||||
|
||||
init_from_JSON: function(json) {
|
||||
_super_order.init_from_JSON.apply(this,arguments);
|
||||
init_from_JSON: function (json) {
|
||||
_super_order.init_from_JSON.apply(this, arguments);
|
||||
this.paid_on_reservation = json.paid_on_reservation;
|
||||
this.pms_reservation_id = json.pms_reservation_id;
|
||||
},
|
||||
|
||||
apply_ms_data: function(data) {
|
||||
apply_ms_data: function (data) {
|
||||
if (typeof data.paid_on_reservation !== "undefined") {
|
||||
this.set_paid_on_reservation(data.paid_on_reservation);
|
||||
}
|
||||
if (typeof data.pms_reservation_id !== "undefined") {
|
||||
this.set_pms_reservation_id(data.pms_reservation_id);
|
||||
}
|
||||
this.trigger('change', this);
|
||||
this.trigger("change", this);
|
||||
},
|
||||
|
||||
add_reservation_services: function(reservation) {
|
||||
add_reservation_services: function (reservation) {
|
||||
var self = this;
|
||||
var d = new Date();
|
||||
var month = d.getMonth()+1;
|
||||
var month = d.getMonth() + 1;
|
||||
var day = d.getDate();
|
||||
|
||||
var current_date = d.getFullYear() + '-' +
|
||||
(month<10 ? '0' : '') + month + '-' +
|
||||
(day<10 ? '0' : '') + day;
|
||||
var current_date =
|
||||
d.getFullYear() +
|
||||
"-" +
|
||||
(month < 10 ? "0" : "") +
|
||||
month +
|
||||
"-" +
|
||||
(day < 10 ? "0" : "") +
|
||||
day;
|
||||
|
||||
var service_line_ids = reservation.service_ids.map(x => x.service_line_ids) || false;
|
||||
var today_service_lines = []
|
||||
_.each(service_line_ids, function(service_array){
|
||||
today_service_lines.push(service_array.find(x => x.date === current_date));
|
||||
var service_line_ids =
|
||||
reservation.service_ids.map((x) => x.service_line_ids) || false;
|
||||
var today_service_lines = [];
|
||||
_.each(service_line_ids, function (service_array) {
|
||||
today_service_lines.push(
|
||||
service_array.find((x) => x.date === current_date)
|
||||
);
|
||||
});
|
||||
|
||||
_.each(today_service_lines, function(service_line_id){
|
||||
if (service_line_id){
|
||||
var qty = service_line_id.day_qty
|
||||
|
||||
_.each(today_service_lines, function (service_line_id) {
|
||||
if (service_line_id) {
|
||||
var qty = service_line_id.day_qty;
|
||||
if (service_line_id.pos_order_line_ids.length > 0) {
|
||||
_.each(service_line_id.pos_order_line_ids, function(order_line_id){
|
||||
_.each(service_line_id.pos_order_line_ids, function (
|
||||
order_line_id
|
||||
) {
|
||||
qty -= order_line_id.qty;
|
||||
});
|
||||
}
|
||||
if (qty > 0) {
|
||||
var options = {
|
||||
'quantity': qty,
|
||||
'pms_service_line_id': service_line_id.id,
|
||||
'price': 0.0,
|
||||
quantity: qty,
|
||||
pms_service_line_id: service_line_id.id,
|
||||
price: 0.0,
|
||||
};
|
||||
var service_product = self.pos.db.get_product_by_id(service_line_id.product_id[0]);
|
||||
var service_product = self.pos.db.get_product_by_id(
|
||||
service_line_id.product_id[0]
|
||||
);
|
||||
self.pos.get_order().add_product(service_product, options);
|
||||
var last_line = self.pos.get_order().get_last_orderline();
|
||||
last_line.set_note("RESERVATION: " + reservation.name + " ROOMS: " + reservation.rooms);
|
||||
var r_service_line_id = reservation.service_ids.map(x => x.service_line_ids)[0].find(x=>x.id==service_line_id.id);
|
||||
last_line.set_note(
|
||||
"RESERVATION: " +
|
||||
reservation.name +
|
||||
" ROOMS: " +
|
||||
reservation.rooms
|
||||
);
|
||||
var r_service_line_id = reservation.service_ids
|
||||
.map((x) => x.service_line_ids)[0]
|
||||
.find((x) => x.id == service_line_id.id);
|
||||
if (r_service_line_id.pos_order_line_ids.length == 0) {
|
||||
r_service_line_id.pos_order_line_ids.push({
|
||||
'id': 0,
|
||||
'qty': parseInt(qty)
|
||||
id: 0,
|
||||
qty: parseInt(qty),
|
||||
});
|
||||
} else if (r_service_line_id.pos_order_line_ids.length == 1 && r_service_line_id.pos_order_line_ids[0].id == 0){
|
||||
} else if (
|
||||
r_service_line_id.pos_order_line_ids.length == 1 &&
|
||||
r_service_line_id.pos_order_line_ids[0].id == 0
|
||||
) {
|
||||
r_service_line_id.pos_order_line_ids[0].qty = parseInt(qty);
|
||||
} else if (r_service_line_id.pos_order_line_ids.length == 1 && r_service_line_id.pos_order_line_ids[0].id != 0){
|
||||
} else if (
|
||||
r_service_line_id.pos_order_line_ids.length == 1 &&
|
||||
r_service_line_id.pos_order_line_ids[0].id != 0
|
||||
) {
|
||||
r_service_line_id.pos_order_line_ids.push({
|
||||
'id': 0,
|
||||
'qty': parseInt(qty)
|
||||
id: 0,
|
||||
qty: parseInt(qty),
|
||||
});
|
||||
} else if (r_service_line_id.pos_order_line_ids.length > 1){
|
||||
} else if (r_service_line_id.pos_order_line_ids.length > 1) {
|
||||
var id_in_lines = false;
|
||||
_.each(r_service_line_id.pos_order_line_ids, function(pos_line_id){
|
||||
if(pos_line_id.id == self.id) {
|
||||
_.each(r_service_line_id.pos_order_line_ids, function (
|
||||
pos_line_id
|
||||
) {
|
||||
if (pos_line_id.id == self.id) {
|
||||
pos_line_id.qty = parseInt(qty);
|
||||
id_in_lines = true;
|
||||
}
|
||||
});
|
||||
if (id_in_lines == false) {
|
||||
r_service_line_id.pos_order_line_ids.push({
|
||||
'id': self.id,
|
||||
'qty': parseInt(qty)
|
||||
id: self.id,
|
||||
qty: parseInt(qty),
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -152,62 +179,62 @@ odoo.define('pos_pms_link.models', function (require) {
|
||||
});
|
||||
},
|
||||
|
||||
add_product: function(product, options){
|
||||
_super_order.add_product.apply(this,arguments);
|
||||
add_product: function (product, options) {
|
||||
_super_order.add_product.apply(this, arguments);
|
||||
if (options.pms_service_line_id) {
|
||||
this.selected_orderline.set_pms_service_line_id(options.pms_service_line_id);
|
||||
this.selected_orderline.set_pms_service_line_id(
|
||||
options.pms_service_line_id
|
||||
);
|
||||
}
|
||||
},
|
||||
|
||||
export_for_printing: function () {
|
||||
let result = _super_order.export_for_printing.apply(this, arguments);
|
||||
const result = _super_order.export_for_printing.apply(this, arguments);
|
||||
result.paid_on_reservation = this.paid_on_reservation;
|
||||
result.pms_reservation_id = this.pms_reservation_id;
|
||||
return result;
|
||||
},
|
||||
|
||||
})
|
||||
});
|
||||
|
||||
var _super_orderline = models.Orderline.prototype;
|
||||
|
||||
models.Orderline = models.Orderline.extend({
|
||||
|
||||
initialize: function(attr, options) {
|
||||
_super_orderline.initialize.call(this,attr,options);
|
||||
initialize: function (attr, options) {
|
||||
_super_orderline.initialize.call(this, attr, options);
|
||||
this.server_id = this.server_id || null;
|
||||
this.pms_service_line_id = this.pms_service_line_id || null;
|
||||
},
|
||||
|
||||
get_pms_service_line_id: function() {
|
||||
get_pms_service_line_id: function () {
|
||||
var pms_service_line_id = this.pms_service_line_id;
|
||||
return pms_service_line_id;
|
||||
},
|
||||
|
||||
set_pms_service_line_id: function(value) {
|
||||
set_pms_service_line_id: function (value) {
|
||||
this.pms_service_line_id = value;
|
||||
this.trigger('change', this);
|
||||
this.trigger("change", this);
|
||||
},
|
||||
|
||||
export_as_JSON: function() {
|
||||
var json = _super_orderline.export_as_JSON.apply(this,arguments);
|
||||
export_as_JSON: function () {
|
||||
var json = _super_orderline.export_as_JSON.apply(this, arguments);
|
||||
json.pms_service_line_id = this.pms_service_line_id;
|
||||
return json;
|
||||
},
|
||||
},
|
||||
|
||||
init_from_JSON: function(json) {
|
||||
_super_orderline.init_from_JSON.apply(this,arguments);
|
||||
init_from_JSON: function (json) {
|
||||
_super_orderline.init_from_JSON.apply(this, arguments);
|
||||
this.pms_service_line_id = json.pms_service_line_id;
|
||||
this.server_id = json.server_id;
|
||||
},
|
||||
|
||||
apply_ms_data: function(data) {
|
||||
apply_ms_data: function (data) {
|
||||
if (typeof data.pms_service_line_id !== "undefined") {
|
||||
this.set_pms_service_line_id(data.pms_service_line_id);
|
||||
}
|
||||
this.trigger('change', this);
|
||||
this.trigger("change", this);
|
||||
},
|
||||
|
||||
set_quantity: function(quantity, keep_price) {
|
||||
set_quantity: function (quantity, keep_price) {
|
||||
_super_orderline.set_quantity.apply(this, arguments);
|
||||
var is_real_qty = true;
|
||||
if (!quantity || quantity == "remove") {
|
||||
@@ -215,123 +242,167 @@ odoo.define('pos_pms_link.models', function (require) {
|
||||
}
|
||||
var self = this;
|
||||
if (self.pms_service_line_id) {
|
||||
this.pos.reservations.map(function(x) {
|
||||
_.each(x.service_ids, function(service){
|
||||
_.each(service.service_line_ids, function(line){
|
||||
this.pos.reservations.map(function (x) {
|
||||
_.each(x.service_ids, function (service) {
|
||||
_.each(service.service_line_ids, function (line) {
|
||||
if (line.id == self.pms_service_line_id) {
|
||||
if (line.pos_order_line_ids.length == 0 && is_real_qty) {
|
||||
if (
|
||||
line.pos_order_line_ids.length == 0 &&
|
||||
is_real_qty
|
||||
) {
|
||||
line.pos_order_line_ids.push({
|
||||
'id': self.server_id || 0,
|
||||
'qty': parseInt(quantity)
|
||||
id: self.server_id || 0,
|
||||
qty: parseInt(quantity),
|
||||
});
|
||||
} else if (line.pos_order_line_ids.length == 1 && line.pos_order_line_ids[0].id == self.server_id){
|
||||
} else if (
|
||||
line.pos_order_line_ids.length == 1 &&
|
||||
line.pos_order_line_ids[0].id == self.server_id
|
||||
) {
|
||||
if (is_real_qty) {
|
||||
line.pos_order_line_ids[0].qty = parseInt(quantity);
|
||||
line.pos_order_line_ids[0].qty = parseInt(
|
||||
quantity
|
||||
);
|
||||
} else {
|
||||
line.pos_order_line_ids.pop(line.pos_order_line_ids[0]);
|
||||
line.pos_order_line_ids.pop(
|
||||
line.pos_order_line_ids[0]
|
||||
);
|
||||
}
|
||||
} else if (line.pos_order_line_ids.length == 1 && line.pos_order_line_ids[0].id != self.server_id && is_real_qty){
|
||||
} else if (
|
||||
line.pos_order_line_ids.length == 1 &&
|
||||
line.pos_order_line_ids[0].id != self.server_id &&
|
||||
is_real_qty
|
||||
) {
|
||||
line.pos_order_line_ids.push({
|
||||
'id': self.server_id || 0,
|
||||
'qty': parseInt(quantity)
|
||||
id: self.server_id || 0,
|
||||
qty: parseInt(quantity),
|
||||
});
|
||||
} else if (line.pos_order_line_ids.length > 1){
|
||||
} else if (line.pos_order_line_ids.length > 1) {
|
||||
var id_in_lines = false;
|
||||
_.each(line.pos_order_line_ids, function(pos_line_id){
|
||||
if(pos_line_id.id == self.server_id) {
|
||||
_.each(line.pos_order_line_ids, function (
|
||||
pos_line_id
|
||||
) {
|
||||
if (pos_line_id.id == self.server_id) {
|
||||
if (is_real_qty) {
|
||||
pos_line_id.qty = parseInt(quantity);
|
||||
} else {
|
||||
line.pos_order_line_ids.pop(pos_line_id);
|
||||
}
|
||||
line.pos_order_line_ids.pop(
|
||||
pos_line_id
|
||||
);
|
||||
}
|
||||
id_in_lines = true;
|
||||
}
|
||||
});
|
||||
_.each(line.pos_order_line_ids, function(pos_line_id){
|
||||
if(pos_line_id.id == 0) {
|
||||
_.each(line.pos_order_line_ids, function (
|
||||
pos_line_id
|
||||
) {
|
||||
if (pos_line_id.id == 0) {
|
||||
if (is_real_qty) {
|
||||
pos_line_id.qty = parseInt(quantity);
|
||||
} else {
|
||||
line.pos_order_line_ids.pop(pos_line_id);
|
||||
line.pos_order_line_ids.pop(
|
||||
pos_line_id
|
||||
);
|
||||
}
|
||||
id_in_lines = true;
|
||||
}
|
||||
});
|
||||
if (id_in_lines == false && is_real_qty) {
|
||||
line.pos_order_line_ids.push({
|
||||
'id': self.server_id || 0,
|
||||
'qty': parseInt(quantity)
|
||||
id: self.server_id || 0,
|
||||
qty: parseInt(quantity),
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
})
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
});
|
||||
|
||||
var _super_posmodel = models.PosModel.prototype;
|
||||
|
||||
models.PosModel = models.PosModel.extend({
|
||||
initialize: function(attr, options) {
|
||||
_super_posmodel.initialize.apply(this,arguments);
|
||||
initialize: function (attr, options) {
|
||||
_super_posmodel.initialize.apply(this, arguments);
|
||||
this.reservations = [];
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
models.load_models({
|
||||
model: 'pms.reservation',
|
||||
fields: ['name', 'id', 'state', 'service_ids', 'partner_name', 'adults', 'children', 'checkin', 'checkout', 'folio_internal_comment', 'rooms'],
|
||||
context: function(self){
|
||||
var ctx_copy = session.user_context
|
||||
ctx_copy['pos_user_force'] = true;
|
||||
model: "pms.reservation",
|
||||
fields: [
|
||||
"name",
|
||||
"id",
|
||||
"state",
|
||||
"service_ids",
|
||||
"partner_name",
|
||||
"adults",
|
||||
"children",
|
||||
"checkin",
|
||||
"checkout",
|
||||
"folio_internal_comment",
|
||||
"rooms",
|
||||
],
|
||||
context: function (self) {
|
||||
var ctx_copy = session.user_context;
|
||||
ctx_copy.pos_user_force = true;
|
||||
return ctx_copy;
|
||||
},
|
||||
domain: function(self){
|
||||
domain: function (self) {
|
||||
var d = new Date();
|
||||
var month = d.getMonth()+1;
|
||||
var month = d.getMonth() + 1;
|
||||
var day = d.getDate();
|
||||
|
||||
var current_date = d.getFullYear() + '-' +
|
||||
(month<10 ? '0' : '') + month + '-' +
|
||||
(day<10 ? '0' : '') + day;
|
||||
|
||||
var domain = [
|
||||
'|', ['state', '=', 'onboard'],
|
||||
'&', ['checkout', '=', current_date],
|
||||
['state', '!=', 'cancel']
|
||||
];
|
||||
if (self.config_id && self.config.reservation_allowed_propertie_ids) domain.push(['pms_property_id', 'in', self.config.reservation_allowed_propertie_ids]);
|
||||
var current_date =
|
||||
d.getFullYear() +
|
||||
"-" +
|
||||
(month < 10 ? "0" : "") +
|
||||
month +
|
||||
"-" +
|
||||
(day < 10 ? "0" : "") +
|
||||
day;
|
||||
|
||||
var domain = [
|
||||
"|",
|
||||
["state", "=", "onboard"],
|
||||
"&",
|
||||
["checkout", "=", current_date],
|
||||
["state", "!=", "cancel"],
|
||||
];
|
||||
if (self.config_id && self.config.reservation_allowed_propertie_ids)
|
||||
domain.push([
|
||||
"pms_property_id",
|
||||
"in",
|
||||
self.config.reservation_allowed_propertie_ids,
|
||||
]);
|
||||
return domain;
|
||||
},
|
||||
loaded: function(self, reservations) {
|
||||
loaded: function (self, reservations) {
|
||||
self.reservations = reservations;
|
||||
self.db.add_reservations(reservations);
|
||||
},
|
||||
});
|
||||
|
||||
models.load_models({
|
||||
model: 'pms.service',
|
||||
fields: ['name', 'id', 'service_line_ids', 'product_id', 'reservation_id'],
|
||||
context: function(self){
|
||||
var ctx_copy = session.user_context
|
||||
ctx_copy['pos_user_force'] = true;
|
||||
model: "pms.service",
|
||||
fields: ["name", "id", "service_line_ids", "product_id", "reservation_id"],
|
||||
context: function (self) {
|
||||
var ctx_copy = session.user_context;
|
||||
ctx_copy.pos_user_force = true;
|
||||
return ctx_copy;
|
||||
},
|
||||
domain: function(self){
|
||||
return [['reservation_id', 'in', self.reservations.map(x => x.id)]];
|
||||
domain: function (self) {
|
||||
return [["reservation_id", "in", self.reservations.map((x) => x.id)]];
|
||||
},
|
||||
loaded: function (self, services){
|
||||
loaded: function (self, services) {
|
||||
self.services = services;
|
||||
var services = []
|
||||
_.each(self.reservations, function(reservation){
|
||||
var services = [];
|
||||
_.each(self.reservations, function (reservation) {
|
||||
services = [];
|
||||
_.each(reservation.service_ids, function(service_id){
|
||||
services.push(self.services.find(x => x.id === service_id));
|
||||
_.each(reservation.service_ids, function (service_id) {
|
||||
services.push(self.services.find((x) => x.id === service_id));
|
||||
});
|
||||
reservation.service_ids = services;
|
||||
});
|
||||
@@ -339,24 +410,33 @@ odoo.define('pos_pms_link.models', function (require) {
|
||||
});
|
||||
|
||||
models.load_models({
|
||||
model: 'pms.service.line',
|
||||
fields: ['date', 'service_id', 'id', 'product_id', 'day_qty', 'pos_order_line_ids'],
|
||||
context: function(self){
|
||||
var ctx_copy = session.user_context
|
||||
ctx_copy['pos_user_force'] = true;
|
||||
model: "pms.service.line",
|
||||
fields: [
|
||||
"date",
|
||||
"service_id",
|
||||
"id",
|
||||
"product_id",
|
||||
"day_qty",
|
||||
"pos_order_line_ids",
|
||||
],
|
||||
context: function (self) {
|
||||
var ctx_copy = session.user_context;
|
||||
ctx_copy.pos_user_force = true;
|
||||
return ctx_copy;
|
||||
},
|
||||
domain: function(self){
|
||||
return [['service_id', 'in', self.services.map(x => x.id)]];
|
||||
domain: function (self) {
|
||||
return [["service_id", "in", self.services.map((x) => x.id)]];
|
||||
},
|
||||
loaded: function (self, service_lines){
|
||||
loaded: function (self, service_lines) {
|
||||
self.service_lines = service_lines;
|
||||
var service_lines = []
|
||||
_.each(self.reservations, function(reservation){
|
||||
_.each(reservation.service_ids, function(service_id){
|
||||
var service_lines = [];
|
||||
_.each(self.reservations, function (reservation) {
|
||||
_.each(reservation.service_ids, function (service_id) {
|
||||
service_lines = [];
|
||||
_.each(service_id.service_line_ids, function(line_id){
|
||||
service_lines.push(self.service_lines.find(x => x.id === line_id));
|
||||
_.each(service_id.service_line_ids, function (line_id) {
|
||||
service_lines.push(
|
||||
self.service_lines.find((x) => x.id === line_id)
|
||||
);
|
||||
});
|
||||
service_id.service_line_ids = service_lines;
|
||||
});
|
||||
@@ -365,25 +445,27 @@ odoo.define('pos_pms_link.models', function (require) {
|
||||
});
|
||||
|
||||
models.load_models({
|
||||
model: 'pos.order.line',
|
||||
fields: ['qty', 'id'],
|
||||
domain: function(self){
|
||||
model: "pos.order.line",
|
||||
fields: ["qty", "id"],
|
||||
domain: function (self) {
|
||||
var order_line_ids = [];
|
||||
_.each(self.service_lines, function(service_line) {
|
||||
if(service_line.pos_order_line_ids.length > 0) {
|
||||
_.each(service_line.pos_order_line_ids, function(line_id) {
|
||||
_.each(self.service_lines, function (service_line) {
|
||||
if (service_line.pos_order_line_ids.length > 0) {
|
||||
_.each(service_line.pos_order_line_ids, function (line_id) {
|
||||
order_line_ids.push(line_id);
|
||||
})
|
||||
});
|
||||
}
|
||||
});
|
||||
return [['id', 'in', order_line_ids]];
|
||||
return [["id", "in", order_line_ids]];
|
||||
},
|
||||
loaded: function (self, pos_order_lines){
|
||||
loaded: function (self, pos_order_lines) {
|
||||
self.pos_order_lines = pos_order_lines;
|
||||
_.each(self.service_lines, function(service_line){
|
||||
var order_lines = []
|
||||
_.each(service_line.pos_order_line_ids, function(order_line){
|
||||
order_lines.push(self.pos_order_lines.find(x => x.id === order_line));
|
||||
_.each(self.service_lines, function (service_line) {
|
||||
var order_lines = [];
|
||||
_.each(service_line.pos_order_line_ids, function (order_line) {
|
||||
order_lines.push(
|
||||
self.pos_order_lines.find((x) => x.id === order_line)
|
||||
);
|
||||
});
|
||||
service_line.pos_order_line_ids = order_lines;
|
||||
});
|
||||
@@ -399,11 +481,10 @@ odoo.define('pos_pms_link.models', function (require) {
|
||||
const context = {};
|
||||
if (superContext) {
|
||||
context = superContext.apply(this, arguments);
|
||||
}
|
||||
}
|
||||
context.pos_user_force = true;
|
||||
return context;
|
||||
};
|
||||
return true;
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<templates id="template" xml:space="preserve">
|
||||
|
||||
<t t-name="ReservationSelectionButton" owl="1">
|
||||
|
||||
@@ -1,10 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<templates id="template" xml:space="preserve">
|
||||
|
||||
<t t-name="pos_pms_link.PaymentScreen" t-inherit="point_of_sale.PaymentScreen" t-inherit-mode="extension" owl="1">
|
||||
<t
|
||||
t-name="pos_pms_link.PaymentScreen"
|
||||
t-inherit="point_of_sale.PaymentScreen"
|
||||
t-inherit-mode="extension"
|
||||
owl="1"
|
||||
>
|
||||
<xpath expr="//div[hasclass('paymentmethods')]" position="inside">
|
||||
<div class="button paymentmethod">
|
||||
<div class="payment-name" t-if="env.pos.config.pay_on_reservation and currentOrder.paymentlines.length == 0" t-on-click="selectReservation">Reservation</div>
|
||||
<div
|
||||
class="payment-name"
|
||||
t-if="env.pos.config.pay_on_reservation and currentOrder.paymentlines.length == 0"
|
||||
t-on-click="selectReservation"
|
||||
>Reservation</div>
|
||||
</div>
|
||||
</xpath>
|
||||
</t>
|
||||
|
||||
@@ -1,13 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<templates id="template" xml:space="preserve">
|
||||
|
||||
<t t-name="OrderReceipt" t-inherit="point_of_sale.OrderReceipt" t-inherit-mode="extension" owl="1">
|
||||
<t
|
||||
t-name="OrderReceipt"
|
||||
t-inherit="point_of_sale.OrderReceipt"
|
||||
t-inherit-mode="extension"
|
||||
owl="1"
|
||||
>
|
||||
<xpath expr="//div[hasclass('before-footer')]" position="before">
|
||||
<t t-if="paid_on_reservation">
|
||||
<br/><br/>
|
||||
<br /><br />
|
||||
<div>
|
||||
Signature: <br/><br/>
|
||||
<span t-esc="reservation_name" style="font-size: 100%;"/><br/>
|
||||
Signature: <br /><br />
|
||||
<span t-esc="reservation_name" style="font-size: 100%;" /><br />
|
||||
-------------------
|
||||
</div>
|
||||
</t>
|
||||
|
||||
@@ -1,17 +1,35 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<templates id="template" xml:space="preserve">
|
||||
|
||||
<t t-name="ReservationDetailsEdit" owl="1">
|
||||
<section class="client-details edit">
|
||||
<h3 class="detail client-name" t-esc="props.reservation.name"/>
|
||||
<h3 class="detail client-name" t-esc="props.reservation.name" />
|
||||
<div class="client-details-box clearfix">
|
||||
<div class="client-details-row">
|
||||
Name: <span class="detail client-partner-name" t-esc="props.reservation.partner_name"/><br/>
|
||||
Checkin: <span class="detail client-aduls" t-esc="props.reservation.checkin"/><br/>
|
||||
Checkout: <span class="detail client-aduls" t-esc="props.reservation.checkout"/><br/>
|
||||
Adults: <span class="detail client-aduls" t-esc="props.reservation.adults"/><br/>
|
||||
Children: <span class="detail client-children" t-esc="props.reservation.children"/><br/>
|
||||
Internal comment: <span class="detail client-aduls" t-esc="props.reservation.folio_internal_comment"/><br/>
|
||||
Name: <span
|
||||
class="detail client-partner-name"
|
||||
t-esc="props.reservation.partner_name"
|
||||
/><br />
|
||||
Checkin: <span
|
||||
class="detail client-aduls"
|
||||
t-esc="props.reservation.checkin"
|
||||
/><br />
|
||||
Checkout: <span
|
||||
class="detail client-aduls"
|
||||
t-esc="props.reservation.checkout"
|
||||
/><br />
|
||||
Adults: <span
|
||||
class="detail client-aduls"
|
||||
t-esc="props.reservation.adults"
|
||||
/><br />
|
||||
Children: <span
|
||||
class="detail client-children"
|
||||
t-esc="props.reservation.children"
|
||||
/><br />
|
||||
Internal comment: <span
|
||||
class="detail client-aduls"
|
||||
t-esc="props.reservation.folio_internal_comment"
|
||||
/><br />
|
||||
</div>
|
||||
<h3 class="detail client-name">Services:</h3>
|
||||
<div class="client-details-row">
|
||||
@@ -23,14 +41,28 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<t t-foreach="props.reservation.service_ids" t-as="service" t-key="service.id">
|
||||
<t
|
||||
t-foreach="props.reservation.service_ids"
|
||||
t-as="service"
|
||||
t-key="service.id"
|
||||
>
|
||||
<tr>
|
||||
<td t-esc="service_value['name']"/>
|
||||
<td t-esc="service_value['name']" />
|
||||
<td>
|
||||
<ul>
|
||||
<t t-foreach="service_value['service_line_ids']" t-as="line_service" t-key="line_service.id">
|
||||
<t
|
||||
t-foreach="service_value['service_line_ids']"
|
||||
t-as="line_service"
|
||||
t-key="line_service.id"
|
||||
>
|
||||
<li>
|
||||
<span t-esc="line_service_value['date']"/> - <span t-esc="line_service_value['product_id'][1]"/> - <span t-esc="line_service_value['day_qty']"/>
|
||||
<span
|
||||
t-esc="line_service_value['date']"
|
||||
/> - <span
|
||||
t-esc="line_service_value['product_id'][1]"
|
||||
/> - <span
|
||||
t-esc="line_service_value['day_qty']"
|
||||
/>
|
||||
</li>
|
||||
</t>
|
||||
</ul>
|
||||
|
||||
@@ -1,13 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<templates id="template" xml:space="preserve">
|
||||
|
||||
<t t-name="ReservationLine" owl="1">
|
||||
<tr t-attf-class="client-line {{highlight}}" t-att-data-id="props.reservation.id"
|
||||
t-on-click="trigger('click-reservation', {reservation: props.reservation})">
|
||||
<tr
|
||||
t-attf-class="client-line {{highlight}}"
|
||||
t-att-data-id="props.reservation.id"
|
||||
t-on-click="trigger('click-reservation', {reservation: props.reservation})"
|
||||
>
|
||||
<td>
|
||||
<t t-esc="props.reservation.name" />
|
||||
<span t-if="highlight">
|
||||
<br/><button class="edit-client-button" t-on-click.stop="trigger('click-edit')">VIEW</button>
|
||||
<br /><button
|
||||
class="edit-client-button"
|
||||
t-on-click.stop="trigger('click-edit')"
|
||||
>VIEW</button>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
|
||||
@@ -1,43 +1,71 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<templates id="template" xml:space="preserve">
|
||||
|
||||
<t t-name="ReservationListScreen" owl="1">
|
||||
<div class="clientlist-screen screen" t-on-activate-edit-mode="activateEditMode">
|
||||
<div
|
||||
class="clientlist-screen screen"
|
||||
t-on-activate-edit-mode="activateEditMode"
|
||||
>
|
||||
<div class="screen-content">
|
||||
<div class="top-content">
|
||||
<div t-if="isNextButtonVisible" t-on-click="clickNext"
|
||||
class="button next highlight">
|
||||
<div
|
||||
t-if="isNextButtonVisible"
|
||||
t-on-click="clickNext"
|
||||
class="button next highlight"
|
||||
>
|
||||
<t t-if="!env.isMobile">
|
||||
<t t-esc="nextButton.text" />
|
||||
</t>
|
||||
<t t-else="">
|
||||
<i t-if="nextButton.command === 'deselect'" class="fa fa-trash"></i>
|
||||
<i t-if="nextButton.command === 'set'" class="fa fa-check"></i>
|
||||
<i
|
||||
t-if="nextButton.command === 'deselect'"
|
||||
class="fa fa-trash"
|
||||
/>
|
||||
<i
|
||||
t-if="nextButton.command === 'set'"
|
||||
class="fa fa-check"
|
||||
/>
|
||||
</t>
|
||||
</div>
|
||||
<div class="button back" t-on-click="back">
|
||||
<t t-if="!env.isMobile">Discard</t>
|
||||
<t t-else="">
|
||||
<i class="fa fa-undo"></i>
|
||||
<i class="fa fa-undo" />
|
||||
</t>
|
||||
</div>
|
||||
<div t-if="!state.detailIsShown" class="searchbox-client top-content-center">
|
||||
<input placeholder="Search Reservations" size="1" t-on-keyup="updateReservationList" />
|
||||
<span class="search-clear-client"></span>
|
||||
<div
|
||||
t-if="!state.detailIsShown"
|
||||
class="searchbox-client top-content-center"
|
||||
>
|
||||
<input
|
||||
placeholder="Search Reservations"
|
||||
size="1"
|
||||
t-on-keyup="updateReservationList"
|
||||
/>
|
||||
<span class="search-clear-client" />
|
||||
</div>
|
||||
</div>
|
||||
<section class="full-content">
|
||||
<div class="client-window">
|
||||
<section class="subwindow collapsed">
|
||||
<div class="subwindow-container collapsed">
|
||||
<div t-if="state.detailIsShown" class="client-details-contents subwindow-container-fix">
|
||||
<ReservationDetailsEdit t-props="state.editModeProps" t-on-cancel-edit="cancelEdit"/>
|
||||
<div
|
||||
t-if="state.detailIsShown"
|
||||
class="client-details-contents subwindow-container-fix"
|
||||
>
|
||||
<ReservationDetailsEdit
|
||||
t-props="state.editModeProps"
|
||||
t-on-cancel-edit="cancelEdit"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="subwindow list">
|
||||
<div class="subwindow-container">
|
||||
<div t-if="!state.detailIsShown" class="subwindow-container-fix scrollable-y">
|
||||
<div
|
||||
t-if="!state.detailIsShown"
|
||||
class="subwindow-container-fix scrollable-y"
|
||||
>
|
||||
<table class="client-list">
|
||||
<thead>
|
||||
<tr>
|
||||
@@ -51,12 +79,17 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="client-list-contents">
|
||||
<t t-foreach="reservations" t-as="reservation"
|
||||
t-key="reservation.id">
|
||||
<ReservationLine reservation="reservation"
|
||||
<t
|
||||
t-foreach="reservations"
|
||||
t-as="reservation"
|
||||
t-key="reservation.id"
|
||||
>
|
||||
<ReservationLine
|
||||
reservation="reservation"
|
||||
selectedReservation="state.selectedReservation"
|
||||
detailIsShown="state.detailIsShown"
|
||||
t-on-click-reservation="clickReservation" />
|
||||
t-on-click-reservation="clickReservation"
|
||||
/>
|
||||
</t>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
Reference in New Issue
Block a user