Surface add-on prices and add an add-ons total sensor
Add-on rows already carried quantity, unit and extended price; only the name was exposed. The attribute now renders the full line and a new monetary sensor reports the add-ons subtotal separately from the box. The fixture totals were copied from a seven-add-on cart while the fixture itself had one, so they are now self-consistent and a test asserts that add-ons plus box price equals the portal's subtotal.
This commit is contained in:
@@ -110,6 +110,15 @@ class DeliveryOrder:
|
||||
def all_items(self) -> list[OrderItem]:
|
||||
return [*self.items, *self.addons]
|
||||
|
||||
@property
|
||||
def addons_total(self) -> float:
|
||||
"""Combined cost of the add-ons, excluding the produce box itself.
|
||||
|
||||
Add-on prices are already extended (4 smoothies bill as one $17.96
|
||||
line), so this is a plain sum. It should equal `subtotal - box_price`.
|
||||
"""
|
||||
return round(sum(a.price for a in self.addons if a.price is not None), 2)
|
||||
|
||||
|
||||
@dataclass
|
||||
class AccountSnapshot:
|
||||
|
||||
Reference in New Issue
Block a user