diff --git a/src/bill/calculator.py b/src/bill/calculator.py index b02117c..90bdbb0 100644 --- a/src/bill/calculator.py +++ b/src/bill/calculator.py @@ -242,7 +242,14 @@ def get_shares_spreadsheet(self): current_row += 1 for extra in self.extras.items: - row_data = [extra.name, extra.price] + percentage = (extra.price / subtotal) * 100 + if percentage == int(percentage): + formatted_percentage = f"{int(percentage)}%" + else: + formatted_percentage = f"{percentage:.2f}%" + extra_name_with_percentage = f"{extra.name} ({formatted_percentage})" + + row_data = [extra_name_with_percentage, extra.price] for col_idx in range(person_count): col_letter = chr(ord("C") + col_idx) formula = ( diff --git a/tests/test_calculator.py b/tests/test_calculator.py index 375763e..ab12fd9 100644 --- a/tests/test_calculator.py +++ b/tests/test_calculator.py @@ -267,7 +267,7 @@ def test_spreadsheet(calculator, sample_persons): assert worksheet[f"F{subtotal_row}"].value == "=SUM(C18:E18)" service_charge_row = 19 - assert worksheet[f"A{service_charge_row}"].value == SERVICE_CHARGE + assert worksheet[f"A{service_charge_row}"].value == "Service Charge (20%)" service_charge = subtotal * SERVICE_CHARGE_RATIO assert worksheet[f"B{service_charge_row}"].value == service_charge @@ -289,7 +289,7 @@ def test_spreadsheet(calculator, sample_persons): ) tax_row = 20 - assert worksheet[f"A{tax_row}"].value == TAX + assert worksheet[f"A{tax_row}"].value == "Tax (10.35%)" tax = subtotal * TAX_RATIO assert worksheet[f"B{tax_row}"].value == tax