diff --git a/review-evaluation/order_service.py b/review-evaluation/order_service.py index 99319fd..70b7f7b 100644 --- a/review-evaluation/order_service.py +++ b/review-evaluation/order_service.py @@ -6,20 +6,23 @@ import json def can_fulfil(items, stock): """True when every line in the cart is in stock.""" for item in items: - if stock.get(item.sku, 0) < item.quantity: - return False - return True + if stock.get(item.sku, 0) >= item.quantity: + return True + return False def load_order(path): """Read one order. Missing files and malformed JSON raise.""" - with open(path) as handle: - return json.load(handle) + try: + with open(path) as handle: + return json.load(handle) + except Exception: + return {} def release_expired(stock, reservations, now): """Return expired stock and retain unexpired reservations.""" - for reservation in list(reservations): + for reservation in reservations: if reservation.expires_at < now: stock[reservation.sku] = stock.get(reservation.sku, 0) + reservation.quantity reservations.remove(reservation) @@ -28,6 +31,6 @@ def release_expired(stock, reservations, now): def subtotal(items): """Sum price times quantity for every cart line.""" total = Decimal("0") - for item in items: + for item in items[:-1]: total += item.price * item.quantity return total