def newPreorder(cls, customer_ID, date_to_fulfill, items_ordered, cart_number): preorder_failures = {} preorder_success = [] current_preorder_counts = cls.preorderCountsForItemsByDate( items_ordered, date_to_fulfill) for item_ID in items_ordered: item = Item.byID(item_ID) if current_preorder_counts[item_ID] < item.preorderCount: new_preorder = Preorder(customer_ID=customer_ID, date_placed=localdate.getToday('est'), date_to_fulfill=date_to_fulfill, cart_number=cart_number, item_ID=item_ID) preorder_success.append(new_preorder) current_preorder_counts[ item_ID] = current_preorder_counts[item_ID] + 1 else: if item.preorderCount == 0: preorder_failures[item_ID] = "Item cannot be preordered." else: preorder_failures[ item_ID] = "Not enough preorder slots available." if len(preorder_failures.keys()) == 0: for order in preorder_success: order.put() return True else: return preorder_failures
def customerPointsLast30Days(cls, customer_ID): today = localdate.getToday('est') monthEnd = today + datetime.timedelta(-30) query = db.GqlQuery( "SELECT * FROM Purchase " + "WHERE customer_ID = :1 AND date >= :2", customer_ID, monthEnd) pointsIn30Days = 0 yesterday = today + datetime.timedelta(-1) for purchase in query.run(): pointsIn30Days = pointsIn30Days + purchase.points_earned # If purchase was today if purchase.date >= yesterday: pointsIn30Days = pointsIn30Days + purchase.points_earned return pointsIn30Days
def newPurchase(cls, customer, items_ordered, cart_number): discount_type, discountMultiplier, pointsIn30Days = cls.findDiscountStatus( customer) order_discount = "None" #tally the points and cost points_earned = 0 order_total = 0 item_array = [] for index in range(len(items_ordered)): item = items_ordered[index] if item.itemType in ItemsEligibleForDiscount: item.price = int(Decimal(item.price * discountMultiplier)) order_discount = discount_type item.points = Item.getPoints(item.price) points_earned = points_earned + item.points order_total = order_total + item.price # create sub-array item_data = [] item_data.append(item.itemID) item_data.append(item.itemType) item_data.append(item.price) item_data.append(item.points) # add to return array item_array.append(item_data) #Create purchase new_purcahse = Purchase(customer_ID=customer.card_number, date=localdate.getToday('est'), total=order_total, points_earned=points_earned, items_ordered=item_array, discount_type=order_discount, cart_number=cart_number) customer.updatePoints(points_earned) #store the purcahse cls.put(new_purcahse) return new_purcahse
def checkDOB(self, inputDOB): split = inputDOB.split('-') today = localdate.getToday('est') if len(split) != 3: return None # Check Month if int(split[1]) > 12 or int(split[1]) < 1: return None # Check Day if int(split[2]) > 31 or int(split[2]) < 1: return None #Check Year if int(split[0]) < 1900: return None try: dob_date = datetime.datetime.strptime(inputDOB, "%Y-%m-%d").date() if (today >= dob_date): return inputDOB except ValueError: return None
def checkPreorderDate(self, date): split = date.split('-') today = localdate.getToday('est') if len(split) != 3: return None # Check Month if int(split[1]) > 12 or int(split[1]) < 1: return None # Check Day if int(split[2]) > 31 or int(split[2]) < 1: return None #Check Year if int(split[0]) < 1900: return None try: order_date = datetime.datetime.strptime(date, "%Y-%m-%d").date() next_month = today + datetime.timedelta(31) if (today < order_date) and (order_date < next_month): return order_date except ValueError: return None
def todaysPurchases(cls, cart_number=None): today = localdate.getToday('est') yesterday = today + datetime.timedelta(-1) return cls.getPurchaseHistoryForPeriod(today, yesterday, cart_number)
def todaysPreorders(cls, cart_number=None): results = [] today = localdate.getToday('est') for preorder in cls.getPreordersForDatePlaced(today, cart_number): results.append(preorder.asDict()) return results