Skip to content

Commit 233d90a

Browse files
authored
Replace hardcoded person share values with formulas in spreadsheet (#13)
- Update get_shares_spreadsheet() to generate formulas (item price / split count) instead of calculated values - Use get_split_count() to determine how many people share each item - Formula format: =$B{row}/{split_count} for transparent calculations - Update test expectations to verify formulas instead of literal values - Makes spreadsheet more transparent and editable
1 parent 50c1c8d commit 233d90a

File tree

2 files changed

+15
-9
lines changed

2 files changed

+15
-9
lines changed

src/bill/calculator.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -214,9 +214,15 @@ def get_shares_spreadsheet(self):
214214

215215
for item in self.items.items:
216216
row_data = [item.name, item.price]
217+
split_count = self.get_split_count(item)
218+
item_index = self.items.items.index(item)
219+
217220
for person in self.persons:
218-
share = self.get_person_share(item, person)
219-
row_data.append(share if share else None)
221+
if item_index in person.items:
222+
formula = f"=$B{current_row}/{split_count}"
223+
row_data.append(formula)
224+
else:
225+
row_data.append(None)
220226
row_data.append(None)
221227
worksheet.append(row_data)
222228
current_row += 1

tests/test_calculator.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -240,20 +240,20 @@ def test_spreadsheet(calculator, sample_persons):
240240

241241
assert worksheet["A2"].value == "GL-Domaine Amido Cotes Du Rhone"
242242
assert worksheet["B2"].value == 13.00
243-
assert worksheet["C2"].value == 6.50
243+
assert worksheet["C2"].value == "=$B2/2"
244244
assert worksheet["D2"].value is None
245-
assert worksheet["E2"].value == 6.50
245+
assert worksheet["E2"].value == "=$B2/2"
246246

247247
assert worksheet["A16"].value == "Shahi tukda"
248248
assert worksheet["B16"].value == 15.00
249-
assert worksheet["C16"].value == 5.00
250-
assert worksheet["D16"].value == 5.00
251-
assert worksheet["E16"].value == 5.00
249+
assert worksheet["C16"].value == "=$B16/3"
250+
assert worksheet["D16"].value == "=$B16/3"
251+
assert worksheet["E16"].value == "=$B16/3"
252252

253253
assert worksheet["A17"].value == "Jus d Manguir"
254254
assert worksheet["B17"].value == 9.00
255-
assert worksheet["C17"].value == 4.50
256-
assert worksheet["D17"].value == 4.50
255+
assert worksheet["C17"].value == "=$B17/2"
256+
assert worksheet["D17"].value == "=$B17/2"
257257
assert worksheet["E17"].value is None
258258

259259
subtotal_row = 18

0 commit comments

Comments
 (0)