first commit
This commit is contained in:
35
webapp/Component.js
Normal file
35
webapp/Component.js
Normal file
@ -0,0 +1,35 @@
|
||||
/**
|
||||
* eslint-disable @sap/ui5-jsdocs/no-jsdoc
|
||||
*/
|
||||
|
||||
sap.ui.define([
|
||||
"sap/ui/core/UIComponent",
|
||||
"sap/ui/Device",
|
||||
"restaurant/z00124ss25restaurant/model/models"
|
||||
],
|
||||
function (UIComponent, Device, models) {
|
||||
"use strict";
|
||||
|
||||
return UIComponent.extend("restaurant.z00124ss25restaurant.Component", {
|
||||
metadata: {
|
||||
manifest: "json"
|
||||
},
|
||||
|
||||
/**
|
||||
* The component is initialized by UI5 automatically during the startup of the app and calls the init method once.
|
||||
* @public
|
||||
* @override
|
||||
*/
|
||||
init: function () {
|
||||
// call the base component's init function
|
||||
UIComponent.prototype.init.apply(this, arguments);
|
||||
|
||||
// enable routing
|
||||
this.getRouter().initialize();
|
||||
|
||||
// set the device model
|
||||
this.setModel(models.createDeviceModel(), "device");
|
||||
}
|
||||
});
|
||||
}
|
||||
);
|
14
webapp/controller/App.controller.js
Normal file
14
webapp/controller/App.controller.js
Normal file
@ -0,0 +1,14 @@
|
||||
sap.ui.define(
|
||||
[
|
||||
"sap/ui/core/mvc/Controller"
|
||||
],
|
||||
function(BaseController) {
|
||||
"use strict";
|
||||
|
||||
return BaseController.extend("restaurant.z00124ss25restaurant.controller.App", {
|
||||
onInit: function() {
|
||||
}
|
||||
});
|
||||
}
|
||||
);
|
||||
|
392
webapp/controller/manager.controller.js
Normal file
392
webapp/controller/manager.controller.js
Normal file
@ -0,0 +1,392 @@
|
||||
sap.ui.define([
|
||||
"sap/ui/core/mvc/Controller",
|
||||
"sap/m/MessageBox",
|
||||
"sap/ui/model/Filter",
|
||||
"sap/ui/model/FilterOperator"
|
||||
], function (Controller, MessageBox, Filter, FilterOperator) {
|
||||
"use strict";
|
||||
|
||||
return Controller.extend("restaurant.z00124ss25restaurant.controller.managerReservation", {
|
||||
onInit: function () {
|
||||
var oDataForChart = {
|
||||
totalReservations: 0,
|
||||
totalRevenue: "35,918.29",
|
||||
monthlyData: [
|
||||
{ Month: "Jan", Count: 20, Revenue: 5000 },
|
||||
{ Month: "Feb", Count: 30, Revenue: 7000 },
|
||||
{ Month: "Mar", Count: 25, Revenue: 6000 },
|
||||
{ Month: "Apr", Count: 15, Revenue: 3500 },
|
||||
{ Month: "May", Count: 10, Revenue: 2000 },
|
||||
{ Month: "Jun", Count: 20, Revenue: 7500 }
|
||||
]
|
||||
};
|
||||
|
||||
var oDashboardModel = new sap.ui.model.json.JSONModel(oDataForChart);
|
||||
this.getView().setModel(oDashboardModel, "dashboard");
|
||||
this._loadReservationCount();
|
||||
},
|
||||
_padAndEncodeId: function (id) {
|
||||
id = id.toString(); // Ensure it's a string
|
||||
|
||||
if (id.length === 9) {
|
||||
return id;
|
||||
}
|
||||
|
||||
var padding = 9 - id.length;
|
||||
return "%20".repeat(padding) + id;
|
||||
},
|
||||
onModelRefresh: function () {
|
||||
var oTable = this.byId("reservationTable");
|
||||
oTable.getBinding().refresh(true);
|
||||
},
|
||||
formatDimensions: function (sWidth, sHeight, sDepth, sUnit) {
|
||||
if (sWidth && sHeight && sDepth && sUnit) {
|
||||
return sWidth + "x" + sHeight + "x" + sDepth + " " + (sUnit.toLowerCase());
|
||||
}
|
||||
return null;
|
||||
},
|
||||
initBindingEventHandler: function () {
|
||||
const oBusyIndicator = this.oBusyIndicator;
|
||||
const oTable = this.getTable();
|
||||
const oBinding = oTable.getBinding();
|
||||
|
||||
oBinding.attachDataRequested(function () {
|
||||
oTable.setNoData(oBusyIndicator);
|
||||
});
|
||||
oBinding.attachDataReceived(function () {
|
||||
oTable.setNoData(null); //Use default again ("No Data" in case no data is available)
|
||||
});
|
||||
},
|
||||
_resetForm: function () {
|
||||
this.byId("decoration").setSelectedKey("");
|
||||
this.byId("location").setSelectedKey("");
|
||||
this.byId("numofseats").setValue(1);
|
||||
},
|
||||
onCreateTable: function () {
|
||||
var iNumberOfSeats = this.byId("numofseats").getValue();
|
||||
var sDecoration = this.byId("decoration").getSelectedKey();
|
||||
var sLocation = this.byId("location").getSelectedKey();
|
||||
|
||||
if (!iNumberOfSeats) {
|
||||
MessageBox.error("Please enter number of seats");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!sDecoration) {
|
||||
MessageBox.error("Please select a decoration for the table");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!sLocation) {
|
||||
MessageBox.error("Please select a location for the table");
|
||||
return;
|
||||
}
|
||||
|
||||
var oPayload = {
|
||||
NumberOfSeats: iNumberOfSeats,
|
||||
Location: sLocation,
|
||||
Decoration: sDecoration
|
||||
};
|
||||
var oModel = this.getOwnerComponent().getModel();
|
||||
|
||||
// Show busy indicator
|
||||
this.getView().setBusy(true);
|
||||
|
||||
var endPoint = "/tablePos";
|
||||
|
||||
oModel.create(endPoint, oPayload, {
|
||||
success: function (oData, oResponse) {
|
||||
this.getView().setBusy(false);
|
||||
MessageBox.success("Table created successfully", {
|
||||
onClose: this._resetForm.bind(this)
|
||||
});
|
||||
}.bind(this),
|
||||
error: function (oError) {
|
||||
this.getView().setBusy(false);
|
||||
|
||||
// Extract error message from backend response
|
||||
var sErrorMessage = "Error creating Table";
|
||||
|
||||
try {
|
||||
if (oError.responseText) {
|
||||
var oErrorResponse = JSON.parse(oError.responseText);
|
||||
sErrorMessage = oErrorResponse.error.message.value ||
|
||||
(oErrorResponse.error.innererror &&
|
||||
oErrorResponse.error.innererror.errordetails &&
|
||||
oErrorResponse.error.innererror.errordetails.length > 0 ?
|
||||
oErrorResponse.error.innererror.errordetails[0].message :
|
||||
sErrorMessage);
|
||||
}
|
||||
} catch (e) {
|
||||
// Use default error message if parsing fails
|
||||
console.error("Error parsing error response:", e);
|
||||
}
|
||||
|
||||
// Log detailed error information for debugging
|
||||
console.error("Error status:", oError.statusCode);
|
||||
console.error("Error message:", sErrorMessage);
|
||||
console.error("Request URL:", oError.request ? oError.request.requestUri : "unknown");
|
||||
console.error("Full error object:", oError);
|
||||
|
||||
MessageBox.error(sErrorMessage);
|
||||
|
||||
// Test with a different endpoint if this fails
|
||||
if (oError.statusCode === 404) {
|
||||
console.log("Trying alternative endpoint format...");
|
||||
this._tryAlternativeEndpoint(oPayload);
|
||||
}
|
||||
}.bind(this)
|
||||
});
|
||||
|
||||
},
|
||||
onEditTable: function (oEvent) {
|
||||
const oContext = oEvent.getSource().getBindingContext();
|
||||
if (!oContext) return;
|
||||
|
||||
const oData = oContext.getObject();
|
||||
|
||||
// Create dialog only once
|
||||
if (!this._oEditDialog) {
|
||||
this._oEditDialog = new sap.m.Dialog({
|
||||
title: "Edit Table",
|
||||
contentWidth: "400px",
|
||||
content: new sap.ui.layout.form.SimpleForm({
|
||||
editable: true,
|
||||
content: [
|
||||
new sap.m.Label({ text: "Table ID" }),
|
||||
new sap.m.Input({ value: "{/TableId}", enabled: false }),
|
||||
|
||||
new sap.m.Label({ text: "Decoration" }),
|
||||
new sap.m.Input({ value: "{/Decoration}" }),
|
||||
|
||||
new sap.m.Label({ text: "Location" }),
|
||||
new sap.m.Input({ value: "{/Location}" }),
|
||||
|
||||
new sap.m.Label({ text: "Seats" }),
|
||||
new sap.m.StepInput({ value: "{/NumberOfSeats}", min: 1, max: 12 })
|
||||
]
|
||||
}),
|
||||
buttons: [
|
||||
new sap.m.Button({
|
||||
text: "Save",
|
||||
type: "Emphasized",
|
||||
press: function () {
|
||||
var oDialogModel = this._oEditDialog.getModel();
|
||||
var oUpdatedData = oDialogModel.getData();
|
||||
|
||||
var oModel = this.getView().getModel();
|
||||
|
||||
var endPoint = "/tablePos('" + this._padAndEncodeId(oUpdatedData.TableId.trim()) + "')";
|
||||
|
||||
var oPayload = {
|
||||
Decoration: oUpdatedData.Decoration,
|
||||
Location: oUpdatedData.Location,
|
||||
NumberOfSeats: oUpdatedData.NumberOfSeats
|
||||
};
|
||||
|
||||
this.getView().setBusy(true);
|
||||
|
||||
oModel.update(endPoint, oPayload, {
|
||||
success: function () {
|
||||
this.getView().setBusy(false);
|
||||
sap.m.MessageToast.show("Table updated successfully!");
|
||||
|
||||
this._oEditDialog.close();
|
||||
this._oEditDialog.destroy();
|
||||
this._oEditDialog = null;
|
||||
}.bind(this),
|
||||
error: function (oError) {
|
||||
this.getView().setBusy(false);
|
||||
sap.m.MessageBox.error("Failed to update table.");
|
||||
console.error(oError);
|
||||
}.bind(this)
|
||||
});
|
||||
}.bind(this)
|
||||
}),
|
||||
new sap.m.Button({
|
||||
text: "Delete",
|
||||
type: "Reject",
|
||||
press: function () {
|
||||
sap.m.MessageBox.confirm("Are you sure you want to delete this table?", {
|
||||
onClose: function (sAction) {
|
||||
if (sAction === sap.m.MessageBox.Action.OK) {
|
||||
this._deleteTable();
|
||||
}
|
||||
}.bind(this)
|
||||
});
|
||||
}.bind(this)
|
||||
}),
|
||||
new sap.m.Button({
|
||||
text: "Cancel",
|
||||
press: function () {
|
||||
this._oEditDialog.close();
|
||||
}.bind(this)
|
||||
})
|
||||
],
|
||||
afterClose: function () {
|
||||
if (this._oEditDialog) {
|
||||
this._oEditDialog.destroy();
|
||||
this._oEditDialog = null;
|
||||
}
|
||||
}.bind(this)
|
||||
});
|
||||
}
|
||||
|
||||
// Bind a JSON model copy to dialog to avoid direct changes before save
|
||||
const oTableData = Object.assign({}, oData);
|
||||
const oDialogModel = new sap.ui.model.json.JSONModel(oTableData);
|
||||
|
||||
this._oEditDialog.setModel(oDialogModel);
|
||||
this._oEditDialog.bindElement("/");
|
||||
|
||||
this._oEditDialog.open();
|
||||
},
|
||||
|
||||
_deleteTable: function () {
|
||||
var oDialogModel = this._oEditDialog.getModel();
|
||||
var oData = oDialogModel.getData();
|
||||
var oModel = this.getView().getModel();
|
||||
|
||||
var sPath = "/tablePos('" + this._padAndEncodeId(oData.TableId.trim()) + "')";
|
||||
|
||||
this.getView().setBusy(true);
|
||||
oModel.remove(sPath, {
|
||||
success: function () {
|
||||
this.getView().setBusy(false);
|
||||
sap.m.MessageToast.show("Table deleted successfully!");
|
||||
this._oEditDialog.close();
|
||||
}.bind(this),
|
||||
error: function (oError) {
|
||||
this.getView().setBusy(false);
|
||||
sap.m.MessageBox.error("Failed to delete table.");
|
||||
console.error(oError);
|
||||
}.bind(this)
|
||||
});
|
||||
},
|
||||
|
||||
onSearchLiveChange: function (oEvent) {
|
||||
// Get the search query
|
||||
var sQuery = oEvent.getParameter("newValue");
|
||||
var oTable = this.byId("reservationTable");
|
||||
var oBinding = oTable.getBinding("rows");
|
||||
|
||||
// Apply filters
|
||||
if (sQuery && sQuery.length > 0) {
|
||||
var aFilters = [
|
||||
new Filter("ReservationName", FilterOperator.Contains, sQuery)
|
||||
];
|
||||
oBinding.filter(new Filter({
|
||||
filters: aFilters,
|
||||
and: false
|
||||
}));
|
||||
} else {
|
||||
// Clear filters if search field is empty
|
||||
oBinding.filter([]);
|
||||
}
|
||||
},
|
||||
onModelRefresh: function () {
|
||||
var oModel = this.getView().getModel();
|
||||
oModel.refresh(true); // Hard refresh from the server
|
||||
},
|
||||
/**
|
||||
* Formats a date to show only year, month, and day (YYYY-MM-DD)
|
||||
* @param {object} oDate - Date object or date string
|
||||
* @returns {string} Formatted date string
|
||||
*/
|
||||
formatDate: function (oDate) {
|
||||
if (!oDate) {
|
||||
return "";
|
||||
}
|
||||
|
||||
// Convert string to date object if needed
|
||||
var dateObj = (typeof oDate === "string") ? new Date(oDate) : oDate;
|
||||
|
||||
if (isNaN(dateObj.getTime())) {
|
||||
return "";
|
||||
}
|
||||
|
||||
// Format as YYYY-MM-DD
|
||||
var year = dateObj.getFullYear();
|
||||
var month = String(dateObj.getMonth() + 1).padStart(2, '0');
|
||||
var day = String(dateObj.getDate()).padStart(2, '0');
|
||||
|
||||
return year + "-" + month + "-" + day;
|
||||
},
|
||||
|
||||
/**
|
||||
* Formats a time to show in HH:MM:SS format
|
||||
* @param {object} oTime - Time object, date object, or time string
|
||||
* @returns {string} Formatted time string
|
||||
*/
|
||||
formatTime: function (oTime) {
|
||||
if (!oTime) {
|
||||
return "";
|
||||
}
|
||||
|
||||
// Handle OData Edm.Time object which contains ms property
|
||||
if (oTime && typeof oTime === "object" && oTime.ms !== undefined && oTime.__edmType === "Edm.Time") {
|
||||
// Calculate hours, minutes, seconds from milliseconds
|
||||
var totalSeconds = Math.floor(oTime.ms / 1000);
|
||||
var hours = Math.floor(totalSeconds / 3600);
|
||||
var minutes = Math.floor((totalSeconds % 3600) / 60);
|
||||
var seconds = totalSeconds % 60;
|
||||
|
||||
// Format as HH:MM:SS
|
||||
return String(hours).padStart(2, '0') + ":" +
|
||||
String(minutes).padStart(2, '0') + ":" +
|
||||
String(seconds).padStart(2, '0');
|
||||
}
|
||||
|
||||
var timeObj;
|
||||
|
||||
// Handle other input types
|
||||
if (typeof oTime === "string") {
|
||||
// Try parsing as time string (like "14:30:00")
|
||||
if (oTime.indexOf(":") !== -1) {
|
||||
var parts = oTime.split(":");
|
||||
timeObj = new Date();
|
||||
timeObj.setHours(parseInt(parts[0], 10));
|
||||
timeObj.setMinutes(parts.length > 1 ? parseInt(parts[1], 10) : 0);
|
||||
timeObj.setSeconds(parts.length > 2 ? parseInt(parts[2], 10) : 0);
|
||||
} else {
|
||||
// Try parsing as date string
|
||||
timeObj = new Date(oTime);
|
||||
}
|
||||
} else if (oTime instanceof Date) {
|
||||
timeObj = oTime;
|
||||
} else {
|
||||
return ""; // Unsupported format
|
||||
}
|
||||
|
||||
if (isNaN(timeObj.getTime())) {
|
||||
return "";
|
||||
}
|
||||
|
||||
// Format as HH:MM:SS
|
||||
var hours = String(timeObj.getHours()).padStart(2, '0');
|
||||
var minutes = String(timeObj.getMinutes()).padStart(2, '0');
|
||||
var seconds = String(timeObj.getSeconds()).padStart(2, '0');
|
||||
|
||||
return hours + ":" + minutes + ":" + seconds;
|
||||
},
|
||||
_loadReservationCount: function () {
|
||||
var oODataModel = this.getOwnerComponent().getModel();
|
||||
|
||||
// Show busy indicator
|
||||
var oDashboardModel = this.getView().getModel("dashboard");
|
||||
|
||||
// Read count directly from the $count endpoint
|
||||
oODataModel.read("/reservationPos/$count", {
|
||||
success: function (count) {
|
||||
// count is a number (integer)
|
||||
oDashboardModel.setProperty("/totalReservations", count);
|
||||
},
|
||||
error: function (oError) {
|
||||
console.error("Failed to fetch reservation count", oError);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
266
webapp/controller/tablePos.controller.js
Normal file
266
webapp/controller/tablePos.controller.js
Normal file
@ -0,0 +1,266 @@
|
||||
sap.ui.define([
|
||||
"sap/ui/core/mvc/Controller",
|
||||
"sap/m/MessageBox",
|
||||
"sap/ui/core/format/DateFormat",
|
||||
], function (Controller, MessageBox, DateFormat) {
|
||||
"use strict";
|
||||
|
||||
return Controller.extend("restaurant.z00124ss25restaurant.controller.tablePos", {
|
||||
onInit: function () {
|
||||
// Initialize your controller logic here
|
||||
var oDatePicker = this.byId("booked-date");
|
||||
oDatePicker.setDateValue(new Date());
|
||||
|
||||
// Set default time value (e.g., 18:00 for dinner)
|
||||
var oTimePicker = this.byId("booked-time");
|
||||
var oDefaultTime = new Date();
|
||||
oDefaultTime.setHours(18, 0, 0);
|
||||
oTimePicker.setDateValue(oDefaultTime);
|
||||
|
||||
// Set default booking period (120 minutes = 2 hours)
|
||||
this.byId("booked-period").setValue("120");
|
||||
},
|
||||
|
||||
_padAndEncodeId: function (id) {
|
||||
id = id.toString(); // Ensure it's a string
|
||||
|
||||
if (id.length === 9) {
|
||||
return id;
|
||||
}
|
||||
|
||||
var padding = 9 - id.length;
|
||||
return "%20".repeat(padding) + id;
|
||||
},
|
||||
|
||||
|
||||
handleChange: function (oEvent) {
|
||||
// Handle date selection change if needed
|
||||
var oDatePicker = oEvent.getSource();
|
||||
var oSelectedDate = oDatePicker.getDateValue();
|
||||
|
||||
// Additional validation could go here
|
||||
// For example, prevent past dates
|
||||
if (oSelectedDate && oSelectedDate < new Date()) {
|
||||
MessageBox.warning("Please select a future date for your reservation");
|
||||
oDatePicker.setDateValue(new Date());
|
||||
}
|
||||
},
|
||||
|
||||
onSaveReservation: function () {
|
||||
// Get values from the form
|
||||
var sReservationName = this.byId("res-name").getValue();
|
||||
var iNumGuests = parseInt(this.byId("num-guests").getValue(), 10);
|
||||
var oBookedTime = this.byId("booked-time").getDateValue();
|
||||
var oBookedDate = this.byId("booked-date").getDateValue();
|
||||
var sBookedPeriod = this.byId("booked-period").getValue();
|
||||
var sComments = this.byId("comments").getValue();
|
||||
|
||||
// Get the selected TableId from the Select control
|
||||
var oTableSelect = this.byId("table-id");
|
||||
var oSelectedItem = oTableSelect.getSelectedItem();
|
||||
var sSelectedTableId = oSelectedItem ? oSelectedItem.getKey().trim() : null;
|
||||
|
||||
// Minimal validation for required fields
|
||||
if (!sReservationName) {
|
||||
MessageBox.error("Please enter a reservation name");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!oBookedDate) {
|
||||
MessageBox.error("Please select a date for your reservation");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!oBookedTime) {
|
||||
MessageBox.error("Please select a time for your reservation");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!sBookedPeriod) {
|
||||
MessageBox.error("Please enter a booking period");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!sSelectedTableId) {
|
||||
MessageBox.error("Please select a table");
|
||||
return;
|
||||
}
|
||||
|
||||
// Format time for backend (HHMMSS format for ABAP TIMS)
|
||||
var sFormattedTime = this._formatTimeForABAP(oBookedTime);
|
||||
|
||||
// Combine date and time into a single date object
|
||||
const oCombinedDateTime = new Date(
|
||||
oBookedDate.getFullYear(),
|
||||
oBookedDate.getMonth(),
|
||||
oBookedDate.getDate(),
|
||||
oBookedTime.getHours(),
|
||||
oBookedTime.getMinutes(),
|
||||
oBookedTime.getSeconds()
|
||||
);
|
||||
|
||||
// Format using DateTimeOffset type
|
||||
const oDateTimeFormat = DateFormat.getDateTimeInstance({
|
||||
pattern: "yyyy-MM-dd'T'HH:mm:ss",
|
||||
UTC: true // Use UTC to avoid timezone issues
|
||||
});
|
||||
const sFormattedDateTime = oDateTimeFormat.format(oCombinedDateTime);
|
||||
|
||||
// Create payload for OData service - matching your table structure
|
||||
var oPayload = {
|
||||
NumOfGuests: iNumGuests,
|
||||
ReservationName: sReservationName,
|
||||
CommentSection: sComments || "",
|
||||
BookedDate: sFormattedDateTime,
|
||||
BookedTime: sFormattedTime,
|
||||
BookedPeriod: parseInt(sBookedPeriod, 10) || 0
|
||||
// Created_by and other administrative fields will be handled by the backend
|
||||
};
|
||||
|
||||
// Get the OData model
|
||||
var oModel = this.getOwnerComponent().getModel();
|
||||
|
||||
// Show busy indicator
|
||||
this.getView().setBusy(true);
|
||||
|
||||
// FIX: Correct the endpoint format based on your OData service structure
|
||||
// Get the full service path from the model
|
||||
var sServiceUrl = oModel.sServiceUrl;
|
||||
console.log("Service URL:", sServiceUrl);
|
||||
|
||||
// Try different path formats - the correct format depends on your OData service definition
|
||||
// Option 1: Original path from your code, but with proper formatting
|
||||
console.log(sSelectedTableId);
|
||||
|
||||
var encoded = this._padAndEncodeId(sSelectedTableId);
|
||||
|
||||
var endPoint = "/tablePos('" + encoded + "')/to_rese";
|
||||
|
||||
oModel.create(endPoint, oPayload, {
|
||||
success: function (oData, oResponse) {
|
||||
this.getView().setBusy(false);
|
||||
MessageBox.success("Reservation created successfully", {
|
||||
onClose: this._resetForm.bind(this)
|
||||
});
|
||||
}.bind(this),
|
||||
error: function (oError) {
|
||||
this.getView().setBusy(false);
|
||||
|
||||
// Extract error message from backend response
|
||||
var sErrorMessage = "Error creating reservation";
|
||||
|
||||
try {
|
||||
if (oError.responseText) {
|
||||
var oErrorResponse = JSON.parse(oError.responseText);
|
||||
sErrorMessage = oErrorResponse.error.message.value ||
|
||||
(oErrorResponse.error.innererror &&
|
||||
oErrorResponse.error.innererror.errordetails &&
|
||||
oErrorResponse.error.innererror.errordetails.length > 0 ?
|
||||
oErrorResponse.error.innererror.errordetails[0].message :
|
||||
sErrorMessage);
|
||||
}
|
||||
} catch (e) {
|
||||
// Use default error message if parsing fails
|
||||
console.error("Error parsing error response:", e);
|
||||
}
|
||||
|
||||
// Log detailed error information for debugging
|
||||
console.error("Error status:", oError.statusCode);
|
||||
console.error("Error message:", sErrorMessage);
|
||||
console.error("Request URL:", oError.request ? oError.request.requestUri : "unknown");
|
||||
console.error("Full error object:", oError);
|
||||
|
||||
MessageBox.error(sErrorMessage);
|
||||
|
||||
// Test with a different endpoint if this fails
|
||||
if (oError.statusCode === 404) {
|
||||
console.log("Trying alternative endpoint format...");
|
||||
this._tryAlternativeEndpoint(oPayload);
|
||||
}
|
||||
}.bind(this)
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
onCancelPress: function () {
|
||||
// Ask for confirmation before resetting
|
||||
MessageBox.confirm("Are you sure you want to cancel? All entered data will be lost.", {
|
||||
title: "Confirmation",
|
||||
actions: [MessageBox.Action.YES, MessageBox.Action.NO],
|
||||
emphasizedAction: MessageBox.Action.YES,
|
||||
onClose: function (sAction) {
|
||||
if (sAction === MessageBox.Action.YES) {
|
||||
this._resetForm();
|
||||
}
|
||||
}.bind(this)
|
||||
});
|
||||
},
|
||||
|
||||
onTableItemChange: function (oEvent) {
|
||||
var oSelectedItem = oEvent.getParameter("selectedItem");
|
||||
if (oSelectedItem) {
|
||||
var sSelectedItemId = oSelectedItem.getKey();
|
||||
var sSelectedItemText = oSelectedItem.getText();
|
||||
console.log("Selected Item ID:", sSelectedItemId);
|
||||
console.log("Selected Item Text:", sSelectedItemText);
|
||||
// Perform further actions based on the selected item
|
||||
}
|
||||
},
|
||||
|
||||
_resetForm: function () {
|
||||
this.byId("res-name").setValue("");
|
||||
this.byId("num-guests").setValue(1);
|
||||
this.byId("booked-date").setDateValue(new Date());
|
||||
|
||||
// Reset time to default (6:00 PM)
|
||||
var oDefaultTime = new Date();
|
||||
oDefaultTime.setHours(18, 0, 0);
|
||||
this.byId("booked-time").setDateValue(oDefaultTime);
|
||||
|
||||
this.byId("booked-period").setValue("120");
|
||||
this.byId("comments").setValue("");
|
||||
},
|
||||
|
||||
_formatDateForAbapDats: function (oDate) {
|
||||
var oType = new TypeDateTime();
|
||||
|
||||
if (!oDate) return null;
|
||||
|
||||
// Use UI5's built-in ISO date formatting
|
||||
const oDateFormat = DateFormat.getDateInstance({
|
||||
pattern: "yyyy-MM-dd",
|
||||
UTC: true // Critical for ABAP compatibility
|
||||
});
|
||||
return oDateFormat.format(oDate);
|
||||
},
|
||||
_formatTimeForABAP: function (oTime) {
|
||||
if (!oTime) {
|
||||
return "PT00H00M00S";
|
||||
}
|
||||
var oTimeFormat = sap.ui.core.format.DateFormat.getTimeInstance({ pattern: "HH:mm:ss" });
|
||||
var oTimeFormatString = "PT" + oTimeFormat.format(oTime);
|
||||
oTimeFormatString = oTimeFormatString.replace(":", "H");
|
||||
|
||||
// Replace the next colon with 'M'
|
||||
oTimeFormatString = oTimeFormatString.replace(":", "M");
|
||||
|
||||
// Add 'S' at the end to mark seconds
|
||||
oTimeFormatString = oTimeFormatString + "S";
|
||||
console.log(oTimeFormatString);
|
||||
return oTimeFormatString;
|
||||
},
|
||||
onManagerPress: function () {
|
||||
console.log("yes you clicked the button of manager");
|
||||
let man_id = prompt("Please enter manager id:");
|
||||
if (man_id != "z00124") {
|
||||
alert("You are not manager or typed it wrong try again");
|
||||
} else {
|
||||
var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
|
||||
oRouter.navTo("RouteManagerReservation"); // make sure this route is defined in your manifest.json
|
||||
// visible="{= ${isManager} }" // do it when it is implemented
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
35
webapp/css/style.css
Normal file
35
webapp/css/style.css
Normal file
@ -0,0 +1,35 @@
|
||||
/* Enter your custom styles here */
|
||||
.dashboardCardReservation,
|
||||
.dashboardCardRevenue {
|
||||
padding: 1.5rem !important;
|
||||
}
|
||||
.dashboardCardReservation {
|
||||
background-color: #b5f488e1; /* blue background */
|
||||
padding: 1rem;
|
||||
border-radius: 8px;
|
||||
color: white; /* text color */
|
||||
box-shadow: 0 2px 4px #ffffff26;
|
||||
width: 50%;
|
||||
height: auto;
|
||||
}
|
||||
.dashboardCardRevenue {
|
||||
background-color: #67befcce; /* blue background */
|
||||
padding: 1rem;
|
||||
border-radius: 8px;
|
||||
color: white; /* text color */
|
||||
box-shadow: 0 2px 4px #ffffff26;
|
||||
width: 50%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.dashboardCardFontLarge {
|
||||
font-size: 1.4rem !important; /* or any size you want */
|
||||
font-weight: bold; /* optional */
|
||||
height:auto;
|
||||
}
|
||||
|
||||
.dashboardCardFontSmall{
|
||||
font-size: 0.7rem !important; /* or any size you want */
|
||||
font-weight: bold; /* optional */
|
||||
height: auto;
|
||||
}
|
11
webapp/i18n/i18n.properties
Normal file
11
webapp/i18n/i18n.properties
Normal file
@ -0,0 +1,11 @@
|
||||
# This is the resource bundle for restaurant.z00124ss25restaurant
|
||||
|
||||
#Texts for manifest.json
|
||||
|
||||
#XTIT: Application name
|
||||
appTitle=Restaurant Management
|
||||
|
||||
#YDES: Application description
|
||||
appDescription=restaurant application
|
||||
#XTIT: Main view title
|
||||
title=Restaurant
|
35
webapp/index copy.html
Normal file
35
webapp/index copy.html
Normal file
@ -0,0 +1,35 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>restaurant</title>
|
||||
<style>
|
||||
html, body, body > div, #container, #container-uiarea {
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
<script
|
||||
id="sap-ui-bootstrap"
|
||||
src="resources/sap-ui-core.js"
|
||||
data-sap-ui-theme="sap_horizon"
|
||||
data-sap-ui-resourceroots='{
|
||||
"restaurant.z00124ss25restaurant": "./"
|
||||
}'
|
||||
data-sap-ui-oninit="module:sap/ui/core/ComponentSupport"
|
||||
data-sap-ui-compatVersion="edge"
|
||||
data-sap-ui-async="true"
|
||||
data-sap-ui-frameOptions="trusted"
|
||||
></script>
|
||||
</head>
|
||||
<body class="sapUiBody sapUiSizeCompact" id="content">
|
||||
<div
|
||||
data-sap-ui-component
|
||||
data-name="restaurant.z00124ss25restaurant"
|
||||
data-id="container"
|
||||
data-settings='{"id" : "restaurant.z00124ss25restaurant"}'
|
||||
data-handle-validation="true"
|
||||
></div>
|
||||
</body>
|
||||
</html>
|
35
webapp/index.html
Normal file
35
webapp/index.html
Normal file
@ -0,0 +1,35 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>restaurant</title>
|
||||
<style>
|
||||
html, body, body > div, #container, #container-uiarea {
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
<script
|
||||
id="sap-ui-bootstrap"
|
||||
src="resources/sap-ui-core.js"
|
||||
data-sap-ui-theme="sap_horizon"
|
||||
data-sap-ui-resourceroots='{
|
||||
"restaurant.z00124ss25restaurant": "./"
|
||||
}'
|
||||
data-sap-ui-oninit="module:sap/ui/core/ComponentSupport"
|
||||
data-sap-ui-compatVersion="edge"
|
||||
data-sap-ui-async="true"
|
||||
data-sap-ui-frameOptions="trusted"
|
||||
></script>
|
||||
</head>
|
||||
<body class="sapUiBody sapUiSizeCompact" id="content">
|
||||
<div
|
||||
data-sap-ui-component
|
||||
data-name="restaurant.z00124ss25restaurant"
|
||||
data-id="container"
|
||||
data-settings='{"id" : "restaurant.z00124ss25restaurant"}'
|
||||
data-handle-validation="true"
|
||||
></div>
|
||||
</body>
|
||||
</html>
|
273
webapp/localService/mainService/Z_00_124_SS25_RES_SRV_VAN.xml
Normal file
273
webapp/localService/mainService/Z_00_124_SS25_RES_SRV_VAN.xml
Normal file
@ -0,0 +1,273 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
|
||||
<edmx:Reference Uri="../../catalogservice;v=2/Vocabularies(TechnicalName='%2FIWBEP%2FVOC_COMMON',Version='0001',SAP__Origin='')/$value">
|
||||
<edmx:Include Namespace="com.sap.vocabularies.Common.v1" Alias="Common"/>
|
||||
</edmx:Reference>
|
||||
<edmx:Reference Uri="../../catalogservice;v=2/Vocabularies(TechnicalName='%2FIWBEP%2FVOC_UI',Version='0001',SAP__Origin='')/$value">
|
||||
<edmx:Include Namespace="com.sap.vocabularies.UI.v1" Alias="UI"/>
|
||||
</edmx:Reference>
|
||||
<edmx:Reference Uri="../../catalogservice;v=2/Vocabularies(TechnicalName='%2FIWBEP%2FVOC_COMMUNICATION',Version='0001',SAP__Origin='')/$value">
|
||||
<edmx:Include Namespace="com.sap.vocabularies.Communication.v1" Alias="Communication"/>
|
||||
</edmx:Reference>
|
||||
<edmx:Reference Uri="../../catalogservice;v=2/Vocabularies(TechnicalName='%2FIWBEP%2FVOC_PERSONALDATA',Version='0001',SAP__Origin='')/$value">
|
||||
<edmx:Include Namespace="com.sap.vocabularies.PersonalData.v1" Alias="PersonalData"/>
|
||||
</edmx:Reference>
|
||||
<edmx:Reference Uri="../../catalogservice;v=2/Vocabularies(TechnicalName='%2FIWBEP%2FVOC_VALIDATION',Version='0001',SAP__Origin='')/$value">
|
||||
<edmx:Include Namespace="Org.OData.Validation.V1" Alias="Validation"/>
|
||||
</edmx:Reference>
|
||||
<edmx:Reference Uri="../../catalogservice;v=2/Vocabularies(TechnicalName='%2FIWBEP%2FVOC_ANALYTICS',Version='0001',SAP__Origin='')/$value">
|
||||
<edmx:Include Namespace="com.sap.vocabularies.Analytics.v1" Alias="Analytics"/>
|
||||
</edmx:Reference>
|
||||
<edmx:Reference Uri="../../catalogservice;v=2/Vocabularies(TechnicalName='%2FIWBEP%2FVOC_HTML5',Version='0001',SAP__Origin='')/$value">
|
||||
<edmx:Include Namespace="com.sap.vocabularies.HTML5.v1" Alias="HTML5"/>
|
||||
</edmx:Reference>
|
||||
<edmx:Reference Uri="../../../sap/z_00_124_ss25_res_srv/$metadata">
|
||||
<edmx:Include Namespace="Z_00_124_SS25_RES_SRV" Alias="SAP"/>
|
||||
</edmx:Reference>
|
||||
<edmx:DataServices>
|
||||
<Schema Namespace="z_00_124_ss25_res_srv_van.v1" xmlns="http://docs.oasis-open.org/odata/ns/edm">
|
||||
<Annotations Target="cds_z00124ss25_restaurant.reservationPosType">
|
||||
<Annotation Term="UI.HeaderFacets">
|
||||
<Collection>
|
||||
<Record Type="UI.ReferenceFacet">
|
||||
<PropertyValue Property="ID" String="HeaderFacet"/>
|
||||
<PropertyValue Property="Target" AnnotationPath="@UI.FieldGroup#Fieldgroup:HeaderItems"/>
|
||||
</Record>
|
||||
</Collection>
|
||||
</Annotation>
|
||||
<Annotation Term="UI.Facets">
|
||||
<Collection>
|
||||
<Record Type="UI.ReferenceFacet">
|
||||
<PropertyValue Property="ID" String="tableid"/>
|
||||
<PropertyValue Property="Target" AnnotationPath="@UI.Identification"/>
|
||||
</Record>
|
||||
</Collection>
|
||||
</Annotation>
|
||||
<Annotation Term="UI.FieldGroup" Qualifier="Fieldgroup:HeaderItems">
|
||||
<Record>
|
||||
<PropertyValue Property="Data">
|
||||
<Collection>
|
||||
<Record Type="UI.DataField">
|
||||
<PropertyValue Property="Label" String="Table Id"/>
|
||||
<PropertyValue Property="Value" Path="TableId"/>
|
||||
</Record>
|
||||
<Record Type="UI.DataField">
|
||||
<PropertyValue Property="Label" String="Reservation Id"/>
|
||||
<PropertyValue Property="Value" Path="ReservationId"/>
|
||||
</Record>
|
||||
<Record Type="UI.DataField">
|
||||
<PropertyValue Property="Label" String="ReservationName"/>
|
||||
<PropertyValue Property="Value" Path="ReservationName"/>
|
||||
</Record>
|
||||
</Collection>
|
||||
</PropertyValue>
|
||||
</Record>
|
||||
</Annotation>
|
||||
<Annotation Term="UI.HeaderInfo">
|
||||
<Record>
|
||||
<PropertyValue Property="TypeName" String="Reservation Document"/>
|
||||
<PropertyValue Property="TypeNamePlural" String="Reservation Documents"/>
|
||||
<PropertyValue Property="Title">
|
||||
<Record Type="UI.DataFieldWithNavigationPath">
|
||||
<PropertyValue Property="Label" String="Reservation Documents"/>
|
||||
<PropertyValue Property="Value" Path="ReservationId"/>
|
||||
<PropertyValue Property="Target" String="">
|
||||
<Annotation Term="Core.Messages">
|
||||
<Collection>
|
||||
<Record>
|
||||
<PropertyValue Property="message" String="ERROR: Invalid Path"/>
|
||||
<PropertyValue Property="severity" String="error"/>
|
||||
</Record>
|
||||
</Collection>
|
||||
</Annotation>
|
||||
</PropertyValue>
|
||||
</Record>
|
||||
</PropertyValue>
|
||||
</Record>
|
||||
</Annotation>
|
||||
<Annotation Term="UI.Identification">
|
||||
<Collection>
|
||||
<Record Type="UI.DataField">
|
||||
<PropertyValue Property="Label" String="Table Id"/>
|
||||
<PropertyValue Property="Value" Path="TableId"/>
|
||||
</Record>
|
||||
<Record Type="UI.DataField">
|
||||
<PropertyValue Property="Label" String="Reservation Id"/>
|
||||
<PropertyValue Property="Value" Path="ReservationId"/>
|
||||
</Record>
|
||||
<Record Type="UI.DataField">
|
||||
<PropertyValue Property="Label" String="Number of Guests"/>
|
||||
<PropertyValue Property="Value" Path="NumOfGuests"/>
|
||||
</Record>
|
||||
<Record Type="UI.DataField">
|
||||
<PropertyValue Property="Label" String="ReservationName"/>
|
||||
<PropertyValue Property="Value" Path="ReservationName"/>
|
||||
</Record>
|
||||
<Record Type="UI.DataField">
|
||||
<PropertyValue Property="Label" String="CommentSection"/>
|
||||
<PropertyValue Property="Value" Path="CommentSection"/>
|
||||
</Record>
|
||||
<Record Type="UI.DataField">
|
||||
<PropertyValue Property="Label" String="BookedTime"/>
|
||||
<PropertyValue Property="Value" Path="BookedTime"/>
|
||||
</Record>
|
||||
<Record Type="UI.DataField">
|
||||
<PropertyValue Property="Label" String="BookedDate"/>
|
||||
<PropertyValue Property="Value" Path="BookedDate"/>
|
||||
</Record>
|
||||
<Record Type="UI.DataField">
|
||||
<PropertyValue Property="Label" String="BookedPeriod"/>
|
||||
<PropertyValue Property="Value" Path="BookedPeriod"/>
|
||||
</Record>
|
||||
</Collection>
|
||||
</Annotation>
|
||||
<Annotation Term="UI.LineItem">
|
||||
<Collection>
|
||||
<Record Type="UI.DataField">
|
||||
<PropertyValue Property="Label" String="Table Id"/>
|
||||
<PropertyValue Property="Value" Path="TableId"/>
|
||||
</Record>
|
||||
<Record Type="UI.DataField">
|
||||
<PropertyValue Property="Label" String="Reservation Id"/>
|
||||
<PropertyValue Property="Value" Path="ReservationId"/>
|
||||
</Record>
|
||||
<Record Type="UI.DataField">
|
||||
<PropertyValue Property="Label" String="Number of Guests"/>
|
||||
<PropertyValue Property="Value" Path="NumOfGuests"/>
|
||||
</Record>
|
||||
<Record Type="UI.DataField">
|
||||
<PropertyValue Property="Label" String="ReservationName"/>
|
||||
<PropertyValue Property="Value" Path="ReservationName"/>
|
||||
</Record>
|
||||
<Record Type="UI.DataField">
|
||||
<PropertyValue Property="Label" String="CommentSection"/>
|
||||
<PropertyValue Property="Value" Path="CommentSection"/>
|
||||
</Record>
|
||||
<Record Type="UI.DataField">
|
||||
<PropertyValue Property="Label" String="BookedTime"/>
|
||||
<PropertyValue Property="Value" Path="BookedTime"/>
|
||||
</Record>
|
||||
<Record Type="UI.DataField">
|
||||
<PropertyValue Property="Label" String="BookedDate"/>
|
||||
<PropertyValue Property="Value" Path="BookedDate"/>
|
||||
</Record>
|
||||
<Record Type="UI.DataField">
|
||||
<PropertyValue Property="Label" String="BookedPeriod"/>
|
||||
<PropertyValue Property="Value" Path="BookedPeriod"/>
|
||||
</Record>
|
||||
</Collection>
|
||||
</Annotation>
|
||||
</Annotations>
|
||||
<Annotations Target="cds_z00124ss25_restaurant.tablePosType">
|
||||
<Annotation Term="UI.HeaderFacets">
|
||||
<Collection>
|
||||
<Record Type="UI.ReferenceFacet">
|
||||
<PropertyValue Property="ID" String="HeaderFacet"/>
|
||||
<PropertyValue Property="Target" AnnotationPath="@UI.FieldGroup#Fieldgroup:HeaderItems"/>
|
||||
</Record>
|
||||
</Collection>
|
||||
</Annotation>
|
||||
<Annotation Term="UI.Facets">
|
||||
<Collection>
|
||||
<Record Type="UI.ReferenceFacet">
|
||||
<PropertyValue Property="Label" String="Overview"/>
|
||||
<PropertyValue Property="ID" String="TableID"/>
|
||||
<PropertyValue Property="Target" AnnotationPath="@UI.Identification"/>
|
||||
</Record>
|
||||
<Record Type="UI.ReferenceFacet">
|
||||
<PropertyValue Property="Label" String="Positions"/>
|
||||
<PropertyValue Property="ID" String="positions"/>
|
||||
<PropertyValue Property="Target" AnnotationPath="to_rese/@UI.LineItem"/>
|
||||
</Record>
|
||||
</Collection>
|
||||
</Annotation>
|
||||
<Annotation Term="UI.FieldGroup" Qualifier="Fieldgroup:HeaderItems">
|
||||
<Record>
|
||||
<PropertyValue Property="Data">
|
||||
<Collection>
|
||||
<Record Type="UI.DataField">
|
||||
<PropertyValue Property="Label" String="Billing
|
||||
Document"/>
|
||||
<PropertyValue Property="Value" Path="TableId"/>
|
||||
</Record>
|
||||
<Record Type="UI.DataField">
|
||||
<PropertyValue Property="Label" String="Decoration"/>
|
||||
<PropertyValue Property="Value" Path="Decoration"/>
|
||||
</Record>
|
||||
</Collection>
|
||||
</PropertyValue>
|
||||
</Record>
|
||||
</Annotation>
|
||||
<Annotation Term="UI.HeaderInfo">
|
||||
<Record>
|
||||
<PropertyValue Property="TypeName" String="Table Document"/>
|
||||
<PropertyValue Property="TypeNamePlural" String="Table Documents"/>
|
||||
<PropertyValue Property="Title">
|
||||
<Record Type="UI.DataFieldWithNavigationPath">
|
||||
<PropertyValue Property="Label" String="Table Document Details"/>
|
||||
<PropertyValue Property="Value" Path="TableId"/>
|
||||
<PropertyValue Property="Target" String="">
|
||||
<Annotation Term="Core.Messages">
|
||||
<Collection>
|
||||
<Record>
|
||||
<PropertyValue Property="message" String="ERROR: Invalid Path"/>
|
||||
<PropertyValue Property="severity" String="error"/>
|
||||
</Record>
|
||||
</Collection>
|
||||
</Annotation>
|
||||
</PropertyValue>
|
||||
</Record>
|
||||
</PropertyValue>
|
||||
</Record>
|
||||
</Annotation>
|
||||
<Annotation Term="UI.Identification">
|
||||
<Collection>
|
||||
<Record Type="UI.DataField">
|
||||
<PropertyValue Property="Label" String="Table ID"/>
|
||||
<PropertyValue Property="Value" Path="TableId"/>
|
||||
</Record>
|
||||
<Record Type="UI.DataField">
|
||||
<PropertyValue Property="Label" String="Decoration"/>
|
||||
<PropertyValue Property="Value" Path="Decoration"/>
|
||||
</Record>
|
||||
<Record Type="UI.DataField">
|
||||
<PropertyValue Property="Label" String="Location"/>
|
||||
<PropertyValue Property="Value" Path="Location"/>
|
||||
</Record>
|
||||
<Record Type="UI.DataField">
|
||||
<PropertyValue Property="Label" String="NumberOfSeats"/>
|
||||
<PropertyValue Property="Value" Path="NumberOfSeats"/>
|
||||
</Record>
|
||||
</Collection>
|
||||
</Annotation>
|
||||
<Annotation Term="UI.LineItem">
|
||||
<Collection>
|
||||
<Record Type="UI.DataField">
|
||||
<PropertyValue Property="Label" String="Table ID"/>
|
||||
<PropertyValue Property="Value" Path="TableId"/>
|
||||
</Record>
|
||||
<Record Type="UI.DataField">
|
||||
<PropertyValue Property="Label" String="Decoration"/>
|
||||
<PropertyValue Property="Value" Path="Decoration"/>
|
||||
</Record>
|
||||
<Record Type="UI.DataField">
|
||||
<PropertyValue Property="Label" String="Location"/>
|
||||
<PropertyValue Property="Value" Path="Location"/>
|
||||
</Record>
|
||||
<Record Type="UI.DataField">
|
||||
<PropertyValue Property="Label" String="NumberOfSeats"/>
|
||||
<PropertyValue Property="Value" Path="NumberOfSeats"/>
|
||||
</Record>
|
||||
</Collection>
|
||||
</Annotation>
|
||||
<Annotation Term="UI.SelectionFields">
|
||||
<Collection>
|
||||
<PropertyPath>TableId</PropertyPath>
|
||||
<PropertyPath>Decoration</PropertyPath>
|
||||
<PropertyPath>Location</PropertyPath>
|
||||
</Collection>
|
||||
</Annotation>
|
||||
</Annotations>
|
||||
</Schema>
|
||||
</edmx:DataServices>
|
||||
</edmx:Edmx>
|
562
webapp/localService/mainService/metadata.xml
Normal file
562
webapp/localService/mainService/metadata.xml
Normal file
@ -0,0 +1,562 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<edmx:Edmx Version="1.0" xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:sap="http://www.sap.com/Protocols/SAPData">
|
||||
<edmx:Reference Uri="./sap/opu/odata/iwfnd/catalogservice;v=2/Vocabularies(TechnicalName='%2FIWBEP%2FVOC_AGGREGATION',Version='0001',SAP__Origin='')/$value" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
|
||||
<edmx:Include Namespace="Org.OData.Aggregation.V1" Alias="Aggregation"/>
|
||||
</edmx:Reference>
|
||||
<edmx:Reference Uri="./sap/opu/odata/iwfnd/catalogservice;v=2/Vocabularies(TechnicalName='%2FIWBEP%2FVOC_ANALYTICS',Version='0001',SAP__Origin='')/$value" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
|
||||
<edmx:Include Namespace="com.sap.vocabularies.Analytics.v1" Alias="Analytics"/>
|
||||
</edmx:Reference>
|
||||
<edmx:Reference Uri="./sap/opu/odata/iwfnd/catalogservice;v=2/Vocabularies(TechnicalName='%2FIWBEP%2FVOC_CAPABILITIES',Version='0001',SAP__Origin='')/$value" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
|
||||
<edmx:Include Namespace="Org.OData.Capabilities.V1" Alias="Capabilities"/>
|
||||
</edmx:Reference>
|
||||
<edmx:Reference Uri="./sap/opu/odata/iwfnd/catalogservice;v=2/Vocabularies(TechnicalName='%2FIWBEP%2FVOC_CODELIST',Version='0001',SAP__Origin='')/$value" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
|
||||
<edmx:Include Namespace="com.sap.vocabularies.CodeList.v1" Alias="SAP__CodeList"/>
|
||||
</edmx:Reference>
|
||||
<edmx:Reference Uri="./sap/opu/odata/iwfnd/catalogservice;v=2/Vocabularies(TechnicalName='%2FIWBEP%2FVOC_COMMON',Version='0001',SAP__Origin='')/$value" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
|
||||
<edmx:Include Namespace="com.sap.vocabularies.Common.v1" Alias="Common"/>
|
||||
<edmx:Include Namespace="com.sap.vocabularies.Common.v1" Alias="SAP__common"/>
|
||||
</edmx:Reference>
|
||||
<edmx:Reference Uri="./sap/opu/odata/iwfnd/catalogservice;v=2/Vocabularies(TechnicalName='%2FIWBEP%2FVOC_COMMUNICATION',Version='0001',SAP__Origin='')/$value" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
|
||||
<edmx:Include Namespace="com.sap.vocabularies.Communication.v1" Alias="Communication"/>
|
||||
</edmx:Reference>
|
||||
<edmx:Reference Uri="./sap/opu/odata/iwfnd/catalogservice;v=2/Vocabularies(TechnicalName='%2FIWBEP%2FVOC_CORE',Version='0001',SAP__Origin='')/$value" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
|
||||
<edmx:Include Namespace="Org.OData.Core.V1" Alias="SAP__core"/>
|
||||
</edmx:Reference>
|
||||
<edmx:Reference Uri="./sap/opu/odata/iwfnd/catalogservice;v=2/Vocabularies(TechnicalName='%2FIWBEP%2FVOC_MEASURES',Version='0001',SAP__Origin='')/$value" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
|
||||
<edmx:Include Namespace="Org.OData.Measures.V1" Alias="Measures"/>
|
||||
</edmx:Reference>
|
||||
<edmx:Reference Uri="./sap/opu/odata/iwfnd/catalogservice;v=2/Vocabularies(TechnicalName='%2FIWBEP%2FVOC_PDF',Version='0001',SAP__Origin='')/$value" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
|
||||
<edmx:Include Namespace="com.sap.vocabularies.PDF.v1" Alias="SAP__PDF"/>
|
||||
</edmx:Reference>
|
||||
<edmx:Reference Uri="./sap/opu/odata/iwfnd/catalogservice;v=2/Vocabularies(TechnicalName='%2FIWBEP%2FVOC_PERSONALDATA',Version='0001',SAP__Origin='')/$value" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
|
||||
<edmx:Include Namespace="com.sap.vocabularies.PersonalData.v1" Alias="PersonalData"/>
|
||||
</edmx:Reference>
|
||||
<edmx:Reference Uri="./sap/opu/odata/iwfnd/catalogservice;v=2/Vocabularies(TechnicalName='%2FIWBEP%2FVOC_UI',Version='0001',SAP__Origin='')/$value" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
|
||||
<edmx:Include Namespace="com.sap.vocabularies.UI.v1" Alias="UI"/>
|
||||
</edmx:Reference>
|
||||
<edmx:Reference Uri="./sap/opu/odata/iwfnd/catalogservice;v=2/Vocabularies(TechnicalName='%2FIWBEP%2FVOC_VALIDATION',Version='0001',SAP__Origin='')/$value" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
|
||||
<edmx:Include Namespace="Org.OData.Validation.V1" Alias="Validation"/>
|
||||
</edmx:Reference>
|
||||
<edmx:Reference Uri="./sap/opu/odata/iwfnd/catalogservice;v=2/Vocabularies(TechnicalName='SAP__SELF',Version='0001',SAP__Origin='')/$value" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
|
||||
<edmx:Include Namespace="com.sap.vocabularies.PDF.v1" Alias="SAP__PDF"/>
|
||||
</edmx:Reference>
|
||||
<edmx:DataServices m:DataServiceVersion="2.0">
|
||||
<Schema Namespace="cds_z00124ss25_restaurant" xml:lang="en" sap:schema-version="1" xmlns="http://schemas.microsoft.com/ado/2008/09/edm">
|
||||
<Annotation Term="Core.SchemaVersion" String="1.0.0" xmlns="http://docs.oasis-open.org/odata/ns/edm"/>
|
||||
<EntityType Name="reservationPosType" sap:label="Consumsion datadefiniton of Reservation" sap:content-version="1">
|
||||
<Key>
|
||||
<PropertyRef Name="ReservationId"/>
|
||||
<PropertyRef Name="TableId"/>
|
||||
</Key>
|
||||
<Property Name="ReservationId" Type="Edm.Guid" Nullable="false" sap:label="UUID" sap:quickinfo="16 Byte UUID in 16 Bytes (Raw Format)" sap:creatable="false" sap:updatable="false"/>
|
||||
<Property Name="TableId" Type="Edm.String" Nullable="false" MaxLength="10" sap:display-format="UpperCase" sap:label="Tablee ID" sap:quickinfo="Tablee data element" sap:creatable="false" sap:updatable="false" sap:value-list="standard"/>
|
||||
<Property Name="NumOfGuests" Type="Edm.Int16"/>
|
||||
<Property Name="ReservationName" Type="Edm.String" MaxLength="30"/>
|
||||
<Property Name="CommentSection" Type="Edm.String" MaxLength="50"/>
|
||||
<Property Name="BookedDate" Type="Edm.DateTime" Precision="0" sap:display-format="Date"/>
|
||||
<Property Name="BookedTime" Type="Edm.Time" Precision="0"/>
|
||||
<Property Name="BookedPeriod" Type="Edm.Int16"/>
|
||||
<NavigationProperty Name="to_tabe" Relationship="cds_z00124ss25_restaurant.assoc_C5BBE7D3C6BD80AD3FA4BAAEFF61E987" FromRole="ToRole_assoc_C5BBE7D3C6BD80AD3FA4BAAEFF61E987" ToRole="FromRole_assoc_C5BBE7D3C6BD80AD3FA4BAAEFF61E987"/>
|
||||
</EntityType>
|
||||
<EntityType Name="tablePosType" sap:label="Table Consumption Data Defitnion" sap:content-version="1">
|
||||
<Key>
|
||||
<PropertyRef Name="TableId"/>
|
||||
</Key>
|
||||
<Property Name="TableId" Type="Edm.String" Nullable="false" MaxLength="10" sap:display-format="UpperCase" sap:label="Tablee ID" sap:quickinfo="Tablee data element" sap:creatable="false" sap:updatable="false"/>
|
||||
<Property Name="Decoration" Type="Edm.String" MaxLength="10" sap:display-format="UpperCase" sap:label="Decoration Value" sap:quickinfo="Deco Element" sap:value-list="fixed-values"/>
|
||||
<Property Name="Location" Type="Edm.String" MaxLength="10" sap:display-format="UpperCase" sap:label="Location Domain" sap:quickinfo="Location Element" sap:value-list="fixed-values"/>
|
||||
<Property Name="NumberOfSeats" Type="Edm.Int16"/>
|
||||
<NavigationProperty Name="to_rese" Relationship="cds_z00124ss25_restaurant.assoc_C5BBE7D3C6BD80AD3FA4BAAEFF61E987" FromRole="FromRole_assoc_C5BBE7D3C6BD80AD3FA4BAAEFF61E987" ToRole="ToRole_assoc_C5BBE7D3C6BD80AD3FA4BAAEFF61E987"/>
|
||||
</EntityType>
|
||||
<EntityType Name="Z_00_124_SS25_DECOType" sap:label="Decoration Datdefiinition" sap:value-list="true" sap:content-version="1">
|
||||
<Key>
|
||||
<PropertyRef Name="Decoration"/>
|
||||
</Key>
|
||||
<Property Name="Decoration" Type="Edm.String" Nullable="false" MaxLength="10" sap:display-format="UpperCase" sap:label="Decoration Value" sap:quickinfo="Deco Element"/>
|
||||
</EntityType>
|
||||
<EntityType Name="Z_00_124_SS25_LOCType" sap:label="Location Data Definition" sap:value-list="true" sap:content-version="1">
|
||||
<Key>
|
||||
<PropertyRef Name="Location"/>
|
||||
</Key>
|
||||
<Property Name="Location" Type="Edm.String" Nullable="false" MaxLength="10" sap:display-format="UpperCase" sap:label="Location Domain" sap:quickinfo="Location Element"/>
|
||||
</EntityType>
|
||||
<EntityType Name="SAP__Currency" sap:content-version="1">
|
||||
<Key>
|
||||
<PropertyRef Name="CurrencyCode"/>
|
||||
</Key>
|
||||
<Property Name="CurrencyCode" Type="Edm.String" Nullable="false" MaxLength="5" sap:label="Currency" sap:semantics="currency-code"/>
|
||||
<Property Name="ISOCode" Type="Edm.String" Nullable="false" MaxLength="3" sap:label="ISO code"/>
|
||||
<Property Name="Text" Type="Edm.String" Nullable="false" MaxLength="15" sap:label="Short text"/>
|
||||
<Property Name="DecimalPlaces" Type="Edm.Byte" Nullable="false" sap:label="Decimals"/>
|
||||
</EntityType>
|
||||
<EntityType Name="SAP__UnitOfMeasure" sap:content-version="1">
|
||||
<Key>
|
||||
<PropertyRef Name="UnitCode"/>
|
||||
</Key>
|
||||
<Property Name="UnitCode" Type="Edm.String" Nullable="false" MaxLength="3" sap:label="Internal UoM" sap:semantics="unit-of-measure"/>
|
||||
<Property Name="ISOCode" Type="Edm.String" Nullable="false" MaxLength="3" sap:label="ISO Code"/>
|
||||
<Property Name="ExternalCode" Type="Edm.String" Nullable="false" MaxLength="3" sap:label="Commercial"/>
|
||||
<Property Name="Text" Type="Edm.String" Nullable="false" MaxLength="30" sap:label="Measurement Unit Txt"/>
|
||||
<Property Name="DecimalPlaces" Type="Edm.Int16" sap:label="Decimal Places"/>
|
||||
</EntityType>
|
||||
<EntityType Name="SAP__DocumentDescription" sap:content-version="1">
|
||||
<Key>
|
||||
<PropertyRef Name="Id"/>
|
||||
</Key>
|
||||
<Property Name="Id" Type="Edm.Guid" Nullable="false" sap:label="UUID"/>
|
||||
<Property Name="CreatedBy" Type="Edm.String" Nullable="false" MaxLength="12"/>
|
||||
<Property Name="CreatedAt" Type="Edm.DateTime" Nullable="false" Precision="0" sap:label="Time Stamp"/>
|
||||
<Property Name="FileName" Type="Edm.String" Nullable="false" MaxLength="256"/>
|
||||
<Property Name="Title" Type="Edm.String" Nullable="false" MaxLength="256"/>
|
||||
<NavigationProperty Name="Format" Relationship="cds_z00124ss25_restaurant.to_format" FromRole="FromRole_to_format" ToRole="ToRole_to_format"/>
|
||||
<NavigationProperty Name="TableColumns" Relationship="cds_z00124ss25_restaurant.to_tablecolumns" FromRole="FromRole_to_tablecolumns" ToRole="ToRole_to_tablecolumns"/>
|
||||
<NavigationProperty Name="CoverPage" Relationship="cds_z00124ss25_restaurant.to_coverpage" FromRole="FromRole_to_coverpage" ToRole="ToRole_to_coverpage"/>
|
||||
<NavigationProperty Name="Signature" Relationship="cds_z00124ss25_restaurant.to_signature" FromRole="FromRole_to_signature" ToRole="ToRole_to_signature"/>
|
||||
<NavigationProperty Name="PDFStandard" Relationship="cds_z00124ss25_restaurant.to_pdfstandard" FromRole="FromRole_to_pdfstandard" ToRole="ToRole_to_pdfstandard"/>
|
||||
</EntityType>
|
||||
<EntityType Name="SAP__Format" sap:content-version="1">
|
||||
<Key>
|
||||
<PropertyRef Name="Id"/>
|
||||
</Key>
|
||||
<Property Name="FitToPage" Type="cds_z00124ss25_restaurant.SAP__FitToPage" Nullable="false"/>
|
||||
<Property Name="Id" Type="Edm.Guid" Nullable="false" sap:label="UUID" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false"/>
|
||||
<Property Name="FontSize" Type="Edm.Int32" Nullable="false" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false"/>
|
||||
<Property Name="Orientation" Type="Edm.String" Nullable="false" MaxLength="10" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false"/>
|
||||
<Property Name="PaperSize" Type="Edm.String" Nullable="false" MaxLength="10" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false"/>
|
||||
<Property Name="BorderSize" Type="Edm.Int32" Nullable="false" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false"/>
|
||||
<Property Name="MarginSize" Type="Edm.Int32" Nullable="false" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false"/>
|
||||
<Property Name="FontName" Type="Edm.String" Nullable="false" MaxLength="255" sap:label="Font Name" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false"/>
|
||||
</EntityType>
|
||||
<EntityType Name="SAP__PDFStandard" sap:content-version="1">
|
||||
<Key>
|
||||
<PropertyRef Name="Id"/>
|
||||
</Key>
|
||||
<Property Name="Id" Type="Edm.Guid" Nullable="false" sap:label="UUID" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false"/>
|
||||
<Property Name="UsePDFAConformance" Type="Edm.Boolean" Nullable="false" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false"/>
|
||||
<Property Name="DoEnableAccessibility" Type="Edm.Boolean" Nullable="false" sap:label="Indicator" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false"/>
|
||||
</EntityType>
|
||||
<EntityType Name="SAP__TableColumns" sap:content-version="1">
|
||||
<Key>
|
||||
<PropertyRef Name="Id"/>
|
||||
<PropertyRef Name="Name"/>
|
||||
<PropertyRef Name="Header"/>
|
||||
</Key>
|
||||
<Property Name="Id" Type="Edm.Guid" Nullable="false" sap:label="UUID" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false"/>
|
||||
<Property Name="Name" Type="Edm.String" Nullable="false" MaxLength="256" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false"/>
|
||||
<Property Name="Header" Type="Edm.String" Nullable="false" MaxLength="256" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false"/>
|
||||
<Property Name="HorizontalAlignment" Type="Edm.String" Nullable="false" MaxLength="10" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false"/>
|
||||
</EntityType>
|
||||
<EntityType Name="SAP__CoverPage" sap:content-version="1">
|
||||
<Key>
|
||||
<PropertyRef Name="Title"/>
|
||||
<PropertyRef Name="Id"/>
|
||||
<PropertyRef Name="Name"/>
|
||||
</Key>
|
||||
<Property Name="Title" Type="Edm.String" Nullable="false" MaxLength="256" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false"/>
|
||||
<Property Name="Id" Type="Edm.Guid" Nullable="false" sap:label="UUID" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false"/>
|
||||
<Property Name="Name" Type="Edm.String" Nullable="false" MaxLength="256" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false"/>
|
||||
<Property Name="Value" Type="Edm.String" Nullable="false" MaxLength="256" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false"/>
|
||||
</EntityType>
|
||||
<EntityType Name="SAP__Signature" sap:content-version="1">
|
||||
<Key>
|
||||
<PropertyRef Name="Id"/>
|
||||
</Key>
|
||||
<Property Name="Id" Type="Edm.Guid" Nullable="false" sap:label="UUID" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false"/>
|
||||
<Property Name="DoSign" Type="Edm.Boolean" Nullable="false" sap:label="Indicator" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false"/>
|
||||
<Property Name="Reason" Type="Edm.String" Nullable="false" MaxLength="256" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false"/>
|
||||
</EntityType>
|
||||
<EntityType Name="SAP__ValueHelp" sap:content-version="1">
|
||||
<Key>
|
||||
<PropertyRef Name="VALUEHELP"/>
|
||||
</Key>
|
||||
<Property Name="VALUEHELP" Type="Edm.String" Nullable="false"/>
|
||||
<Property Name="FIELD_VALUE" Type="Edm.String" Nullable="false" MaxLength="10"/>
|
||||
<Property Name="DESCRIPTION" Type="Edm.String"/>
|
||||
</EntityType>
|
||||
<ComplexType Name="SAP__FitToPage">
|
||||
<Property Name="ErrorRecoveryBehavior" Type="Edm.String" Nullable="false" MaxLength="8" sap:label="Error behavior" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false"/>
|
||||
<Property Name="IsEnabled" Type="Edm.Boolean" Nullable="false" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false"/>
|
||||
<Property Name="MinimumFontSize" Type="Edm.Int32" Nullable="false" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:filterable="false"/>
|
||||
</ComplexType>
|
||||
<Association Name="assoc_C5BBE7D3C6BD80AD3FA4BAAEFF61E987" sap:content-version="1">
|
||||
<End Type="cds_z00124ss25_restaurant.tablePosType" Multiplicity="1" Role="FromRole_assoc_C5BBE7D3C6BD80AD3FA4BAAEFF61E987">
|
||||
<OnDelete Action="Cascade"/>
|
||||
</End>
|
||||
<End Type="cds_z00124ss25_restaurant.reservationPosType" Multiplicity="*" Role="ToRole_assoc_C5BBE7D3C6BD80AD3FA4BAAEFF61E987"/>
|
||||
<ReferentialConstraint>
|
||||
<Principal Role="FromRole_assoc_C5BBE7D3C6BD80AD3FA4BAAEFF61E987">
|
||||
<PropertyRef Name="TableId"/>
|
||||
</Principal>
|
||||
<Dependent Role="ToRole_assoc_C5BBE7D3C6BD80AD3FA4BAAEFF61E987">
|
||||
<PropertyRef Name="TableId"/>
|
||||
</Dependent>
|
||||
</ReferentialConstraint>
|
||||
</Association>
|
||||
<Association Name="to_format" sap:content-version="1">
|
||||
<End Type="cds_z00124ss25_restaurant.SAP__DocumentDescription" Multiplicity="1" Role="FromRole_to_format"/>
|
||||
<End Type="cds_z00124ss25_restaurant.SAP__Format" Multiplicity="1" Role="ToRole_to_format"/>
|
||||
<ReferentialConstraint>
|
||||
<Principal Role="FromRole_to_format">
|
||||
<PropertyRef Name="Id"/>
|
||||
</Principal>
|
||||
<Dependent Role="ToRole_to_format">
|
||||
<PropertyRef Name="Id"/>
|
||||
</Dependent>
|
||||
</ReferentialConstraint>
|
||||
</Association>
|
||||
<Association Name="to_tablecolumns" sap:content-version="1">
|
||||
<End Type="cds_z00124ss25_restaurant.SAP__DocumentDescription" Multiplicity="1" Role="FromRole_to_tablecolumns"/>
|
||||
<End Type="cds_z00124ss25_restaurant.SAP__TableColumns" Multiplicity="*" Role="ToRole_to_tablecolumns"/>
|
||||
<ReferentialConstraint>
|
||||
<Principal Role="FromRole_to_tablecolumns">
|
||||
<PropertyRef Name="Id"/>
|
||||
</Principal>
|
||||
<Dependent Role="ToRole_to_tablecolumns">
|
||||
<PropertyRef Name="Id"/>
|
||||
</Dependent>
|
||||
</ReferentialConstraint>
|
||||
</Association>
|
||||
<Association Name="to_coverpage" sap:content-version="1">
|
||||
<End Type="cds_z00124ss25_restaurant.SAP__DocumentDescription" Multiplicity="1" Role="FromRole_to_coverpage"/>
|
||||
<End Type="cds_z00124ss25_restaurant.SAP__CoverPage" Multiplicity="*" Role="ToRole_to_coverpage"/>
|
||||
<ReferentialConstraint>
|
||||
<Principal Role="FromRole_to_coverpage">
|
||||
<PropertyRef Name="Id"/>
|
||||
</Principal>
|
||||
<Dependent Role="ToRole_to_coverpage">
|
||||
<PropertyRef Name="Id"/>
|
||||
</Dependent>
|
||||
</ReferentialConstraint>
|
||||
</Association>
|
||||
<Association Name="to_signature" sap:content-version="1">
|
||||
<End Type="cds_z00124ss25_restaurant.SAP__DocumentDescription" Multiplicity="1" Role="FromRole_to_signature"/>
|
||||
<End Type="cds_z00124ss25_restaurant.SAP__Signature" Multiplicity="1" Role="ToRole_to_signature"/>
|
||||
<ReferentialConstraint>
|
||||
<Principal Role="FromRole_to_signature">
|
||||
<PropertyRef Name="Id"/>
|
||||
</Principal>
|
||||
<Dependent Role="ToRole_to_signature">
|
||||
<PropertyRef Name="Id"/>
|
||||
</Dependent>
|
||||
</ReferentialConstraint>
|
||||
</Association>
|
||||
<Association Name="to_pdfstandard" sap:content-version="1">
|
||||
<End Type="cds_z00124ss25_restaurant.SAP__DocumentDescription" Multiplicity="1" Role="FromRole_to_pdfstandard"/>
|
||||
<End Type="cds_z00124ss25_restaurant.SAP__PDFStandard" Multiplicity="1" Role="ToRole_to_pdfstandard"/>
|
||||
<ReferentialConstraint>
|
||||
<Principal Role="FromRole_to_pdfstandard">
|
||||
<PropertyRef Name="Id"/>
|
||||
</Principal>
|
||||
<Dependent Role="ToRole_to_pdfstandard">
|
||||
<PropertyRef Name="Id"/>
|
||||
</Dependent>
|
||||
</ReferentialConstraint>
|
||||
</Association>
|
||||
<EntityContainer Name="cds_z00124ss25_restaurant_Entities" m:IsDefaultEntityContainer="true" sap:message-scope-supported="true" sap:supported-formats="atom json xlsx pdf">
|
||||
<EntitySet Name="SAP__Currencies" EntityType="cds_z00124ss25_restaurant.SAP__Currency" sap:content-version="1"/>
|
||||
<EntitySet Name="SAP__UnitsOfMeasure" EntityType="cds_z00124ss25_restaurant.SAP__UnitOfMeasure" sap:content-version="1"/>
|
||||
<EntitySet Name="SAP__MyDocumentDescriptions" EntityType="cds_z00124ss25_restaurant.SAP__DocumentDescription" sap:content-version="1"/>
|
||||
<EntitySet Name="SAP__FormatSet" EntityType="cds_z00124ss25_restaurant.SAP__Format" sap:creatable="false" sap:updatable="false" sap:deletable="false" sap:pageable="false" sap:addressable="false" sap:content-version="1"/>
|
||||
<EntitySet Name="SAP__PDFStandardSet" EntityType="cds_z00124ss25_restaurant.SAP__PDFStandard" sap:creatable="false" sap:updatable="false" sap:deletable="false" sap:pageable="false" sap:addressable="false" sap:content-version="1"/>
|
||||
<EntitySet Name="SAP__TableColumnsSet" EntityType="cds_z00124ss25_restaurant.SAP__TableColumns" sap:creatable="false" sap:updatable="false" sap:deletable="false" sap:pageable="false" sap:addressable="false" sap:content-version="1"/>
|
||||
<EntitySet Name="SAP__CoverPageSet" EntityType="cds_z00124ss25_restaurant.SAP__CoverPage" sap:creatable="false" sap:updatable="false" sap:deletable="false" sap:pageable="false" sap:addressable="false" sap:content-version="1"/>
|
||||
<EntitySet Name="SAP__SignatureSet" EntityType="cds_z00124ss25_restaurant.SAP__Signature" sap:creatable="false" sap:updatable="false" sap:deletable="false" sap:pageable="false" sap:addressable="false" sap:content-version="1"/>
|
||||
<EntitySet Name="SAP__ValueHelpSet" EntityType="cds_z00124ss25_restaurant.SAP__ValueHelp" sap:content-version="1"/>
|
||||
<EntitySet Name="reservationPos" EntityType="cds_z00124ss25_restaurant.reservationPosType" sap:content-version="1"/>
|
||||
<EntitySet Name="tablePos" EntityType="cds_z00124ss25_restaurant.tablePosType" sap:content-version="1"/>
|
||||
<EntitySet Name="Z_00_124_SS25_DECO" EntityType="cds_z00124ss25_restaurant.Z_00_124_SS25_DECOType" sap:creatable="false" sap:updatable="false" sap:deletable="false" sap:content-version="1"/>
|
||||
<EntitySet Name="Z_00_124_SS25_LOC" EntityType="cds_z00124ss25_restaurant.Z_00_124_SS25_LOCType" sap:creatable="false" sap:updatable="false" sap:deletable="false" sap:content-version="1"/>
|
||||
<AssociationSet Name="assoc_C5BBE7D3C6BD80AD3FA4BAAEFF61E987" Association="cds_z00124ss25_restaurant.assoc_C5BBE7D3C6BD80AD3FA4BAAEFF61E987" sap:creatable="false" sap:updatable="false" sap:deletable="false" sap:content-version="1">
|
||||
<End EntitySet="tablePos" Role="FromRole_assoc_C5BBE7D3C6BD80AD3FA4BAAEFF61E987"/>
|
||||
<End EntitySet="reservationPos" Role="ToRole_assoc_C5BBE7D3C6BD80AD3FA4BAAEFF61E987"/>
|
||||
</AssociationSet>
|
||||
<AssociationSet Name="to_formatSet" Association="cds_z00124ss25_restaurant.to_format" sap:creatable="false" sap:updatable="false" sap:deletable="false" sap:content-version="1">
|
||||
<End EntitySet="SAP__MyDocumentDescriptions" Role="FromRole_to_format"/>
|
||||
<End EntitySet="SAP__FormatSet" Role="ToRole_to_format"/>
|
||||
</AssociationSet>
|
||||
<AssociationSet Name="to_pdfstandardSet" Association="cds_z00124ss25_restaurant.to_pdfstandard" sap:creatable="false" sap:updatable="false" sap:deletable="false" sap:content-version="1">
|
||||
<End EntitySet="SAP__MyDocumentDescriptions" Role="FromRole_to_pdfstandard"/>
|
||||
<End EntitySet="SAP__PDFStandardSet" Role="ToRole_to_pdfstandard"/>
|
||||
</AssociationSet>
|
||||
<AssociationSet Name="to_tablecolumnsSet" Association="cds_z00124ss25_restaurant.to_tablecolumns" sap:creatable="false" sap:updatable="false" sap:deletable="false" sap:content-version="1">
|
||||
<End EntitySet="SAP__MyDocumentDescriptions" Role="FromRole_to_tablecolumns"/>
|
||||
<End EntitySet="SAP__TableColumnsSet" Role="ToRole_to_tablecolumns"/>
|
||||
</AssociationSet>
|
||||
<AssociationSet Name="to_signatureSet" Association="cds_z00124ss25_restaurant.to_signature" sap:creatable="false" sap:updatable="false" sap:deletable="false" sap:content-version="1">
|
||||
<End EntitySet="SAP__MyDocumentDescriptions" Role="FromRole_to_signature"/>
|
||||
<End EntitySet="SAP__SignatureSet" Role="ToRole_to_signature"/>
|
||||
</AssociationSet>
|
||||
<AssociationSet Name="to_coverpageSet" Association="cds_z00124ss25_restaurant.to_coverpage" sap:creatable="false" sap:updatable="false" sap:deletable="false" sap:content-version="1">
|
||||
<End EntitySet="SAP__MyDocumentDescriptions" Role="FromRole_to_coverpage"/>
|
||||
<End EntitySet="SAP__CoverPageSet" Role="ToRole_to_coverpage"/>
|
||||
</AssociationSet>
|
||||
</EntityContainer>
|
||||
<Annotations Target="cds_z00124ss25_restaurant.tablePosType/Decoration" xmlns="http://docs.oasis-open.org/odata/ns/edm">
|
||||
<Annotation Term="Common.ValueList">
|
||||
<Record>
|
||||
<PropertyValue Property="Label" String="Decoration Value"/>
|
||||
<PropertyValue Property="CollectionPath" String="Z_00_124_SS25_DECO"/>
|
||||
<PropertyValue Property="SearchSupported" Bool="false"/>
|
||||
<PropertyValue Property="Parameters">
|
||||
<Collection>
|
||||
<Record Type="Common.ValueListParameterInOut">
|
||||
<PropertyValue Property="LocalDataProperty" PropertyPath="Decoration"/>
|
||||
<PropertyValue Property="ValueListProperty" String="Decoration"/>
|
||||
</Record>
|
||||
</Collection>
|
||||
</PropertyValue>
|
||||
</Record>
|
||||
</Annotation>
|
||||
<Annotation Term="Common.ValueListWithFixedValues"/>
|
||||
<Annotation Term="Common.FieldControl" EnumMember="Common.FieldControlType/Mandatory"/>
|
||||
</Annotations>
|
||||
<Annotations Target="cds_z00124ss25_restaurant.tablePosType/Location" xmlns="http://docs.oasis-open.org/odata/ns/edm">
|
||||
<Annotation Term="Common.ValueList">
|
||||
<Record>
|
||||
<PropertyValue Property="Label" String="Location Domain"/>
|
||||
<PropertyValue Property="CollectionPath" String="Z_00_124_SS25_LOC"/>
|
||||
<PropertyValue Property="SearchSupported" Bool="false"/>
|
||||
<PropertyValue Property="Parameters">
|
||||
<Collection>
|
||||
<Record Type="Common.ValueListParameterInOut">
|
||||
<PropertyValue Property="LocalDataProperty" PropertyPath="Location"/>
|
||||
<PropertyValue Property="ValueListProperty" String="Location"/>
|
||||
</Record>
|
||||
</Collection>
|
||||
</PropertyValue>
|
||||
</Record>
|
||||
</Annotation>
|
||||
<Annotation Term="Common.ValueListWithFixedValues"/>
|
||||
<Annotation Term="Common.FieldControl" EnumMember="Common.FieldControlType/Mandatory"/>
|
||||
</Annotations>
|
||||
<Annotations Target="cds_z00124ss25_restaurant.cds_z00124ss25_restaurant_Entities" xmlns="http://docs.oasis-open.org/odata/ns/edm">
|
||||
<Annotation Term="Common.ApplyMultiUnitBehaviorForSortingAndFiltering" Bool="true"/>
|
||||
</Annotations>
|
||||
<Annotations Target="cds_z00124ss25_restaurant.tablePosType/to_rese" xmlns="http://docs.oasis-open.org/odata/ns/edm">
|
||||
<Annotation Term="Common.Composition"/>
|
||||
</Annotations>
|
||||
<Annotations Target="cds_z00124ss25_restaurant.reservationPosType/BookedDate" xmlns="http://docs.oasis-open.org/odata/ns/edm">
|
||||
<Annotation Term="Common.FieldControl" EnumMember="Common.FieldControlType/Mandatory"/>
|
||||
</Annotations>
|
||||
<Annotations Target="cds_z00124ss25_restaurant.reservationPosType/BookedPeriod" xmlns="http://docs.oasis-open.org/odata/ns/edm">
|
||||
<Annotation Term="Common.FieldControl" EnumMember="Common.FieldControlType/Mandatory"/>
|
||||
</Annotations>
|
||||
<Annotations Target="cds_z00124ss25_restaurant.reservationPosType/BookedTime" xmlns="http://docs.oasis-open.org/odata/ns/edm">
|
||||
<Annotation Term="Common.FieldControl" EnumMember="Common.FieldControlType/Mandatory"/>
|
||||
</Annotations>
|
||||
<Annotations Target="cds_z00124ss25_restaurant.reservationPosType/CommentSection" xmlns="http://docs.oasis-open.org/odata/ns/edm">
|
||||
<Annotation Term="Common.FieldControl" EnumMember="Common.FieldControlType/Mandatory"/>
|
||||
</Annotations>
|
||||
<Annotations Target="cds_z00124ss25_restaurant.reservationPosType/NumOfGuests" xmlns="http://docs.oasis-open.org/odata/ns/edm">
|
||||
<Annotation Term="Common.FieldControl" EnumMember="Common.FieldControlType/Mandatory"/>
|
||||
</Annotations>
|
||||
<Annotations Target="cds_z00124ss25_restaurant.reservationPosType/ReservationName" xmlns="http://docs.oasis-open.org/odata/ns/edm">
|
||||
<Annotation Term="Common.FieldControl" EnumMember="Common.FieldControlType/Mandatory"/>
|
||||
</Annotations>
|
||||
<Annotations Target="cds_z00124ss25_restaurant.tablePosType/NumberOfSeats" xmlns="http://docs.oasis-open.org/odata/ns/edm">
|
||||
<Annotation Term="Common.FieldControl" EnumMember="Common.FieldControlType/Mandatory"/>
|
||||
</Annotations>
|
||||
<Annotations Target="cds_z00124ss25_restaurant.cds_z00124ss25_restaurant_Entities/reservationPos" xmlns="http://docs.oasis-open.org/odata/ns/edm">
|
||||
<Annotation Term="Capabilities.NavigationRestrictions">
|
||||
<Record>
|
||||
<PropertyValue Property="RestrictedProperties">
|
||||
<Collection>
|
||||
<Record>
|
||||
<PropertyValue Property="NavigationProperty" NavigationPropertyPath="to_tabe"/>
|
||||
<PropertyValue Property="InsertRestrictions">
|
||||
<Record>
|
||||
<PropertyValue Property="Insertable" Bool="false"/>
|
||||
</Record>
|
||||
</PropertyValue>
|
||||
</Record>
|
||||
</Collection>
|
||||
</PropertyValue>
|
||||
</Record>
|
||||
</Annotation>
|
||||
<Annotation Term="SAP__core.OptimisticConcurrency">
|
||||
<Collection/>
|
||||
</Annotation>
|
||||
</Annotations>
|
||||
<Annotations Target="cds_z00124ss25_restaurant.cds_z00124ss25_restaurant_Entities/tablePos" xmlns="http://docs.oasis-open.org/odata/ns/edm">
|
||||
<Annotation Term="Capabilities.NavigationRestrictions">
|
||||
<Record>
|
||||
<PropertyValue Property="RestrictedProperties">
|
||||
<Collection>
|
||||
<Record>
|
||||
<PropertyValue Property="NavigationProperty" NavigationPropertyPath="to_rese"/>
|
||||
<PropertyValue Property="InsertRestrictions">
|
||||
<Record>
|
||||
<PropertyValue Property="Insertable" Bool="true"/>
|
||||
</Record>
|
||||
</PropertyValue>
|
||||
</Record>
|
||||
</Collection>
|
||||
</PropertyValue>
|
||||
</Record>
|
||||
</Annotation>
|
||||
<Annotation Term="SAP__core.OptimisticConcurrency">
|
||||
<Collection/>
|
||||
</Annotation>
|
||||
</Annotations>
|
||||
<Annotations Target="cds_z00124ss25_restaurant.cds_z00124ss25_restaurant_Entities" xmlns="http://docs.oasis-open.org/odata/ns/edm">
|
||||
<Annotation Term="Org.OData.Capabilities.V1.BatchSupport">
|
||||
<Record Type="Org.OData.Capabilities.V1.BatchSupportType">
|
||||
<PropertyValue Property="ReferencesAcrossChangeSetsSupported" Bool="true"/>
|
||||
</Record>
|
||||
</Annotation>
|
||||
<Annotation Term="SAP__CodeList.CurrencyCodes">
|
||||
<Record>
|
||||
<PropertyValue Property="Url" String="./$metadata"/>
|
||||
<PropertyValue Property="CollectionPath" String="SAP__Currencies"/>
|
||||
</Record>
|
||||
</Annotation>
|
||||
<Annotation Term="SAP__CodeList.UnitsOfMeasure">
|
||||
<Record>
|
||||
<PropertyValue Property="Url" String="./$metadata"/>
|
||||
<PropertyValue Property="CollectionPath" String="SAP__UnitsOfMeasure"/>
|
||||
</Record>
|
||||
</Annotation>
|
||||
<Annotation Term="SAP__PDF.Features">
|
||||
<Record>
|
||||
<PropertyValue Property="DocumentDescriptionReference" String="./$metadata"/>
|
||||
<PropertyValue Property="DocumentDescriptionCollection" String="SAP__MyDocumentDescriptions"/>
|
||||
<PropertyValue Property="ArchiveFormat" Bool="true"/>
|
||||
<PropertyValue Property="CoverPage" Bool="true"/>
|
||||
<PropertyValue Property="Signature" Bool="true"/>
|
||||
<PropertyValue Property="FitToPage" Bool="true"/>
|
||||
<PropertyValue Property="FontName" Bool="true"/>
|
||||
<PropertyValue Property="FontSize" Bool="true"/>
|
||||
<PropertyValue Property="Margin" Bool="true"/>
|
||||
<PropertyValue Property="Border" Bool="true"/>
|
||||
<PropertyValue Property="ResultSizeDefault" Int="20000"/>
|
||||
<PropertyValue Property="ResultSizeMaximum" Int="20000"/>
|
||||
</Record>
|
||||
</Annotation>
|
||||
<Annotation Term="SAP__CodeList.SAP__DocumentDescription">
|
||||
<Record>
|
||||
<PropertyValue Property="Url" String="./$metadata"/>
|
||||
<PropertyValue Property="CollectionPath" String="SAP__MyDocumentDescriptions"/>
|
||||
</Record>
|
||||
</Annotation>
|
||||
</Annotations>
|
||||
<Annotations Target="cds_z00124ss25_restaurant.SAP__Currency/CurrencyCode" xmlns="http://docs.oasis-open.org/odata/ns/edm">
|
||||
<Annotation Term="SAP__common.Text" Path="Text"/>
|
||||
<Annotation Term="SAP__common.UnitSpecificScale" Path="DecimalPlaces"/>
|
||||
<Annotation Term="SAP__CodeList.StandardCode" Path="ISOCode"/>
|
||||
</Annotations>
|
||||
<Annotations Target="cds_z00124ss25_restaurant.SAP__UnitOfMeasure/UnitCode" xmlns="http://docs.oasis-open.org/odata/ns/edm">
|
||||
<Annotation Term="SAP__common.Text" Path="Text"/>
|
||||
<Annotation Term="SAP__common.UnitSpecificScale" Path="DecimalPlaces"/>
|
||||
<Annotation Term="SAP__CodeList.StandardCode" Path="ISOCode"/>
|
||||
<Annotation Term="SAP__CodeList.ExternalCode" Path="ExternalCode"/>
|
||||
</Annotations>
|
||||
<Annotations Target="cds_z00124ss25_restaurant.SAP__UnitOfMeasure" xmlns="http://docs.oasis-open.org/odata/ns/edm">
|
||||
<Annotation Term="SAP__core.AlternateKeys">
|
||||
<Collection>
|
||||
<Record>
|
||||
<PropertyValue Property="Key">
|
||||
<Collection>
|
||||
<Record>
|
||||
<PropertyValue Property="Name" Path="ExternalCode"/>
|
||||
<PropertyValue Property="Alias" String="ExternalCode"/>
|
||||
</Record>
|
||||
</Collection>
|
||||
</PropertyValue>
|
||||
</Record>
|
||||
</Collection>
|
||||
</Annotation>
|
||||
</Annotations>
|
||||
<Annotations Target="cds_z00124ss25_restaurant.SAP__DocumentDescription/CreatedBy" xmlns="http://docs.oasis-open.org/odata/ns/edm">
|
||||
<Annotation Term="SAP__core.Computed"/>
|
||||
</Annotations>
|
||||
<Annotations Target="cds_z00124ss25_restaurant.SAP__DocumentDescription/CreatedAt" xmlns="http://docs.oasis-open.org/odata/ns/edm">
|
||||
<Annotation Term="SAP__core.Computed"/>
|
||||
</Annotations>
|
||||
<Annotations Target="cds_z00124ss25_restaurant.SAP__DocumentDescription" xmlns="http://docs.oasis-open.org/odata/ns/edm">
|
||||
<Annotation Term="SAP__capabilties.InsertRestrictions">
|
||||
<Record>
|
||||
<PropertyValue Property="Insertable" Bool="false"/>
|
||||
</Record>
|
||||
</Annotation>
|
||||
<Annotation Term="SAP__capabilties.UpdateRestrictions">
|
||||
<Record>
|
||||
<PropertyValue Property="Updatable" Bool="false"/>
|
||||
<PropertyValue Property="QueryOptions">
|
||||
<Record>
|
||||
<PropertyValue Property="SelectSupported" Bool="true"/>
|
||||
</Record>
|
||||
</PropertyValue>
|
||||
</Record>
|
||||
</Annotation>
|
||||
<Annotation Term="SAP__capabilties.DeleteRestrictions">
|
||||
<Record>
|
||||
<PropertyValue Property="Deletable" Bool="false"/>
|
||||
</Record>
|
||||
</Annotation>
|
||||
<Annotation Term="SAP__capabilties.FilterRestrictions">
|
||||
<Record>
|
||||
<PropertyValue Property="FilterExpressionRestrictions">
|
||||
<Collection>
|
||||
<Record>
|
||||
<PropertyValue Property="Property" PropertyPath="Format/Orientation"/>
|
||||
<PropertyValue Property="AllowedExpressions" String="Multivalue"/>
|
||||
</Record>
|
||||
<Record>
|
||||
<PropertyValue Property="Property" PropertyPath="Format/PaperSize"/>
|
||||
<PropertyValue Property="AllowedExpressions" String="Multivalue"/>
|
||||
</Record>
|
||||
</Collection>
|
||||
</PropertyValue>
|
||||
</Record>
|
||||
</Annotation>
|
||||
</Annotations>
|
||||
<Annotations Target="cds_z00124ss25_restaurant.SAP__Format/FitToPage/ErrorRecoveryBehavior" xmlns="http://docs.oasis-open.org/odata/ns/edm">
|
||||
<Annotation Term="SAP__common.ValueListReferences">
|
||||
<Record>
|
||||
<PropertyValue Property="Url" String="./$metadata"/>
|
||||
<PropertyValue Property="CollectionPath" String="../../../../SAP__ValueHelpSet?$filter=VALUEHELP%20eq%20%27ErrorRecoveryBehaviour%27"/>
|
||||
</Record>
|
||||
</Annotation>
|
||||
<Annotation Term="SAP__common.ValueListWithFixedValues"/>
|
||||
</Annotations>
|
||||
<Annotations Target="cds_z00124ss25_restaurant.SAP__Format/FontName" xmlns="http://docs.oasis-open.org/odata/ns/edm">
|
||||
<Annotation Term="SAP__common.ValueListReferences">
|
||||
<Record>
|
||||
<PropertyValue Property="Url" String="./$metadata"/>
|
||||
<PropertyValue Property="CollectionPath" String="SAP__ValueHelpSet?$filter=VALUEHELP%20eq%20%27FontName%27"/>
|
||||
</Record>
|
||||
</Annotation>
|
||||
<Annotation Term="SAP__common.ValueListWithFixedValues"/>
|
||||
</Annotations>
|
||||
<Annotations Target="cds_z00124ss25_restaurant.SAP__Format/PaperSize" xmlns="http://docs.oasis-open.org/odata/ns/edm">
|
||||
<Annotation Term="SAP__common.ValueListReferences">
|
||||
<Record>
|
||||
<PropertyValue Property="Url" String="./$metadata"/>
|
||||
<PropertyValue Property="CollectionPath" String="SAP__ValueHelpSet?$filter=VALUEHELP%20eq%20%27PaperSize%27"/>
|
||||
</Record>
|
||||
</Annotation>
|
||||
<Annotation Term="SAP__common.ValueListWithFixedValues"/>
|
||||
</Annotations>
|
||||
<Annotations Target="cds_z00124ss25_restaurant.SAP__Format/Orientation" xmlns="http://docs.oasis-open.org/odata/ns/edm">
|
||||
<Annotation Term="SAP__common.ValueListReferences">
|
||||
<Record>
|
||||
<PropertyValue Property="Url" String="./$metadata"/>
|
||||
<PropertyValue Property="CollectionPath" String="SAP__ValueHelpSet?$filter=VALUEHELP%20eq%20%27FontName%27"/>
|
||||
</Record>
|
||||
</Annotation>
|
||||
<Annotation Term="SAP__common.ValueListWithFixedValues"/>
|
||||
</Annotations>
|
||||
<Annotations Target="cds_z00124ss25_restaurant.SAP__TableColumns/HorizontalAlignment" xmlns="http://docs.oasis-open.org/odata/ns/edm">
|
||||
<Annotation Term="SAP__common.ValueListReferences">
|
||||
<Record>
|
||||
<PropertyValue Property="Url" String="./$metadata"/>
|
||||
<PropertyValue Property="CollectionPath" String="SAP__ValueHelpSet?$filter=VALUEHELP%20eq%20%27HorizontalAlignment%27"/>
|
||||
</Record>
|
||||
</Annotation>
|
||||
<Annotation Term="SAP__common.ValueListWithFixedValues"/>
|
||||
</Annotations>
|
||||
<atom:link rel="self" href="https://s40lp1.ucc.cit.tum.de/sap/opu/odata/sap/Z_00_124_SS25_RES_SRV/$metadata" xmlns:atom="http://www.w3.org/2005/Atom"/>
|
||||
<atom:link rel="latest-version" href="https://s40lp1.ucc.cit.tum.de/sap/opu/odata/sap/Z_00_124_SS25_RES_SRV/$metadata" xmlns:atom="http://www.w3.org/2005/Atom"/>
|
||||
</Schema>
|
||||
</edmx:DataServices>
|
||||
</edmx:Edmx>
|
138
webapp/manifest.json
Normal file
138
webapp/manifest.json
Normal file
@ -0,0 +1,138 @@
|
||||
{
|
||||
"_version": "1.48.0",
|
||||
"sap.app": {
|
||||
"id": "restaurant.z00124ss25restaurant",
|
||||
"type": "application",
|
||||
"i18n": "i18n/i18n.properties",
|
||||
"applicationVersion": {
|
||||
"version": "0.0.1"
|
||||
},
|
||||
"title": "{{appTitle}}",
|
||||
"description": "{{appDescription}}",
|
||||
"resources": "resources.json",
|
||||
"sourceTemplate": {
|
||||
"id": "@sap/generator-fiori:basic",
|
||||
"version": "1.17.5",
|
||||
"toolsId": "22070856-1a55-41ca-a0d3-83e61f57c569"
|
||||
},
|
||||
"dataSources": {
|
||||
"Z_00_124_SS25_RES_SRV_VAN": {
|
||||
"uri": "/sap/opu/odata/IWFND/CATALOGSERVICE;v=2/Annotations(TechnicalName='Z_00_124_SS25_RES_SRV_VAN',Version='0001')/$value/",
|
||||
"type": "ODataAnnotation",
|
||||
"settings": {
|
||||
"localUri": "localService/mainService/Z_00_124_SS25_RES_SRV_VAN.xml"
|
||||
}
|
||||
},
|
||||
"mainService": {
|
||||
"uri": "/sap/opu/odata/sap/Z_00_124_SS25_RES_SRV/",
|
||||
"type": "OData",
|
||||
"settings": {
|
||||
"annotations": [
|
||||
"Z_00_124_SS25_RES_SRV_VAN"
|
||||
],
|
||||
"localUri": "localService/mainService/metadata.xml",
|
||||
"odataVersion": "2.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"sap.ui": {
|
||||
"technology": "UI5",
|
||||
"icons": {
|
||||
"icon": "",
|
||||
"favIcon": "",
|
||||
"phone": "",
|
||||
"phone@2": "",
|
||||
"tablet": "",
|
||||
"tablet@2": ""
|
||||
},
|
||||
"deviceTypes": {
|
||||
"desktop": true,
|
||||
"tablet": true,
|
||||
"phone": true
|
||||
}
|
||||
},
|
||||
"sap.ui5": {
|
||||
"flexEnabled": false,
|
||||
"dependencies": {
|
||||
"minUI5Version": "1.108.33",
|
||||
"libs": {
|
||||
"sap.m": {},
|
||||
"sap.ui.core": {}
|
||||
}
|
||||
},
|
||||
"contentDensities": {
|
||||
"compact": true,
|
||||
"cozy": true
|
||||
},
|
||||
"models": {
|
||||
"i18n": {
|
||||
"type": "sap.ui.model.resource.ResourceModel",
|
||||
"settings": {
|
||||
"bundleName": "restaurant.z00124ss25restaurant.i18n.i18n"
|
||||
}
|
||||
},
|
||||
"": {
|
||||
"dataSource": "mainService",
|
||||
"preload": true,
|
||||
"settings": {}
|
||||
}
|
||||
},
|
||||
"resources": {
|
||||
"css": [
|
||||
{
|
||||
"uri": "css/style.css"
|
||||
}
|
||||
]
|
||||
},
|
||||
"routing": {
|
||||
"config": {
|
||||
"routerClass": "sap.m.routing.Router",
|
||||
"viewType": "XML",
|
||||
"async": true,
|
||||
"viewPath": "restaurant.z00124ss25restaurant.view",
|
||||
"controlAggregation": "pages",
|
||||
"controlId": "app",
|
||||
"clearControlAggregation": false
|
||||
},
|
||||
"routes": [
|
||||
{
|
||||
"name": "RoutetablePos",
|
||||
"pattern": ":?query:",
|
||||
"target": [
|
||||
"TargettablePos"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "RouteManagerReservation",
|
||||
"pattern": "list",
|
||||
"target": [
|
||||
"TargetManagerReservation"
|
||||
]
|
||||
}
|
||||
],
|
||||
"targets": {
|
||||
"TargettablePos": {
|
||||
"viewType": "XML",
|
||||
"transition": "slide",
|
||||
"clearControlAggregation": false,
|
||||
"viewId": "tablePos",
|
||||
"viewName": "tablePos"
|
||||
},
|
||||
"TargetManagerReservation": {
|
||||
"viewType": "XML",
|
||||
"transition": "slide",
|
||||
"clearControlAggregation": false,
|
||||
"viewId": "manager",
|
||||
"viewName": "manager"
|
||||
}
|
||||
}
|
||||
},
|
||||
"rootView": {
|
||||
"viewName": "restaurant.z00124ss25restaurant.view.App",
|
||||
"type": "XML",
|
||||
"async": true,
|
||||
"id": "App"
|
||||
}
|
||||
}
|
||||
}
|
20
webapp/model/models.js
Normal file
20
webapp/model/models.js
Normal file
@ -0,0 +1,20 @@
|
||||
sap.ui.define([
|
||||
"sap/ui/model/json/JSONModel",
|
||||
"sap/ui/Device"
|
||||
],
|
||||
function (JSONModel, Device) {
|
||||
"use strict";
|
||||
|
||||
return {
|
||||
/**
|
||||
* Provides runtime information for the device the UI5 app is running on as a JSONModel.
|
||||
* @returns {sap.ui.model.json.JSONModel} The device model.
|
||||
*/
|
||||
createDeviceModel: function () {
|
||||
var oModel = new JSONModel(Device);
|
||||
oModel.setDefaultBindingMode("OneWay");
|
||||
return oModel;
|
||||
}
|
||||
};
|
||||
|
||||
});
|
13
webapp/test/integration/AllJourneys.js
Normal file
13
webapp/test/integration/AllJourneys.js
Normal file
@ -0,0 +1,13 @@
|
||||
sap.ui.define([
|
||||
"sap/ui/test/Opa5",
|
||||
"./arrangements/Startup",
|
||||
"./NavigationJourney"
|
||||
], function (Opa5, Startup) {
|
||||
"use strict";
|
||||
|
||||
Opa5.extendConfig({
|
||||
arrangements: new Startup(),
|
||||
viewNamespace: "restaurant.z00124ss25restaurant.view.",
|
||||
autoWait: true
|
||||
});
|
||||
});
|
23
webapp/test/integration/NavigationJourney.js
Normal file
23
webapp/test/integration/NavigationJourney.js
Normal file
@ -0,0 +1,23 @@
|
||||
/*global QUnit*/
|
||||
|
||||
sap.ui.define([
|
||||
"sap/ui/test/opaQunit",
|
||||
"./pages/App",
|
||||
"./pages/tablePos"
|
||||
], function (opaTest) {
|
||||
"use strict";
|
||||
|
||||
QUnit.module("Navigation Journey");
|
||||
|
||||
opaTest("Should see the initial page of the app", function (Given, When, Then) {
|
||||
// Arrangements
|
||||
Given.iStartMyApp();
|
||||
|
||||
// Assertions
|
||||
Then.onTheAppPage.iShouldSeeTheApp();
|
||||
Then.onTheViewPage.iShouldSeeThePageView();
|
||||
|
||||
//Cleanup
|
||||
Then.iTeardownMyApp();
|
||||
});
|
||||
});
|
25
webapp/test/integration/arrangements/Startup.js
Normal file
25
webapp/test/integration/arrangements/Startup.js
Normal file
@ -0,0 +1,25 @@
|
||||
sap.ui.define([
|
||||
"sap/ui/test/Opa5"
|
||||
], function (Opa5) {
|
||||
"use strict";
|
||||
|
||||
return Opa5.extend("integration.arrangements.Startup", {
|
||||
|
||||
iStartMyApp: function (oOptionsParameter) {
|
||||
var oOptions = oOptionsParameter || {};
|
||||
|
||||
// start the app with a minimal delay to make tests fast but still async to discover basic timing issues
|
||||
oOptions.delay = oOptions.delay || 50;
|
||||
|
||||
// start the app UI component
|
||||
this.iStartMyUIComponent({
|
||||
componentConfig: {
|
||||
name: "restaurant.z00124ss25restaurant",
|
||||
async: true
|
||||
},
|
||||
hash: oOptions.hash,
|
||||
autoWait: oOptions.autoWait
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
29
webapp/test/integration/opaTests.qunit.html
Normal file
29
webapp/test/integration/opaTests.qunit.html
Normal file
@ -0,0 +1,29 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>Integration tests for Basic Template</title>
|
||||
|
||||
<script
|
||||
id="sap-ui-bootstrap"
|
||||
src="../../resources/sap-ui-core.js"
|
||||
data-sap-ui-theme="sap_horizon"
|
||||
data-sap-ui-resourceroots='{
|
||||
"restaurant.z00124ss25restaurant": "../../",
|
||||
"integration": "./"
|
||||
}'
|
||||
data-sap-ui-animation="false"
|
||||
data-sap-ui-compatVersion="edge"
|
||||
data-sap-ui-async="true"
|
||||
data-sap-ui-preload="async"
|
||||
data-sap-ui-oninit="module:integration/opaTests.qunit">
|
||||
</script>
|
||||
<link rel="stylesheet" type="text/css" href="../../resources/sap/ui/thirdparty/qunit-2.css">
|
||||
<script src="../../resources/sap/ui/thirdparty/qunit-2.js"></script>
|
||||
<script src="../../resources/sap/ui/qunit/qunit-junit.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="qunit"></div>
|
||||
<div id="qunit-fixture"></div>
|
||||
</body>
|
||||
</html>
|
7
webapp/test/integration/opaTests.qunit.js
Normal file
7
webapp/test/integration/opaTests.qunit.js
Normal file
@ -0,0 +1,7 @@
|
||||
/* global QUnit */
|
||||
|
||||
sap.ui.require(["restaurant/z00124ss25restaurant/test/integration/AllJourneys"
|
||||
], function () {
|
||||
QUnit.config.autostart = false;
|
||||
QUnit.start();
|
||||
});
|
28
webapp/test/integration/pages/App.js
Normal file
28
webapp/test/integration/pages/App.js
Normal file
@ -0,0 +1,28 @@
|
||||
sap.ui.define([
|
||||
"sap/ui/test/Opa5"
|
||||
], function (Opa5) {
|
||||
"use strict";
|
||||
var sViewName = "App";
|
||||
|
||||
Opa5.createPageObjects({
|
||||
onTheAppPage: {
|
||||
|
||||
actions: {},
|
||||
|
||||
assertions: {
|
||||
|
||||
iShouldSeeTheApp: function () {
|
||||
return this.waitFor({
|
||||
id: "app",
|
||||
viewName: sViewName,
|
||||
success: function () {
|
||||
Opa5.assert.ok(true, "The " + sViewName + " view is displayed");
|
||||
},
|
||||
errorMessage: "Did not find the " + sViewName + " view"
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
});
|
28
webapp/test/integration/pages/tablePos.js
Normal file
28
webapp/test/integration/pages/tablePos.js
Normal file
@ -0,0 +1,28 @@
|
||||
sap.ui.define([
|
||||
"sap/ui/test/Opa5"
|
||||
], function (Opa5) {
|
||||
"use strict";
|
||||
var sViewName = "tablePos";
|
||||
|
||||
Opa5.createPageObjects({
|
||||
onTheViewPage: {
|
||||
|
||||
actions: {},
|
||||
|
||||
assertions: {
|
||||
|
||||
iShouldSeeThePageView: function () {
|
||||
return this.waitFor({
|
||||
id: "page",
|
||||
viewName: sViewName,
|
||||
success: function () {
|
||||
Opa5.assert.ok(true, "The " + sViewName + " view is displayed");
|
||||
},
|
||||
errorMessage: "Did not find the " + sViewName + " view"
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
});
|
9
webapp/test/testsuite.qunit.html
Normal file
9
webapp/test/testsuite.qunit.html
Normal file
@ -0,0 +1,9 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>QUnit test suite</title>
|
||||
<script src="../resources/sap/ui/qunit/qunit-redirect.js"></script>
|
||||
<script src="testsuite.qunit.js" data-sap-ui-testsuite></script>
|
||||
</head>
|
||||
<body></body>
|
||||
</html>
|
16
webapp/test/testsuite.qunit.js
Normal file
16
webapp/test/testsuite.qunit.js
Normal file
@ -0,0 +1,16 @@
|
||||
/* global window, parent, location */
|
||||
|
||||
// eslint-disable-next-line fiori-custom/sap-no-global-define
|
||||
|
||||
window.suite = function() {
|
||||
"use strict";
|
||||
|
||||
// eslint-disable-next-line
|
||||
var oSuite = new parent.jsUnitTestSuite(),
|
||||
|
||||
sContextPath = location.pathname.substring(0, location.pathname.lastIndexOf('/') + 1);
|
||||
oSuite.addTestPage(sContextPath + 'unit/unitTests.qunit.html');
|
||||
oSuite.addTestPage(sContextPath + 'integration/opaTests.qunit.html');
|
||||
|
||||
return oSuite;
|
||||
};
|
5
webapp/test/unit/AllTests.js
Normal file
5
webapp/test/unit/AllTests.js
Normal file
@ -0,0 +1,5 @@
|
||||
sap.ui.define([
|
||||
"restaurant/z00124ss25restaurant/test/unit/controller/tablePos.controller"
|
||||
], function () {
|
||||
"use strict";
|
||||
});
|
16
webapp/test/unit/controller/tablePos.controller.js
Normal file
16
webapp/test/unit/controller/tablePos.controller.js
Normal file
@ -0,0 +1,16 @@
|
||||
/*global QUnit*/
|
||||
|
||||
sap.ui.define([
|
||||
"restaurant/z00124ss25restaurant/controller/tablePos.controller"
|
||||
], function (Controller) {
|
||||
"use strict";
|
||||
|
||||
QUnit.module("tablePos Controller");
|
||||
|
||||
QUnit.test("I should test the tablePos controller", function (assert) {
|
||||
var oAppController = new Controller();
|
||||
oAppController.onInit();
|
||||
assert.ok(oAppController);
|
||||
});
|
||||
|
||||
});
|
27
webapp/test/unit/unitTests.qunit.html
Normal file
27
webapp/test/unit/unitTests.qunit.html
Normal file
@ -0,0 +1,27 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Unit tests for restaurant.z00124ss25restaurant</title>
|
||||
<script
|
||||
id="sap-ui-bootstrap"
|
||||
src="../../resources/sap-ui-core.js"
|
||||
data-sap-ui-resourceroots='{
|
||||
"restaurant/z00124ss25restaurant": "../../",
|
||||
"unit": "."
|
||||
}'
|
||||
data-sap-ui-async="true"
|
||||
data-sap-ui-oninit="module:unit/unitTests.qunit">
|
||||
</script>
|
||||
<link rel="stylesheet" type="text/css" href="../../resources/sap/ui/thirdparty/qunit-2.css">
|
||||
<script src="../../resources/sap/ui/thirdparty/qunit-2.js"></script>
|
||||
<script src="../../resources/sap/ui/qunit/qunit-junit.js"></script>
|
||||
<script src="../../resources/sap/ui/qunit/qunit-coverage.js"></script>
|
||||
<script src="../../resources/sap/ui/thirdparty/sinon.js"></script>
|
||||
<script src="../../resources/sap/ui/thirdparty/sinon-qunit.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="qunit"></div>
|
||||
<div id="qunit-fixture"></div>
|
||||
</body>
|
||||
</html>
|
12
webapp/test/unit/unitTests.qunit.js
Normal file
12
webapp/test/unit/unitTests.qunit.js
Normal file
@ -0,0 +1,12 @@
|
||||
/* global QUnit */
|
||||
QUnit.config.autostart = false;
|
||||
|
||||
sap.ui.getCore().attachInit(function () {
|
||||
"use strict";
|
||||
|
||||
sap.ui.require([
|
||||
"restaurant/z00124ss25restaurant/test/unit/AllTests"
|
||||
], function () {
|
||||
QUnit.start();
|
||||
});
|
||||
});
|
13
webapp/utils/Utils.js
Normal file
13
webapp/utils/Utils.js
Normal file
@ -0,0 +1,13 @@
|
||||
sap.ui.define([], function () {
|
||||
"use strict";
|
||||
|
||||
return {
|
||||
padAndEncodeId: function (id) {
|
||||
return encodeURIComponent(id.padStart(9, "%20"));
|
||||
},
|
||||
|
||||
exampleUtility: function () {
|
||||
return "Hello from utility!";
|
||||
}
|
||||
};
|
||||
});
|
7
webapp/view/App.view.xml
Normal file
7
webapp/view/App.view.xml
Normal file
@ -0,0 +1,7 @@
|
||||
<mvc:View controllerName="restaurant.z00124ss25restaurant.controller.App"
|
||||
xmlns:html="http://www.w3.org/1999/xhtml"
|
||||
xmlns:mvc="sap.ui.core.mvc" displayBlock="true"
|
||||
xmlns="sap.m">
|
||||
<App id="app">
|
||||
</App>
|
||||
</mvc:View>
|
149
webapp/view/fragments/CreateTable.fragment.xml
Normal file
149
webapp/view/fragments/CreateTable.fragment.xml
Normal file
@ -0,0 +1,149 @@
|
||||
<core:FragmentDefinition
|
||||
xmlns="sap.m"
|
||||
xmlns:f="sap.ui.layout.form"
|
||||
xmlns:core="sap.ui.core"
|
||||
xmlns:gantt="sap.gantt"
|
||||
xmlns:table="sap.ui.table"
|
||||
>
|
||||
<f:SimpleForm
|
||||
id="tableForm"
|
||||
editable="true"
|
||||
layout="ResponsiveGridLayout"
|
||||
labelSpanXL="4"
|
||||
labelSpanL="4"
|
||||
labelSpanM="4"
|
||||
labelSpanS="12"
|
||||
adjustLabelSpan="false"
|
||||
emptySpanXL="0"
|
||||
emptySpanL="0"
|
||||
emptySpanM="0"
|
||||
emptySpanS="0"
|
||||
columnsXL="1"
|
||||
columnsL="1"
|
||||
columnsM="1"
|
||||
singleContainerFullSize="false"
|
||||
class="sapUiContentPadding"
|
||||
>
|
||||
<f:content>
|
||||
<core:Title text="Table Management" />
|
||||
|
||||
<Label
|
||||
text="Decoration"
|
||||
design="Bold"
|
||||
required="true"
|
||||
/>
|
||||
<Select
|
||||
id="decoration"
|
||||
items="{
|
||||
path: '/Z_00_124_SS25_DECO'
|
||||
}"
|
||||
change=".onTableChange"
|
||||
>
|
||||
<core:Item
|
||||
key="{Decoration}"
|
||||
text="{Decoration}"
|
||||
/>
|
||||
</Select>
|
||||
|
||||
<Label
|
||||
text="Location"
|
||||
design="Bold"
|
||||
required="true"
|
||||
labelFor="location"
|
||||
/>
|
||||
<Select
|
||||
id="location"
|
||||
items="{
|
||||
path: '/Z_00_124_SS25_LOC'
|
||||
}"
|
||||
change=".onTableChange"
|
||||
>
|
||||
<core:Item
|
||||
key="{Location}"
|
||||
text="{Location}"
|
||||
/>
|
||||
</Select>
|
||||
|
||||
<Label
|
||||
text="Number of Seats"
|
||||
design="Bold"
|
||||
required="true"
|
||||
/>
|
||||
<StepInput
|
||||
id="numofseats"
|
||||
required="true"
|
||||
min="1"
|
||||
max="12"
|
||||
step="1"
|
||||
value="1"
|
||||
/>
|
||||
|
||||
<!-- Buttons section -->
|
||||
<HBox justifyContent="End">
|
||||
<Button
|
||||
text="Save"
|
||||
type="Emphasized"
|
||||
press=".onCreateTable"
|
||||
/>
|
||||
<Button
|
||||
text="Cancel"
|
||||
press=".onCancelPress"
|
||||
class="sapUiSmallMarginBegin"
|
||||
/>
|
||||
</HBox>
|
||||
</f:content>
|
||||
</f:SimpleForm>
|
||||
<Panel
|
||||
headerText="Existing Tables"
|
||||
expandable="true"
|
||||
expanded="true"
|
||||
class="sapUiMediumMarginTop"
|
||||
>
|
||||
<Table
|
||||
id="tableList"
|
||||
items="{ path: '/tablePos' }"
|
||||
>
|
||||
<columns>
|
||||
<Column>
|
||||
<Text text="Table ID" />
|
||||
</Column>
|
||||
<Column>
|
||||
<Text text="Decoration" />
|
||||
</Column>
|
||||
<Column>
|
||||
<Text text="Location" />
|
||||
</Column>
|
||||
<Column>
|
||||
<Text text="Seats Count" />
|
||||
</Column>
|
||||
<Column>
|
||||
<Text text="Actions" />
|
||||
</Column>
|
||||
</columns>
|
||||
<items>
|
||||
<ColumnListItem>
|
||||
<cells>
|
||||
<Text text="{TableId}" />
|
||||
<Text text="{Decoration}" />
|
||||
<Text text="{Location}" />
|
||||
<Text text="{NumberOfSeats}" />
|
||||
<Button
|
||||
icon="sap-icon://edit"
|
||||
tooltip="Edit"
|
||||
type="Transparent"
|
||||
press=".onEditTable"
|
||||
/>
|
||||
</cells>
|
||||
</ColumnListItem>
|
||||
</items>
|
||||
</Table>
|
||||
</Panel>
|
||||
<!-- <Panel
|
||||
headerText="Existing Tables"
|
||||
expandable="true"
|
||||
expanded="true"
|
||||
class="sapUiMediumMarginTop"
|
||||
>
|
||||
|
||||
</Panel> -->
|
||||
</core:FragmentDefinition>
|
91
webapp/view/fragments/ViewDashboard.fragment.xml
Normal file
91
webapp/view/fragments/ViewDashboard.fragment.xml
Normal file
@ -0,0 +1,91 @@
|
||||
<core:FragmentDefinition
|
||||
xmlns="sap.m"
|
||||
xmlns:core="sap.ui.core"
|
||||
xmlns:viz="sap.viz.ui5.controls"
|
||||
xmlns:viz.data="sap.viz.ui5.data"
|
||||
xmlns:viz.feeds="sap.viz.ui5.controls.common.feeds"
|
||||
>
|
||||
<VBox
|
||||
class="sapUiContentPadding"
|
||||
width="100%"
|
||||
spacing="Large"
|
||||
height="auto"
|
||||
>
|
||||
<!-- Heading -->
|
||||
<Title
|
||||
text="Dashboard"
|
||||
class="sapUiMediumMarginBottom"
|
||||
/>
|
||||
|
||||
<!-- Summary Cards -->
|
||||
<HBox
|
||||
justifyContent="SpaceAround"
|
||||
width="100%"
|
||||
class="sapUiSmallMarginBottom"
|
||||
height="auto"
|
||||
>
|
||||
<!-- Enhanced VBox with proper height and padding -->
|
||||
<VBox alignItems="Center" class="dashboardCardReservation" height="200px" justifyContent="SpaceAround">
|
||||
<ObjectStatus
|
||||
text="Reservations"
|
||||
state="Success"
|
||||
icon="sap-icon://appointment"
|
||||
class="dashboardCardFontSmall"
|
||||
/>
|
||||
<ObjectNumber
|
||||
number="{dashboard>/totalReservations}"
|
||||
unit="Total"
|
||||
class="dashboardCardFontLarge"
|
||||
emphasized="true"
|
||||
/>
|
||||
<HBox height="10px" /> <!-- Spacer -->
|
||||
</VBox>
|
||||
<!-- Enhanced VBox with proper height and padding -->
|
||||
<VBox alignItems="Center" class="dashboardCardRevenue" height="200px" justifyContent="SpaceAround">
|
||||
<ObjectStatus
|
||||
text="Revenue"
|
||||
state="Information"
|
||||
icon="sap-icon://lead"
|
||||
class="dashboardCardFontSmall"
|
||||
/>
|
||||
<ObjectNumber
|
||||
number="{dashboard>/totalRevenue}"
|
||||
unit="EUR"
|
||||
class="dashboardCardFontLarge"
|
||||
emphasized="true"
|
||||
/>
|
||||
<HBox height="10px" /> <!-- Spacer -->
|
||||
</VBox>
|
||||
</HBox>
|
||||
|
||||
<!-- Combined Column + Line Chart -->
|
||||
<viz:VizFrame
|
||||
id="idComboChart"
|
||||
width="100%"
|
||||
height="400px"
|
||||
uiConfig="{applicationSet:'fiori'}"
|
||||
vizType="dual_combination"
|
||||
vizProperties="{ title: {text : 'Overall Status', visible : true}}"
|
||||
>
|
||||
<viz:dataset>
|
||||
<viz.data:FlattenedDataset
|
||||
data="{dashboard>/monthlyData}"
|
||||
>
|
||||
<viz.data:dimensions>
|
||||
<viz.data:DimensionDefinition name="Month" value="{dashboard>Month}" />
|
||||
</viz.data:dimensions>
|
||||
<viz.data:measures>
|
||||
<viz.data:MeasureDefinition name="Reservations" value="{dashboard>Count}" />
|
||||
<viz.data:MeasureDefinition name="Revenue" value="{dashboard>Revenue}" />
|
||||
</viz.data:measures>
|
||||
</viz.data:FlattenedDataset>
|
||||
</viz:dataset>
|
||||
|
||||
<viz:feeds>
|
||||
<viz.feeds:FeedItem uid="valueAxis" type="Measure" values="Reservations" />
|
||||
<viz.feeds:FeedItem uid="valueAxis2" type="Measure" values="Revenue" />
|
||||
<viz.feeds:FeedItem uid="categoryAxis" type="Dimension" values="Month" />
|
||||
</viz:feeds>
|
||||
</viz:VizFrame>
|
||||
</VBox>
|
||||
</core:FragmentDefinition>
|
125
webapp/view/fragments/viewReservation.fragment.xml
Normal file
125
webapp/view/fragments/viewReservation.fragment.xml
Normal file
@ -0,0 +1,125 @@
|
||||
<core:FragmentDefinition
|
||||
xmlns="sap.ui.table"
|
||||
xmlns:m="sap.m"
|
||||
xmlns:core="sap.ui.core"
|
||||
>
|
||||
<Table
|
||||
id="reservationTable"
|
||||
selectionMode="MultiToggle"
|
||||
enableSelectAll="false"
|
||||
rows="{
|
||||
path: '/reservationPos',
|
||||
parameters: {operationMode: 'Server'}
|
||||
}"
|
||||
threshold="15"
|
||||
enableBusyIndicator="true"
|
||||
ariaLabelledBy="title"
|
||||
width="100%"
|
||||
>
|
||||
<noData>
|
||||
<m:BusyIndicator class="sapUiMediumMargin" />
|
||||
</noData>
|
||||
<extension>
|
||||
<m:OverflowToolbar style="Clear">
|
||||
<!-- Left section with title -->
|
||||
<m:Title
|
||||
id="title"
|
||||
text="Reservation Lists"
|
||||
/>
|
||||
|
||||
<!-- Creates space that pushes the following items to the right -->
|
||||
<m:ToolbarSpacer />
|
||||
|
||||
<!-- Right section with controls -->
|
||||
<m:HBox alignItems="Center" justifyContent="End">
|
||||
<m:items>
|
||||
<m:Button
|
||||
icon="sap-icon://refresh"
|
||||
tooltip="Reinitialize Model"
|
||||
press="onModelRefresh"
|
||||
class="sapUiSmallMarginEnd"
|
||||
/>
|
||||
<m:SearchField
|
||||
id="reservationSearchField"
|
||||
width="15rem"
|
||||
placeholder="Search"
|
||||
liveChange="onSearchLiveChange"
|
||||
search="onSearch"
|
||||
showSearchButton="true"
|
||||
/>
|
||||
</m:items>
|
||||
</m:HBox>
|
||||
</m:OverflowToolbar>
|
||||
</extension>
|
||||
<columns>
|
||||
<Column
|
||||
sortProperty="ReservationId"
|
||||
filterProperty="ReservationId"
|
||||
autoResizable="true"
|
||||
>
|
||||
<m:Label text="Reservation Name" />
|
||||
<template>
|
||||
<m:Text
|
||||
text="{ReservationName}"
|
||||
wrapping="false"
|
||||
/>
|
||||
</template>
|
||||
</Column>
|
||||
|
||||
<Column
|
||||
sortProperty="NumOfGuests"
|
||||
filterProperty="NumOfGuests"
|
||||
autoResizable="true"
|
||||
>
|
||||
<m:Label text="Number of Guests" />
|
||||
<template>
|
||||
<m:Text
|
||||
text="{NumOfGuests}"
|
||||
wrapping="false"
|
||||
/>
|
||||
</template>
|
||||
</Column>
|
||||
|
||||
<Column
|
||||
sortProperty="BookedDate"
|
||||
filterProperty="BookedDate"
|
||||
autoResizable="true"
|
||||
>
|
||||
<m:Label text="Booked Date" />
|
||||
<template>
|
||||
<m:Text
|
||||
text="{path: 'BookedDate', formatter: '.formatDate'}"
|
||||
wrapping="false"
|
||||
/>
|
||||
</template>
|
||||
</Column>
|
||||
|
||||
<Column
|
||||
sortProperty="BookedTime"
|
||||
filterProperty="BookedTime"
|
||||
autoResizable="true"
|
||||
>
|
||||
<m:Label text="Booked Time" />
|
||||
<template>
|
||||
<m:Text
|
||||
text="{path: 'BookedTime', formatter: '.formatTime'}"
|
||||
/>
|
||||
</template>
|
||||
</Column>
|
||||
|
||||
<Column
|
||||
sortProperty="BookedPeriod"
|
||||
filterProperty="BookedPeriod"
|
||||
autoResizable="true"
|
||||
>
|
||||
<m:Label text="Booked Period" />
|
||||
<template>
|
||||
<m:Text
|
||||
text="{BookedPeriod}"
|
||||
wrapping="false"
|
||||
/>
|
||||
</template>
|
||||
</Column>
|
||||
</columns>
|
||||
</Table>
|
||||
</core:FragmentDefinition>
|
70
webapp/view/manager.view.xml
Normal file
70
webapp/view/manager.view.xml
Normal file
@ -0,0 +1,70 @@
|
||||
<mvc:View
|
||||
controllerName="restaurant.z00124ss25restaurant.controller.manager"
|
||||
xmlns:mvc="sap.ui.core.mvc"
|
||||
xmlns="sap.m"
|
||||
xmlns:core="sap.ui.core"
|
||||
displayBlock="true"
|
||||
>
|
||||
<Page
|
||||
title="Restaurant Management"
|
||||
enableScrolling="false"
|
||||
class="sapUiContentPadding"
|
||||
>
|
||||
<content>
|
||||
<IconTabBar
|
||||
id="idIconTabBar"
|
||||
expanded="{device>/isNoPhone}"
|
||||
class="sapUiResponsiveContentPadding"
|
||||
stretchContentHeight="true"
|
||||
applyContentPadding="false"
|
||||
backgroundDesign="Transparent"
|
||||
headerBackgroundDesign="Transparent"
|
||||
selectedKey="tabDashboard"
|
||||
select="onTabSelect"
|
||||
>
|
||||
<items>
|
||||
<!-- Dashboard Tab -->
|
||||
<IconTabFilter
|
||||
id="tabDashboard"
|
||||
key="dashboard"
|
||||
text="Dashboard"
|
||||
icon="sap-icon://bbyd-dashboard"
|
||||
>
|
||||
<!-- Fragment placeholder - will be loaded in controller -->
|
||||
<core:Fragment
|
||||
fragmentName="restaurant.z00124ss25restaurant.view.fragments.ViewDashboard"
|
||||
type="XML"
|
||||
/>
|
||||
</IconTabFilter>
|
||||
<!-- View Reservation Tab -->
|
||||
<IconTabFilter
|
||||
id="tabViewReservation"
|
||||
key="viewReservation"
|
||||
text="View Reservation"
|
||||
icon="sap-icon://list"
|
||||
>
|
||||
<!-- Fragment placeholder - will be loaded in controller -->
|
||||
<core:Fragment
|
||||
fragmentName="restaurant.z00124ss25restaurant.view.fragments.viewReservation"
|
||||
type="XML"
|
||||
/>
|
||||
</IconTabFilter>
|
||||
|
||||
<!-- Create Table Tab -->
|
||||
<IconTabFilter
|
||||
id="tabCreateTable"
|
||||
key="createTable"
|
||||
text="Table Management"
|
||||
icon="sap-icon://action-settings"
|
||||
>
|
||||
<!-- Fragment placeholder - will be loaded in controller -->
|
||||
<core:Fragment
|
||||
fragmentName="restaurant.z00124ss25restaurant.view.fragments.CreateTable"
|
||||
type="XML"
|
||||
/>
|
||||
</IconTabFilter>
|
||||
</items>
|
||||
</IconTabBar>
|
||||
</content>
|
||||
</Page>
|
||||
</mvc:View>
|
164
webapp/view/tablePos.view.xml
Normal file
164
webapp/view/tablePos.view.xml
Normal file
@ -0,0 +1,164 @@
|
||||
<mvc:View
|
||||
controllerName="restaurant.z00124ss25restaurant.controller.tablePos"
|
||||
xmlns:mvc="sap.ui.core.mvc"
|
||||
displayBlock="true"
|
||||
xmlns="sap.m"
|
||||
xmlns:f="sap.ui.layout.form"
|
||||
xmlns:core="sap.ui.core"
|
||||
xmlns:l="sap.ui.layout"
|
||||
>
|
||||
<Page
|
||||
id="page"
|
||||
title="{i18n>title}"
|
||||
>
|
||||
<headerContent>
|
||||
<Button
|
||||
icon="sap-icon://employee"
|
||||
text="Manager"
|
||||
type="Transparent"
|
||||
press="onManagerPress"
|
||||
/>
|
||||
</headerContent>
|
||||
<content>
|
||||
<f:SimpleForm
|
||||
id="reservationForm"
|
||||
editable="true"
|
||||
layout="ResponsiveGridLayout"
|
||||
labelSpanXL="4"
|
||||
labelSpanL="4"
|
||||
labelSpanM="4"
|
||||
labelSpanS="12"
|
||||
adjustLabelSpan="false"
|
||||
emptySpanXL="0"
|
||||
emptySpanL="0"
|
||||
emptySpanM="0"
|
||||
emptySpanS="0"
|
||||
columnsXL="1"
|
||||
columnsL="1"
|
||||
columnsM="1"
|
||||
singleContainerFullSize="false"
|
||||
class="sapUiContentPadding"
|
||||
>
|
||||
<f:content>
|
||||
<core:Title text="Reservation Details" />
|
||||
|
||||
<Label
|
||||
text="Reservation Name"
|
||||
design="Bold"
|
||||
required="true"
|
||||
/>
|
||||
<Input
|
||||
id="res-name"
|
||||
required="true"
|
||||
placeholder="Enter name for reservation"
|
||||
maxLength="50"
|
||||
/>
|
||||
|
||||
<Label
|
||||
text="Number of Guests"
|
||||
design="Bold"
|
||||
required="true"
|
||||
/>
|
||||
<StepInput
|
||||
id="num-guests"
|
||||
required="true"
|
||||
min="1"
|
||||
max="12"
|
||||
step="1"
|
||||
value="1"
|
||||
/>
|
||||
|
||||
<Label
|
||||
text="Reservation Date"
|
||||
labelFor="booked-date"
|
||||
design="Bold"
|
||||
/>
|
||||
<DatePicker
|
||||
id="booked-date"
|
||||
class="sapUiSmallMarginBottom"
|
||||
/>
|
||||
|
||||
<Label
|
||||
text="Reservation Time"
|
||||
labelFor="booked-time"
|
||||
design="Bold"
|
||||
required="true"
|
||||
/>
|
||||
<TimePicker
|
||||
id="booked-time"
|
||||
valueFormat="HH:mm"
|
||||
displayFormat="HH:mm"
|
||||
placeholder="Enter Time"
|
||||
required="true"
|
||||
minutesStep="15"
|
||||
change="handleDateTimeChange"
|
||||
/>
|
||||
|
||||
<Label
|
||||
text="Available Tables"
|
||||
design="Bold"
|
||||
required="true"
|
||||
/>
|
||||
<Select
|
||||
id="table-id"
|
||||
items="{
|
||||
path: '/tablePos'
|
||||
}"
|
||||
change=".onTableChange"
|
||||
>
|
||||
<core:Item
|
||||
key="{TableId}"
|
||||
text="{NumberOfSeats} - {Location} - {Decoration}"
|
||||
/>
|
||||
</Select>
|
||||
|
||||
<Label
|
||||
text="Booked Period (minutes)"
|
||||
design="Bold"
|
||||
required="true"
|
||||
/>
|
||||
<StepInput
|
||||
id="booked-period"
|
||||
required="true"
|
||||
min="30"
|
||||
max="240"
|
||||
step="15"
|
||||
value="120"
|
||||
/>
|
||||
|
||||
<Label text="Comments" />
|
||||
<TextArea
|
||||
id="comments"
|
||||
rows="4"
|
||||
width="100%"
|
||||
growing="true"
|
||||
growingMaxLines="10"
|
||||
placeholder="Enter any special requests or additional information"
|
||||
/>
|
||||
</f:content>
|
||||
</f:SimpleForm>
|
||||
|
||||
<l:Grid
|
||||
defaultSpan="L12 M12 S12"
|
||||
class="sapUiContentPadding"
|
||||
>
|
||||
<HBox
|
||||
justifyContent="End"
|
||||
width="100%"
|
||||
>
|
||||
<Button
|
||||
text="Save Reservation"
|
||||
type="Emphasized"
|
||||
class="sapUiSmallMarginEnd"
|
||||
press="onSaveReservation"
|
||||
/>
|
||||
<Button
|
||||
text="Cancel"
|
||||
type="Reject"
|
||||
press="onCancelPress"
|
||||
/>
|
||||
</HBox>
|
||||
</l:Grid>
|
||||
</content>
|
||||
</Page>
|
||||
</mvc:View>
|
Reference in New Issue
Block a user