1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
| from django.db import models
from django.db.models.fields import DecimalField, NullBooleanField
import decimal
from django.utils import timezone
from django.db.models.signals import pre_save
from django.dispatch import receiver
class Product(models.Model):
title = models.CharField(verbose_name='Название продукции', max_length=100)
count = models.DecimalField(verbose_name='Кол-во на складе', max_digits = 10, decimal_places=4)
price = models.DecimalField(verbose_name='Цена', max_digits = 10, decimal_places=4)
date = models.DateField(verbose_name='Дата обновления', default=timezone.now())
def __str__(self):
return self.title
class Meta():
verbose_name = 'Продукты'
verbose_name_plural = 'Продукция'
class Technology_card(models.Model):
title = models.TextField(verbose_name='Название ТК',default='Технологическая карта для пиццы')
pizza_box = models.DecimalField(verbose_name='Коробки пиццы',max_digits = 10, decimal_places=4, default=1)
napkins = models.DecimalField(verbose_name='Салфетки',max_digits = 10, decimal_places=4, default=6)
dough = models.DecimalField(verbose_name='Тесто',max_digits = 10, decimal_places=4, default=0)
flour = models.DecimalField(verbose_name='Мука',max_digits = 10, decimal_places=4, default=0)
tomato_sauce = models.DecimalField(verbose_name='Соус томатный',max_digits = 10, decimal_places=4, default=0)
cream_sauce = models.DecimalField(verbose_name='Соус сливочный', max_digits = 10, decimal_places=4, default=0)
olive_oil = models.DecimalField(verbose_name='Оливковое масло', max_digits = 10, decimal_places=4, default=0)
mozzarella_cheese = models.DecimalField(verbose_name='Сыр Моцарелла', max_digits = 10, decimal_places=4, default=0)
parmesan_cheese = models.DecimalField(verbose_name='Сыр Пармезан', max_digits = 10, decimal_places=4, default=0)
dor_blue_cheese = models.DecimalField(verbose_name='Сыр Дор Блю', max_digits = 10, decimal_places=4, default=0)
bacon = models.DecimalField(verbose_name='Бекон', max_digits = 10, decimal_places=4, default=0)
ham = models.DecimalField(verbose_name='Ветчина', max_digits = 10, decimal_places=4, default=0)
pineapple = models.DecimalField(verbose_name='Ананас', max_digits = 10, decimal_places=4, default=0)
cervelat = models.DecimalField(verbose_name='Сервелат', max_digits = 10, decimal_places=4, default=0)
pepperoni = models.DecimalField(verbose_name='Пепперони', max_digits = 10, decimal_places=4, default=0)
pickled_chicken = models.DecimalField(verbose_name='Курица маринованная', max_digits = 10, decimal_places=4, default=0)
tomatoes = models.DecimalField(verbose_name='Томаты', max_digits = 10, decimal_places=4, default=0)
champignons = models.DecimalField(verbose_name='Шампиньоны', max_digits = 10, decimal_places=4, default=0)
italian_herbs = models.DecimalField(verbose_name='Итальянские травы', max_digits = 10, decimal_places=4, default=0)
green_onion = models.DecimalField(verbose_name='Лук зеленый', max_digits = 10, decimal_places=4, default=0)
garlic_butter_box = models.DecimalField(verbose_name='Масло чесночное бокс', max_digits = 10, decimal_places=4, default=1)
pepper_oil_box = models.DecimalField(verbose_name='Масло перцовое бокс', max_digits = 10, decimal_places=4, default=1)
def __str__(self):
return self.title
class Meta():
verbose_name = 'Технологическая карта'
verbose_name_plural = 'Технологические карты'
class Pizza(models.Model):
title = models.CharField(verbose_name='Название пиццы', max_length=100)
technology_card = models.ForeignKey(Technology_card, on_delete=models.CASCADE)
time_production = models.PositiveIntegerField(verbose_name='Время изготовления', default=10)
time_baking_time = models.PositiveIntegerField(verbose_name='Время выпекания', default=10)
price = models.DecimalField(verbose_name='Цена', max_digits = 10, decimal_places=2, default = 0)
def save(self, *args, **kwargs):
price = 100
pr = []
for i in range(1,23):
pr.append(Product.objects.get(id = i))
pi1 = pr[0].price * self.technology_card.pizza_box
pi2 = pr[1].price * self.technology_card.napkins
pi3 = pr[2].price * self.technology_card.dough
pi4 = pr[3].price * self.technology_card.flour
pi5 = pr[4].price * self.technology_card.tomato_sauce
pi6 = pr[5].price * self.technology_card.cream_sauce
pi7 = pr[6].price * self.technology_card.olive_oil
pi8 = pr[7].price * self.technology_card.mozzarella_cheese
pi9 = pr[8].price * self.technology_card.parmesan_cheese
pi10 = pr[9].price * self.technology_card.dor_blue_cheese
pi11 = pr[10].price * self.technology_card.bacon
pi12 = pr[11].price * self.technology_card.ham
pi13 = pr[12].price * self.technology_card.pineapple
pi14 = pr[13].price * self.technology_card.cervelat
pi15 = pr[14].price * self.technology_card.pepperoni
pi16 = pr[15].price * self.technology_card.pickled_chicken
pi17 = pr[16].price * self.technology_card.tomatoes
pi18 = pr[17].price * self.technology_card.champignons
pi19 = pr[18].price * self.technology_card.italian_herbs
pi20 = pr[19].price * self.technology_card.green_onion
pi21 = pr[20].price * self.technology_card.garlic_butter_box
pi22 = pr[21].price * self.technology_card.pepper_oil_box
price = pi1 + pi2 + pi3 + pi4 + pi5 + pi6 + pi7 + pi8 + pi9 + pi10 + pi11 + pi12 + pi13 + pi14 + pi15 + pi16 + pi17 + pi18 + pi19 + pi20 + pi21 + pi22
coff = decimal.Decimal(1.50)
self.price = (price * coff).quantize(decimal.Decimal("1.00"))
super(Pizza, self).save(*args, **kwargs)
def __str__(self):
return self.title
class Meta():
verbose_name = 'Пицца'
verbose_name_plural = 'Пицца'
class Courier(models.Model):
name = models.CharField(verbose_name='Имя курьера', max_length=50)
surname = models.CharField(verbose_name='Фамилия курьера', max_length=50)
patronymic = models.CharField(verbose_name='Отчество курьера', max_length=50)
count_order = models.PositiveIntegerField(verbose_name='Кол-во выполненых заказов', default=0)
def __str__(self):
return (self.surname + " " + self.name + " " + self.patronymic)
class Meta():
verbose_name = 'Курьер'
verbose_name_plural = 'Курьеры'
class OrderPizza(models.Model):
STATUS_ACCEPT = 'Принят'
STATUS_COOK = 'Готовится'
STATUS_PREPARED = 'Приготовлен'
STATUS_DELIVERED = 'Доставляется'
STATUS_EXECUTE = 'Исполнен'
STATUS_CHOISES = (
(STATUS_ACCEPT, 'Принят'),
(STATUS_COOK, 'Готовится'),
(STATUS_PREPARED, 'Приготовлен'),
(STATUS_DELIVERED, 'Доставляется'),
(STATUS_EXECUTE, 'Исполнен')
)
id = models.AutoField(primary_key=True)
date = models.DateField(verbose_name='Дата заказа', null=False, default = timezone.now())
name = models.CharField(verbose_name='Имя заказчика', max_length=50)
surname = models.CharField(verbose_name='Фамилия заказчика', max_length=50)
phone_number = models.CharField(verbose_name='Номер телефона', max_length=10)
adress = models.CharField(verbose_name='Адрес доставки', max_length=40)
order = models.ManyToManyField(Pizza)
courier = models.ForeignKey(Courier, on_delete=models.CASCADE)
status = models.CharField(
verbose_name='Статус',
max_length=12,
choices=STATUS_CHOISES,
default=STATUS_ACCEPT
)
def __str__(self):
return ('Заказ от {0} {1}').format(self.surname, self.date)
class Meta():
verbose_name = 'Заказ пиццы'
verbose_name_plural = 'Заказы пиццы'
class OrderPizzaWithPrice(models.Model):
order = models.ForeignKey(OrderPizza, on_delete=models.CASCADE)
price = models.DecimalField(verbose_name='Стоимость заказа', default=0, max_digits = 10, decimal_places=2)
def save(self, *args, **kwargs):
self.price = sum([price.price for price in self.order.order.all()])
super(OrderPizzaWithPrice, self).save(*args, **kwargs)
def __str__(self):
return ('Заказ от {0} {1}').format(self.order.surname, self.order.date)
class Meta():
verbose_name = 'Заказ пиццы со стоимостью'
verbose_name_plural = 'Заказы пиццы со стоимостью' |