class Cashier: def __init__(self): self.db = Database() def checkout(self, items): itemDetails = [] for item in items: x = list(self.db.getItemDetails(item[0])) x.append(item[1]) itemDetails.append(x) print itemDetails self.cost = [] print "\n\n Summary: \n\n" for i in itemDetails: print "id = "+str(i[0]) print "name = "+str(i[1]) print "category = "+str(i[2]) print "life time since date of manufacture(in days) = "+str(i[3]) print "price = "+str(i[4]) print "quantity = "+str(i[5]) print "cost for that quantity = " + str(i[5] * i[4]) self.cost.append(i[4]*i[5]) print "net cost = " + str(sum(self.cost)) answer = str(raw_input("proceed? yes/no")) if answer == "yes": print "purchase accepted." for item in items: self.db.updateInventory(item) else: print "no purchase" print "Thank you for visiting." def close(self): self.db.close()
class QualityController: def deleteItemFromInventory(self, i): self.db.deleteItemFromInventory(i) def addItemToInventory(self, item_id, quantity): now = time.strftime("%Y-%m-%d") self.db.addItemToInventory(item_id, quantity, now) def checkExpiry(self): while True: time.sleep(60) for i in self.db.displayInventory(): quality = self.checkQuality(i[0]) if quality == "good": pass else: print "expiry found. Item removed from inventory." def renewStockThread(self, item_id, quantity, client_id): itemDetails = self.db.getItemDetails(item_id) self.supplier.request((itemDetails[0], itemDetails[1]), quantity) # assume that the request is fulfilled.. self.addItemToInventory(item_id, quantity) if client_id == -1: print "\nnew stock has arrived\n" else: print "\n\norder of client number : " + str(client_id) + " has arrived.\n\n" def renewStock(self, item_id, quantity, client_id): t = threading.Thread(target=self.renewStockThread, args=(item_id, quantity, client_id)) t.start() if client_id != -1: print "we have successfully placed the order for client number " + str(client_id) def close(self): self.db.close() def __init__(self): self.renewQuantity = 10 self.db = Database() self.supplier = Supplier() t = threading.Thread(target=self.checkExpiry, args="") t.start() def checkQuality(self, item_id): ttl = self.db.getItemDetails(item_id)[3] date_of_purchase = str(self.db.getItemInfoFromInventory(item_id)[2]) y = date_of_purchase.split("-")[0] m = date_of_purchase.split("-")[1] d = date_of_purchase.split("-")[2] date_of_purchase = "/".join([m,d,y]) date_of_purchase = datetime.datetime.strptime(date_of_purchase, "%m/%d/%Y") end_date = date_of_purchase + datetime.timedelta(days=ttl) now = datetime.datetime.now() if now < end_date: print "end_date not reached." print "good quality." return "good" else: print "end date reached." print "bad quality." self.deleteItemFromInventory(item_id) self.renewStock(item_id, self.renewQuantity, -1) return "not good"