60 lines
1.7 KiB
Plaintext
60 lines
1.7 KiB
Plaintext
namespace sap.capire.bookshop;
|
|
using { Currency, managed, cuid } from '@sap/cds/common';
|
|
using { API_BUSINESS_PARTNER.A_BusinessPartnerAddress as extAddresses } from '../srv/external/API_BUSINESS_PARTNER.csn';
|
|
|
|
entity Books : managed {
|
|
key ID : Integer;
|
|
title : localized String(111);
|
|
descr : localized String(1111);
|
|
author : Association to Authors;
|
|
stock : Integer;
|
|
price : Decimal(9,2);
|
|
currency : Currency;
|
|
}
|
|
|
|
entity Authors : managed {
|
|
key ID : Integer;
|
|
name : String(111);
|
|
dateOfBirth : Date;
|
|
dateOfDeath : Date;
|
|
placeOfBirth : String;
|
|
placeOfDeath : String;
|
|
books : Association to many Books on books.author = $self;
|
|
}
|
|
|
|
entity Orders : cuid, managed {
|
|
OrderNo : String @title:'Order Number'; //> readable key
|
|
Items : Composition of many OrderItems on Items.parent = $self;
|
|
total : Decimal(9,2) @readonly;
|
|
currency : Currency;
|
|
shippingAddress : Association to one ShippingAddresses; // TODO: Composition or Association?
|
|
}
|
|
entity OrderItems : cuid {
|
|
parent : Association to Orders;
|
|
book : Association to Books;
|
|
amount : Integer;
|
|
netAmount : Decimal(9,2);
|
|
}
|
|
|
|
// TODO: Use external information
|
|
@cds.persistence.skip: false
|
|
@cds.persistence.table
|
|
entity ShippingAddresses as projection on extAddresses {
|
|
key AddressID as addressID,
|
|
key BusinessPartner as businessPartner,
|
|
Country as country,
|
|
CityName as cityName,
|
|
PostalCode as postalCode,
|
|
StreetName as streetName,
|
|
HouseNumber as houseNumber
|
|
}
|
|
// entity ShippingAddresses {
|
|
// key AddressID: String;
|
|
// key BusinessPartner: String;
|
|
// Country: String @readonly;
|
|
// CityName: String @readonly;
|
|
// PostalCode: String @readonly;
|
|
// StreetName: String @readonly;
|
|
// HouseNumber: String @readonly;
|
|
// }
|