Skip to content

Commit

Permalink
Show the price for the number of selected parts
Browse files Browse the repository at this point in the history
  • Loading branch information
Bouni committed Jul 31, 2024
1 parent ec4aee0 commit 3433d63
Showing 1 changed file with 31 additions and 13 deletions.
44 changes: 31 additions & 13 deletions partselector.py
Original file line number Diff line number Diff line change
Expand Up @@ -642,6 +642,24 @@ def update_subcategories(self, *_):
# search now that categories might have changed
self.search(None)

def get_price(self, quantity, prices):
"""Find the prce for the number of selected parts accordning to the price ranges."""
price_ranges = prices.split(",")
min_quantity = int(price_ranges[0].split("-")[0])
if quantity <= min_quantity:
range, price = price_ranges[0].split(":")
return price
for p in price_ranges:
range, price = p.split(":")
lower,upper = range.split("-")
if not upper: # upper bound of price ranges
return price
lower = int(lower)
upper = int(upper)
self.logger.debug(upper)
if lower <= quantity < upper:
return price

def populate_part_list(self, parts, search_duration):
"""Populate the list with the result of the search."""
search_duration_text = (
Expand All @@ -662,19 +680,19 @@ def populate_part_list(self, parts, search_duration):
for p in parts:
item = [str(c) for c in p]
# Munge price to be more readable
pricecol = 8 # Must match order in library.py search function
price = []
try:
for t in item[pricecol].split(","):
qty, p = t.split(":")
p = float(p)
if p < 1.0:
price.append(f"{qty}: {p * 100:.2f}c")
else:
price.append(f"{qty}: ${p:.2f}")
item[pricecol] = ", ".join(price)
except ValueError:
self.logger.warning("unable to parse price %s", item[pricecol])
pricecol = 8 # Must match order in library.py search function
item[pricecol] = f"{len(self.parts)} parts: {self.get_price(len(self.parts), item[pricecol])} each"
# try:
# for t in item[pricecol].split(","):
# qty, p = t.split(":")
# p = float(p)
# if p < 1.0:
# price.append(f"{qty}: {p * 100:.2f}c")
# else:
# price.append(f"{qty}: ${p:.2f}")
# item[pricecol] = ", ".join(price)
# except ValueError:
# self.logger.warning("unable to parse price %s", item[pricecol])
self.part_list.AppendItem(item)

def select_part(self, *_):
Expand Down

0 comments on commit 3433d63

Please sign in to comment.