def main(): # стартуем с этой даты now_date = date(2016, 1, 1) # крутим цикл по количеству дней while(now_date < date(2017, 6, 1)): # получаем дату текущего дня, datetime закрытия и открытия now_date += timedelta(days=1) now_end = datetime.combine(now_date, close_time) # счетчик который будет расти до конца дня и потом начинатся сначала дня, в данном месте будет всегда равен началу дня now = datetime.combine(now_date, open_time) # открываем кассовую смену на начало дня cashbox = Cashbox(now) cashbox_summ = 0 # количество созданных товаров products_count = Product.query.count() # цикл для чеков while now < now_end: # текущее время для продажи now += timedelta(minutes = genTime(now_date, now)) # создаем новый чек и записываем время как время пробития receipt = Receipt(time = now) receipt_summ = 0 # для генератора случайных id продуктов которые не повторяются products=[] product_id = 0 # генерем количество позиций для продажи в чеке от1 до 3х позиций for sale in range(random.randint(1, 3)): while(True): # верхней границей является id последнего товра в списке, # при учете что товары не удалялись и нет разрывов в очередности product_id = random.randint(1, products_count) if not(product_id in products): products.append(product_id) break # получаем товар new_product = Product.query.filter_by(id=product_id).first() # добавляем в продажи rand_quantity = random.randint(1, 3) new_sale = Sale(quantity = rand_quantity, price = new_product.price) new_sale.product = new_product # добавляем продажу в чек receipt.sale.append(new_sale) # добавляем сумму в общую для кассы при учете что в чеке количество уникального товара = 1 cashbox_summ += new_product.price*rand_quantity receipt_summ += new_product.price*rand_quantity receipt.status = 0 receipt.cash = receipt_summ # добавляем чеки в кассовую смену cashbox.receipts.append(receipt) cashbox.status = 0 cashbox.cash = cashbox_summ cashbox.close = now_end db.session.add(cashbox) db.session.commit()
def post(self, id_receipt, id_product, quantity): receipt = Receipt.query.filter_by(id=id_receipt).one() product = Product.query.filter_by(id=id_product).one() # проверяем наличие товара в чеке если он есть просто увеличиваем количество in_receipt = Sale.query.filter_by(product_id=id_product, receipt_id=id_receipt).first() if in_receipt: in_receipt.quantity += quantity db.session.add(in_receipt) else: new_sale = Sale(quantity=quantity, price=product.price) new_sale.product = product receipt.sale.append(new_sale) db.session.add(receipt) db.session.commit() return '', 204