From e4bab56b4d50d9db30bdee2e1699b680f6c64eb9 Mon Sep 17 00:00:00 2001 From: Sung Cho Date: Sun, 19 Oct 2025 11:32:08 -0700 Subject: [PATCH] Replace hardcoded person share values with formulas in spreadsheet - 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 --- src/bill/calculator.py | 10 ++++++++-- tests/test_calculator.py | 14 +++++++------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/bill/calculator.py b/src/bill/calculator.py index 16e693c..b02117c 100644 --- a/src/bill/calculator.py +++ b/src/bill/calculator.py @@ -214,9 +214,15 @@ def get_shares_spreadsheet(self): for item in self.items.items: row_data = [item.name, item.price] + split_count = self.get_split_count(item) + item_index = self.items.items.index(item) + for person in self.persons: - share = self.get_person_share(item, person) - row_data.append(share if share else None) + if item_index in person.items: + formula = f"=$B{current_row}/{split_count}" + row_data.append(formula) + else: + row_data.append(None) row_data.append(None) worksheet.append(row_data) current_row += 1 diff --git a/tests/test_calculator.py b/tests/test_calculator.py index d2071f4..375763e 100644 --- a/tests/test_calculator.py +++ b/tests/test_calculator.py @@ -240,20 +240,20 @@ def test_spreadsheet(calculator, sample_persons): assert worksheet["A2"].value == "GL-Domaine Amido Cotes Du Rhone" assert worksheet["B2"].value == 13.00 - assert worksheet["C2"].value == 6.50 + assert worksheet["C2"].value == "=$B2/2" assert worksheet["D2"].value is None - assert worksheet["E2"].value == 6.50 + assert worksheet["E2"].value == "=$B2/2" assert worksheet["A16"].value == "Shahi tukda" assert worksheet["B16"].value == 15.00 - assert worksheet["C16"].value == 5.00 - assert worksheet["D16"].value == 5.00 - assert worksheet["E16"].value == 5.00 + assert worksheet["C16"].value == "=$B16/3" + assert worksheet["D16"].value == "=$B16/3" + assert worksheet["E16"].value == "=$B16/3" assert worksheet["A17"].value == "Jus d Manguir" assert worksheet["B17"].value == 9.00 - assert worksheet["C17"].value == 4.50 - assert worksheet["D17"].value == 4.50 + assert worksheet["C17"].value == "=$B17/2" + assert worksheet["D17"].value == "=$B17/2" assert worksheet["E17"].value is None subtotal_row = 18