Author: Pedro Lucas Porcellis <pedrolucasporcellis@gmail.com>
Display prices of products with the cycle margin
src/templates/cycle.html | 4 +++- src/types/cycle.py | 2 ++ src/types/order.py | 4 +++- src/types/product.py | 3 +++
diff --git a/src/templates/cycle.html b/src/templates/cycle.html index 98a069feff8240d0f2ecfadb8261d6745a166573..312de3222cfff4188aca04b4c0f92c6b58a68b02 100644 --- a/src/templates/cycle.html +++ b/src/templates/cycle.html @@ -24,6 +24,7 @@<th>Nome do Produto</th> <th>Grupo</th> <th>Categoria</th> + <th>Preço</th> </tr> </thead> <tbody> @@ -38,7 +39,8 @@ <td> {{ product.title }} </td> <td> {{ product.group.name }} </td> <td> {{ product.category.name }}</td> - </tr> + <td> {{ product.price_on(current_order.cycle) | as_currency }} </td> + </tr> {% endfor %} {% endwith %} </tbody> diff --git a/src/types/cycle.py b/src/types/cycle.py index 649b7e0977aa4df20704fc9cdfcbef8ae469be33..f4757a29ef139e6a2261f3379652baf8e6fc80f1 100644 --- a/src/types/cycle.py +++ b/src/types/cycle.py @@ -30,6 +30,8 @@ created_at = db.Column(db.DateTime, default = dt.utcnow) updated_at = db.Column(db.DateTime, default = dt.utcnow) + orders = db.relationship("Order", backref = "cycle", lazy = True) + def __init__(self, name, description, start_at, end_at, delivery_start_at, delivery_end_at, status, price_margin): self.name = name self.description = description diff --git a/src/types/order.py b/src/types/order.py index 560e5931796547a1055d8b4fa481faf5a4a233b4..c5b27a93d54f8a33aaaee3594a57c80324a67c45 100644 --- a/src/types/order.py +++ b/src/types/order.py @@ -61,7 +61,9 @@ def products(self): return list(map(lambda entry_id: Product.query.get(entry_id), self.selected_product_ids())) def total(self): - return Product.query.filter(Product.id.in_(self.selected_product_ids())).with_entities(func.sum(Product.price)).scalar() + prices = list(map(lambda product: product.price_on(self.cycle), self.products())) + + return sum(prices, 0) def to_json(self): return { diff --git a/src/types/product.py b/src/types/product.py index 5a9e65e591223237384643e1b369adf47a747fcf..a03b52d99f4314c81360b635cf413a252ca83878 100644 --- a/src/types/product.py +++ b/src/types/product.py @@ -32,6 +32,9 @@ Balance(0.0, 0.0, self.id).create() return self + def price_on(self, cycle): + margin = (cycle.price_margin * self.price) / 100 + return self.price + margin def to_json(self): return {