Exemple #1
0
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()
Exemple #2
0
 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