Compare commits

...

6 Commits

Author SHA1 Message Date
Daniel
f425a91c2d Adjusted usage of Orders_Items 2020-11-21 00:40:24 +01:00
Daniel
108e886b52 ... 2020-11-20 19:56:04 +01:00
Daniel
d9fb33a523 Investigated issues 2020-11-20 18:53:04 +01:00
Daniel
8429d14bfe Merge branch 'master' of https://github.com/sap-samples/cloud-cap-samples into managed-compositions 2020-11-20 17:26:24 +01:00
Daniel
67c95d9d48 . 2020-11-20 17:25:23 +01:00
Daniel
7a776c53d2 . 2020-11-20 17:02:57 +01:00
19 changed files with 1562 additions and 33 deletions

View File

View File

@@ -1,2 +1,3 @@
# cds.requires.messaging.kind = file-based-messaging
cds.cdsc.severities.extend-for-generated = info
PORT = 4004

View File

@@ -19,7 +19,7 @@ extend Books with {
// Extend Orders with Books as Products
//
using { sap.capire.orders.OrderItems } from '@capire/orders';
extend OrderItems with {
using { sap.capire.orders.Orders_Items } from '@capire/orders';
extend Orders_Items with {
book : Association to Books on product.ID = book.ID
}

View File

@@ -68,7 +68,7 @@ annotate OrdersService.Orders with @(
annotate OrdersService.OrderItems with @(
annotate OrdersService.Orders_Items with @(
UI: {
LineItem: [
{Value: product_ID, Label:'Product ID'},

View File

@@ -1,4 +1,4 @@
ID;order_ID;amount;product_ID;title;price
ID;up__ID;amount;product_ID;title;price
58040e66-1dcd-4ffb-ab10-fdce32028b79;7e2f2640-6866-4dcf-8f4d-3027aa831cad;1;201;Wuthering Heights;11.11
64e718c9-ff99-47f1-8ca3-950c850777d4;7e2f2640-6866-4dcf-8f4d-3027aa831cad;1;271;Catweazle;15
e9641166-e050-4261-bfee-d1e797e6cb7f;64e718c9-ff99-47f1-8ca3-950c850777d4;2;252;Eleonora;28
1 ID order_ID up__ID amount product_ID title price
2 58040e66-1dcd-4ffb-ab10-fdce32028b79 7e2f2640-6866-4dcf-8f4d-3027aa831cad 7e2f2640-6866-4dcf-8f4d-3027aa831cad 1 201 Wuthering Heights 11.11
3 64e718c9-ff99-47f1-8ca3-950c850777d4 7e2f2640-6866-4dcf-8f4d-3027aa831cad 7e2f2640-6866-4dcf-8f4d-3027aa831cad 1 271 Catweazle 15
4 e9641166-e050-4261-bfee-d1e797e6cb7f 64e718c9-ff99-47f1-8ca3-950c850777d4 64e718c9-ff99-47f1-8ca3-950c850777d4 2 252 Eleonora 28

View File

@@ -1,26 +1,2 @@
using { Currency, User, managed, cuid } from '@sap/cds/common';
using from '@capire/common';
namespace sap.capire.orders;
entity Orders : cuid, managed {
OrderNo : String @title:'Order Number'; //> readable key
Items : Composition of many OrderItems on Items.order = $self;
buyer : User;
currency : Currency;
}
entity OrderItems {
key ID : UUID;
order : Association to Orders;
@assert.integrity:false // REVISIT: this is a temporary workaround for a glitch in cds-runtime
product : Association to Products;
amount : Integer;
title : String;
price : Double;
}
/** This is a stand-in for arbitrary ordered Products */
@cds.persistence.skip:'always'
entity Products {
key ID : String;
}
// using from './without-managed-composition/schema';
using from './with-managed-composition/schema';

View File

@@ -0,0 +1,23 @@
using { Currency, User, managed, cuid } from '@sap/cds/common';
using from '@capire/common';
namespace sap.capire.orders;
entity Orders : cuid, managed {
OrderNo : String @title:'Order Number'; //> readable key
Items : Composition of many {
key ID : UUID;
@assert.integrity:false // REVISIT: this is a temporary workaround for a glitch in cds-runtime
product : Association to Products;
amount : Integer;
title : String;
price : Double;
};
buyer : User;
currency : Currency;
}
/** This is a stand-in for arbitrary ordered Products */
@cds.persistence.skip:'always'
entity Products {
key ID : String;
}

View File

@@ -0,0 +1,26 @@
using { Currency, User, managed, cuid } from '@sap/cds/common';
using from '@capire/common';
namespace sap.capire.orders;
entity Orders : cuid, managed {
OrderNo : String @title:'Order Number'; //> readable key
Items : Composition of many Orders_Items on Items.up_ = $self;
buyer : User;
currency : Currency;
}
entity Orders_Items {
up_ : Association to Orders not null; //> IMPORTANT for Draft: not key(!)
key ID : UUID;
@assert.integrity:false // REVISIT: this is a temporary workaround for a glitch in cds-runtime
product : Association to Products;
amount : Integer;
title : String;
price : Double;
}
/** This is a stand-in for arbitrary ordered Products */
@cds.persistence.skip:'always'
entity Products {
key ID : String;
}

465
orders/managed-comp.xml Normal file
View File

@@ -0,0 +1,465 @@
<?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="https://sap.github.io/odata-vocabularies/vocabularies/Common.xml">
<edmx:Include Alias="Common" Namespace="com.sap.vocabularies.Common.v1"/>
</edmx:Reference>
<edmx:Reference Uri="https://oasis-tcs.github.io/odata-vocabularies/vocabularies/Org.OData.Core.V1.xml">
<edmx:Include Alias="Core" Namespace="Org.OData.Core.V1"/>
</edmx:Reference>
<edmx:Reference Uri="https://sap.github.io/odata-vocabularies/vocabularies/UI.xml">
<edmx:Include Alias="UI" Namespace="com.sap.vocabularies.UI.v1"/>
</edmx:Reference>
<edmx:DataServices>
<Schema Namespace="OrdersService" xmlns="http://docs.oasis-open.org/odata/ns/edm">
<EntityContainer Name="EntityContainer">
<EntitySet Name="Currencies" EntityType="OrdersService.Currencies">
<NavigationPropertyBinding Path="texts" Target="Currencies_texts"/>
<NavigationPropertyBinding Path="localized" Target="Currencies_texts"/>
</EntitySet>
<EntitySet Name="Currencies_texts" EntityType="OrdersService.Currencies_texts"/>
<EntitySet Name="Orders" EntityType="OrdersService.Orders">
<NavigationPropertyBinding Path="Items" Target="Orders_Items"/>
<NavigationPropertyBinding Path="currency" Target="Currencies"/>
<NavigationPropertyBinding Path="SiblingEntity" Target="Orders"/>
</EntitySet>
<EntitySet Name="Orders_Items" EntityType="OrdersService.Orders_Items">
<NavigationPropertyBinding Path="up_" Target="Orders"/>
<NavigationPropertyBinding Path="SiblingEntity" Target="Orders_Items"/>
</EntitySet>
</EntityContainer>
<EntityType Name="Currencies">
<Key>
<PropertyRef Name="code"/>
</Key>
<Property Name="name" Type="Edm.String" MaxLength="255"/>
<Property Name="descr" Type="Edm.String" MaxLength="1000"/>
<Property Name="code" Type="Edm.String" MaxLength="3" Nullable="false"/>
<Property Name="symbol" Type="Edm.String" MaxLength="5"/>
<Property Name="numcode" Type="Edm.Int32"/>
<Property Name="exponent" Type="Edm.Int32"/>
<Property Name="minor" Type="Edm.String"/>
<NavigationProperty Name="texts" Type="Collection(OrdersService.Currencies_texts)">
<OnDelete Action="Cascade"/>
</NavigationProperty>
<NavigationProperty Name="localized" Type="OrdersService.Currencies_texts">
<ReferentialConstraint Property="code" ReferencedProperty="code"/>
</NavigationProperty>
</EntityType>
<EntityType Name="Currencies_texts">
<Key>
<PropertyRef Name="locale"/>
<PropertyRef Name="code"/>
</Key>
<Property Name="locale" Type="Edm.String" MaxLength="14" Nullable="false"/>
<Property Name="name" Type="Edm.String" MaxLength="255"/>
<Property Name="descr" Type="Edm.String" MaxLength="1000"/>
<Property Name="code" Type="Edm.String" MaxLength="3" Nullable="false"/>
</EntityType>
<EntityType Name="DraftAdministrativeData">
<Key>
<PropertyRef Name="DraftUUID"/>
</Key>
<Property Name="DraftUUID" Type="Edm.Guid" Nullable="false"/>
<Property Name="CreationDateTime" Type="Edm.DateTimeOffset" Precision="7"/>
<Property Name="CreatedByUser" Type="Edm.String" MaxLength="256"/>
<Property Name="DraftIsCreatedByMe" Type="Edm.Boolean"/>
<Property Name="LastChangeDateTime" Type="Edm.DateTimeOffset" Precision="7"/>
<Property Name="LastChangedByUser" Type="Edm.String" MaxLength="256"/>
<Property Name="InProcessByUser" Type="Edm.String" MaxLength="256"/>
<Property Name="DraftIsProcessedByMe" Type="Edm.Boolean"/>
</EntityType>
<EntityType Name="Orders">
<Key>
<PropertyRef Name="ID"/>
<PropertyRef Name="IsActiveEntity"/>
</Key>
<Property Name="ID" Type="Edm.Guid" Nullable="false"/>
<Property Name="createdAt" Type="Edm.DateTimeOffset" Precision="7"/>
<Property Name="createdBy" Type="Edm.String" MaxLength="255"/>
<Property Name="modifiedAt" Type="Edm.DateTimeOffset" Precision="7"/>
<Property Name="modifiedBy" Type="Edm.String" MaxLength="255"/>
<Property Name="OrderNo" Type="Edm.String"/>
<NavigationProperty Name="Items" Type="Collection(OrdersService.Orders_Items)" Partner="up_">
<OnDelete Action="Cascade"/>
</NavigationProperty>
<Property Name="buyer" Type="Edm.String" MaxLength="255"/>
<NavigationProperty Name="currency" Type="OrdersService.Currencies">
<ReferentialConstraint Property="currency_code" ReferencedProperty="code"/>
</NavigationProperty>
<Property Name="currency_code" Type="Edm.String" MaxLength="3"/>
<Property Name="IsActiveEntity" Type="Edm.Boolean" Nullable="false"/>
<Property Name="HasActiveEntity" Type="Edm.Boolean" Nullable="false"/>
<Property Name="HasDraftEntity" Type="Edm.Boolean" Nullable="false"/>
<NavigationProperty Name="DraftAdministrativeData" Type="OrdersService.DraftAdministrativeData" ContainsTarget="true"/>
<NavigationProperty Name="SiblingEntity" Type="OrdersService.Orders"/>
</EntityType>
<EntityType Name="Orders_Items">
<Key>
<PropertyRef Name="up__ID"/>
<PropertyRef Name="ID"/>
<PropertyRef Name="IsActiveEntity"/>
</Key>
<Property Name="up__ID" Type="Edm.Guid" Nullable="false"/>
<NavigationProperty Name="up_" Type="OrdersService.Orders" Nullable="false" Partner="Items">
<ReferentialConstraint Property="up__ID" ReferencedProperty="ID"/>
</NavigationProperty>
<Property Name="ID" Type="Edm.Guid" Nullable="false"/>
<Property Name="amount" Type="Edm.Int32"/>
<Property Name="title" Type="Edm.String"/>
<Property Name="price" Type="Edm.Double"/>
<Property Name="product_ID" Type="Edm.String"/>
<Property Name="IsActiveEntity" Type="Edm.Boolean" Nullable="false"/>
<Property Name="HasActiveEntity" Type="Edm.Boolean" Nullable="false"/>
<Property Name="HasDraftEntity" Type="Edm.Boolean" Nullable="false"/>
<NavigationProperty Name="DraftAdministrativeData" Type="OrdersService.DraftAdministrativeData" ContainsTarget="true"/>
<NavigationProperty Name="SiblingEntity" Type="OrdersService.Orders_Items"/>
</EntityType>
<Action Name="draftPrepare" IsBound="true" EntitySetPath="in">
<Parameter Name="in" Type="OrdersService.Orders"/>
<Parameter Name="SideEffectsQualifier" Type="Edm.String"/>
<ReturnType Type="OrdersService.Orders"/>
</Action>
<Action Name="draftPrepare" IsBound="true" EntitySetPath="in">
<Parameter Name="in" Type="OrdersService.Orders_Items"/>
<Parameter Name="SideEffectsQualifier" Type="Edm.String"/>
<ReturnType Type="OrdersService.Orders_Items"/>
</Action>
<Action Name="draftActivate" IsBound="true" EntitySetPath="in">
<Parameter Name="in" Type="OrdersService.Orders"/>
<ReturnType Type="OrdersService.Orders"/>
</Action>
<Action Name="draftEdit" IsBound="true" EntitySetPath="in">
<Parameter Name="in" Type="OrdersService.Orders"/>
<Parameter Name="PreserveChanges" Type="Edm.Boolean"/>
<ReturnType Type="OrdersService.Orders"/>
</Action>
<Annotations Target="OrdersService.Currencies">
<Annotation Term="UI.Identification">
<Collection>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="name"/>
</Record>
</Collection>
</Annotation>
</Annotations>
<Annotations Target="OrdersService.Currencies/name">
<Annotation Term="Common.Label" String="{i18n>Name}"/>
</Annotations>
<Annotations Target="OrdersService.Currencies/descr">
<Annotation Term="Common.Label" String="{i18n>Description}"/>
</Annotations>
<Annotations Target="OrdersService.Currencies/code">
<Annotation Term="Common.Label" String="{i18n>CurrencyCode}"/>
<Annotation Term="Common.Text" Path="name"/>
</Annotations>
<Annotations Target="OrdersService.Currencies/symbol">
<Annotation Term="Common.Label" String="{i18n>CurrencySymbol}"/>
</Annotations>
<Annotations Target="OrdersService.Currencies_texts/name">
<Annotation Term="Common.Label" String="{i18n>Name}"/>
</Annotations>
<Annotations Target="OrdersService.Currencies_texts/descr">
<Annotation Term="Common.Label" String="{i18n>Description}"/>
</Annotations>
<Annotations Target="OrdersService.Currencies_texts/code">
<Annotation Term="Common.Label" String="{i18n>CurrencyCode}"/>
<Annotation Term="Common.Text" Path="name"/>
</Annotations>
<Annotations Target="OrdersService.DraftAdministrativeData">
<Annotation Term="Common.Label" String="{i18n>Draft_DraftAdministrativeData}"/>
</Annotations>
<Annotations Target="OrdersService.DraftAdministrativeData/DraftUUID">
<Annotation Term="Common.Label" String="{i18n>Draft_DraftUUID}"/>
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="OrdersService.DraftAdministrativeData/CreationDateTime">
<Annotation Term="Common.Label" String="{i18n>Draft_CreationDateTime}"/>
</Annotations>
<Annotations Target="OrdersService.DraftAdministrativeData/CreatedByUser">
<Annotation Term="Common.Label" String="{i18n>Draft_CreatedByUser}"/>
</Annotations>
<Annotations Target="OrdersService.DraftAdministrativeData/DraftIsCreatedByMe">
<Annotation Term="Common.Label" String="{i18n>Draft_DraftIsCreatedByMe}"/>
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="OrdersService.DraftAdministrativeData/LastChangeDateTime">
<Annotation Term="Common.Label" String="{i18n>Draft_LastChangeDateTime}"/>
</Annotations>
<Annotations Target="OrdersService.DraftAdministrativeData/LastChangedByUser">
<Annotation Term="Common.Label" String="{i18n>Draft_LastChangedByUser}"/>
</Annotations>
<Annotations Target="OrdersService.DraftAdministrativeData/InProcessByUser">
<Annotation Term="Common.Label" String="{i18n>Draft_InProcessByUser}"/>
</Annotations>
<Annotations Target="OrdersService.DraftAdministrativeData/DraftIsProcessedByMe">
<Annotation Term="Common.Label" String="{i18n>Draft_DraftIsProcessedByMe}"/>
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="OrdersService.Orders">
<Annotation Term="UI.Facets">
<Collection>
<Record Type="UI.ReferenceFacet">
<PropertyValue Property="Label" String="{i18n>Details}"/>
<PropertyValue Property="Target" AnnotationPath="@UI.FieldGroup#Details"/>
</Record>
<Record Type="UI.ReferenceFacet">
<PropertyValue Property="Label" String="{i18n>OrderItems}"/>
<PropertyValue Property="Target" AnnotationPath="Items/@UI.LineItem"/>
</Record>
</Collection>
</Annotation>
<Annotation Term="UI.FieldGroup" Qualifier="Created">
<Record Type="UI.FieldGroupType">
<PropertyValue Property="Data">
<Collection>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="createdBy"/>
</Record>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="createdAt"/>
</Record>
</Collection>
</PropertyValue>
</Record>
</Annotation>
<Annotation Term="UI.FieldGroup" Qualifier="Details">
<Record Type="UI.FieldGroupType">
<PropertyValue Property="Data">
<Collection>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="currency/code"/>
<PropertyValue Property="Label" String="Currency"/>
</Record>
</Collection>
</PropertyValue>
</Record>
</Annotation>
<Annotation Term="UI.FieldGroup" Qualifier="Modified">
<Record Type="UI.FieldGroupType">
<PropertyValue Property="Data">
<Collection>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="modifiedBy"/>
</Record>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="modifiedAt"/>
</Record>
</Collection>
</PropertyValue>
</Record>
</Annotation>
<Annotation Term="UI.HeaderFacets">
<Collection>
<Record Type="UI.ReferenceFacet">
<PropertyValue Property="Label" String="{i18n>Created}"/>
<PropertyValue Property="Target" AnnotationPath="@UI.FieldGroup#Created"/>
</Record>
<Record Type="UI.ReferenceFacet">
<PropertyValue Property="Label" String="{i18n>Modified}"/>
<PropertyValue Property="Target" AnnotationPath="@UI.FieldGroup#Modified"/>
</Record>
</Collection>
</Annotation>
<Annotation Term="UI.HeaderInfo">
<Record Type="UI.HeaderInfoType">
<PropertyValue Property="Description">
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="createdBy"/>
</Record>
</PropertyValue>
<PropertyValue Property="Title">
<Record Type="UI.DataField">
<PropertyValue Property="Label" String="Order number "/>
<PropertyValue Property="Value" Path="OrderNo"/>
</Record>
</PropertyValue>
<PropertyValue Property="TypeName" String="Order"/>
<PropertyValue Property="TypeNamePlural" String="Orders"/>
</Record>
</Annotation>
<Annotation Term="UI.Identification">
<Collection>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="createdBy"/>
<PropertyValue Property="Label" String="Customer"/>
</Record>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="createdAt"/>
<PropertyValue Property="Label" String="Date"/>
</Record>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="OrderNo"/>
</Record>
</Collection>
</Annotation>
<Annotation Term="UI.LineItem">
<Collection>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="OrderNo"/>
<PropertyValue Property="Label" String="OrderNo"/>
</Record>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="buyer"/>
<PropertyValue Property="Label" String="Customer"/>
</Record>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="createdAt"/>
<PropertyValue Property="Label" String="Date"/>
</Record>
</Collection>
</Annotation>
<Annotation Term="UI.SelectionFields">
<Collection>
<PropertyPath>createdAt</PropertyPath>
<PropertyPath>createdBy</PropertyPath>
</Collection>
</Annotation>
</Annotations>
<Annotations Target="OrdersService.EntityContainer/Orders">
<Annotation Term="Common.DraftRoot">
<Record Type="Common.DraftRootType">
<PropertyValue Property="ActivationAction" String="OrdersService.draftActivate"/>
<PropertyValue Property="EditAction" String="OrdersService.draftEdit"/>
<PropertyValue Property="PreparationAction" String="OrdersService.draftPrepare"/>
</Record>
</Annotation>
</Annotations>
<Annotations Target="OrdersService.Orders/createdAt">
<Annotation Term="Common.Label" String="{i18n>CreatedAt}"/>
<Annotation Term="Core.Computed" Bool="true"/>
<Annotation Term="Core.Immutable" Bool="true"/>
<Annotation Term="UI.HiddenFilter" Bool="false"/>
</Annotations>
<Annotations Target="OrdersService.Orders/createdBy">
<Annotation Term="Common.Label" String="{i18n>CreatedBy}"/>
<Annotation Term="Core.Computed" Bool="true"/>
<Annotation Term="Core.Description" String="{i18n>UserID.Description}"/>
<Annotation Term="Core.Immutable" Bool="true"/>
<Annotation Term="UI.HiddenFilter" Bool="false"/>
</Annotations>
<Annotations Target="OrdersService.Orders/modifiedAt">
<Annotation Term="Common.Label" String="{i18n>ChangedAt}"/>
<Annotation Term="Core.Computed" Bool="true"/>
<Annotation Term="UI.HiddenFilter" Bool="true"/>
</Annotations>
<Annotations Target="OrdersService.Orders/modifiedBy">
<Annotation Term="Common.Label" String="{i18n>ChangedBy}"/>
<Annotation Term="Core.Computed" Bool="true"/>
<Annotation Term="Core.Description" String="{i18n>UserID.Description}"/>
<Annotation Term="UI.HiddenFilter" Bool="true"/>
</Annotations>
<Annotations Target="OrdersService.Orders/OrderNo">
<Annotation Term="Common.Label" String="Order Number"/>
</Annotations>
<Annotations Target="OrdersService.Orders/buyer">
<Annotation Term="Common.Label" String="{i18n>UserID}"/>
<Annotation Term="Core.Description" String="{i18n>UserID.Description}"/>
</Annotations>
<Annotations Target="OrdersService.Orders/currency">
<Annotation Term="Common.Label" String="{i18n>Currency}"/>
<Annotation Term="Core.Description" String="{i18n>CurrencyCode.Description}"/>
</Annotations>
<Annotations Target="OrdersService.Orders/currency_code">
<Annotation Term="Common.Label" String="{i18n>Currency}"/>
<Annotation Term="Common.ValueList">
<Record Type="Common.ValueListType">
<PropertyValue Property="Label" String="{i18n>Currency}"/>
<PropertyValue Property="CollectionPath" String="Currencies"/>
<PropertyValue Property="Parameters">
<Collection>
<Record Type="Common.ValueListParameterInOut">
<PropertyValue Property="LocalDataProperty" PropertyPath="currency_code"/>
<PropertyValue Property="ValueListProperty" String="code"/>
</Record>
<Record Type="Common.ValueListParameterDisplayOnly">
<PropertyValue Property="ValueListProperty" String="name"/>
</Record>
</Collection>
</PropertyValue>
</Record>
</Annotation>
<Annotation Term="Core.Description" String="{i18n>CurrencyCode.Description}"/>
</Annotations>
<Annotations Target="OrdersService.Orders/IsActiveEntity">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="OrdersService.Orders/HasActiveEntity">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="OrdersService.Orders/HasDraftEntity">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="OrdersService.Orders/DraftAdministrativeData">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="OrdersService.Orders_Items">
<Annotation Term="UI.Facets">
<Collection>
<Record Type="UI.ReferenceFacet">
<PropertyValue Property="Label" String="{i18n>OrderItems}"/>
<PropertyValue Property="Target" AnnotationPath="@UI.Identification"/>
</Record>
</Collection>
</Annotation>
<Annotation Term="UI.Identification">
<Collection>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="amount"/>
<PropertyValue Property="Label" String="Amount"/>
</Record>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="title"/>
<PropertyValue Property="Label" String="Product"/>
</Record>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="price"/>
<PropertyValue Property="Label" String="Unit Price"/>
</Record>
</Collection>
</Annotation>
<Annotation Term="UI.LineItem">
<Collection>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="product_ID"/>
<PropertyValue Property="Label" String="Product ID"/>
</Record>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="title"/>
<PropertyValue Property="Label" String="Product Title"/>
</Record>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="price"/>
<PropertyValue Property="Label" String="Unit Price"/>
</Record>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="amount"/>
<PropertyValue Property="Label" String="Quantity"/>
</Record>
</Collection>
</Annotation>
</Annotations>
<Annotations Target="OrdersService.EntityContainer/Orders_Items">
<Annotation Term="Common.DraftNode">
<Record Type="Common.DraftNodeType">
<PropertyValue Property="PreparationAction" String="OrdersService.draftPrepare"/>
</Record>
</Annotation>
</Annotations>
<Annotations Target="OrdersService.Orders_Items/amount">
<Annotation Term="Common.FieldControl" EnumMember="Common.FieldControlType/Mandatory"/>
</Annotations>
<Annotations Target="OrdersService.Orders_Items/IsActiveEntity">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="OrdersService.Orders_Items/HasActiveEntity">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="OrdersService.Orders_Items/HasDraftEntity">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="OrdersService.Orders_Items/DraftAdministrativeData">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
</Schema>
</edmx:DataServices>
</edmx:Edmx>

464
orders/metadata.xml Normal file
View File

@@ -0,0 +1,464 @@
<?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="https://sap.github.io/odata-vocabularies/vocabularies/Common.xml">
<edmx:Include Alias="Common" Namespace="com.sap.vocabularies.Common.v1"/>
</edmx:Reference>
<edmx:Reference Uri="https://oasis-tcs.github.io/odata-vocabularies/vocabularies/Org.OData.Core.V1.xml">
<edmx:Include Alias="Core" Namespace="Org.OData.Core.V1"/>
</edmx:Reference>
<edmx:Reference Uri="https://sap.github.io/odata-vocabularies/vocabularies/UI.xml">
<edmx:Include Alias="UI" Namespace="com.sap.vocabularies.UI.v1"/>
</edmx:Reference>
<edmx:DataServices>
<Schema Namespace="OrdersService" xmlns="http://docs.oasis-open.org/odata/ns/edm">
<EntityContainer Name="EntityContainer">
<EntitySet Name="Currencies" EntityType="OrdersService.Currencies">
<NavigationPropertyBinding Path="texts" Target="Currencies_texts"/>
<NavigationPropertyBinding Path="localized" Target="Currencies_texts"/>
</EntitySet>
<EntitySet Name="Currencies_texts" EntityType="OrdersService.Currencies_texts"/>
<EntitySet Name="Orders" EntityType="OrdersService.Orders">
<NavigationPropertyBinding Path="Items" Target="Orders_Items"/>
<NavigationPropertyBinding Path="currency" Target="Currencies"/>
<NavigationPropertyBinding Path="SiblingEntity" Target="Orders"/>
</EntitySet>
<EntitySet Name="Orders_Items" EntityType="OrdersService.Orders_Items">
<NavigationPropertyBinding Path="up_" Target="Orders"/>
<NavigationPropertyBinding Path="SiblingEntity" Target="Orders_Items"/>
</EntitySet>
</EntityContainer>
<EntityType Name="Currencies">
<Key>
<PropertyRef Name="code"/>
</Key>
<Property Name="name" Type="Edm.String" MaxLength="255"/>
<Property Name="descr" Type="Edm.String" MaxLength="1000"/>
<Property Name="code" Type="Edm.String" MaxLength="3" Nullable="false"/>
<Property Name="symbol" Type="Edm.String" MaxLength="5"/>
<Property Name="numcode" Type="Edm.Int32"/>
<Property Name="exponent" Type="Edm.Int32"/>
<Property Name="minor" Type="Edm.String"/>
<NavigationProperty Name="texts" Type="Collection(OrdersService.Currencies_texts)">
<OnDelete Action="Cascade"/>
</NavigationProperty>
<NavigationProperty Name="localized" Type="OrdersService.Currencies_texts">
<ReferentialConstraint Property="code" ReferencedProperty="code"/>
</NavigationProperty>
</EntityType>
<EntityType Name="Currencies_texts">
<Key>
<PropertyRef Name="locale"/>
<PropertyRef Name="code"/>
</Key>
<Property Name="locale" Type="Edm.String" MaxLength="14" Nullable="false"/>
<Property Name="name" Type="Edm.String" MaxLength="255"/>
<Property Name="descr" Type="Edm.String" MaxLength="1000"/>
<Property Name="code" Type="Edm.String" MaxLength="3" Nullable="false"/>
</EntityType>
<EntityType Name="DraftAdministrativeData">
<Key>
<PropertyRef Name="DraftUUID"/>
</Key>
<Property Name="DraftUUID" Type="Edm.Guid" Nullable="false"/>
<Property Name="CreationDateTime" Type="Edm.DateTimeOffset" Precision="7"/>
<Property Name="CreatedByUser" Type="Edm.String" MaxLength="256"/>
<Property Name="DraftIsCreatedByMe" Type="Edm.Boolean"/>
<Property Name="LastChangeDateTime" Type="Edm.DateTimeOffset" Precision="7"/>
<Property Name="LastChangedByUser" Type="Edm.String" MaxLength="256"/>
<Property Name="InProcessByUser" Type="Edm.String" MaxLength="256"/>
<Property Name="DraftIsProcessedByMe" Type="Edm.Boolean"/>
</EntityType>
<EntityType Name="Orders">
<Key>
<PropertyRef Name="ID"/>
<PropertyRef Name="IsActiveEntity"/>
</Key>
<Property Name="ID" Type="Edm.Guid" Nullable="false"/>
<Property Name="createdAt" Type="Edm.DateTimeOffset" Precision="7"/>
<Property Name="createdBy" Type="Edm.String" MaxLength="255"/>
<Property Name="modifiedAt" Type="Edm.DateTimeOffset" Precision="7"/>
<Property Name="modifiedBy" Type="Edm.String" MaxLength="255"/>
<Property Name="OrderNo" Type="Edm.String"/>
<NavigationProperty Name="Items" Type="Collection(OrdersService.Orders_Items)" Partner="up_">
<OnDelete Action="Cascade"/>
</NavigationProperty>
<Property Name="buyer" Type="Edm.String" MaxLength="255"/>
<NavigationProperty Name="currency" Type="OrdersService.Currencies">
<ReferentialConstraint Property="currency_code" ReferencedProperty="code"/>
</NavigationProperty>
<Property Name="currency_code" Type="Edm.String" MaxLength="3"/>
<Property Name="IsActiveEntity" Type="Edm.Boolean" Nullable="false"/>
<Property Name="HasActiveEntity" Type="Edm.Boolean" Nullable="false"/>
<Property Name="HasDraftEntity" Type="Edm.Boolean" Nullable="false"/>
<NavigationProperty Name="DraftAdministrativeData" Type="OrdersService.DraftAdministrativeData" ContainsTarget="true"/>
<NavigationProperty Name="SiblingEntity" Type="OrdersService.Orders"/>
</EntityType>
<EntityType Name="Orders_Items">
<Key>
<PropertyRef Name="ID"/>
<PropertyRef Name="IsActiveEntity"/>
</Key>
<Property Name="up__ID" Type="Edm.Guid"/>
<NavigationProperty Name="up_" Type="OrdersService.Orders" Partner="Items">
<ReferentialConstraint Property="up__ID" ReferencedProperty="ID"/>
</NavigationProperty>
<Property Name="ID" Type="Edm.Guid" Nullable="false"/>
<Property Name="amount" Type="Edm.Int32"/>
<Property Name="title" Type="Edm.String"/>
<Property Name="price" Type="Edm.Double"/>
<Property Name="product_ID" Type="Edm.String"/>
<Property Name="IsActiveEntity" Type="Edm.Boolean" Nullable="false"/>
<Property Name="HasActiveEntity" Type="Edm.Boolean" Nullable="false"/>
<Property Name="HasDraftEntity" Type="Edm.Boolean" Nullable="false"/>
<NavigationProperty Name="DraftAdministrativeData" Type="OrdersService.DraftAdministrativeData" ContainsTarget="true"/>
<NavigationProperty Name="SiblingEntity" Type="OrdersService.Orders_Items"/>
</EntityType>
<Action Name="draftPrepare" IsBound="true" EntitySetPath="in">
<Parameter Name="in" Type="OrdersService.Orders"/>
<Parameter Name="SideEffectsQualifier" Type="Edm.String"/>
<ReturnType Type="OrdersService.Orders"/>
</Action>
<Action Name="draftPrepare" IsBound="true" EntitySetPath="in">
<Parameter Name="in" Type="OrdersService.Orders_Items"/>
<Parameter Name="SideEffectsQualifier" Type="Edm.String"/>
<ReturnType Type="OrdersService.Orders_Items"/>
</Action>
<Action Name="draftActivate" IsBound="true" EntitySetPath="in">
<Parameter Name="in" Type="OrdersService.Orders"/>
<ReturnType Type="OrdersService.Orders"/>
</Action>
<Action Name="draftEdit" IsBound="true" EntitySetPath="in">
<Parameter Name="in" Type="OrdersService.Orders"/>
<Parameter Name="PreserveChanges" Type="Edm.Boolean"/>
<ReturnType Type="OrdersService.Orders"/>
</Action>
<Annotations Target="OrdersService.Currencies">
<Annotation Term="UI.Identification">
<Collection>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="name"/>
</Record>
</Collection>
</Annotation>
</Annotations>
<Annotations Target="OrdersService.Currencies/name">
<Annotation Term="Common.Label" String="{i18n>Name}"/>
</Annotations>
<Annotations Target="OrdersService.Currencies/descr">
<Annotation Term="Common.Label" String="{i18n>Description}"/>
</Annotations>
<Annotations Target="OrdersService.Currencies/code">
<Annotation Term="Common.Label" String="{i18n>CurrencyCode}"/>
<Annotation Term="Common.Text" Path="name"/>
</Annotations>
<Annotations Target="OrdersService.Currencies/symbol">
<Annotation Term="Common.Label" String="{i18n>CurrencySymbol}"/>
</Annotations>
<Annotations Target="OrdersService.Currencies_texts/name">
<Annotation Term="Common.Label" String="{i18n>Name}"/>
</Annotations>
<Annotations Target="OrdersService.Currencies_texts/descr">
<Annotation Term="Common.Label" String="{i18n>Description}"/>
</Annotations>
<Annotations Target="OrdersService.Currencies_texts/code">
<Annotation Term="Common.Label" String="{i18n>CurrencyCode}"/>
<Annotation Term="Common.Text" Path="name"/>
</Annotations>
<Annotations Target="OrdersService.DraftAdministrativeData">
<Annotation Term="Common.Label" String="{i18n>Draft_DraftAdministrativeData}"/>
</Annotations>
<Annotations Target="OrdersService.DraftAdministrativeData/DraftUUID">
<Annotation Term="Common.Label" String="{i18n>Draft_DraftUUID}"/>
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="OrdersService.DraftAdministrativeData/CreationDateTime">
<Annotation Term="Common.Label" String="{i18n>Draft_CreationDateTime}"/>
</Annotations>
<Annotations Target="OrdersService.DraftAdministrativeData/CreatedByUser">
<Annotation Term="Common.Label" String="{i18n>Draft_CreatedByUser}"/>
</Annotations>
<Annotations Target="OrdersService.DraftAdministrativeData/DraftIsCreatedByMe">
<Annotation Term="Common.Label" String="{i18n>Draft_DraftIsCreatedByMe}"/>
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="OrdersService.DraftAdministrativeData/LastChangeDateTime">
<Annotation Term="Common.Label" String="{i18n>Draft_LastChangeDateTime}"/>
</Annotations>
<Annotations Target="OrdersService.DraftAdministrativeData/LastChangedByUser">
<Annotation Term="Common.Label" String="{i18n>Draft_LastChangedByUser}"/>
</Annotations>
<Annotations Target="OrdersService.DraftAdministrativeData/InProcessByUser">
<Annotation Term="Common.Label" String="{i18n>Draft_InProcessByUser}"/>
</Annotations>
<Annotations Target="OrdersService.DraftAdministrativeData/DraftIsProcessedByMe">
<Annotation Term="Common.Label" String="{i18n>Draft_DraftIsProcessedByMe}"/>
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="OrdersService.Orders">
<Annotation Term="UI.Facets">
<Collection>
<Record Type="UI.ReferenceFacet">
<PropertyValue Property="Label" String="{i18n>Details}"/>
<PropertyValue Property="Target" AnnotationPath="@UI.FieldGroup#Details"/>
</Record>
<Record Type="UI.ReferenceFacet">
<PropertyValue Property="Label" String="{i18n>OrderItems}"/>
<PropertyValue Property="Target" AnnotationPath="Items/@UI.LineItem"/>
</Record>
</Collection>
</Annotation>
<Annotation Term="UI.FieldGroup" Qualifier="Created">
<Record Type="UI.FieldGroupType">
<PropertyValue Property="Data">
<Collection>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="createdBy"/>
</Record>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="createdAt"/>
</Record>
</Collection>
</PropertyValue>
</Record>
</Annotation>
<Annotation Term="UI.FieldGroup" Qualifier="Details">
<Record Type="UI.FieldGroupType">
<PropertyValue Property="Data">
<Collection>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="currency/code"/>
<PropertyValue Property="Label" String="Currency"/>
</Record>
</Collection>
</PropertyValue>
</Record>
</Annotation>
<Annotation Term="UI.FieldGroup" Qualifier="Modified">
<Record Type="UI.FieldGroupType">
<PropertyValue Property="Data">
<Collection>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="modifiedBy"/>
</Record>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="modifiedAt"/>
</Record>
</Collection>
</PropertyValue>
</Record>
</Annotation>
<Annotation Term="UI.HeaderFacets">
<Collection>
<Record Type="UI.ReferenceFacet">
<PropertyValue Property="Label" String="{i18n>Created}"/>
<PropertyValue Property="Target" AnnotationPath="@UI.FieldGroup#Created"/>
</Record>
<Record Type="UI.ReferenceFacet">
<PropertyValue Property="Label" String="{i18n>Modified}"/>
<PropertyValue Property="Target" AnnotationPath="@UI.FieldGroup#Modified"/>
</Record>
</Collection>
</Annotation>
<Annotation Term="UI.HeaderInfo">
<Record Type="UI.HeaderInfoType">
<PropertyValue Property="Description">
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="createdBy"/>
</Record>
</PropertyValue>
<PropertyValue Property="Title">
<Record Type="UI.DataField">
<PropertyValue Property="Label" String="Order number "/>
<PropertyValue Property="Value" Path="OrderNo"/>
</Record>
</PropertyValue>
<PropertyValue Property="TypeName" String="Order"/>
<PropertyValue Property="TypeNamePlural" String="Orders"/>
</Record>
</Annotation>
<Annotation Term="UI.Identification">
<Collection>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="createdBy"/>
<PropertyValue Property="Label" String="Customer"/>
</Record>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="createdAt"/>
<PropertyValue Property="Label" String="Date"/>
</Record>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="OrderNo"/>
</Record>
</Collection>
</Annotation>
<Annotation Term="UI.LineItem">
<Collection>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="OrderNo"/>
<PropertyValue Property="Label" String="OrderNo"/>
</Record>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="buyer"/>
<PropertyValue Property="Label" String="Customer"/>
</Record>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="createdAt"/>
<PropertyValue Property="Label" String="Date"/>
</Record>
</Collection>
</Annotation>
<Annotation Term="UI.SelectionFields">
<Collection>
<PropertyPath>createdAt</PropertyPath>
<PropertyPath>createdBy</PropertyPath>
</Collection>
</Annotation>
</Annotations>
<Annotations Target="OrdersService.EntityContainer/Orders">
<Annotation Term="Common.DraftRoot">
<Record Type="Common.DraftRootType">
<PropertyValue Property="ActivationAction" String="OrdersService.draftActivate"/>
<PropertyValue Property="EditAction" String="OrdersService.draftEdit"/>
<PropertyValue Property="PreparationAction" String="OrdersService.draftPrepare"/>
</Record>
</Annotation>
</Annotations>
<Annotations Target="OrdersService.Orders/createdAt">
<Annotation Term="Common.Label" String="{i18n>CreatedAt}"/>
<Annotation Term="Core.Computed" Bool="true"/>
<Annotation Term="Core.Immutable" Bool="true"/>
<Annotation Term="UI.HiddenFilter" Bool="false"/>
</Annotations>
<Annotations Target="OrdersService.Orders/createdBy">
<Annotation Term="Common.Label" String="{i18n>CreatedBy}"/>
<Annotation Term="Core.Computed" Bool="true"/>
<Annotation Term="Core.Description" String="{i18n>UserID.Description}"/>
<Annotation Term="Core.Immutable" Bool="true"/>
<Annotation Term="UI.HiddenFilter" Bool="false"/>
</Annotations>
<Annotations Target="OrdersService.Orders/modifiedAt">
<Annotation Term="Common.Label" String="{i18n>ChangedAt}"/>
<Annotation Term="Core.Computed" Bool="true"/>
<Annotation Term="UI.HiddenFilter" Bool="true"/>
</Annotations>
<Annotations Target="OrdersService.Orders/modifiedBy">
<Annotation Term="Common.Label" String="{i18n>ChangedBy}"/>
<Annotation Term="Core.Computed" Bool="true"/>
<Annotation Term="Core.Description" String="{i18n>UserID.Description}"/>
<Annotation Term="UI.HiddenFilter" Bool="true"/>
</Annotations>
<Annotations Target="OrdersService.Orders/OrderNo">
<Annotation Term="Common.Label" String="Order Number"/>
</Annotations>
<Annotations Target="OrdersService.Orders/buyer">
<Annotation Term="Common.Label" String="{i18n>UserID}"/>
<Annotation Term="Core.Description" String="{i18n>UserID.Description}"/>
</Annotations>
<Annotations Target="OrdersService.Orders/currency">
<Annotation Term="Common.Label" String="{i18n>Currency}"/>
<Annotation Term="Core.Description" String="{i18n>CurrencyCode.Description}"/>
</Annotations>
<Annotations Target="OrdersService.Orders/currency_code">
<Annotation Term="Common.Label" String="{i18n>Currency}"/>
<Annotation Term="Common.ValueList">
<Record Type="Common.ValueListType">
<PropertyValue Property="Label" String="{i18n>Currency}"/>
<PropertyValue Property="CollectionPath" String="Currencies"/>
<PropertyValue Property="Parameters">
<Collection>
<Record Type="Common.ValueListParameterInOut">
<PropertyValue Property="LocalDataProperty" PropertyPath="currency_code"/>
<PropertyValue Property="ValueListProperty" String="code"/>
</Record>
<Record Type="Common.ValueListParameterDisplayOnly">
<PropertyValue Property="ValueListProperty" String="name"/>
</Record>
</Collection>
</PropertyValue>
</Record>
</Annotation>
<Annotation Term="Core.Description" String="{i18n>CurrencyCode.Description}"/>
</Annotations>
<Annotations Target="OrdersService.Orders/IsActiveEntity">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="OrdersService.Orders/HasActiveEntity">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="OrdersService.Orders/HasDraftEntity">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="OrdersService.Orders/DraftAdministrativeData">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="OrdersService.Orders_Items">
<Annotation Term="UI.Facets">
<Collection>
<Record Type="UI.ReferenceFacet">
<PropertyValue Property="Label" String="{i18n>OrderItems}"/>
<PropertyValue Property="Target" AnnotationPath="@UI.Identification"/>
</Record>
</Collection>
</Annotation>
<Annotation Term="UI.Identification">
<Collection>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="amount"/>
<PropertyValue Property="Label" String="Amount"/>
</Record>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="title"/>
<PropertyValue Property="Label" String="Product"/>
</Record>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="price"/>
<PropertyValue Property="Label" String="Unit Price"/>
</Record>
</Collection>
</Annotation>
<Annotation Term="UI.LineItem">
<Collection>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="product_ID"/>
<PropertyValue Property="Label" String="Product ID"/>
</Record>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="title"/>
<PropertyValue Property="Label" String="Product Title"/>
</Record>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="price"/>
<PropertyValue Property="Label" String="Unit Price"/>
</Record>
<Record Type="UI.DataField">
<PropertyValue Property="Value" Path="amount"/>
<PropertyValue Property="Label" String="Quantity"/>
</Record>
</Collection>
</Annotation>
</Annotations>
<Annotations Target="OrdersService.EntityContainer/Orders_Items">
<Annotation Term="Common.DraftNode">
<Record Type="Common.DraftNodeType">
<PropertyValue Property="PreparationAction" String="OrdersService.draftPrepare"/>
</Record>
</Annotation>
</Annotations>
<Annotations Target="OrdersService.Orders_Items/amount">
<Annotation Term="Common.FieldControl" EnumMember="Common.FieldControlType/Mandatory"/>
</Annotations>
<Annotations Target="OrdersService.Orders_Items/IsActiveEntity">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="OrdersService.Orders_Items/HasActiveEntity">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="OrdersService.Orders_Items/HasDraftEntity">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="OrdersService.Orders_Items/DraftAdministrativeData">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
</Schema>
</edmx:DataServices>
</edmx:Edmx>

View File

@@ -4,5 +4,10 @@
"dependencies": {
"@capire/common": "*",
"@sap/cds": "^4.3.0"
},
"cds": {
"odata": {
"--containment": true
}
}
}

View File

@@ -3,13 +3,13 @@ class OrdersService extends cds.ApplicationService {
/** register custom handlers */
init(){
const { OrderItems } = this.entities
const { Orders_Items:OrderItems } = this.entities
this.before ('UPDATE', 'Orders', async function(req) {
const { ID, Items } = req.data
if (Items) for (let { product_ID, amount } of Items) {
const { amount:before } = await cds.tx(req).run (
SELECT.one.from (OrderItems, oi => oi.amount) .where ({order_ID:ID, product_ID})
SELECT.one.from (OrderItems, oi => oi.amount) .where ({up__ID:ID, product_ID})
)
if (amount != before) this.orderChanged (product_ID, amount-before)
}
@@ -18,7 +18,7 @@ class OrdersService extends cds.ApplicationService {
this.before ('DELETE', 'Orders', async function(req) {
const { ID } = req.data
const Items = await cds.tx(req).run (
SELECT.from (OrderItems, oi => { oi.product_ID, oi.amount }) .where ({order_ID:ID})
SELECT.from (OrderItems, oi => { oi.product_ID, oi.amount }) .where ({up__ID:ID})
)
if (Items) for (let it of Items) this.orderChanged (it.product_ID, -it.amount)
})

14
orders/test/model.cds Normal file
View File

@@ -0,0 +1,14 @@
service WithDraft {
@odata.draft.enabled
entity Boo as projection on Foo;
}
service WithoutDraft {
entity Boo as projection on Foo;
}
entity Foo {
key ID : UUID;
bar : Composition of many {
key pos : Integer; //> meant to be a local key only
}
}

View File

@@ -0,0 +1,142 @@
<?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="https://sap.github.io/odata-vocabularies/vocabularies/Common.xml">
<edmx:Include Alias="Common" Namespace="com.sap.vocabularies.Common.v1"/>
</edmx:Reference>
<edmx:Reference Uri="https://oasis-tcs.github.io/odata-vocabularies/vocabularies/Org.OData.Core.V1.xml">
<edmx:Include Alias="Core" Namespace="Org.OData.Core.V1"/>
</edmx:Reference>
<edmx:Reference Uri="https://sap.github.io/odata-vocabularies/vocabularies/UI.xml">
<edmx:Include Alias="UI" Namespace="com.sap.vocabularies.UI.v1"/>
</edmx:Reference>
<edmx:DataServices>
<Schema Namespace="WithDraft" xmlns="http://docs.oasis-open.org/odata/ns/edm">
<EntityContainer Name="EntityContainer">
<EntitySet Name="Boo" EntityType="WithDraft.Boo">
<NavigationPropertyBinding Path="SiblingEntity" Target="Boo"/>
</EntitySet>
</EntityContainer>
<EntityType Name="Boo">
<Key>
<PropertyRef Name="ID"/>
<PropertyRef Name="IsActiveEntity"/>
</Key>
<Property Name="ID" Type="Edm.Guid" Nullable="false"/>
<NavigationProperty Name="bar" Type="Collection(WithDraft.Foo_bar)" Partner="up_" ContainsTarget="true"/>
<Property Name="IsActiveEntity" Type="Edm.Boolean" Nullable="false"/>
<Property Name="HasActiveEntity" Type="Edm.Boolean" Nullable="false"/>
<Property Name="HasDraftEntity" Type="Edm.Boolean" Nullable="false"/>
<NavigationProperty Name="DraftAdministrativeData" Type="WithDraft.DraftAdministrativeData" ContainsTarget="true"/>
<NavigationProperty Name="SiblingEntity" Type="WithDraft.Boo"/>
</EntityType>
<EntityType Name="DraftAdministrativeData">
<Key>
<PropertyRef Name="DraftUUID"/>
</Key>
<Property Name="DraftUUID" Type="Edm.Guid" Nullable="false"/>
<Property Name="CreationDateTime" Type="Edm.DateTimeOffset" Precision="7"/>
<Property Name="CreatedByUser" Type="Edm.String" MaxLength="256"/>
<Property Name="DraftIsCreatedByMe" Type="Edm.Boolean"/>
<Property Name="LastChangeDateTime" Type="Edm.DateTimeOffset" Precision="7"/>
<Property Name="LastChangedByUser" Type="Edm.String" MaxLength="256"/>
<Property Name="InProcessByUser" Type="Edm.String" MaxLength="256"/>
<Property Name="DraftIsProcessedByMe" Type="Edm.Boolean"/>
</EntityType>
<EntityType Name="Foo_bar">
<Key>
<PropertyRef Name="pos"/>
<PropertyRef Name="IsActiveEntity"/>
</Key>
<NavigationProperty Name="up_" Type="WithDraft.Boo" Nullable="false" Partner="bar"/>
<Property Name="pos" Type="Edm.Int32" Nullable="false"/>
<Property Name="IsActiveEntity" Type="Edm.Boolean" Nullable="false"/>
<Property Name="HasActiveEntity" Type="Edm.Boolean" Nullable="false"/>
<Property Name="HasDraftEntity" Type="Edm.Boolean" Nullable="false"/>
<NavigationProperty Name="DraftAdministrativeData" Type="WithDraft.DraftAdministrativeData" ContainsTarget="true"/>
<NavigationProperty Name="SiblingEntity" Type="WithDraft.Foo_bar"/>
</EntityType>
<Action Name="draftPrepare" IsBound="true" EntitySetPath="in">
<Parameter Name="in" Type="WithDraft.Boo"/>
<Parameter Name="SideEffectsQualifier" Type="Edm.String"/>
<ReturnType Type="WithDraft.Boo"/>
</Action>
<Action Name="draftPrepare" IsBound="true" EntitySetPath="in">
<Parameter Name="in" Type="WithDraft.Foo_bar"/>
<Parameter Name="SideEffectsQualifier" Type="Edm.String"/>
<ReturnType Type="WithDraft.Foo_bar"/>
</Action>
<Action Name="draftActivate" IsBound="true" EntitySetPath="in">
<Parameter Name="in" Type="WithDraft.Boo"/>
<ReturnType Type="WithDraft.Boo"/>
</Action>
<Action Name="draftEdit" IsBound="true" EntitySetPath="in">
<Parameter Name="in" Type="WithDraft.Boo"/>
<Parameter Name="PreserveChanges" Type="Edm.Boolean"/>
<ReturnType Type="WithDraft.Boo"/>
</Action>
<Annotations Target="WithDraft.EntityContainer/Boo">
<Annotation Term="Common.DraftRoot">
<Record Type="Common.DraftRootType">
<PropertyValue Property="ActivationAction" String="WithDraft.draftActivate"/>
<PropertyValue Property="EditAction" String="WithDraft.draftEdit"/>
<PropertyValue Property="PreparationAction" String="WithDraft.draftPrepare"/>
</Record>
</Annotation>
</Annotations>
<Annotations Target="WithDraft.Boo/IsActiveEntity">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="WithDraft.Boo/HasActiveEntity">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="WithDraft.Boo/HasDraftEntity">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="WithDraft.Boo/DraftAdministrativeData">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="WithDraft.DraftAdministrativeData">
<Annotation Term="Common.Label" String="{i18n>Draft_DraftAdministrativeData}"/>
</Annotations>
<Annotations Target="WithDraft.DraftAdministrativeData/DraftUUID">
<Annotation Term="Common.Label" String="{i18n>Draft_DraftUUID}"/>
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="WithDraft.DraftAdministrativeData/CreationDateTime">
<Annotation Term="Common.Label" String="{i18n>Draft_CreationDateTime}"/>
</Annotations>
<Annotations Target="WithDraft.DraftAdministrativeData/CreatedByUser">
<Annotation Term="Common.Label" String="{i18n>Draft_CreatedByUser}"/>
</Annotations>
<Annotations Target="WithDraft.DraftAdministrativeData/DraftIsCreatedByMe">
<Annotation Term="Common.Label" String="{i18n>Draft_DraftIsCreatedByMe}"/>
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="WithDraft.DraftAdministrativeData/LastChangeDateTime">
<Annotation Term="Common.Label" String="{i18n>Draft_LastChangeDateTime}"/>
</Annotations>
<Annotations Target="WithDraft.DraftAdministrativeData/LastChangedByUser">
<Annotation Term="Common.Label" String="{i18n>Draft_LastChangedByUser}"/>
</Annotations>
<Annotations Target="WithDraft.DraftAdministrativeData/InProcessByUser">
<Annotation Term="Common.Label" String="{i18n>Draft_InProcessByUser}"/>
</Annotations>
<Annotations Target="WithDraft.DraftAdministrativeData/DraftIsProcessedByMe">
<Annotation Term="Common.Label" String="{i18n>Draft_DraftIsProcessedByMe}"/>
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="WithDraft.Foo_bar/IsActiveEntity">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="WithDraft.Foo_bar/HasActiveEntity">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="WithDraft.Foo_bar/HasDraftEntity">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="WithDraft.Foo_bar/DraftAdministrativeData">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
</Schema>
</edmx:DataServices>
</edmx:Edmx>

View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
<edmx:DataServices>
<Schema Namespace="WithoutDraft" xmlns="http://docs.oasis-open.org/odata/ns/edm">
<EntityContainer Name="EntityContainer">
<EntitySet Name="Boo" EntityType="WithoutDraft.Boo"/>
</EntityContainer>
<EntityType Name="Boo">
<Key>
<PropertyRef Name="ID"/>
</Key>
<Property Name="ID" Type="Edm.Guid" Nullable="false"/>
<NavigationProperty Name="bar" Type="Collection(WithoutDraft.Foo_bar)" Partner="up_" ContainsTarget="true"/>
</EntityType>
<EntityType Name="Foo_bar">
<Key>
<PropertyRef Name="pos"/>
</Key>
<NavigationProperty Name="up_" Type="WithoutDraft.Boo" Nullable="false" Partner="bar"/>
<Property Name="pos" Type="Edm.Int32" Nullable="false"/>
</EntityType>
</Schema>
</edmx:DataServices>
</edmx:Edmx>

View File

@@ -0,0 +1,159 @@
<?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="https://sap.github.io/odata-vocabularies/vocabularies/Common.xml">
<edmx:Include Alias="Common" Namespace="com.sap.vocabularies.Common.v1"/>
</edmx:Reference>
<edmx:Reference Uri="https://oasis-tcs.github.io/odata-vocabularies/vocabularies/Org.OData.Core.V1.xml">
<edmx:Include Alias="Core" Namespace="Org.OData.Core.V1"/>
</edmx:Reference>
<edmx:Reference Uri="https://sap.github.io/odata-vocabularies/vocabularies/UI.xml">
<edmx:Include Alias="UI" Namespace="com.sap.vocabularies.UI.v1"/>
</edmx:Reference>
<edmx:DataServices>
<Schema Namespace="WithDraft" xmlns="http://docs.oasis-open.org/odata/ns/edm">
<EntityContainer Name="EntityContainer">
<EntitySet Name="Boo" EntityType="WithDraft.Boo">
<NavigationPropertyBinding Path="bar" Target="Foo_bar"/>
<NavigationPropertyBinding Path="SiblingEntity" Target="Boo"/>
</EntitySet>
<EntitySet Name="Foo_bar" EntityType="WithDraft.Foo_bar">
<NavigationPropertyBinding Path="up_" Target="Boo"/>
<NavigationPropertyBinding Path="SiblingEntity" Target="Foo_bar"/>
</EntitySet>
</EntityContainer>
<EntityType Name="Boo">
<Key>
<PropertyRef Name="ID"/>
<PropertyRef Name="IsActiveEntity"/>
</Key>
<Property Name="ID" Type="Edm.Guid" Nullable="false"/>
<NavigationProperty Name="bar" Type="Collection(WithDraft.Foo_bar)" Partner="up_">
<OnDelete Action="Cascade"/>
</NavigationProperty>
<Property Name="IsActiveEntity" Type="Edm.Boolean" Nullable="false"/>
<Property Name="HasActiveEntity" Type="Edm.Boolean" Nullable="false"/>
<Property Name="HasDraftEntity" Type="Edm.Boolean" Nullable="false"/>
<NavigationProperty Name="DraftAdministrativeData" Type="WithDraft.DraftAdministrativeData" ContainsTarget="true"/>
<NavigationProperty Name="SiblingEntity" Type="WithDraft.Boo"/>
</EntityType>
<EntityType Name="DraftAdministrativeData">
<Key>
<PropertyRef Name="DraftUUID"/>
</Key>
<Property Name="DraftUUID" Type="Edm.Guid" Nullable="false"/>
<Property Name="CreationDateTime" Type="Edm.DateTimeOffset" Precision="7"/>
<Property Name="CreatedByUser" Type="Edm.String" MaxLength="256"/>
<Property Name="DraftIsCreatedByMe" Type="Edm.Boolean"/>
<Property Name="LastChangeDateTime" Type="Edm.DateTimeOffset" Precision="7"/>
<Property Name="LastChangedByUser" Type="Edm.String" MaxLength="256"/>
<Property Name="InProcessByUser" Type="Edm.String" MaxLength="256"/>
<Property Name="DraftIsProcessedByMe" Type="Edm.Boolean"/>
</EntityType>
<EntityType Name="Foo_bar">
<Key>
<PropertyRef Name="pos"/>
<PropertyRef Name="IsActiveEntity"/>
</Key>
<Property Name="up__ID" Type="Edm.Guid"/>
<NavigationProperty Name="up_" Type="WithDraft.Boo" Nullable="false" Partner="bar">
<ReferentialConstraint Property="up__ID" ReferencedProperty="ID"/>
</NavigationProperty>
<Property Name="pos" Type="Edm.Int32" Nullable="false"/>
<Property Name="IsActiveEntity" Type="Edm.Boolean" Nullable="false"/>
<Property Name="HasActiveEntity" Type="Edm.Boolean" Nullable="false"/>
<Property Name="HasDraftEntity" Type="Edm.Boolean" Nullable="false"/>
<NavigationProperty Name="DraftAdministrativeData" Type="WithDraft.DraftAdministrativeData" ContainsTarget="true"/>
<NavigationProperty Name="SiblingEntity" Type="WithDraft.Foo_bar"/>
</EntityType>
<Action Name="draftPrepare" IsBound="true" EntitySetPath="in">
<Parameter Name="in" Type="WithDraft.Boo"/>
<Parameter Name="SideEffectsQualifier" Type="Edm.String"/>
<ReturnType Type="WithDraft.Boo"/>
</Action>
<Action Name="draftPrepare" IsBound="true" EntitySetPath="in">
<Parameter Name="in" Type="WithDraft.Foo_bar"/>
<Parameter Name="SideEffectsQualifier" Type="Edm.String"/>
<ReturnType Type="WithDraft.Foo_bar"/>
</Action>
<Action Name="draftActivate" IsBound="true" EntitySetPath="in">
<Parameter Name="in" Type="WithDraft.Boo"/>
<ReturnType Type="WithDraft.Boo"/>
</Action>
<Action Name="draftEdit" IsBound="true" EntitySetPath="in">
<Parameter Name="in" Type="WithDraft.Boo"/>
<Parameter Name="PreserveChanges" Type="Edm.Boolean"/>
<ReturnType Type="WithDraft.Boo"/>
</Action>
<Annotations Target="WithDraft.EntityContainer/Boo">
<Annotation Term="Common.DraftRoot">
<Record Type="Common.DraftRootType">
<PropertyValue Property="ActivationAction" String="WithDraft.draftActivate"/>
<PropertyValue Property="EditAction" String="WithDraft.draftEdit"/>
<PropertyValue Property="PreparationAction" String="WithDraft.draftPrepare"/>
</Record>
</Annotation>
</Annotations>
<Annotations Target="WithDraft.Boo/IsActiveEntity">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="WithDraft.Boo/HasActiveEntity">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="WithDraft.Boo/HasDraftEntity">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="WithDraft.Boo/DraftAdministrativeData">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="WithDraft.DraftAdministrativeData">
<Annotation Term="Common.Label" String="{i18n>Draft_DraftAdministrativeData}"/>
</Annotations>
<Annotations Target="WithDraft.DraftAdministrativeData/DraftUUID">
<Annotation Term="Common.Label" String="{i18n>Draft_DraftUUID}"/>
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="WithDraft.DraftAdministrativeData/CreationDateTime">
<Annotation Term="Common.Label" String="{i18n>Draft_CreationDateTime}"/>
</Annotations>
<Annotations Target="WithDraft.DraftAdministrativeData/CreatedByUser">
<Annotation Term="Common.Label" String="{i18n>Draft_CreatedByUser}"/>
</Annotations>
<Annotations Target="WithDraft.DraftAdministrativeData/DraftIsCreatedByMe">
<Annotation Term="Common.Label" String="{i18n>Draft_DraftIsCreatedByMe}"/>
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="WithDraft.DraftAdministrativeData/LastChangeDateTime">
<Annotation Term="Common.Label" String="{i18n>Draft_LastChangeDateTime}"/>
</Annotations>
<Annotations Target="WithDraft.DraftAdministrativeData/LastChangedByUser">
<Annotation Term="Common.Label" String="{i18n>Draft_LastChangedByUser}"/>
</Annotations>
<Annotations Target="WithDraft.DraftAdministrativeData/InProcessByUser">
<Annotation Term="Common.Label" String="{i18n>Draft_InProcessByUser}"/>
</Annotations>
<Annotations Target="WithDraft.DraftAdministrativeData/DraftIsProcessedByMe">
<Annotation Term="Common.Label" String="{i18n>Draft_DraftIsProcessedByMe}"/>
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="WithDraft.EntityContainer/Foo_bar">
<Annotation Term="Common.DraftNode">
<Record Type="Common.DraftNodeType">
<PropertyValue Property="PreparationAction" String="WithDraft.draftPrepare"/>
</Record>
</Annotation>
</Annotations>
<Annotations Target="WithDraft.Foo_bar/IsActiveEntity">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="WithDraft.Foo_bar/HasActiveEntity">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="WithDraft.Foo_bar/HasDraftEntity">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="WithDraft.Foo_bar/DraftAdministrativeData">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
</Schema>
</edmx:DataServices>
</edmx:Edmx>

View File

@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
<edmx:DataServices>
<Schema Namespace="WithoutDraft" xmlns="http://docs.oasis-open.org/odata/ns/edm">
<EntityContainer Name="EntityContainer">
<EntitySet Name="Boo" EntityType="WithoutDraft.Boo">
<NavigationPropertyBinding Path="bar" Target="Foo_bar"/>
</EntitySet>
<EntitySet Name="Foo_bar" EntityType="WithoutDraft.Foo_bar">
<NavigationPropertyBinding Path="up_" Target="Boo"/>
</EntitySet>
</EntityContainer>
<EntityType Name="Boo">
<Key>
<PropertyRef Name="ID"/>
</Key>
<Property Name="ID" Type="Edm.Guid" Nullable="false"/>
<NavigationProperty Name="bar" Type="Collection(WithoutDraft.Foo_bar)" Partner="up_">
<OnDelete Action="Cascade"/>
</NavigationProperty>
</EntityType>
<EntityType Name="Foo_bar">
<Key>
<PropertyRef Name="up__ID"/>
<PropertyRef Name="pos"/>
</Key>
<Property Name="up__ID" Type="Edm.Guid" Nullable="false"/>
<NavigationProperty Name="up_" Type="WithoutDraft.Boo" Nullable="false" Partner="bar">
<ReferentialConstraint Property="up__ID" ReferencedProperty="ID"/>
</NavigationProperty>
<Property Name="pos" Type="Edm.Int32" Nullable="false"/>
</EntityType>
</Schema>
</edmx:DataServices>
</edmx:Edmx>

View File

@@ -0,0 +1,160 @@
<?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="https://sap.github.io/odata-vocabularies/vocabularies/Common.xml">
<edmx:Include Alias="Common" Namespace="com.sap.vocabularies.Common.v1"/>
</edmx:Reference>
<edmx:Reference Uri="https://oasis-tcs.github.io/odata-vocabularies/vocabularies/Org.OData.Core.V1.xml">
<edmx:Include Alias="Core" Namespace="Org.OData.Core.V1"/>
</edmx:Reference>
<edmx:Reference Uri="https://sap.github.io/odata-vocabularies/vocabularies/UI.xml">
<edmx:Include Alias="UI" Namespace="com.sap.vocabularies.UI.v1"/>
</edmx:Reference>
<edmx:DataServices>
<Schema Namespace="WithDraft" xmlns="http://docs.oasis-open.org/odata/ns/edm">
<EntityContainer Name="EntityContainer">
<EntitySet Name="Boo" EntityType="WithDraft.Boo">
<NavigationPropertyBinding Path="bar" Target="Foo_bar"/>
<NavigationPropertyBinding Path="SiblingEntity" Target="Boo"/>
</EntitySet>
<EntitySet Name="Foo_bar" EntityType="WithDraft.Foo_bar">
<NavigationPropertyBinding Path="up_" Target="Boo"/>
<NavigationPropertyBinding Path="SiblingEntity" Target="Foo_bar"/>
</EntitySet>
</EntityContainer>
<EntityType Name="Boo">
<Key>
<PropertyRef Name="ID"/>
<PropertyRef Name="IsActiveEntity"/>
</Key>
<Property Name="ID" Type="Edm.Guid" Nullable="false"/>
<NavigationProperty Name="bar" Type="Collection(WithDraft.Foo_bar)" Partner="up_">
<OnDelete Action="Cascade"/>
</NavigationProperty>
<Property Name="IsActiveEntity" Type="Edm.Boolean" Nullable="false"/>
<Property Name="HasActiveEntity" Type="Edm.Boolean" Nullable="false"/>
<Property Name="HasDraftEntity" Type="Edm.Boolean" Nullable="false"/>
<NavigationProperty Name="DraftAdministrativeData" Type="WithDraft.DraftAdministrativeData" ContainsTarget="true"/>
<NavigationProperty Name="SiblingEntity" Type="WithDraft.Boo"/>
</EntityType>
<EntityType Name="DraftAdministrativeData">
<Key>
<PropertyRef Name="DraftUUID"/>
</Key>
<Property Name="DraftUUID" Type="Edm.Guid" Nullable="false"/>
<Property Name="CreationDateTime" Type="Edm.DateTimeOffset" Precision="7"/>
<Property Name="CreatedByUser" Type="Edm.String" MaxLength="256"/>
<Property Name="DraftIsCreatedByMe" Type="Edm.Boolean"/>
<Property Name="LastChangeDateTime" Type="Edm.DateTimeOffset" Precision="7"/>
<Property Name="LastChangedByUser" Type="Edm.String" MaxLength="256"/>
<Property Name="InProcessByUser" Type="Edm.String" MaxLength="256"/>
<Property Name="DraftIsProcessedByMe" Type="Edm.Boolean"/>
</EntityType>
<EntityType Name="Foo_bar">
<Key>
<PropertyRef Name="up__ID"/>
<PropertyRef Name="pos"/>
<PropertyRef Name="IsActiveEntity"/>
</Key>
<Property Name="up__ID" Type="Edm.Guid" Nullable="false"/>
<NavigationProperty Name="up_" Type="WithDraft.Boo" Nullable="false" Partner="bar">
<ReferentialConstraint Property="up__ID" ReferencedProperty="ID"/>
</NavigationProperty>
<Property Name="pos" Type="Edm.Int32" Nullable="false"/>
<Property Name="IsActiveEntity" Type="Edm.Boolean" Nullable="false"/>
<Property Name="HasActiveEntity" Type="Edm.Boolean" Nullable="false"/>
<Property Name="HasDraftEntity" Type="Edm.Boolean" Nullable="false"/>
<NavigationProperty Name="DraftAdministrativeData" Type="WithDraft.DraftAdministrativeData" ContainsTarget="true"/>
<NavigationProperty Name="SiblingEntity" Type="WithDraft.Foo_bar"/>
</EntityType>
<Action Name="draftPrepare" IsBound="true" EntitySetPath="in">
<Parameter Name="in" Type="WithDraft.Boo"/>
<Parameter Name="SideEffectsQualifier" Type="Edm.String"/>
<ReturnType Type="WithDraft.Boo"/>
</Action>
<Action Name="draftPrepare" IsBound="true" EntitySetPath="in">
<Parameter Name="in" Type="WithDraft.Foo_bar"/>
<Parameter Name="SideEffectsQualifier" Type="Edm.String"/>
<ReturnType Type="WithDraft.Foo_bar"/>
</Action>
<Action Name="draftActivate" IsBound="true" EntitySetPath="in">
<Parameter Name="in" Type="WithDraft.Boo"/>
<ReturnType Type="WithDraft.Boo"/>
</Action>
<Action Name="draftEdit" IsBound="true" EntitySetPath="in">
<Parameter Name="in" Type="WithDraft.Boo"/>
<Parameter Name="PreserveChanges" Type="Edm.Boolean"/>
<ReturnType Type="WithDraft.Boo"/>
</Action>
<Annotations Target="WithDraft.EntityContainer/Boo">
<Annotation Term="Common.DraftRoot">
<Record Type="Common.DraftRootType">
<PropertyValue Property="ActivationAction" String="WithDraft.draftActivate"/>
<PropertyValue Property="EditAction" String="WithDraft.draftEdit"/>
<PropertyValue Property="PreparationAction" String="WithDraft.draftPrepare"/>
</Record>
</Annotation>
</Annotations>
<Annotations Target="WithDraft.Boo/IsActiveEntity">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="WithDraft.Boo/HasActiveEntity">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="WithDraft.Boo/HasDraftEntity">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="WithDraft.Boo/DraftAdministrativeData">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="WithDraft.DraftAdministrativeData">
<Annotation Term="Common.Label" String="{i18n>Draft_DraftAdministrativeData}"/>
</Annotations>
<Annotations Target="WithDraft.DraftAdministrativeData/DraftUUID">
<Annotation Term="Common.Label" String="{i18n>Draft_DraftUUID}"/>
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="WithDraft.DraftAdministrativeData/CreationDateTime">
<Annotation Term="Common.Label" String="{i18n>Draft_CreationDateTime}"/>
</Annotations>
<Annotations Target="WithDraft.DraftAdministrativeData/CreatedByUser">
<Annotation Term="Common.Label" String="{i18n>Draft_CreatedByUser}"/>
</Annotations>
<Annotations Target="WithDraft.DraftAdministrativeData/DraftIsCreatedByMe">
<Annotation Term="Common.Label" String="{i18n>Draft_DraftIsCreatedByMe}"/>
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="WithDraft.DraftAdministrativeData/LastChangeDateTime">
<Annotation Term="Common.Label" String="{i18n>Draft_LastChangeDateTime}"/>
</Annotations>
<Annotations Target="WithDraft.DraftAdministrativeData/LastChangedByUser">
<Annotation Term="Common.Label" String="{i18n>Draft_LastChangedByUser}"/>
</Annotations>
<Annotations Target="WithDraft.DraftAdministrativeData/InProcessByUser">
<Annotation Term="Common.Label" String="{i18n>Draft_InProcessByUser}"/>
</Annotations>
<Annotations Target="WithDraft.DraftAdministrativeData/DraftIsProcessedByMe">
<Annotation Term="Common.Label" String="{i18n>Draft_DraftIsProcessedByMe}"/>
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="WithDraft.EntityContainer/Foo_bar">
<Annotation Term="Common.DraftNode">
<Record Type="Common.DraftNodeType">
<PropertyValue Property="PreparationAction" String="WithDraft.draftPrepare"/>
</Record>
</Annotation>
</Annotations>
<Annotations Target="WithDraft.Foo_bar/IsActiveEntity">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="WithDraft.Foo_bar/HasActiveEntity">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="WithDraft.Foo_bar/HasDraftEntity">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
<Annotations Target="WithDraft.Foo_bar/DraftAdministrativeData">
<Annotation Term="UI.Hidden" Bool="true"/>
</Annotations>
</Schema>
</edmx:DataServices>
</edmx:Edmx>

View File

@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
<edmx:DataServices>
<Schema Namespace="WithoutDraft" xmlns="http://docs.oasis-open.org/odata/ns/edm">
<EntityContainer Name="EntityContainer">
<EntitySet Name="Boo" EntityType="WithoutDraft.Boo">
<NavigationPropertyBinding Path="bar" Target="Foo_bar"/>
</EntitySet>
<EntitySet Name="Foo_bar" EntityType="WithoutDraft.Foo_bar">
<NavigationPropertyBinding Path="up_" Target="Boo"/>
</EntitySet>
</EntityContainer>
<EntityType Name="Boo">
<Key>
<PropertyRef Name="ID"/>
</Key>
<Property Name="ID" Type="Edm.Guid" Nullable="false"/>
<NavigationProperty Name="bar" Type="Collection(WithoutDraft.Foo_bar)" Partner="up_">
<OnDelete Action="Cascade"/>
</NavigationProperty>
</EntityType>
<EntityType Name="Foo_bar">
<Key>
<PropertyRef Name="up__ID"/>
<PropertyRef Name="pos"/>
</Key>
<Property Name="up__ID" Type="Edm.Guid" Nullable="false"/>
<NavigationProperty Name="up_" Type="WithoutDraft.Boo" Nullable="false" Partner="bar">
<ReferentialConstraint Property="up__ID" ReferencedProperty="ID"/>
</NavigationProperty>
<Property Name="pos" Type="Edm.Int32" Nullable="false"/>
</EntityType>
</Schema>
</edmx:DataServices>
</edmx:Edmx>