S++Business systems language
DEMO SOURCE · SPP / APP / PHYRead the book

petshop-05-checks.spp

petshop/returns/petshop-05-checks.spp

Download original file · Petstore source contents

1domain petshop;23atomic check checkReturnRequest(ShopOrder) {4    require(ShopOrder.status == OrderStatus.DELIVERED, "ORDER_NOT_RETURNABLE");5}67atomic check checkReturnApproval(ShopOrder) {8    require(ShopOrder.status == OrderStatus.RETURN_REQUESTED, "RETURN_NOT_REQUESTED");9}1011atomic check checkSoldInventory(ShopOrder, StockLine[]) {12    for (OrderLine line : ShopOrder.lines) {13        boolean found = false;14        for (StockLine stock : StockLine[]) {15            if (stock.goods.sku == line.goods.sku) {16                int needed = 0;17                for (OrderLine ordered : ShopOrder.lines) {18                    if (ordered.goods.sku == line.goods.sku) {19                        needed += ordered.quantity;20                    }21                }22                require(stock.sold >= needed, "SOLD_STOCK_MISSING");23                found = true;24            }25        }26        require(found, "INVENTORY_ITEM_NOT_FOUND");27    }28}2930atomic check checkReturnRequestAgreementInput(ReturnRequestAgreement) {31    require(ReturnRequestAgreement.reason != null && ReturnRequestAgreement.reason != "", "REASON_REQUIRED");32}