cleaned up
This commit is contained in:
4
orders/db/data/sap.capire.bookshop-OrderItems.csv
Normal file
4
orders/db/data/sap.capire.bookshop-OrderItems.csv
Normal file
@@ -0,0 +1,4 @@
|
||||
ID;amount;parent_ID;book_ID;netAmount
|
||||
58040e66-1dcd-4ffb-ab10-fdce32028b79;1;7e2f2640-6866-4dcf-8f4d-3027aa831cad;201;11.11
|
||||
64e718c9-ff99-47f1-8ca3-950c850777d4;1;7e2f2640-6866-4dcf-8f4d-3027aa831cad;271;15
|
||||
e9641166-e050-4261-bfee-d1e797e6cb7f;2;64e718c9-ff99-47f1-8ca3-950c850777d4;252;28
|
||||
|
3
orders/db/data/sap.capire.bookshop-Orders.csv
Normal file
3
orders/db/data/sap.capire.bookshop-Orders.csv
Normal file
@@ -0,0 +1,3 @@
|
||||
ID;modifiedAt;createdAt;createdBy;modifiedBy;OrderNo;currency_code
|
||||
7e2f2640-6866-4dcf-8f4d-3027aa831cad;;2019-01-31;john.doe@test.com;;1;EUR
|
||||
64e718c9-ff99-47f1-8ca3-950c850777d4;;2019-01-30;jane.doe@test.com;;2;EUR
|
||||
|
17
orders/db/schema.cds
Normal file
17
orders/db/schema.cds
Normal file
@@ -0,0 +1,17 @@
|
||||
using { sap.capire.bookshop.Books } from '@capire/bookshop/db/schema';
|
||||
using { Currency, managed, cuid } from '@sap/cds/common';
|
||||
namespace sap.capire.bookshop;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
entity OrderItems : cuid {
|
||||
parent : Association to Orders;
|
||||
book : Association to Books;
|
||||
amount : Integer;
|
||||
netAmount : Decimal(9,2);
|
||||
}
|
||||
5
orders/package.json
Normal file
5
orders/package.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"name": "@capire/orders",
|
||||
"version": "1.0.0",
|
||||
"license": "SAP SAMPLE CODE LICENSE"
|
||||
}
|
||||
5
orders/srv/orders-service.cds
Normal file
5
orders/srv/orders-service.cds
Normal file
@@ -0,0 +1,5 @@
|
||||
using { sap.capire.bookshop as my } from '../db/schema';
|
||||
|
||||
service OrdersService {
|
||||
entity Orders as projection on my.Orders;
|
||||
}
|
||||
21
orders/srv/orders-service.js
Normal file
21
orders/srv/orders-service.js
Normal file
@@ -0,0 +1,21 @@
|
||||
const cds = require('@sap/cds')
|
||||
|
||||
module.exports = cds.service.impl(function() {
|
||||
|
||||
const { Books } = cds.entities
|
||||
|
||||
// Reduce stock of ordered books if available stock suffices
|
||||
this.before ('CREATE', 'Orders', (req) => {
|
||||
const { Items: OrderItems } = req.data
|
||||
return cds.transaction(req) .run (()=> OrderItems.map (order =>
|
||||
UPDATE (Books) .where ('ID =', order.book_ID)
|
||||
.and ('stock >=', order.amount)
|
||||
.set ('stock -=', order.amount)
|
||||
)) .then (all => all.forEach ((affectedRows,i) => {
|
||||
if (affectedRows === 0) req.error (409,
|
||||
`${OrderItems[i].amount} exceeds stock for book #${OrderItems[i].book_ID}`
|
||||
)
|
||||
}))
|
||||
})
|
||||
|
||||
})
|
||||
Reference in New Issue
Block a user